PostRank

2008/12/09

轉載:如何準備軟件工程師的面試

轉自:網路

今天想跟大家來談談如何準備軟件工程師的面試?假設,現在您的殺手簡歷 (killer resume)已經吸引了某大公司的注意並約你面試.那麼接下來該如何準備呢?

我在 Google(以前是微軟)工作期間面試了不下 300人,其中某些應聘者確實表現非凡,但有些卻顯得準備不足.當然許多面試準備不足的人最後依然獲得了錄用通知,因為他們本身確實才華出眾.但如果應聘 者能提前準備妥當,那麼面試過程將更為保險和輕鬆.以下所列出的就是我根據多年經驗總結得出的建議:

1.使用相同的工具(如鉛筆和紙張)和時間限制(例如半個小時)模擬面試訓練

Google 和微軟都會讓應聘者在白板上手工解答編程問題,但通常大部分的應聘者都是習慣於在電腦上利用編程工具系統編寫程序.因此面試的時候,某些應聘者離開了熟悉 的電腦光標,站在白板前感覺手足無措不知該如何起行.又或者他們不習慣在編程之時旁邊有人觀看,這會讓他們感到緊張而無法正常思考.

在現實生活中,如果你想要橫渡英吉利海峽,自然不能總是在室內游泳池練習.你必須投身於大海在波濤之中訓練,在準備面試的時候也是如此.:)

在面試開始之前你最好向招聘單位詢問面試形式和麵試問題.如果招聘單位讓你在某個房間考試且僅提供沒有彙編程序的編輯器,那麼就應該在家中按照這種 情景進行練習.如果招聘公司單位讓你在白板上回答問題並會安排考官在旁監督,那麼你就要找一位軟件工程師來扮演考官配合你練習.即使找來的考官經驗不如你 也沒有關系,他們依然能幫助你消除在他人面前出錯所帶來的緊張感,這樣可以讓你適應有人在旁邊盯著看的面試氛圍.

如果你恰巧認識我並希望由我來幫你聯繫,那我的條件就是必須請我吃飯:如果你已經工作了就吃日本壽司大餐;如果你還是學生,那麼吃比薩餅也可以.:)

2.在面試過程中不要對細小錯誤耿耿於懷

我曾不止一次的在面試過程中碰到這種情況:當應聘者知道編程問題後,他馬上就想到了最佳的方案、確定了邊界條件,然後開始編寫程序.但在編寫過程 中,應聘者犯了諸如首先檢查是不是操作順序錯誤或忘記設定某變量等無關大局的小錯誤,當我指出其錯誤之後,應聘者立刻變得十分緊張,這種焦慮情緒影響了他 在後面環節的正常發揮.

其實這種恐懼心理完全不必要.一名優秀的程序員在編程過程中出現錯誤也是很正常的,就像是小提琴手在演奏高難度的巴赫交響樂時也會偶爾失誤.音樂會的聽眾可能會覺察到這些錯誤,但是聽眾絕對不會因為這種細小失誤就把出色的小提琴手看作是門外漢.

即便應聘者徹底搞砸了某個編程問題,面試考官也可能會提出不同的問題並會容忍應聘者在某個問題上的失誤.再退一步說,就算某次面試徹底失敗,你也有機會在其它面試上補救.

我的一位同事(一個項目的技術負責人)最近面試了一個人,在開始面試時他覺得面試者的交流方式存在問題,因此開始表現的相當不友好.但經過了整個面 試過程後,面試者證明了自身的能力,而我的那位同事也成了那位面試者最堅定的支持者.在過去的一年中,我從未見過這位同事如此強烈的支持哪位面試者.

所以,因此就算面試進展不順,也務必堅持到底不要放棄.

3.在面試過程中不要失禮

這似乎是不用說的問題,但在面試過程中我確實碰到過影響很不好的失禮行為.曾有一位前來應聘軟件工程師的人看到我就說:「哇,我真不敢相信你這麼年 輕!你看上去好小!!我覺得你才 18 歲!」我看了他的簡歷才搞清楚原來是來應聘的,在開始的時候我卻忍不住想:「這個人是來面試我的吧?!?!」

面試者的這種言行實在要不得.

面試者也要注意不要說出諸如此類的話:「哇,你真的就是考官嗎?你看上去好老!」「哇,你真的是來面試我的,你看上去好胖!」(相信應該不會有人說這樣的話).

在我的另外一次面試中,應聘者的手機在面試開始 15 分鐘之後就響了,她沒有理會,手機連續響了 20 秒,這樣不免會對面試造成影響.5 分鐘之後,她的手機又響了,她依然沒有理會;5分鐘之後,手機第三次響起.最後她終於抓過手提包在裡面翻出了手機.我想:「是時候關掉手機了,她在進來之 前就應該把手機關掉.」但是她在手提包中拿出手機之後卻旁若無人的打起電話來,而且就在面試過程中間!

