美國臉書(Facebook)工程師 Carlos Bueno,在Facebook官方工程頁面發表一篇文章,說明新人們應該如何準備 Facebook 的求職面試。
Bueno 指出,無論是對面試官或求職者而言,技術性職位的面試都不容易。面試官會對履歷上的內容一一查核。如果上頭寫道「精通某某方面」,那麼 Facebook 就會安排一位該領域的專家與你會談,所以一定要有所準備。如果你並不精通某一領域,就最好不要往簡歷上寫。
實際上比起厚厚一本的求職履歷,Facebook面試官更傾向於求職者能提供一份清單列出自己擅長或精通的領域。下面將跟大家介紹在臉書企業面試時可能會遇到的一些經歷。
電話面試或線上面試
第一步通常是與求職者進行45分鐘的談話。這個談話的目的就是了解求職者各自的專業領域。面試官會就求職者的簡歷、技能、動機、興趣等方面進行詢問。但是這第一步的主要時間還是花在程式撰寫。面試官會給求職者一個網站,直接測試自己解決程式問題的能力。
提示:對於電話面試,請確保通話時你周圍環境安靜,並且網絡通信良好。電話面試時耳機就顯得很有幫助。在我第一次面試Facebook工作時就忘記了這一點,於是我就不得不一邊寫程式,一邊將手機夾在肩膀和耳朵之間進行電話面試。
循環測試
Facebook的循環測試,指的是在同一天對求職者進行多次面試,通常中間有個午餐休息時間。除了在文本編輯器裡寫代碼外,面試官還有可能要求求職者在白板上寫代碼。在此期間,求職者有時間可以向面試官詢問任何感興趣的事情。
下面數項就是Facebook對理想求職者的期望…
在道出面試官期望或親睞的一系列優點之前,Bueno 先指出這樣一條提醒:「這些優點並不是我們所尋求的全部,也不是我們關心的全部內容。但是它們確實會影響面試官們最終做出的決定。」
文化融合是關鍵
Facebook希望求職者有理解和解釋一些複雜觀點的能力。同大多數公司一樣,Facebook希望求職者對工作充滿熱情、好奇心和動力。 Bueno指出:「Facebook有着一個很極端的用戶工程師之間的比例,並且一周5天都要反饋代碼。Facebook 希望接收那些能夠帶來巨大影響,行動迅速、果斷,並且清楚理解他們所做工作的人。」
Facebook 需要能夠迅速適應多角色工作環境的人
Facebook 需要各種專家,但同時也需要在關鍵時能夠承擔其他角色任務的員工。 Bueno說到:「這意味着求職者應能夠理解其專業範圍外其它一些知識。」
Facebook 更親睞精通多個專業領域的求職者。在 Facebook,你會經常看到員工先在機器學習領域工作,然後就轉到了網頁性能,搭建、維護一個新的後端工具,之後又在類似照片應用的產品特性方面工作一年。
提示:一個很值得培養的技能就是能夠隨意地改變自己的固定的現有觀念。有時你可能會遭遇到一個問題,看起來應該有簡潔解決方案,但實際上這個問題只有一個粗糙或者模糊的解決方法。如果你卡在了這個問題上,那就嘗任何其他方法來解決,無論這個方法是多麼笨拙或者低效。然後在這個方案上加以改進。總之,能夠解決問題總比解決不了問題強。
高階軟體設計中,「架構」至關重要
Bueno 這樣問到:「面對不尋常的約束,你能否找到解決方案?」
Facebook想考察求職者想像整個問題以及解決方案餘地的能力。同時Facebook也希望看到你尤其對這家公司以及其面臨的獨特問題有多少思考。你會怎樣構建一個全球視訊分享系統?或者一個Facebook聊天網絡?
提示:磨刀不誤砍柴功。對於那些你並不是每天都用到的技術知識也要重溫,因為當你需要的時候它們就顯得十分有用了,比如遞歸、圖論、樹遍歷、組合問題等等。
程式碼才是王道
Facebook 並不喜歡提問一些難題,但是就這一點你要知道一些小技巧。你被問到的問題也許聽起來很做作,而且這些問題實際上就是為了特定目的而人為設計的。這些問題通常很簡單,能夠在幾分鐘內解釋清楚,並在10到30分鐘內能夠得到解決。但是這些問題的解決也都需要一定的知識、技能和集中精神。
優秀的程式設計問題本質上是分形的。這些問題能夠被任意地擴展以用來測試你的知識程度。比如,他們可能要求你用任何你喜歡的方式來解決一個問題。然後就會要求你固定空間或者次線性時間內再次解決同一個問題。順便說一下,無論一個問題起初聽起來是多麼的基礎,全神貫注地關注這個問題才是 Facebook 密切注意的。你對於一個問題如何下手與問題的答案一樣重要。
在面試過程中,Facebook 面試官會讓求職者寫很多程式,因為這種程式撰寫能力往往與作為一個 Facebook 員工的表現如何直接相關。 Facebook甚至還有專門設計的一套問題供求職者在家裡研讀。Facebook 認為求職者最好能夠看一下這些問題,而且鼓勵能夠在提交簡歷前解決一些。
提示:另外一種編程問題可能是要求求職者分析一些數據類型或者迷你語言。這些問題測試能夠鍛煉你對極端案例的推理能力,同時控制協調頭腦中的各種狀態想法。
Facebook 面試官並不是唯一的有着良好面試理念的人,他們從谷歌這樣的競爭對手也學到很多
Bueno說到:「來自谷歌的 Steve Yegge 幾年前發表一篇關於面試準備的優秀文章(Steve Yegge: Get that job at Google)。如果你沒有讀過,那就一定要讀一讀;如果以前讀過,那就再讀一遍。雖然我從未見過任何人像Yegge 建議的那樣帶着自己的白板筆去面試,但是 Yegge 列出的一些小技巧還是是十分有用。」
慢慢來,練習、練習、再練習
多花時間準備面試。與朋友一起做一些程式碼訓練,並排練一下面試。嘗試做一下我們網站上的面試問題。看一下我們的技術論壇,感受一下我們是如何做事,以及我們在試圖解決問題的深度和廣度。
多在簡單文本編輯器裡練習寫程式碼,不要用句法高亮或自動完成巨集(Marco)功能。千萬不要在面試期間出現小的意外驚喜,以免影響你的面試。
用你所掌握的最熟悉的編程語言來打動 Facebook 面試官。不要因為某種編程語言流行,或者認為某種語言能夠取悅面試官,而在面試期間用你相對不太熟悉的編程語言。這是一個十分常見的錯誤。
不要忘記問問題
Bueno說到:「一定要問問題!充分利用面試的時間向你的面試官詢問一些工作生活、訓練營地、面試過程本身、公司組織結構、或者任何其他的事情。最近我在一個面試中就我們公司數據處理中心的電力效率問題聊了好幾分鐘。那位求職者對這個問題很是真誠的好奇,而且我也盡力回答。千萬要記住不僅我們是在面試你,你也是在面試這家公司。」
放鬆,給出反饋
最重要的一點,放鬆!如果你想躍躍欲試來 Facebook 工作的話,那就一定要記住這一點。
Bueno說他曾經在各種各樣的公司工作過,無論是2人型的創業公司還是億萬資本的政府項目。 Facebook 雖有着一個大公司應有的資源和影響,但是作為一名工程師,你在這裏有着那些典型大公司裡所沒有的自由和責任。此外,還要給出反饋。 Facebook 會定期就面試過程調查求職者,並對反饋結果相當重視。
發佈留言