面試流程——谷歌資深面試官經驗總結

謝工在GitChat發表於2013-11-13

你想從面試中脫穎而出嗎,讓我們從面試流程開始吧。

  • 概述
  • 面試題的來源
  • 準備時間表與注意事項
  • 面試評估流程
  • 答題情況
  • 著裝規範
  • 十大常見錯誤
  • 常見問題解答

1.1 概述

大多數公司的面試流程其實都大同小異。本章會簡述面試流程,以及企業到底想招募什麼樣的人才。這些資訊將指導你如何做好面試準備,以及在面試過程中和麵試結束後該如何應對。

收到面試通知後,你通常得先經歷一次篩選面試(screening interview),一般通過電話進行。頂尖高校的應屆畢業生則可能需要參加現場的篩選面試。

不要因“篩選面試”這個詞兒而掉以輕心,篩選面試也很有可能涉及編碼與演算法問題,要求不見得比現場面試低。如果不確定它是不是技術篩選面試,不妨問問招聘助理面試官是什麼來頭,若是工程師,那十有八九會與技術相關。

許多公司會在面試中運用線上同步文件編輯系統,但也有可能讓你直接在紙上寫好程式碼,然後在電話裡念給他們聽。有些面試官甚至還會給你留“家庭作業”,或是要求你用電子郵件將寫好的程式碼發給他們。

現場面試(on-site interview)之前,通常會有一兩輪篩選面試。現場面試大概有4到6輪,其中一輪可能是午餐面試。當然,午餐面試比較隨意,面試官一般不會問你技術問題,甚至不會納入面試評價範疇。但同時,這也是難得的好機會,你可以跟面試官探討自己感興趣的問題,瞭解公司的企業文化。其他幾輪面試主要涉及技術問題,包括編碼和演算法等。此外,你可能還要回答與簡歷相關的問題。

面試結束後,面試官們會聚在一起討論你的表現,或者提交書面評價。大多數情況下,公司招聘人員都會在一週內給你回覆,告知應聘進展。

要是已經望穿秋水等了一個多星期,你也可以主動詢問進展。就算招聘人員沒有回應,也並不表示你被拒了(至少大的高科技公司是這樣,其實幾乎所有公司都是如此)。我再重複一次:沒有回應表示你的應聘結果還是未知數。當然,人們都希望招聘方在得出最終結論時,及時通知求職者。

拖拖拉拉的情況確實有。等不及的話,不妨問問相關招聘人員,但務請有禮有節。招聘人員和我們一樣,他們很忙,有些人會因此容易忘事。

1.2 面試題的來源

求職者經常會問我,某些公司最近都喜歡問哪些面試題?他們總以為面試題會應時而變。實際上,公司本身對面試題並沒有什麼傾向,這完全取決於面試官的個人喜好。容我解釋一下。

在大公司裡,面試官通常需要先參加一些面試培訓課程。在谷歌,擔任面試官之前,我先參加了一次由外部公司提供的專門培訓。培訓課程為期一天,有一半時間側重於法律層面的事務,比如,面試官不能探問求職者的婚姻狀況,不得詢問種族,等等。另一半時間則在探討如何應對“刺頭”求職者,比如當問及編碼問題或其他令求職者認為是在“羞辱”自己的問題時,要是求職者“暴跳如雷”,該怎麼應對。培訓過後,我又實地觀摩了兩次真正的面試,然後就開始獨自面試了。

就是這樣。我們受過的培訓也不過如此,其實所有公司都大同小異。

根本就不存在什麼“谷歌官方面試題清單”,也從來沒有人要求我一定要問哪些特定的問題,或者必須避開哪些話題。

那我的面試題從何而來呢?其實,來源和大家一樣。

面試官也當過求職者,他們會借用自己當年被拷問過的題目。又或者,有些面試官也會彼此交換題庫。還有些人喜歡上網找問題,比如CareerCup.com網站。有些面試官也可能從上述渠道收集面試題,並或多或少做些調整。

就算真有公司給面試官準備好問題清單,這種情況也並不多見。面試官通常也會自行挑選問題,而且大家往往會有五六個常用的備選題目。