這種情況唯一可接受的理由就是他有什麼非常緊急的事,但是即便情況如此,那麼他也應該在面試開始之時就講清楚,讓面試官有所準備.

4.不要在面試中喧賓奪主

我曾經面試過幾個應聘者,他們好像鐵了心腸一定要告訴我他們最近的「超級項目」.當我開始發話他們就立刻打斷:「我想讓你瞭解我們近期處理的超級項目,10年之前當這個項目開始之時還默默無聞……」,然後接下來的5分鐘時間都在那裡滔滔不絕唾沫橫飛.

有時應聘者好像打定主意要給每個考官詳細描述其引以為豪的項目,然後一整天都在那裡翻來覆去的說這個項目.

記住:面試官在面試過程中有具體的問題需要詢問.但是如果應聘者喧賓奪主,那麼考官就可能無法獲得充分的信息來做出判斷,同時這種行為也會讓考官覺得應聘者很難共事.

如果你確實想談論自己的項目,那麼就應詢問面試官:「我覺得最近的某某項目能充分體現我的能力,我能不能用 10分鐘的時間來描述一下具體情況?」這樣就會給面試官空間來調整面試過程,由此也避免毫無徵兆就讓面試離題萬里.

5.在回答需要具體答案的問題之時,記得首先要有總括性的發言

有時我會問一個答案可以很簡練的問題,例如:「在你的那個成功項目中總共有多少人參與?」但應聘者往往會就此打開話匣:「嗯,張三參與了這個項目, 他負責 UI部分,當然我也會給他一些指導.李四也在項目中,她在賓州遠程工作,負責後端服務器.兩年之後我們又有新人王五加入……」

在應聘者滔滔不絕的講了三分鐘之後,我還是不知道這個項目到底有多少人參與.

因此首先要簡練的回答問題,然後再展開描述:「在我接手項目時有三個人,但當我離開項目時人數已經增加到12人.」

當然如果能簡練的回答問題,然後徵詢意見之後再展開論述那就更好了:「在我接手項目時有三個人,但當我離開項目時人數已經增加到 12 人.我可以講一下各人在項目中的具體分工嗎?」

6.(不是特別重要)在面試中要衣著得體,舒適的商務便裝是最佳的選擇

人們有時候會為衣著犯愁.但是最重要的是要讓自己感覺舒適.如果需要具體的建議,那麼我建議穿襯衫甚至T恤衫.對於某些公司(例如 Google),西裝革履顯然是太隆重了.

這條建議不必太看中,因為面試官不會管應聘者穿什麼.最好應該詢問人事招聘部門穿什麼合適,因為不同國家有不同習俗,就算美國東海岸和西海岸的公司 著裝文化也會有差別.像 Google 這樣的公司在著裝方面更加隨意,因此如果你穿著「三件套」的經典西服去 Google 面試,考官可能會有異樣的感覺.因此如果你真的具備軟件工程的本領,穿什麼其實並不重要.某個應聘者曾經穿著皺巴巴髒兮兮的T恤就跑來面試,他的T恤衫上 還有著許多破洞.但最後他還是拿到了錄取通知(當然我絕不建議如此穿著).

最後的一個小故事

最後我想講一場極為尷尬的面試.在看完之後,我希望你能這樣想:無論你的面試如何糟糕,你至少要比這位應聘者幸運.

以前我還在微軟的時候,我們通常會為應聘者準備一些飲料,某位暫稱其為 Jeff 的應聘者要了一聽百事可樂.我們走進面試房間後,他就在桌前坐下了.接下來我們簡要的談了談他的工作經歷,然後他開始在白板上解答編程問題,此時他還沒有打開他的可樂.

我們倆站在白板前,然後傑夫開始在上面寫程序.在寫程序之時他沉浸在對整體構架的思考中,下意識的退了一步來查看整個白板.在後退時他不小心碰到了桌子,放在桌上的百事可樂掉到了地上.

因為可樂還沒有打開,因此當可樂罐落地的時候,可樂罐炸開了.

可樂罐在地上打轉,泡沫噴的到處都是.你可以想像當時的場景,可樂噴到了牆上、書架還有我電腦的鍵盤上.我倆楞在那裡,手都半伸著(根本來不及抓到可樂罐),眼睜睜的看著可樂弄得到處都是.

我們花了 5 分鐘的時間用紙巾來清理現場(雖然我的書本自那天之後都粘頁了,而牆壁也不再是干淨的了).

