如何準(zhǔn)備軟件工程師的面試
(作者簡(jiǎn)介: 王忻,Google 工程師。北京出生,五歲時(shí)跟隨父母移居美國(guó)。中學(xué)期間跳了三級(jí),十五歲進(jìn)入了加州理工大學(xué),加入 Google 前曾在微軟等公司工作。)
六月份的時(shí)候,我曾經(jīng)在黑板報(bào)上介紹過(guò)“如何寫(xiě)一份好的工程師簡(jiǎn)歷”, 今天想跟大家來(lái)談?wù)勅绾螠?zhǔn)備軟件工程師的面試?假設(shè),現(xiàn)在您的殺手簡(jiǎn)歷 (killer resume)已經(jīng)吸引了某大公司的注意并約你面試。那么接下來(lái)該如何準(zhǔn)備呢?
我在 Google(以前是微軟)工作期間面試了不下 300人,其中某些應(yīng)聘者確實(shí)表現(xiàn)非凡,但有些卻顯得準(zhǔn)備不足。當(dāng)然許多面試準(zhǔn)備不足的人最后依然獲得了錄用通知,因?yàn)樗麄儽旧泶_實(shí)才華出眾。但如果應(yīng)聘者能提前準(zhǔn)備妥當(dāng),那么面試過(guò)程將更為保險(xiǎn)和輕松。以下所列出的就是我根據(jù)多年經(jīng)驗(yàn)總結(jié)得出的建議:
1.使用相同的工具(如鉛筆和紙張)和時(shí)間限制(例如半個(gè)小時(shí))模擬面試訓(xùn)練
Google 和微軟都會(huì)讓?xiě)?yīng)聘者在白板上手工解答編程問(wèn)題,但通常大部分的應(yīng)聘者都是習(xí)慣于在電腦上利用編程工具系統(tǒng)編寫(xiě)程序。因此面試的時(shí)候,某些應(yīng)聘者離開(kāi)了熟悉的電腦光標(biāo),站在白板前感覺(jué)手足無(wú)措不知該如何起行。又或者他們不習(xí)慣在編程之時(shí)旁邊有人觀看,這會(huì)讓他們感到緊張而無(wú)法正常思考。
在現(xiàn)實(shí)生活中,如果你想要橫渡英吉利海峽,自然不能總是在室內(nèi)游泳池練習(xí)。你必須投身于大海在波濤之中訓(xùn)練,在準(zhǔn)備面試的時(shí)候也是如此。:)
在面試開(kāi)始之前你最好向招聘單位詢問(wèn)面試形式和面試問(wèn)題。如果招聘單位讓你在某個(gè)房間考試且僅提供沒(méi)有匯編程序的編輯器,那么就應(yīng)該在家中按照這種情景進(jìn)行練習(xí)。如果招聘公司單位讓你在白板上回答問(wèn)題并會(huì)安排考官在旁監(jiān)督,那么你就要找一位軟件工程師來(lái)扮演考官配合你練習(xí)。即使找來(lái)的考官經(jīng)驗(yàn)不如你也沒(méi)有關(guān)系,他們依然能幫助你消除在他人面前出錯(cuò)所帶來(lái)的緊張感,這樣可以讓你適應(yīng)有人在旁邊盯著看的面試氛圍。
如果你恰巧認(rèn)識(shí)我并希望由我來(lái)幫你聯(lián)系,那我的條件就是必須請(qǐng)我吃飯:如果你已經(jīng)工作了就吃日本壽司大餐;如果你還是學(xué)生,那么吃比薩餅也可以。:)
2.在面試過(guò)程中不要對(duì)細(xì)小錯(cuò)誤耿耿于懷
我曾不止一次的在面試過(guò)程中碰到這種情況:當(dāng)應(yīng)聘者知道編程問(wèn)題后,他馬上就想到了最佳的方案、確定了邊界條件,然后開(kāi)始編寫(xiě)程序。但在編寫(xiě)過(guò)程中,應(yīng)聘者犯了諸如首先檢查是不是操作順序錯(cuò)誤或忘記設(shè)定某變量等無(wú)關(guān)大局的小錯(cuò)誤,當(dāng)我指出其錯(cuò)誤之后,應(yīng)聘者立刻變得十分緊張,這種焦慮情緒影響了他在后面環(huán)節(jié)的正常發(fā)揮。
其實(shí)這種恐懼心理完全不必要。一名優(yōu)秀的程序員在編程過(guò)程中出現(xiàn)錯(cuò)誤也是很正常的,就像是小提琴手在演奏高難度的巴赫交響樂(lè)時(shí)也會(huì)偶爾失誤。音樂(lè)會(huì)的聽(tīng)眾可能會(huì)覺(jué)察到這些錯(cuò)誤,但是聽(tīng)眾絕對(duì)不會(huì)因?yàn)檫@種細(xì)小失誤就把出色的小提琴手看作是門(mén)外漢。
即便應(yīng)聘者徹底搞砸了某個(gè)編程問(wèn)題,面試考官也可能會(huì)提出不同的問(wèn)題并會(huì)容忍應(yīng)聘者在某個(gè)問(wèn)題上的失誤。再退一步說(shuō),就算某次面試徹底失敗,你也有機(jī)會(huì)在其它面試上補(bǔ)救。
我的一位同事(一個(gè)項(xiàng)目的技術(shù)負(fù)責(zé)人)最近面試了一個(gè)人,在開(kāi)始面試時(shí)他覺(jué)得面試者的交流方式存在問(wèn)題,因此開(kāi)始表現(xiàn)的相當(dāng)不友好。但經(jīng)過(guò)了整個(gè)面試過(guò)程后,面試者證明了自身的能力,而我的那位同事也成了那位面試者最堅(jiān)定的支持者。在過(guò)去的一年中,我從未見(jiàn)過(guò)這位同事如此強(qiáng)烈的支持哪位面試者。
所以,因此就算面試進(jìn)展不順,也務(wù)必堅(jiān)持到底不要放棄。
3.在面試過(guò)程中不要失禮
這似乎是不用說(shuō)的問(wèn)題,但在面試過(guò)程中我確實(shí)碰到過(guò)影響很不好的失禮行為。曾有一位前來(lái)應(yīng)聘軟件工程師的人看到我就說(shuō):“哇,我真不敢相信你這么年輕!你看上去好?。?!我覺(jué)得你才 18 歲!”
面試者的這種言行實(shí)在要不得。
面試者也要注意不要說(shuō)出諸如此類的話:“哇,你真的就是考官嗎?你看上去好老!”“哇,你真的是來(lái)面試我的,你看上去好胖!”(相信應(yīng)該不會(huì)有人說(shuō)這樣的話)。
在我的另外一次面試中,應(yīng)聘者的手機(jī)在面試開(kāi)始 15 分鐘之后就響了,她沒(méi)有理會(huì),手機(jī)連續(xù)響了 20 秒,這樣不免會(huì)對(duì)面試造成影響。5 分鐘之后,她的手機(jī)又響了,她依然沒(méi)有理會(huì);5分鐘之后,手機(jī)第三次響起。最后她終于抓過(guò)手提包在里面翻出了手機(jī)。我想:“是時(shí)候關(guān)掉手機(jī)了,她在進(jìn)來(lái)之前就應(yīng)該把手機(jī)關(guān)掉。”但是她在手提包中拿出手機(jī)之后卻旁若無(wú)人的打起電話來(lái),而且就在面試過(guò)程中間!
這種情況唯一可接受的理由就是他有什么非常緊急的事,但是即便情況如此,那么他也應(yīng)該在面試開(kāi)始之時(shí)就講清楚,讓面試官有所準(zhǔn)備。
4.不要在面試中喧賓奪主
我曾經(jīng)面試過(guò)幾個(gè)應(yīng)聘者,他們好像鐵了心腸一定要告訴我他們最近的“超級(jí)項(xiàng)目”。當(dāng)我開(kāi)始發(fā)話他們就立刻打斷:“我想讓你了解我們近期處理的超級(jí)項(xiàng)目,10年之前當(dāng)這個(gè)項(xiàng)目開(kāi)始之時(shí)還默默無(wú)聞……”,然后接下來(lái)的5分鐘時(shí)間都在那里滔滔不絕唾沫橫飛。
有時(shí)應(yīng)聘者好像打定主意要給每個(gè)考官詳細(xì)描述其引以為豪的項(xiàng)目,然后一整天都在那里翻來(lái)覆去的說(shuō)這個(gè)項(xiàng)目。
記?。好嬖嚬僭诿嬖囘^(guò)程中有具體的問(wèn)題需要詢問(wèn)。但是如果應(yīng)聘者喧賓奪主,那么考官就可能無(wú)法獲得充分的信息來(lái)做出判斷,同時(shí)這種行為也會(huì)讓考官覺(jué)得應(yīng)聘者很難共事。
如果你確實(shí)想談?wù)撟约旱捻?xiàng)目,那么就應(yīng)詢問(wèn)面試官:“我覺(jué)得最近的某某項(xiàng)目能充分體現(xiàn)我的能力,我能不能用 10分鐘的時(shí)間來(lái)描述一下具體情況?”這樣就會(huì)給面試官空間來(lái)調(diào)整面試過(guò)程,由此也避免毫無(wú)征兆就讓面試離題萬(wàn)里。
5.在回答需要具體答案的問(wèn)題之時(shí),記得首先要有總括性的發(fā)言
有時(shí)我會(huì)問(wèn)一個(gè)答案可以很簡(jiǎn)練的問(wèn)題,例如:“在你的那個(gè)成功項(xiàng)目中總共有多少人參與?”但應(yīng)聘者往往會(huì)就此打開(kāi)話匣:“恩,張三參與了這個(gè)項(xiàng)目,他負(fù)責(zé)UI部分,當(dāng)然我也會(huì)給他一些指導(dǎo)。李四也在項(xiàng)目中,她在賓州遠(yuǎn)程工作,負(fù)責(zé)后端服務(wù)器。兩年之后我們又有新人王五加入……”
在應(yīng)聘者滔滔不絕的講了三分鐘之后,我還是不知道這個(gè)項(xiàng)目到底有多少人參與。
因此首先要簡(jiǎn)練的回答問(wèn)題,然后再展開(kāi)描述:“在我接手項(xiàng)目時(shí)有三個(gè)人,但當(dāng)我離開(kāi)項(xiàng)目時(shí)人數(shù)已經(jīng)增加到12人?!?
當(dāng)然如果能簡(jiǎn)練的回答問(wèn)題,然后征詢意見(jiàn)之后再展開(kāi)論述那就更好了:“在我接手項(xiàng)目時(shí)有三個(gè)人,但當(dāng)我離開(kāi)項(xiàng)目時(shí)人數(shù)已經(jīng)增加到 12 人。我可以講一下各人在項(xiàng)目中的具體分工嗎?”
6.(不是特別重要)在面試中要衣著得體,舒適的商務(wù)便裝是最佳的選擇
人們有時(shí)候會(huì)為衣著犯愁。但是最重要的是要讓自己感覺(jué)舒適。如果需要具體的建議,那么我建議穿襯衫甚至T恤衫。對(duì)于某些公司(例如 Google),西裝革履顯然是太隆重了。
這條建議不必太看中,因?yàn)槊嬖嚬俨粫?huì)管應(yīng)聘者穿什么。最好應(yīng)該詢問(wèn)人事招聘部門(mén)穿什么合適,因?yàn)椴煌瑖?guó)家有不同習(xí)俗,就算美國(guó)東海岸和西海岸的公司著裝文化也會(huì)有差別。像 Google 這樣的公司在著裝方面更加隨意,因此如果你穿著“三件套”的經(jīng)典西服去 Google 面試,考官可能會(huì)有異樣的感覺(jué)。因此如果你真的具備軟件工程的本領(lǐng),穿什么其實(shí)并不重要。某個(gè)應(yīng)聘者曾經(jīng)穿著皺巴巴臟兮兮的T恤就跑來(lái)面試,他的T恤衫上還有著許多破洞。但最后他還是拿到了錄取通知(當(dāng)然我絕不建議如此穿著)。
最后的一個(gè)小故事
最后我想講一場(chǎng)極為尷尬的面試。在看完之后,我希望你能這樣想:無(wú)論你的面試如何糟糕,你至少要比這位應(yīng)聘者幸運(yùn)。
以前我還在微軟的時(shí)候,我們通常會(huì)為應(yīng)聘者準(zhǔn)備一些飲料,某位暫稱其為 Jeff 的應(yīng)聘者要了一聽(tīng)百事可樂(lè)。我們走進(jìn)面試房間后,他就在桌前坐下了。接下來(lái)我們簡(jiǎn)要的談了談他的工作經(jīng)歷,然后他開(kāi)始在白板上解答編程問(wèn)題,此時(shí)他還沒(méi)有打開(kāi)他的可樂(lè)。
我們倆站在白板前,然后杰夫開(kāi)始在上面寫(xiě)程序。在寫(xiě)程序之時(shí)他沉浸在對(duì)整體構(gòu)架的思考中,下意識(shí)的退了一步來(lái)查看整個(gè)白板。在后退時(shí)他不小心碰到了桌子,放在桌上的百事可樂(lè)掉到了地上。
因?yàn)榭蓸?lè)還沒(méi)有打開(kāi),因此當(dāng)可樂(lè)罐落地的時(shí)候,可樂(lè)罐炸開(kāi)了。
可樂(lè)罐在地上打轉(zhuǎn),泡沫噴的到處都是。你可以想象當(dāng)時(shí)的場(chǎng)景,可樂(lè)噴到了墻上、書(shū)架還有我電腦的鍵盤(pán)上。我倆楞在那里,手都半伸著(根本來(lái)不及抓到可樂(lè)罐),眼睜睜的看著可樂(lè)弄得到處都是。
我們花了 5 分鐘的時(shí)間用紙巾來(lái)清理現(xiàn)場(chǎng)(雖然我的書(shū)本自那天之后都粘頁(yè)了,而墻壁也不再是干凈的了)。
隨后我們重新開(kāi)始白板測(cè)試。杰夫此時(shí)已非常緊張(換了誰(shuí)都會(huì)緊張吧?)。他寫(xiě)了幾行程序,然后擦掉,然后再寫(xiě)。他是用自己的手擦拭白板而不是用板刷。他急得額頭冒汗,然后他又用剛剛擦過(guò)白板的手擦汗。在面試過(guò)程結(jié)束之時(shí),他的臉上布滿了紅色、綠色和藍(lán)色的顏料。
我說(shuō):“你的手上粘了很多顏料,我?guī)闳バl(wèi)生間洗洗吧,”然后我把他領(lǐng)到洗手間讓他從鏡中看到了自己的尊容。