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