隨後我們重新開始白板測試.傑夫此時已非常緊張(換了誰都會緊張吧?).他寫了幾行程序,然後擦掉,然後再寫.他是用自己的手擦拭白板而不是用板刷.他急得額頭冒汗,然後他又用剛剛擦過白板的手擦汗.在面試過程結束之時,他的臉上佈滿了紅色、綠色和藍色的顏料.

我說:「你的手上粘了很多顏料,我帶你去衛生間洗洗吧,」然後我把他領到洗手間讓他從鏡中看到了自己的尊容.

作者簡介: 王忻,Google 工程師.北京出生,五歲時跟隨父母移居美國.中學期間跳了三級,十五歲進入了加州理工大學,加入 Google 前曾在微軟等公司工作.

轉載:如何寫一份好的工程師簡歷

轉自:網路

最近三年作為 Google(谷歌)的軟件工程師,我每週會幫人事部門審查簡歷,決定要不要給他們面試。Google 這幾年的發展讓很多許多優秀的工程師都前來申請。到目前為止,我已經看了上千份簡歷,有些簡歷留下的印象比別的好很多。尤其是最近親戚朋友常常問我如何修 改他們的簡歷,所以我積累了一些常見的錯誤避免的提議,在此跟大家交流一下。

1.談到你做過的技術時,應該提到用的程序語言、你的個人貢獻和產品細節。

有時我看到有人把過去的經驗在簡歷上一筆帶過,比如說:

• 在三人小組裡,為電子郵件軟件寫了些 features。

這是遠遠不夠的,看簡歷的人希望瞭解你做的工作的難度和對本公司有多少聯繫,所以你最好寫的具體一些。譬如:

• 用 C++ 語言寫了網絡電子郵件的自動 backups。在三人小組裡,專門負責設計和寫儲存服務器。從設計開始, 一年後把這個功能 feature 的用戶推到了三千。

2.多講事實, 少用形容詞。

看簡歷的人讀你的簡歷時,需要做判斷,所以在簡歷裡需要事實和數目。如果你寫「迅速的提高了軟件的操作效率」,看簡歷的人很難判斷你成就的難度。但如果你寫「在3個星期內,把軟件的操作效率提高了40%」 就好多了。

有些謙虛的朋友們不願意把話說滿,所以你也可以用這個辦法。你如果說自己「突出」或「在項目上常常被請去救火」,聽起來難免會有點驕傲。但你也可以 用不能否認的事實來說明你的觀點,如「《紐約日報》評這個產品為『突出』」,或「加入了三個原本已落後於計劃的項目小組,但經過努力和組員一起把它們都按 時完成了。」

3.你獲得的獎、商業的榮譽或表揚、受用戶歡迎的產品和你做過的有難度的業餘項目都該包括在簡歷裡。

我有位朋友在矽谷一個著名的硬件公司做了六年,她設計的 IP phone(網絡電話)為公司賺了上億的收入,被公司與商業報導多次評了獎。我有一次在舊金山的高速公路上駕車時,看到路邊有她產品的廣告牌;還有一次我去上海度假時,竟然發現上海公路邊上也有!

不久,這位朋友決定換工作,請我看看她的簡歷。我驚訝的發現,她居然輕描淡寫的寫了一句– “1998 – 2004:網絡電話產品的硬件工程師組長” 和她的職責。

“產品贏的獎呢?它為公司賺的錢呢?” 我追問到。

“那些也該寫嗎?” 她說。

當然該寫。

有人問,業餘時間做的項目可不可以寫?我覺得只要你的項目有代表性能說明對你的能力,都該包括。

4.分清主次,刪掉相比之下不起眼的成績,以免沖淡更加突出的成績。

有朋友問,寫簡歷是不是寫的越多越好?譬如:

在甲公司做暑假實習生——
* 改善電子遊戲的數值分類算法, 減少了內存要求 10%。
* 用 Java 寫了 3000 行用戶界面程序。
* 每週做兩小時的人工測試。

你在申請軟件工程師的職位時,我覺得前兩點比較相關,第三點其實就不必寫了。有時我看到有的簡歷裡會提到,”按時完成了任務,產品符合原計劃規格”。但讀簡歷的人通常會認為這是理所當然的,而你把這些聲明出來反而減弱簡歷的效果。

寫一份簡歷不容易,但寫好了也會帶來成就感 (和好工作!)。 Google (谷歌)在中國廣召各方面的人才,你不妨可以給我們投個簡歷!我們不但在信息檢索方面招雇工程師,還有計算機圖形、用戶界面、硬件、Windows、質量保證員和系統管理員等方面。