金三銀四招聘季,我也是按奈不住躁動的小心思呀。於是也出去試試水。背景介紹,本人差不多一年半的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 函式查詢字串在另乙個字串中最後一次出現的位置,並返回從該位置到字串結尾...