面試中如何剔除魚(yú)目混珠的程序員
對于一個(gè)公司來(lái)說(shuō),執行招聘面試事宜是一個(gè)耗時(shí)耗錢(qián)的項目,從顧問(wèn)公司和人才中介挑選出合適的簡(jiǎn)歷之后,還要花更多的時(shí)間找出合適的候選人。有的時(shí)候這些機構會(huì )向你保證這些人都是 Java 天才、SQL 專(zhuān)家、全棧開(kāi)發(fā)者等等,但實(shí)際上如果你盲目的信任他們并邀請應聘人員參加面對面的面試的時(shí)候,你會(huì )很失望的。所以我覺(jué)得最快的甄別方法就是先電話(huà)面試,之后再根據他們的表現采取面對面的交流。
為了獲得更多的反饋信息,提高自己的方法,在這里先和大家分享一些自己工作以來(lái)使用的篩選出來(lái)的編程問(wèn)題,從這些常見(jiàn)的編程技巧里面選出兩個(gè)左右的問(wèn)題,例如Java、SQL、XML、編程、編碼、OOPS、多線(xiàn)程和UNIX。和期待你說(shuō)出對于同一技能的考察有什么好的方法。
下面是我列出的如何過(guò)濾和篩選出不同編程技能的問(wèn)題,這主要有兩個(gè)目的,一是為了給面試者熱身,另外就是幫助主考官剔除不會(huì )編程的“程序員”,那些SQL 專(zhuān)家盡然不會(huì )編寫(xiě) JOIN 查詢(xún)。
在 SQL 方面,我的第一個(gè)篩選問(wèn)題就是請他們描述一個(gè) Left Outer Join。不需要說(shuō)得多么精準,我只是想看看他們有沒(méi)有做過(guò)除了 two table inner join 之外更多的東西。根據他們的回答我會(huì )問(wèn)他們古典SQL查詢(xún),以核實(shí)他們是否知道這樣的原理以及如何應用這些知識。如果他們使用Inner join而不是left outer join 的話(huà),估計就會(huì )錯過(guò)成為正式員工的機會(huì )了。
在 Web 開(kāi)發(fā)方面,首先提的問(wèn)題是解釋一些一個(gè) GET 和一個(gè) POST之間的區別。這里我至多就是想知道他在URL 里面通?吹降腉ET 是什么,以及在HTML Forms 里POST 是什么形式的。根據他們的回答,還可以繼續問(wèn)一些關(guān)于GET vsPOST 使用限制、安全性等問(wèn)題。這些問(wèn)題完全足夠讓你明白眼前這個(gè)人對互聯(lián)網(wǎng)是否有真正的了解。
在 UNIX 方面,其中一個(gè)比較流行的篩選方法是相當簡(jiǎn)單的:你是如何找到一個(gè)特定的程序并解決問(wèn)題的?我期望他們能告訴我關(guān)于 ps、grep 和 kill 之類(lèi)的命令。同時(shí)也想測試一下他們對ps options 的理解程度。第二個(gè)篩選問(wèn)題就是在UNIX 系統里找出大量的文件。千萬(wàn)別誤會(huì ),如果應聘者不能回答這些問(wèn)題的話(huà),那么他很難在這個(gè)有大量程序和服務(wù)器連接的項目中完成任務(wù)。
在招聘 OOPS(Object Oriented Programming)方面,請他們講述一下 Class 和 Object 之間的區別。這樣的安排主要是想他能夠在描述定義的基礎上講一講構建項目的藍圖,關(guān)鍵是想測試回答問(wèn)題的人如何理解概念,并且不會(huì )被概念所困擾。接下來(lái)就是請他舉個(gè)例子,根據他的例子來(lái)問(wèn)他,在什么地方創(chuàng )建這個(gè)對象,由誰(shuí)來(lái)創(chuàng )建等等。
招聘程序設計人員,尤其是提到代碼,最流行的將魚(yú)目混珠的程序員剔除的問(wèn)題是 “Fizz-Buzz” 測試。如果一個(gè)程序員無(wú)法在10-15分鐘之間寫(xiě)出一個(gè) Fizz-buzz,那他可能需要更多的鍛煉,或許根本沒(méi)有準備好。另外一個(gè)方法就是讓他們寫(xiě) Fibonacci series(斐波納契數列),并請他們優(yōu)化一下。大家都知道 Fibonacci 是非常常見(jiàn)的,但是你可能會(huì )很驚訝的看到這些程序員很難在之上寫(xiě)出這些數列,即使是在 IDE 上也寫(xiě)不出來(lái)。
在 XML 方面,我的問(wèn)題是請他們說(shuō)出 DTD 和 XML Schema 之間有什么不同?有些人可能會(huì )說(shuō)只用一個(gè)問(wèn)題來(lái)判定某人的 XML 技能是不是有點(diǎn)太苛刻了,可我要說(shuō),這只是一個(gè)基礎問(wèn)題。有很多程序員之前是從事 XML 工作的,現在也是可以從事 XML 工作的,但他們對這一基礎的了解完全不夠,所以說(shuō)他們有責任區學(xué)習更多的基礎知識,光會(huì )工作是不夠的.,你還要不斷地填充大腦里面的空白。
在 Java 方面,我會(huì )讓他們說(shuō)說(shuō) JDK、JRE 和 JVM 之間有哪些差異?這也是一個(gè)基礎性問(wèn)題,我希望所有有Java 工作經(jīng)驗的,或者是學(xué)習過(guò)Java 的人都應該知道這三者之間的差異。還有就是我希望他們都能自主的提到有哪些JDK 工具,至少可以說(shuō)出 Javac(Java 編譯器) 和所有Java程序里都會(huì )用到的 JVM。另外一個(gè)問(wèn)題就是 PATH 和 CLASSPATH 之間有什么不同之處?如果你不知道這兩者之間的區別,那我真的很難有把握把你們調教成優(yōu)秀員工,因為你在創(chuàng )建項目過(guò)程中將會(huì )遇到很多噩夢(mèng)般困難:特別是調試和修復 ClassNotFoundException 和 NoClassDefFoundError 的時(shí)候。
在招聘 Java 或其他語(yǔ)言方面的多線(xiàn)程開(kāi)發(fā)人員方面,篩選問(wèn)題是要求候選人編寫(xiě)代碼來(lái)避免“僵局”的出現。問(wèn)這個(gè)問(wèn)題的時(shí)候可以提供一個(gè)特別的場(chǎng)景,或者問(wèn)如何編寫(xiě)代碼這樣“僵局”就不會(huì )出現了。如果你有足夠的面試經(jīng)驗的話(huà),你會(huì )很吃驚,因為那些有著(zhù)2-4年編程經(jīng)驗的程序員通常沒(méi)辦法正確的回答這個(gè)問(wèn)題。
在數據結構和算法方面,我問(wèn)的第一個(gè)問(wèn)題就是如何從鏈接表里添加和刪除組件?因為我相信作為一個(gè)程序員就一定知道數組、鏈接表、集合、映射和文字列算法。
我知道,和應聘者拉家常談瑣事并不是發(fā)現程序員的好方法,但是你問(wèn)出來(lái)的問(wèn)題和應聘者的工作經(jīng)歷是息息相關(guān)的,這可以幫助你區分誰(shuí)有真才實(shí)學(xué),誰(shuí)只是虛張聲勢。最好的方法就是坐下來(lái)和他們面對面的交流,討論他們之前做過(guò)的項目,或者是和你結對編程來(lái)證明自己的實(shí)力。
詢(xún)問(wèn)他們之前的工作中做值得他驕傲的是什么,他們最想改變的是什么,為什么要改變,怎么改變。一旦問(wèn)了這些問(wèn)題,除了人格方面的,在編程方面的能力已經(jīng)完全展示出來(lái)了。如果你有機會(huì )面試超過(guò)100個(gè)人的話(huà),其實(shí)你不是在浪費時(shí)間和金錢(qián),而是在組織時(shí)間和金錢(qián)。尤其是在通知他們去參加面對面面試的時(shí)候,一定要確保這個(gè)人值得你花時(shí)間去和他交流。
所以,我很迫切的想要知道你們是問(wèn)什么樣的篩選問(wèn)題來(lái)面試這些程序員的,尤其是在招聘 C、C++、Ruby、Python 或者是 JavaScript 開(kāi)發(fā)者的時(shí)候。
【面試中如何剔除魚(yú)目混珠的程序員】相關(guān)文章:
HR如何面試程序員01-16
程序員應如何準備面試09-11
ios程序員該如何面試09-30
面試中的焦慮如何緩解09-06
面試中如何識別謊言12-04
魚(yú)目混珠的成語(yǔ)故事01-01
如何在你的面試中添磚加瓦08-28
如何應對面試中的問(wèn)題08-24
如何克服面試中的緊張情緒09-18