- 相關(guān)推薦
PHP招聘:如何面試應屆生求職者
為什么要招應屆生?不是因為便宜,有人說(shuō)還沒(méi)跳過(guò)槽的人忠誠度能搞些,這也不盡然,有些人沒(méi)經(jīng)受過(guò)工作的壓力,總以為自己碰巧找到個(gè)壓力大的工作,換換會(huì )好些。我的原因是……應屆生好調教。在他們沒(méi)有被各種枯燥乏味的工作折磨的以為寫(xiě)程序本來(lái)就這么 SB 之前好好洗說(shuō)服子。
1、2、3 是基礎題,4、5、6 問(wèn)的是數據庫操作,7 算是綜合能力吧。
1。 進(jìn)制運算
可以是讓他模擬一些簡(jiǎn)單的字符串函數,類(lèi)似 bin2hex、base_convert、base64_encode,或者單純的,讓他手動(dòng)算一下 7 進(jìn)制的 54321 顯示為 9 進(jìn)制是多少。
應該高中或者之前就能接觸到 2 進(jìn)制 10 進(jìn)制之間的換算了吧,當然,他當時(shí)很可能沒(méi)聽(tīng)懂。通常的情況,如果以前沒(méi)留意這個(gè)問(wèn)題但有理解能力的,可能能在幾分鐘的做出一些成功不成功的嘗試。至少不應該很茫然。最糟糕的情況,連整數的最大值是多少都不知道,那就算了。
2。 描述一下常見(jiàn)的關(guān)于讀取文件內容的操作,及各自的特點(diǎn)
應該不用遲疑太久就把 file、fopen、file_get_contents、readfile 列出來(lái)。表現好點(diǎn)還可以提下 readfile 的流式讀取不占內存之類(lèi)的。如果看的教材太老,可能只會(huì )說(shuō) fopen。最糟糕的辯解是不說(shuō)跟數據庫打交道比較多,文件操作沒(méi)怎么接觸過(guò),完全無(wú)視文件靜態(tài)化的存在。
3。 怎么模擬一個(gè) POST 表單提交
答 socket 或者 cURL 都可以。
4。 列舉一些常規優(yōu)化方式
正確索引(就不強求完全理解多列索引了,最好能知道每個(gè)查詢(xún)只能用到一個(gè)索引),知道索引提高查詢(xún)速度、降低插入速度。正確的字段類(lèi)型(能知道 char 和 varchar 的區別和優(yōu)缺點(diǎn))。text 類(lèi)字段可以單放一個(gè)表用主鍵關(guān)聯(lián)的?傊苷f(shuō)的越多越好。順便問(wèn)問(wèn)他他所知道的最大處理能力是每秒多少條,哪怕是測試環(huán)境里的 benchmarking(今天看到份簡(jiǎn)歷,號稱(chēng)三年工作經(jīng)驗,將半個(gè)月三萬(wàn)條插入形容為他所遇到的最高的負載,寫(xiě)在簡(jiǎn)歷的醒目位置)。
5。 “你知道,把時(shí)間存在數據庫里有兩種方法,一種是用時(shí)間戳,就是 PHP 函數 time() 產(chǎn)生的那種整數,另一種是 MySQL 里字段類(lèi)型設成 datetime。那么,為什么一定要后一種方式?”
最簡(jiǎn)單的一個(gè)例子,如果存的是時(shí)間戳,你無(wú)法按類(lèi)似“所有周三的數據”這種方式顯示內容。這表明了他的學(xué)習階段:是否接觸了類(lèi)似日志分析類(lèi)的東西。因為這些是早晚都要接觸到的。
6。 簡(jiǎn)單聯(lián)表查詢(xún)
有這么兩個(gè)表
user 表:
id name
1 張三
2 李四
3 王五
4 趙六
apple 表:
id user number
1 1 5
2 3 3
3 1 8
4 4 6
5 3 2
6 4 2
apple 表的 user 字段跟 user 表的 id 對應,一條 SQL 語(yǔ)句查出每個(gè)人都有多少蘋(píng)果
如果他不知道 join,可能會(huì )這么寫(xiě)
SELECT user。name, SUM(apple。number) FROM user, apple WHERE user。id = apple。user GROUP BY user。id
正確答案應該是這樣
SELECT user。name, SUM(apple。number) FROM user LEFT JOIN apple ON user。id = apple。user GROUP BY id
這兩條語(yǔ)句的差別是,不用 join 無(wú)法顯示出李四有 0 個(gè)蘋(píng)果 —_—
7。 假設我們要做一個(gè)公交系統的常見(jiàn)服務(wù),就是做查公交車(chē)怎么倒車(chē)的。假設完全由你自己來(lái)搞,我只關(guān)心最后結果,你會(huì )怎么做這個(gè)項目。說(shuō)的越詳細越好。
可能需要不斷提示?疾橐粋(gè)人的做事能力,比方說(shuō)他首先會(huì )想到需要數據,數據庫應該怎么設計,有幾個(gè)表,什么樣的字段。
可以加分的地方可以有這么幾個(gè)點(diǎn)。給站名編 id,匹配數字的速度要遠大于匹配字符串。站點(diǎn)之間要距離的數據,這樣計算最優(yōu)倒車(chē)路線(xiàn)應該能考慮到站數,倒車(chē)次數、距離等權值。如果很有遠見(jiàn),任意兩點(diǎn)之間的數據應該是提前算好的,比方說(shuō)有 200 條公交線(xiàn)路和 2000 個(gè)站點(diǎn),始發(fā)終點(diǎn)的組合可能是 2000 * 1000,每種線(xiàn)路可能有 1 — 6 種方案,有個(gè)表是來(lái)裝這近一千萬(wàn)行結果的,如果有線(xiàn)路變化,再用本地的機器重新算一遍線(xiàn)路。這樣整個(gè)系統才有實(shí)用價(jià)值。不然可能每次查詢(xún)都需要耗費數秒或者更長(cháng)時(shí)間,只能當單機軟件用。
這些題本身是交流的話(huà)題,而不是“做對 5 道以上我就招你”這種門(mén)檻。我面試時(shí)每道題都會(huì )給予充分的時(shí)間,如果他做不上來(lái),也起碼能判斷他的思考方式,而忌諱說(shuō)“如果你不知道就明說(shuō),咱們趕緊做下一題”。同時(shí)也能觀(guān)察出性格等方面。比方說(shuō)第 6 題,有人把 SUM 寫(xiě)成 COUNT,我就問(wèn)他你看看前面寫(xiě)的是否有問(wèn)題,同時(shí)又怕太明顯,又補充一句“也可能什么錯誤也沒(méi)有、我在誤導你,你自己判斷”,于是他就不再理會(huì )、繼續接著(zhù)寫(xiě)完整個(gè) SQL。再綜合他的其他一些表現,我的結論是此人主見(jiàn)極強的,我不會(huì )用。屬于出了 BUG 第一念頭是 BUG 在解釋器上、做出來(lái)的程序跟產(chǎn)品需求不符時(shí)會(huì )說(shuō)是你產(chǎn)品沒(méi)說(shuō)明白的那種。相反,我很欣賞那些在做完第一道題的 7 進(jìn)制轉換后還知道驗算的,因為既然是筆算就很容易出錯。我覺(jué)得這種人思考嚴謹、負責任。
其他的一些知識,比方說(shuō) memcache、SVN、單元測試這些,都屬于經(jīng)驗問(wèn)題,應屆生很少需要接觸到這些東西(甚至文件靜態(tài)化也很少碰到),不像上面,我需要以此來(lái)判斷面試者對編程是否已經(jīng)入門(mén)。
還是在 ngacn 上看到的一句話(huà),團隊需要兩種人,要么 NB 的,要么聽(tīng)話(huà)的。
【PHP招聘:如何面試應屆生求職者】相關(guān)文章:
如何從求職者的角度做招聘07-24
“暗中”面試 求職者如何應對08-09
如何把招聘原理運用到招聘面試中?08-09
應屆生“給予式招聘”倍受求職者歡迎07-28
應屆生如何面試03-20
企業(yè)如何招聘選拔應屆生07-16
看中外名企如何面試求職者07-20
面試官如何面試應屆生03-17