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