因此,下次在你想知道谷歌“最近”都問些什麼問題的時候,不妨先停下來想一想。谷歌與亞馬遜的面試題其實沒什麼不同,他們需要的都是軟體開發人才。至於面試題是不是“最近流行的”也就更無關緊要了。萬變不離其宗,因為這本來就得靠面試官自己去把握。

當然,總體上,不同的公司在風格上存在差異。網際網路公司往往會提些系統設計方面的問題,而那些使用資料庫的公司則明顯偏愛資料庫方面的問題。然而,大部分面試題無外乎就是資料結構和演算法之類的,任何公司都會問到。

1.3 準備時間表與注意事項

“臺上一分鐘,臺下十年功”,事實上你的面試表現取決於你的功底——離不開多年的積澱。你需要剛好具備能為公司所用的技術經驗,然後還要準備好在面試中解決實際的技術問題。下面的時間表和流程圖可以給你一些啟發。

如果你起步比較晚,也不用擔心。“盡人事,知天命”,請安心準備,祝你好運!

enter image description here

enter image description here

1.4 面試評估流程

招聘人員可能會告訴你,他們主要考查四個方面:工作經驗、企業文化契合度、程式設計技能及分析能力。這四個方面相輔相成,但在決定錄用與否時,分量最重的通常還是程式設計技能和分析能力(或者看你是否聰明)。這也是為什麼本書的主要篇幅都在探討如何提升程式設計與演算法技能。

當然,雖說程式設計與演算法技能往往最為重要,但並不表示你可以忽視其他兩個方面。

一旦進入大型科技公司的面試環節,你之前的工作經驗就不是特別重要了,但它可能會左右面試官對你的看法。比如,如果你說起以前寫的某個複雜程式的精彩之處,面試官很有可能會想:“哇,她可真聰明!”一旦他認定你智力超群,可能就會下意識地忽略你所犯的小錯誤。總之,面試並不會十分精確,對某些“軟問題”做好充分準備會大有裨益。

創業公司比大公司更看重企業文化契合度(或你的個性,主要看是否與公司合拍)。舉個例子,如果公司的企業文化鼓勵員工獨立做決定,那麼喜歡聽從指導的人就不太適合了。

此外,求職者因為過於自大、巧辯或牴觸而被淘汰的情況也並不少見。我就遇到過,有位求職者對我提問的用詞吹毛求疵,並抱怨這導致他解題不太順利,後來他還對我的引導方式心生不滿。這種“牴觸心太重”的表現其實也是一個警示,果然,其他面試官對他的感覺也很不好。最後他被淘汰了。誰會願意跟這種人一起共事呢?

所以,你應該注意以下幾點。

  • 如果人們都認為你驕傲自大、過於狡辯,或有其他負面評價,那你最好在面試中收斂一下。個性不討喜的話,哪怕你的表現再好,也可能會被拒。
  • 準備一些與簡歷相關的問題。雖然這不是最重要的因素,但也不能掉以輕心。稍微花點時間準備就能起到很好的效果,做到“四兩撥千斤”。
  • 把主要精力用在程式設計與演算法問題上。

最後,我還是要再強調一遍,面試並不會十分精確。你的表現可能會有失水準,招聘委員會(或不管是誰)有時候也會做出錯誤判斷。就像任何群體一樣,招聘委員會也可能會被某位主導人物的觀點所左右。這也許不公平,但這就是生活。

記住——這次被拒絕並不代表永遠。一年內你還可以重新應聘,很多求職者都有過失利後再成功的經歷。

不要氣餒,失敗是成功之母。

1.5 答題情況

有則謠傳流傳甚廣且頗具迷惑性:求職者必須答對全部問題才會被錄用。事實絕非如此。

首先,面試題的答案很難用“正確”和“錯誤”去簡單評判。我個人在評估求職者的面試表現時,一般不會只看他們答對了幾道題。相反,我會考量其最終解法是否最優,用時多久,程式碼整潔與否。這不只是單純的是非判斷,還要綜合考慮很多因素。

其次,你的面試表現還會拿來跟其他求職者作比較。比如說,你用15分鐘出色地解決了一道題,而另一個人不到5分鐘就搞定了一道比較容易的題,是否就意味著那個人的表現比你好呢?也許是,但也未必。很自然,面試官出的題越簡單,他們越是希望你儘快給出最佳答案。但要是題目很難,他們也不會指望你能答得又快又好,畢竟,出點紕漏也是在所難免的。

