面試中如何剔除“魚目混珠”程序員?

公司招聘面試事宜是一個耗時耗錢的項目,從挑選簡歷開始,還要花更多的時間面試候選人。有的時候這些人才機構會向你保證這些人都是Java天才、SQL專家、堆棧開發者等等,但實際上真實情況遠不及你想想的。

對于一個公司來說,執行招聘面試事宜是一個耗時耗錢的項目,從顧問公司和人才中介挑選出合適的簡歷之后,還要花更多的時間找出合適的候選人。有的時候這些機構會向你保證這些人都是 Java 天才、SQL 專家、堆棧開發者等等,但實際上如果你盲目的信任他們并邀請應聘人員參加面對面的面試的時候,你會很失望的。所以我覺得最快的甄別方法就是先電話面試,之后再根據他們的表現采取面對面的交流。


為了獲得更多的反饋信息,提高自己的方法,在這里先和大家分享一些自己工作以來使用的篩選出來的編程問題,從這些常見的編程技巧里面選出兩個左右的問題,例如Java、SQL、XML、編程、編碼、OOPS、多線程和UNIX。和期待你說出對于同一技能的考察有什么好的方法。


下面是我列出的如何過濾和篩選出不同編程技能的問題,這主要有兩個目的,一是為了給面試者熱身,另外就是幫助主考官剔除不會編程的“程序員”,那些SQL 專家盡然不會編寫 JOIN 查詢。

在 SQL 方面,我的第一個篩選問題就是請他們描述一個 Left Outer Join。不需要說得多么精準,我只是想看看他們有沒有做過除了 two table inner join 之外更多的東西。根據他們的回答我會問他們古典SQL查詢,以核實他們是否知道這樣的原理以及如何應用這些知識。如果他們使用?Inner join?而不是?left outer join 的話,估計就會錯過成為正式員工的機會了。


在 Web 開發方面,首先提的問題是解釋一些一個 GET 和一個 POST之間的區別。這里我至多就是想知道他在?URL 里面通常看到的?GET 是什么,以及在?HTML Forms 里?POST 是什么形式的。根據他們的回答,還可以繼續問一些關于?GET vs?POST 使用限制、安全性等問題。這些問題完全足夠讓你明白眼前這個人對互聯網是否有真正的了解。


在 UNIX 方面,其中一個比較流行的篩選方法是相當簡單的:你是如何找到一個特定的程序并解決問題的?我期望他們能告訴我關于 ps、grep 和 kill 之類的命令。同時也想測試一下他們對ps options 的理解程度。第二個篩選問題就是在?UNIX 系統里找出大量的文件。千萬別誤會,如果應聘者不能回答這些問題的話,那么他很難在這個有大量程序和服務器連接的項目中完成任務。


在招聘 OOPS(Object Oriented Programming)方面,請他們講述一下 Class 和 Object 之間的區別。這樣的安排主要是想他能夠在描述定義的基礎上講一講構建項目的藍圖,關鍵是想測試回答問題的人如何理解概念,并且不會被概念所困擾。接下來就是請他舉個例子,根據他的例子來問他,在什么地方創建這個對象,由誰來創建等等。


招聘程序設計人員,尤其是提到代碼,最流行的將魚目混珠的程序員剔除的問題是 "Fizz-Buzz" 測試。如果一個程序員無法在10-15分鐘之間寫出一個 Fizz-buzz,那他可能需要更多的鍛煉,或許根本沒有準備好。另外一個方法就是讓他們寫 Fibonacci series(斐波納契數列),并請他們優化一下。大家都知道 Fibonacci 是非常常見的,但是你可能會很驚訝的看到這些程序員很難在之上寫出這些數列,即使是在 IDE 上也寫不出來。


在 XML 方面,我的問題是請他們說出 DTD 和 XML Schema 之間有什么不同?有些人可能會說只用一個問題來判定某人的 XML 技能是不是有點太苛刻了,可我要說,這只是一個基礎問題。有很多程序員之前是從事 XML 工作的,現在也是可以從事 XML 工作的,但他們對這一基礎的了解完全不夠,所以說他們有責任區學習更多的基礎知識,光會工作是不夠的,你還要不斷地填充大腦里面的空白。


