本人最近離職換工作,面試了幾家,記錄下面試經(jīng)歷,以便查漏補(bǔ)缺。
本人工作經(jīng)驗2年,求職崗位是PHP。
1 杭州蜂融 3.19 GG
面試我的應(yīng)該是一個leader,面得一般,本人好久沒面試,感覺沒抓住很多點。掛了。
1.1 mysql 如果表里有幾億條數(shù)據(jù) 分頁怎么快速跳轉(zhuǎn)到指定的頁面
答了用主鍵ID,面試官說是用最小ID,沒答好。
1.2 Redis 是單進(jìn)程為什么能這么高效
忘記了。I/O復(fù)用。
采用多路 I/O 復(fù)用技術(shù)可以讓單個線程高效的處理多個連接請求
1.3 用偽碼寫個冒泡排序
比較簡單,冒泡核心就是,交換,一次循環(huán)確定一個位置。
1.4 看到有用過Elasticsearch,問了ELK L層怎么寫入數(shù)據(jù)的
掛。沒用過,平時開發(fā)只用到es的日志查詢接口。
以后還是研究下吧。
1.5 Linux常用命令
答了 cat tail top ps file 其實有很多命令一時間忘記了。
cat tail top ls file pwd cp mv df ....
面試后面有點緊張一時間想不起來了,可能這就是菜吧。。。。
大概是這些,感覺問題不難,沒有復(fù)習(xí)到位,還有自己在面試語言組織不是很好,火箭造不動,還是要好好復(fù)習(xí)。
2 小碼王 3.20 GG
上來就是筆試題,填表然后面試,面試官看上去就很厲害,果然這次面試就涼了。
先根據(jù)筆試題問的:
2.1 mysql int(1) int(11) 的區(qū)別
int(11) 是指的顯示寬度, 跟數(shù)據(jù)的存儲和計算沒有影響( ZEROFILL 除外 )
沒答上 ZEROFILL 這個點
2.2 用不超過5行寫一個方法判斷 時間字符串 是否符合
function chekTime($str) {
//todo
}
有點忘記了怎么寫的 感覺是用 strtotime 所以沒多想,填的是
return strtotime($str)
面試官問 這個寫法是否有問題,我對這個方法異常參數(shù)沒用過,答得不好,感覺他不是很滿意
回來查了 strtotime 的文檔 ,發(fā)現(xiàn)在 PHP 5.1.0 之后解析失敗是返回 FALSE ,所以應(yīng)該要判斷下而不是直接返回。不該錯。
if (strtotime($str)) {
return true;
} else {
return false;
}
2.3 單例模式的使用舉例
問的是公司的單例模式的應(yīng)用有哪些,公司代碼底層的單例還真沒注意,有點疏忽了,答了個mysql連接使用的單例,答得不好,單例在laravel中有 任務(wù)調(diào)度、異常捕獲。
2.4 接 2.3 問mysql在 nginx 使用的連接方式是fpm還是什么
不知道。查波google沒結(jié)果,不知道問的是啥。
2.5 var_dump(intval(0.58 * 100)) 還有沒有其他結(jié)果
筆試答案我填的是 int 58,我答得不夠自信,所以質(zhì)疑了一下,應(yīng)該是答錯了。
intval ( mixed
base = 10 ] ) : int
通過使用指定的進(jìn)制 base 轉(zhuǎn)換(默認(rèn)是十進(jìn)制),返回變量 var 的 integer 數(shù)值。 intval() 不能用于 object,否則會產(chǎn)生 E_NOTICE 錯誤并返回 1。
正確結(jié)果是 int(57),看樣子得研究一波原因了。
直接輸出 intval(58) 發(fā)現(xiàn)結(jié)果是 int(58),所以問題是 0.58 * 100, 輸出 var_dump(0.58 * 100) 結(jié)果是 float(58), 根據(jù) intval 的文檔說明,返回的是 var 的 integer 值, 所以 int(57)原因是 相乘之后的精度丟失,考察的是對這個精度問題的解答,如果改成 intval(bcmul(0.58, 100)) 結(jié)果就是58了。這個坑沒了解過,漲知識了。
這個公司算是掛了,問的問題目前很多都沒涉及到,不過學(xué)到了不少,不虧。
github: Github
個人博客: 個人博客