我在谷歌評估過數千名求職者的面試資料,其中只有一位求職者的面試表現堪稱“完美無瑕”。其他人,包括最後被錄用的幾百個幸運兒,都或多或少犯過一些錯。

1.6 著裝規範

軟體工程師一般都穿得比較隨意。這一點從面試的著裝規範也看得出來。參加面試時,推薦做法是穿得比同級別員工稍好一點。

以下是我給軟體工程師(及測試人員)的面試著裝建議,意在讓大家找到一個“平衡點”:不要穿得過於正式,也不要太隨意。其實,有很多人還是穿著牛仔褲和T恤衫參加創業公司或大公司的面試,也不會有什麼問題。畢竟,公司不是看你穿什麼,而是看你的程式設計水平。

創業公司 微軟、谷歌、亞馬遜、
Facebook等科技巨頭
非科技公司
(包括銀行)
男性 卡其褲、休閒褲或整潔得體
的牛仔褲。Polo衫或禮服襯衫
卡其褲、休閒褲或整潔得體
的牛仔褲。Polo衫或禮服襯衫
套裝,不打領帶(可
帶一條領帶以防萬一)
女性 卡其褲、休閒褲或整潔得體
的牛仔褲。大方得體的上衣
或毛衣
卡其褲、休閒褲或整潔得體
的牛仔褲。大方得體的上衣
或毛衣
套裝,或得體的休閒褲
配整潔的上衣

這些只是指導建議,具體還要參考公司的企業文化。此外,如果你應聘的是專案經理、開發主管或其他管理層職位,面試時最好還是穿得正式一點。

1.7 十大常見錯誤

錯誤一:只在計算機上練習

如果你正準備參加海洋游泳比賽,你會只在泳池裡練習嗎?應該不會。你得去體驗大風大浪及海洋裡各種情況帶來的影響。所以,你肯定會希望到海洋中實地訓練。

在計算機上藉助編譯器演練面試題就像只在泳池裡練習一樣。拋開這個環境吧,讓我們拿出紙和筆。你可以在寫好全部程式碼並做過人工測試之後,再在計算機上用編譯器進行驗證。

錯誤二:不做行為面試題演練

很多求職者將全部時間花在演練技術問題上,而忽視了行為面試題。你猜怎麼著?面試官可是兩者都會考查的。

而且不止於此,你回答行為問題的表現其實還會左右面試官對你技術能力的看法。行為問題的準備工作其實相對比較輕鬆,而且容易達到事半功倍的效果。用心回顧你以往的專案和經歷,然後準備一些小故事。

錯誤三:不做模擬面試訓練

假設你要準備一場重大演講,所有同事和相關人員都將列席,而且它還關乎你的未來。要是隻在頭腦裡無聲地練習演講,到了真正演講時,你肯定會發狂的。

光是紙上談兵,不做模擬面試也會陷入同樣的境地。如果你是一名工程師,肯定認識不少同行。不妨找個朋友幫你做模擬面試。作為回報,你也可以給他當一回面試官。

錯誤四:試圖死記硬背答案

死記硬背答案最多隻能解決一些特定問題,但是一碰到新的題,你可能就傻眼了。而且,基本上你不太可能碰上出自本書的題目。

最靠譜的做法就是,不看答案,先把書裡的題全部認真做一遍。這樣你才有可能練就各種技能和技巧,從容應對新問題。就算最後你只能大概複習一下為數不多的題,這種做法也會對你很有幫助。質量勝於數量。

錯誤五:不大聲說出你的解題思路

透露個祕密:面試官才不會知道你心裡想什麼。因此,面試時默不作聲,我根本無法瞭解你的思路。假如你沉默時間過長,我還會誤以為你毫無進展。你得多出聲,沒準說著說著就找到了解法。請大聲說出解題的思路,這樣面試官就會知道你還在處理這個問題,沒有卡殼。

這麼做還有個好處就是不至於跑題,從而有助於你儘快找到解法。當然,最大的作用就是突顯你強大的溝通能力。何樂而不為呢?

錯誤六:過於倉促