在 Java 方面,我會讓他們說說 JDK、JRE 和 JVM 之間有哪些差異?這也是一個基礎性問題,我希望所有有?Java 工作經驗的,或者是學習過?Java 的人都應該知道這三者之間的差異。還有就是我希望他們都能自主的提到有哪些?JDK 工具,至少可以說出 Javac(Java 編譯器) 和所有Java程序里都會用到的 JVM。另外一個問題就是 PATH 和 CLASSPATH 之間有什么不同之處?如果你不知道這兩者之間的區別,那我真的很難有把握把你們調教成優秀員工,因為你在創建項目過程中將會遇到很多噩夢般困難:特別是調試和修復 ClassNotFoundException 和 NoClassDefFoundError 的時候。


在招聘 Java 或其他語言方面的多線程開發人員方面,篩選問題是要求候選人編寫代碼來避免“僵局”的出現。問這個問題的時候可以提供一個特別的場景,或者問如何編寫代碼這樣“僵局”就不會出現了。如果你有足夠的面試經驗的話,你會很吃驚,因為那些有著2-4年編程經驗的程序員通常沒辦法正確的回答這個問題。


在數據結構和算法方面,我問的第一個問題就是如何從鏈接表里添加和刪除組件?因為我相信作為一個程序員就一定知道數組、鏈接表、集合、映射和文字列算法。


我知道,和應聘者拉家常談瑣事并不是發現程序員的好方法,但是你問出來的問題和應聘者的工作經歷是息息相關的,這可以幫助你區分誰有真才實學,誰只是虛張聲勢。最好的方法就是坐下來和他們面對面的交流,討論他們之前做過的項目,或者是和你結對編程來證明自己的實力。

詢問他們之前的工作中做值得他驕傲的是什么,他們最想改變的是什么,為什么要改變,怎么改變。一旦問了這些問題,除了人格方面的,在編程方面的能力已經完全展示出來了。如果你有機會面試超過100個人的話,其實你不是在浪費時間和金錢,而是在組織時間和金錢。尤其是在通知他們去參加面對面面試的時候,一定要確保這個人值得你花時間去和他交流。

所以,我很迫切的想要知道你們是問什么樣的篩選問題來面試這些程序員的,尤其是在招聘 C、C++、Ruby、Python 或者是 JavaScript 開發者的時候。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447317.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447317.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447317.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

InputStream 類型

輸入流類型 I/O-1 類功能構造器參數如何使用ByteArrayInputStream允許將內存的緩沖區當做 InputStream 使用緩沖區,字節將從中取出作為一種數據源:將其與 FilterInputStream 對象相連以提供有用接口StringBufferInputStream將 String 轉換成 InputStr…

java容器相關問題

同步類容器 1,這些復合操作在多線程并發地修改容器時,可能會表現出意外的行為,最經典的便是ConcurrentModificationException,原因是當容器迭代的過程中,被并發的修改了內容,這是由于早期迭代器設計的時候…

趣文:如果編程語言是車

C語言是全能手,小巧,強大,所向披靡,可靠,任何事情都能對付。 C是新的C,雙倍的能力,雙倍的尺寸,適應險惡的環境,但是你如果沒練好就去駕駛,很可能會撞車。 C#是…

Java 線程安全

線程安全 線程安全概念:當多個線程訪問某一個類(對象或方法)時,這個類始終都能表現出正確的行為,那么這個類(對象或方法)就是線程安全的。synchronized:可以在任意對象及方法上加鎖…

開發者應該了解的API技術清單!

摘要:有人說,有API的地方就有App,借助這些API開發者輕松構建出一款應用,極大地提高開發效率和開發質量。文中整理了一份API服務清單,內容涵蓋:監控/調試、 CDN 、數據庫、儀表盤、支付、通信等方面&#xf…

提高程序員職場價值的10大技巧

如果你已經是個很牛叉的程序員,但是依然覺得覺得還不夠的話,歡迎閱讀此文。本文旨在幫助各位更上一層樓。 你是不是覺得自己已經掌握了所有的編程技巧?別太自以為是了! 會寫代碼的確很重要,但是要拿到更好薪水&#…

