你要面試一個(gè)程序員,應(yīng)該問(wèn)他什么問(wèn)題?
首先,最重要的是,你自己一開(kāi)始就應(yīng)該想清楚:
1.需要新員工完成什么樣的任務(wù)?
2.怎樣的人能完成這樣的任務(wù)?
3.哪些途徑和方法可以發(fā)現(xiàn)這樣的人?
只有明確這些根本性的問(wèn)題,才能正確高效地完成面試。
假定你對(duì)上一節(jié)的三個(gè)問(wèn)題,已經(jīng)有了清晰的想法,那么接下來(lái)就可以設(shè)計(jì)如何提問(wèn)了。
有一些提問(wèn)的原則,是你應(yīng)該遵循的:
每一個(gè)面試問(wèn)題都有明確的目的。你不僅自己了解,還能向其他面試官解釋清楚。
多提一些開(kāi)放性(Open-ended)的問(wèn)題,而不是那種用Yes/No就可以回答的問(wèn)題。這樣做使你有機(jī)會(huì)與面試者展開(kāi)討論,并且提出后續(xù)的問(wèn)題,盡可能多地了解對(duì)方。
不要問(wèn)宗教、家庭、健康、個(gè)人隱私等方面的問(wèn)題。
不要問(wèn)太復(fù)雜的問(wèn)題。因?yàn)槊嬖囌邲](méi)有太多思考時(shí)間,所以無(wú)法周全地回答,你也就無(wú)從判斷他的能力了。
為了確認(rèn)面試者是勝任的,你可以問(wèn)一些與職位相關(guān)的專(zhuān)業(yè)方面的問(wèn)題。(不過(guò)通常來(lái)說(shuō),一次面試不足以看出一個(gè)人的專(zhuān)業(yè)能力。)
比如,你的招聘職位是系統(tǒng)管理員,你可以問(wèn)如何快速地在50臺(tái)機(jī)器上部署Linux?(提示:正確答案不是刻錄50張安裝光盤(pán)。)
另外,你還應(yīng)該向面試者了解他的過(guò)去,因?yàn)檫^(guò)去是未來(lái)的最好預(yù)測(cè)依據(jù)。不過(guò),提問(wèn)的重點(diǎn)不要僅僅是他過(guò)去的成果,更要關(guān)注在當(dāng)時(shí)的環(huán)境中,他是如何決策和實(shí)施的。
因?yàn)槿耸菚?huì)發(fā)展的,所以某種程度上,面試者的綜合素質(zhì)要比他的專(zhuān)業(yè)能力更重要。
所以,具體的技術(shù)問(wèn)題(如何調(diào)用API、什么是設(shè)計(jì)模式、編程語(yǔ)言的語(yǔ)法等等)可以少問(wèn)一些,更應(yīng)該關(guān)注面試者的事業(yè)心、對(duì)工作的熱情、進(jìn)取心、自律能力、毅力等方面。
下面是一些典型問(wèn)題:
Whydidyougetintodevelopment?
你為什么開(kāi)發(fā)軟件?
Howmanytechnicalbooksdidyoureadinthepastyear?
去年你讀了幾本技術(shù)書(shū)籍?
Whatwasyourfavoritetechnicalbookinthepastyear?Whatdidyoulearnfromit?
去年你最喜歡的技術(shù)書(shū)籍是哪本?你從中學(xué)到了什么?
Whatwebsitesdoyoureadregularly,relatedtodevelopment?
平時(shí)你經(jīng)常訪問(wèn)哪些編程類(lèi)網(wǎng)站?
Doyoumaintainanyopen-sourceprojects?
你有自己的開(kāi)源項(xiàng)目嗎?
Doyoucodeinyourspare-time?
業(yè)余時(shí)間你編程嗎?
Doyouloveprogramming,ordoyoudoitforthemoney?
對(duì)于你來(lái)說(shuō),編程是一種愛(ài)好,還是一種謀生手段?
Haveyouaccomplishedanythingimportantinyourcareeryet?Doyouwantto?
你的職業(yè)生涯之中有什么重要的成就?它是你主導(dǎo)的嗎?
Whatwouldmakeyoufeelthatyouhavedonesomethingimportant?
什么事情會(huì)讓你很有成就感?
某些情況下,你可能需要了解面試者的分析判斷能力,看他能否全面地思考問(wèn)題、客觀地評(píng)價(jià)自己。
那么,你可以依次提出這樣三個(gè)問(wèn)題:
What‘syourfavoriteprogramminglanguage?Why?
你最喜歡的編程語(yǔ)言是哪種?為什么?
Ifyoucouldaddonefeaturetoyourfavoritelanguage,whatwoulditbe?Why?
如果允許你為這種語(yǔ)言加一種功能,你會(huì)加什么功能?為什么?
Ifyoucouldremoveonefeaturefromit,whatwoulditbe?Why?
如果允許你取消一種功能,會(huì)是什么功能?為什么?
這里的重點(diǎn)是,讓面試者從正反兩方面評(píng)價(jià)一件自己熟悉的東西,看看他的思維是否片面。答案無(wú)所謂對(duì)錯(cuò),只要面試者有一個(gè)明確的立場(chǎng),能夠從正反兩方面說(shuō)出令人信服的理由,就可以了。比如,某個(gè)軟件的口碑不好,但是面試者說(shuō)他很喜歡,而且說(shuō)得出一大堆理由,清楚地解釋了這種軟件的優(yōu)點(diǎn)和缺點(diǎn)在哪里,這樣就很好。
你還可以把這些問(wèn)題,套用在其他東西上面,比如操作系統(tǒng)、文字編輯器等等。