PHP面試總結

2021-09-18 03:12:44 字數 3237 閱讀 1760

金三銀四招聘季,我也是按奈不住躁動的小心思呀。於是也出去試試水。背景介紹,本人差不多一年半的phper小菜鳥。可能懂得不多,了解的也不夠有深度,於是處於試

水階段,目前這家公司福利待遇在武漢還好吧,最起碼比起武漢大部分沒有五險一金的好的多,就是工資可能是我的短板,技術提公升困難,自然在公司價值就越來越小。所

以就想也出去轉轉,畢竟我還是有一顆流浪的心。閒話不多說了,直接進入正題:

題目給定乙個一維陣列,陣列裡面有重複的元素,讓我們自己寫乙個方法,去掉陣列裡面重複的元素

我一想,這還不簡單,在我們php的原生函式裡面就有好幾種呀,

$arr=[

1,3,

5,6,

3,6,

5,8,

9,5,

9];$arr

=array_unique

($arr);

var_dump

($arr);

array(6

)

如果同乙個值出現多次,則最後乙個鍵名將作為它的值,其它鍵會被丟棄。

//反轉第一次

$arr=[

1,3,

5,6,

3,6,

5,8,

9,5,

9];$arr

=array_flip

($arr);

array(6

)

我們得到的陣列,原來的鍵是現在的值,現在的值是原來的鍵,看起來很怪,接下來再反轉一次;

$arr

=array_flip

($arr);

array(6

)

看起來沒什麼問題,但是追求完美的我們這樣必須不行,於是我們再次使用陣列函式array_merge()

$arr

=array_merge

($arr);

array(6

)

這次就完美了。可以得到最後去重的陣列了。但是這有乙個問題,這是php本身的函式實現的,沒有達到效果,要我們自己實現乙個演算法去實現。

思路一:新建乙個空陣列,然後迴圈給定的陣列,判斷新陣列裡面是否有當前迴圈的值,有就不丟進去,否則就丟進去

<?php

function

removearrayvalue

($arr

)$arrlen

=count

($arr);

if($arrlen

<=1)

$tmparr=[

];for($i=

0;$i<

$arrlen;$i

++)}return

$tmparr;}

/*array(6)

*/

這裡有兩點需要注意,1 我們判斷陣列的值是否存在,用了php陣列函式in_array(),其實還可以使用array_search(),它也是可以判斷陣列中某個值是否存在,

2 就是我們對新陣列的賦值,可以是上面寫的那樣,同時也可以使用陣列函式array_push()array_unshift()

接下來就來了乙個技術主管吧,應該是,他主要問的就是關於資料庫方面的知識了。

問題一:有一張表,假如有 | name | age | balance |。現在插入資料,liyi,18,200 | wanger,19,300 | zhangsan,20,400 | liyi,18,600|假設

有四組資料,現在要得到去重後的每個玩家的餘額最大值的那條記錄。我的思路有兩條,乙個是我們直接使用sql去重函式distinct,還有乙個就是分組group by

-- 上面假設表名是balance;

drop table if exists balance;

create table if not exists balance(

`id` int unsigned primary key auto_increment,

`user` varchar(10) not null,

`age` tinyint(3) not null default 18,

`balances` decimal(5,3) not null

)engine=innodb default charset=utf8;

insert into balance (`user`,`age`,`balances`) values ('liyi',18,20.2);

insert into balance (`user`,`age`,`balances`) values ('wanger',19,30.25);

insert into balance (`user`,`age`,`balances`) values ('zhangsan',20,69);

insert into balance (`user`,`age`,`balances`) values ('liyi',18,89);

select id,`user`,age,max(balances)as balances from balance group by `user`;

問題二:mysql資料庫裡面,有乙個人的餘額是1000;這時候要操作這個人的餘額減去100;這個時候同時進來了100個惡意請求,怎麼防止餘額超支,其實這個也算是

高併發這塊的了。還有就是屬於遭到惡意攻擊了。

首先既然是更新資料庫裡面的資料,首先要設定資料表的儲存引擎是innodb,它是支援事務的,還有就是行級鎖,接下來就是事務內操作,成功就提交,失敗則回滾。

還有它既然想要大量的減少我們的資料表的餘額這個欄位的值,也就是和盜刷差不多,我們還要做的就是,不能讓它在小於臨界值時還可以操作。大概思路就是這樣,具體

在接下來另做實現。

問題三:就是操作加減乘除,但是不可以四捨五入。這個就是最簡單了。咱們大php有庫呀。bcmath的庫。對於金錢類的操作就可以用這個了呀

還有一些就是上機操作了,這倒是最好解決的,作為碼農,這個我還是喜歡的。

總的來說,面試我覺得是最有收穫的,首先不管答不答的上來,最起碼知道了自己的不足,知道了要補習那些個方面,也好再去努力。閉門造車我們可永遠不會進步

加油!

php面試總結

作為一位程式設計師,面試過多次,也面試過很多人,最近又在找工作,總結一下面試經驗和面試題,希望可以幫到正在找工作的小夥伴們。先說一下面試時的心態,剛入門的程式設計師,技術實力不高,又大多不善言談,面試一旦遇到難題,很容易心態失衡 驚慌失措 語無倫次,最終丟掉了 offer。其實大可不必,心態坦然,是...

php 筆試面試 總結

一次小小的筆試面試經歷,雖然是一些簡單的問題,但是自己在這兒總結一下,也查一些資料,得出一些較好的答案,也能幫助自己成長。1.自己熟悉的http狀態碼及其意義 其實這個題答案隨處可見。這兒也還是記錄一下我們常見的http狀態碼 200 請求返回的狀態正常。301 url永久性重定向。302 url暫...

PHP面試常見演算法 函式總結

3.寫5個不同的自己的函式,來擷取乙個全路徑的檔案的副檔名,允許封裝php庫中已有的函式。url dir upload.image.jpg找出jpg或者.jpg 1.return strrchr filename,strrchr 函式查詢字串在另乙個字串中最後一次出現的位置,並返回從該位置到字串結尾...