google python的風格規范

點擊鏈接,查看內容

IT人應當知道的10個行業小內幕

如果你打算從事IT行業或剛進入這個行業,也許本文下面的小內幕會嚇到你,因為這些事平常都不會公開討論的。如果你是IT資深人士,或許你已經遇到其中的大部分了。如果你愿意,請一起來參與討論吧。 這些內幕大多數是針對網絡管理員、…

Volatile原子性一致性JVM指令重排

概念 Volatile概念:Volatile關鍵字的主要作用是使變量在多個線程間可見。作用: 在多線程間可以進行變量的變更,使得線程間進行數據的共享可見 阻止指令重排序,happens-before package com.example.core.cas;import com.example.c…

python修改文件內容,不需要read,write多個動作。

python 要修改文件內容,常用 是先read,后write , 再 rename,很不爽。 比如:需要 把 yuv_dir "../HD/" # "H:/HD_Master/1080i25/" 改為 yuv_dir "C:/HD/" # "H:…

Atomic系列類

Atomic系列類別 Atomic系列類封裝了一系列的基礎類型和對象操作,其主要目的就是為了實現原子性,主要核心類如下 AtomicIntegerAtomicLongAtomicBooleanAtomicIntegerArrayAtomicLongArrayAtomicReference 原子性的引用對象在對Atomic類操作的時候&…

python 系統學習筆記(十二)---os os.path os.walk

得到當前工作目錄,即當前 Python腳本工作的目錄路徑: os.getcwd() 返回指定目錄下的所有文件和目錄名:os.listdir()函數用來刪除一個文件:os.remove()刪除多個目錄:os.removedirs(r“c:\python”)檢驗給出的路徑是否是…

Java JUC工具類--CountDownLatch

CountDownLatch:用于監聽某些初始化操作,并且線程進行阻塞,等初始化執行完畢后,通知主線程繼續工作執行 package com.example.core.juc;import java.util.concurrent.CountDownLatch;public class UseCountDownLatch {public stat…

Java JUC工具類--CyclicBarrier

CyclicBarrier:柵欄的概念,多線程的進行阻塞,等待某一個臨界值條件滿足后,同時執行 類比:每個線程代表一個跑步運動員,當運動員都準備好后,才一起出發,只要有一個人沒有準備好&#…

人生感悟:人生像吃自助餐

問我怎樣管理欲望,過簡單生活?我的答案是:你要先學會品味人生,品味的同義詞,就叫做體悟內涵。 人為什么有這么多欲望?其實,我們每個人在一個社會,就像進入一個自助餐(buffet)店,食物非常的多…

Java JUC工具類--Future

Future模式,也是非常經典的設計模式,這種模式主要就利用空間換時間的概念,也就是說異步執行(需要開啟一個新的線程)在互聯網高并發的應用服務中,我們隨處可見這種理念和代碼,主要就是使用了這種…

職場與生活 八條原則 讓你不再浪費時間和提高效率

Heidi Roizen女士一度是硅谷人人爭相學習的典范。她曾創辦自己的公司并管理了14年之久。后來,她擔任蘋果公司主管開發者關系的高級副總裁。現在,她是DFJ Venture的一位風投家,她還在斯坦福主講一門名叫??“企業家精神??”的課程。她幾乎認…

Java JUC工具類--Exchanger

Exchanger Exchanger用于進行線程間的數據交換,它提供一個同步點,在這個同步點,兩個線程可以交換彼此的數據兩個線程通過exchange方法交換數據,如果一個線程先執行exchange方法,它會一直等待第二個線程也執行exchang…

爸爸的素質決定孩子飛多高,爸爸們請反復看!!!

好父親等于200個好老師,當爹的都好好看看,以后孩子不給力別怨別人! 孩子是父親的影子,希望每個閱讀完全文的父親,都能成為一個好父親。 NO.1爸爸是孩子最好的老師 爸爸的素質有多高,孩子就能飛多高 用理性的父愛幫…