寫程式不是什麼競賽,面試也不是,所以解題時不要太過倉促。程式碼寫得太草率容易出問題,也說明你這個人不夠細心。請放慢節奏,有條不紊,多做測試,問題考慮得周全些。這麼一來,最終你反而能更高效地給出答案,錯誤也會少一些。

錯誤七:程式碼不夠嚴謹

其實每個人都寫得出完美的程式碼,但有時我們還是會在面試中寫出錯誤百出的程式,不是嗎?程式碼冗餘、資料結構亂七八糟(比如,缺少物件導向設計)等等,這些都是常見錯誤!寫程式碼時,不妨設想一下你是在處理實際問題,要注重可維護性。將程式碼劃分成不同的子程式,並精心設計資料結構來處理相應的資料。

錯誤八:不做測試

在日常工作中,你不可能不做任何測試就提交程式碼,既然如此,為什麼要在面試中省略這一步呢?寫完程式碼後,請“執行”(或者審查)一下程式來驗證結果。或者,在處理複雜問題時,你還可以邊寫程式碼邊測試。

錯誤九:修正錯誤漫不經心

程式總會有bug,這就是生活或程式設計的本來面目。只要用心測試你的程式碼,bug也許就會現出原形。那也不錯。

不過,重要的是發現bug時,你必須三思而後行,修正之前先確定出錯原因。有些求職者看到傳入特定引數時函式返回false而不是true,會直接將返回值取反,接著檢查問題是否得到修正。當然,偶爾他們也能瞎貓碰上死耗子,但實際上如此倉促行事往往會導致更多的bug,同時也反映出你這個人比較粗心大意。

有bug其實很正常,但胡亂修改程式碼卻很嚴重。

錯誤十:輕言放棄

我知道面試題都很難,但不難怎麼顯出求職者的水平呢。你會迎難而上還是輕言放棄?態度很重要,面試官都喜歡那些不畏挑戰、迎難而上解決問題的求職者。畢竟,面試本來就不簡單。所以,碰到棘手的問題請不要驚慌,也不要輕言放棄。

1.8 常見問題解答

碰到熟悉的問題時應該如實相告嗎?

是的!碰到熟悉的問題,當然要告訴面試官!有些人會覺得這很傻——要是熟悉這個問題(並知道答案),豈不是如虎添翼,對吧?其實,未必如此。

我們力薦你如實相告的理由如下。

  1. 彰顯你的誠實品質。這能反映出你的誠信——可以大大加分!要知道面試官可是在默默地考察你,看你夠不夠格成為他未來的同事。我不知道你個人怎麼想,反正我是喜歡和實在人一起共事。

  2. 這個問題可能略有改動。你不會想冒這個險給個錯誤答案吧?

  3. 如果你將正確答案脫口而出,面試官會覺得很可疑。面試官當然知道題目的難度。但如果你佯裝磕磕絆絆地答題,則很有可能誇張過度,而顯得你這個人很不誠實。

該使用哪種程式語言?

很多人都會建議說用自己最得心應手的語言,其實理想情況下,你應該使用面試官最熟悉的語言。我一般會推薦使用C、C++或Java,因為大多數面試官都熟悉這三種語言。我個人偏好Java(除非涉及C/C++問題),因為用Java編寫程式效率比較高,而且寫出來的程式簡單易懂,哪怕平時用慣C++的人看Java程式也不會有太大難度。有鑑於此,本書基本上都用Java來解題。

面試結束後我沒有收到回覆,是被拒了嗎?

不是的。真要被拒的話,公司一般都會給你通知。面試結束後短時間內沒有收到回覆並不代表什麼。你可能表現得很不錯,但招聘人員不巧度假去了,沒能及時處理。公司可能正在進行部門重組,具體該招多少人尚無定論。又或者,你確實表現得不怎麼樣,但碰巧遇到了一個辦事拖拉或者特別忙的招聘人員,他沒能及時答覆你。當然,也會有一些奇怪的公司,“嗯,既然我們不打算錄用這個求職者,那就沒必要給他回覆”。所以,一切取決於公司本身。但你可以發郵件或打電話跟蹤後續進展。

被拒之後我還能重新申請嗎?

當然可以了,不過通常需要等上一段時間(半年至一年)。上一次的糟糕表現一般不會影響下一次面試。很多人都被微軟、谷歌拒過,但他們後來還是順利過關了。

相關文章