- 相關(guān)推薦
如何在面試中發(fā)現(xiàn)優(yōu)秀程序員
我曾在一次面試中要求一個(gè)很有經(jīng)驗(yàn)的嵌入式軟件開(kāi)發(fā)人員寫(xiě)出一個(gè)反轉(zhuǎn)一段字符串并輸出到屏幕上的程序,
如何在面試中發(fā)現(xiàn)優(yōu)秀程序員
。他在這個(gè)題目上掙扎了很久。這個(gè)家伙是個(gè)很神奇的人。你給他一些沒(méi)用的零件,他能建造一個(gè)機(jī)器人,并能用程序控制它在屋里走來(lái)走去。他曾經(jīng)參與過(guò)研制衛(wèi)星,并且這個(gè)衛(wèi)星現(xiàn)在正在軌運(yùn)行。他只用左腦都比我能干。但是對(duì)于這個(gè)題目他卻從來(lái)、從來(lái)沒(méi)機(jī)會(huì)干過(guò):在屏幕上顯示什么東西。有些人就有這種技能,能在面試中問(wèn)出正確的問(wèn)題,發(fā)現(xiàn)優(yōu)秀的程序員。而有些人卻害怕提問(wèn),畏首畏尾,問(wèn)一些從網(wǎng)上拷貝下來(lái)的問(wèn)題,自己沒(méi)主見(jiàn),只會(huì)跟隨其他面試官的意見(jiàn)。但面試對(duì)于大多數(shù)開(kāi)發(fā)人員來(lái)說(shuō)是一項(xiàng)很基本的技能。一次失敗的招聘會(huì)給一個(gè)組織造成很?chē)?yán)重的長(zhǎng)期的后果,因?yàn)楹芩墓蛦T會(huì)把其他很水的人也帶進(jìn)公司。另一方面,把優(yōu)秀的應(yīng)聘者拒之門(mén)外對(duì)公司也是一種傷害。
一場(chǎng)技術(shù)性的面試至少包括三個(gè)部分。在第一部分里,我們要做的是看應(yīng)聘者的簡(jiǎn)歷上寫(xiě)的是否符合實(shí)際情況。在第二部分里,我們要評(píng)估一下候選者究竟有多少實(shí)際經(jīng)驗(yàn)。最后,我們要用一些問(wèn)答選項(xiàng)或編程問(wèn)題來(lái)測(cè)試這些經(jīng)驗(yàn)。
第一部分:測(cè)試簡(jiǎn)歷的真實(shí)性
有一次我跟一位同事面試一個(gè)候選人。當(dāng)面試完之后,我覺(jué)得這個(gè)候選人還可以,但不是十分出色?晌业耐驴雌饋(lái)很不滿意。“他撒謊,他說(shuō)他會(huì)XXX技術(shù),可很顯然他根本沒(méi)有做過(guò)這種技術(shù)。絕對(duì)不能要這種人。”雖然這XXX技術(shù)對(duì)我們公司并不是很重要,“因?yàn)樗隽诉@個(gè)慌,”我的同事繼續(xù)說(shuō),“我就不會(huì)相信他在簡(jiǎn)歷上寫(xiě)的任何東西了。”
應(yīng)聘人員應(yīng)該在簡(jiǎn)歷中用一種很積極的色彩來(lái)描繪自己。然而,這種積極的描繪應(yīng)該有個(gè)度,過(guò)了這個(gè)度,就表達(dá)的不正確了。在上面的例子中,我并不和我的同事一樣覺(jué)得這個(gè)事很?chē)?yán)重,因?yàn)槲沂孪染图僭O(shè)了,簡(jiǎn)歷上的任何東西都是假的,除非被證明。如果簡(jiǎn)歷上說(shuō),“擅長(zhǎng)于XXX技術(shù)”,那么我就認(rèn)為這個(gè)應(yīng)聘者可能僅是知道XXX技術(shù)這個(gè)名字。如果簡(jiǎn)歷上說(shuō),“在一個(gè)開(kāi)發(fā)多線程股票交易系統(tǒng)的團(tuán)隊(duì)里工作,”那我就會(huì)認(rèn)為應(yīng)聘者可能只是為這個(gè)系統(tǒng)挑選了一下背景的顏色。我的要求一向不嚴(yán)格,除非碰到了一位有十年工作經(jīng)驗(yàn)、已經(jīng)不再寫(xiě)代碼的家伙。如果有人說(shuō)他開(kāi)發(fā)了OpenOffice軟件的文本格式化工具,或擁有哲學(xué)博士學(xué)位,那我們就很容易假設(shè)他們有什么技能了。假設(shè)一無(wú)所有。一切都要證實(shí)。
對(duì)于簡(jiǎn)歷上每條相關(guān)的描述,我會(huì)首先估摸一下應(yīng)聘者的實(shí)際情況。然后,我通過(guò)下面的交談來(lái)證實(shí)。
開(kāi)發(fā)過(guò)一個(gè)實(shí)時(shí)操作系統(tǒng)作為練習(xí)項(xiàng)目。
你工作的團(tuán)隊(duì)有多大?15個(gè)成員?哦,那么,你實(shí)際上負(fù)責(zé)哪部分的?消息隊(duì)列?很好!請(qǐng)描述一下一個(gè)高優(yōu)先級(jí)的任務(wù)向一個(gè)低優(yōu)先級(jí)的任務(wù)發(fā)送消息時(shí)會(huì)發(fā)生什么情況?
完全自主開(kāi)發(fā)了一套為無(wú)線安全系統(tǒng)使用的音頻傳輸協(xié)議,
資料共享平臺(tái)
《如何在面試中發(fā)現(xiàn)優(yōu)秀程序員》(http://m.lotusphilosophies.com)。你的團(tuán)隊(duì)有多少人?只有你?哦,你是如何測(cè)試的?你為什么不使用RTP呢?
給XXX引擎修復(fù)Bug。
請(qǐng)你描述一下你曾發(fā)現(xiàn)過(guò)的一個(gè)特別有挑戰(zhàn)性的bug,以及你是如何修復(fù)它的。
第二部分:發(fā)現(xiàn)實(shí)際的經(jīng)驗(yàn)
擁有更多的經(jīng)驗(yàn)是一個(gè)優(yōu)秀人才的很好的指標(biāo)。有經(jīng)驗(yàn)的開(kāi)發(fā)人員都是從犯錯(cuò)誤中成熟的。他們知道何時(shí)該,何時(shí)不該使用設(shè)計(jì)模式。他們有第六感,能感覺(jué)到需求的哪一部分需要修改,哪一部分要保持原樣。他們知道何時(shí)該偷懶,何時(shí)該考究。是真實(shí)的經(jīng)驗(yàn)讓優(yōu)秀的開(kāi)發(fā)者和平庸的開(kāi)發(fā)者之間的差距大的無(wú)法跨越。
并非所有的經(jīng)驗(yàn)都是等效的。很有可能,對(duì)于某個(gè)人,他通過(guò)多年的工作,在很多的任務(wù)中寫(xiě)或重新無(wú)數(shù)的代碼,犯了許多的錯(cuò)誤,就能獲得扎實(shí)的技能。而另一種情況,一個(gè)人會(huì)在十年的時(shí)間里只在一個(gè)項(xiàng)目里修改了一行代碼,沒(méi)有學(xué)到任何新的東西。
發(fā)現(xiàn)隱藏的時(shí)間
很多偉大的程序員都是在他們大學(xué)的第二年就開(kāi)始編程了。當(dāng)他們離開(kāi)學(xué)校時(shí),他們就已經(jīng)有了幾年的工作經(jīng)驗(yàn)了。還有,有些很神奇的程序員在他們很小的時(shí)候就開(kāi)始學(xué)習(xí)編程的藝術(shù)了。我也認(rèn)識(shí)好幾個(gè)人在他們十幾歲或更小時(shí)就寫(xiě)出來(lái)一些不算小的程序了。這些信息你是在簡(jiǎn)歷上找不到的,需要你在面試中把它們引誘出來(lái)。
你是怎么進(jìn)入到軟件開(kāi)發(fā)這一行的?
你曾經(jīng)學(xué)過(guò)的第一種編程語(yǔ)言是什么?
經(jīng)驗(yàn)的密度
很多神奇的程序員只是在他們工作的時(shí)間里編碼。這很好,工作生活很平衡,你沒(méi)有理由不雇傭這樣的人。然而,在工作和學(xué)習(xí)之余做一些個(gè)人的編程項(xiàng)目是一個(gè)優(yōu)秀的人才的很好的指標(biāo)。有業(yè)余編程經(jīng)驗(yàn)的應(yīng)聘者很明顯有更豐富的經(jīng)驗(yàn),更適合公司。沒(méi)有個(gè)人項(xiàng)目?這里有其他幾點(diǎn)也能做這方面的指標(biāo):
在很小的團(tuán)隊(duì)或小組里工作。
參與過(guò)很多各種各樣的項(xiàng)目。
對(duì)一個(gè)大型項(xiàng)目的各個(gè)抽象層面上都有很詳細(xì)的了解。
在一個(gè)項(xiàng)目組里作為主要開(kāi)發(fā)者。
第三部分:驗(yàn)證經(jīng)驗(yàn)
在對(duì)應(yīng)聘者有了一個(gè)基本的真正經(jīng)驗(yàn)水平的感覺(jué)后,就開(kāi)始對(duì)他們進(jìn)行重要的實(shí)際編程經(jīng)驗(yàn)的驗(yàn)證了。幾分鐘的時(shí)間對(duì)于一個(gè)真正的測(cè)試肯定是很不充分的,但也只有這樣了。我們可以通過(guò)對(duì)編程開(kāi)發(fā)的各個(gè)領(lǐng)域進(jìn)行提問(wèn)來(lái)認(rèn)識(shí)應(yīng)聘者對(duì)這些知識(shí)掌握的深度和廣度。當(dāng)然了,你對(duì)應(yīng)聘者技能水平的看法會(huì)由于你自身的經(jīng)驗(yàn)水平而有所偏向。對(duì)于你不太熟悉的領(lǐng)域你不可能對(duì)答案做出正確的判斷。所以我們一般同時(shí)會(huì)有好幾個(gè)面試官。
工作職務(wù)的不同會(huì)有不同的面試主題。然而,下面幾個(gè)領(lǐng)域是很常見(jiàn)的:
數(shù)據(jù)結(jié)構(gòu)和算法
多線程
字節(jié)操作
內(nèi)存分配
對(duì)象,繼承,設(shè)計(jì)模式
遞歸
匯編知識(shí)和程序運(yùn)行原理
我選擇的每個(gè)領(lǐng)域都有一個(gè)精心挑選的很基礎(chǔ)的問(wèn)題(“什么是一個(gè)信號(hào)?”)。問(wèn)題很基礎(chǔ),只要應(yīng)聘者在這個(gè)領(lǐng)域做過(guò)一些工作就能回答上這些問(wèn)題。每個(gè)領(lǐng)域都有一些其它的較深入的問(wèn)題。候選人對(duì)這些問(wèn)題的回答能證明他們到底是不是專(zhuān)業(yè)。例如,如果你問(wèn)一個(gè)有經(jīng)驗(yàn)的嵌入式軟件開(kāi)發(fā)人員如何把0x4c轉(zhuǎn)化成二進(jìn)制,他寫(xiě)出一個(gè)4×16+12,這就不是很對(duì)了。
【如何在面試中發(fā)現(xiàn)優(yōu)秀程序員】相關(guān)文章:
如何在面試中自我介紹10-18
面試中如何在回答自己的缺點(diǎn)?07-10
關(guān)于如何在面試中回答自己的缺點(diǎn)?08-11
低學(xué)歷者如何在面試中取勝的技巧10-29
如何在省考面試中避免套路化10-21
如何在面試中做一個(gè)有趣的人09-21
求職者如何在面試中化解HR的“打壓”06-03