- 硅谷Python工程師面試指南:數據結構、算法與系統設計
- 任建峰 全書學
- 1951字
- 2024-06-27 15:59:30
1.3 現場面試
現場面試一般在面試公司的辦公室進行。如果你不在本地,很多硅谷公司都會為你支付機票和酒店客房的費用。
現場面試通常由2~6人組成,在小型會議室中進行。每次面試大約需要一個小時,首先進行自我介紹,然后進入技術面試環節,最后讓你提問題。
現場技術面試和電話面試之間的主要區別在于:你將在白板上進行編程。
在白板上寫代碼,不像在電腦上寫代碼,沒有自動完成功能,沒有調試工具,沒有刪除功能,沒有復制功能等。在現場面試之前,需要不斷練習在白板上寫代碼。在白板上寫代碼的技巧如下:
?從白板的左上角開始,這給你最大的空間編寫代碼,因為你將需要比你想象中更多的空間。
?在編寫代碼時,請在每行之間留空行,使以后添加內容變得更加容易。
?花幾秒的時間來決定你的變量名。這看起來似乎是在浪費時間,但是使用更具描述性的變量名,最終可以節省時間,因為這將使你在編寫其余代碼時不會感到困惑。
現場面試這一天可能會花費很長時間,最好保持開放狀態,不要在下午或晚上制訂其他計劃。
當一切順利時,你可以通過與CEO或其他董事聊天來結束面試。他們可能會邀請你下班后一起喝酒。
綜上所述,漫長的現場面試可能安排如下:
?上午10點至中午12點:兩場背對背的技術面試,每場約一個小時;
?中午12點至下午1點:一個或幾個工程師將帶你去吃午餐;
?下午1點至下午4點:三場背對背的技術面試,每場約一個小時;
?下午4點至下午5點:與CEO或其他董事面談;
?下午5點至晚上8點:與公司同事一起享用飲料和晚餐。
目前很多公司增加了企業文化面試,用來評價應聘人員是否符合公司的企業文化。
如果他們在幾次面試后就讓你離開了,那通常表明他們對你不感興趣。
在白板面試的過程中,當然最核心的就是編程面試,這里涉及大量的數據結構和算法設計,還有系統設計問題等。為了更好地回答這些問題,需要大量的時間準備,因此本書的其他章節挑選了一些大公司比較經典的面試題目,來講解面試過程中會遇到的技術問題,以期拋磚引玉,讀者還需要去一些編程網站(比如www.leetcode.com),進行大量的反復練習,才能掌握面試的核心,以不變應萬變。
下面介紹一些面試策略和技巧。
1.3.1 準備好閑談素材
在深入考查代碼能力之前,大多數面試官都喜歡聊一聊候選人的背景,可能涉及如下話題。
?關于編程的認知。你是否考慮如何編寫良好的代碼?
?領導力。你的工作是如何完成的?你是否會關注一些貌似“沒有必要”的問題?
?溝通能力。你與別人討論技術問題的過程中是否會發生無法溝通的情況?
在談論這類話題時,你應該提前準備至少一個有說服力的案例或者故事,舉例如下。
?你所解決的一個有趣的技術問題。
?你克服的人際沖突的例子。
?體現你領導力的例子。
?關于你在過去的項目中做了些什么的故事。
?有關公司產品/業務的思考。
?有關公司的工程策略(如測試、敏捷等)的問題。
1.3.2 保持積極溝通
不管是實際工作中還是在面試場合,一旦你在編程上遇到困難,溝通就是解決問題的關鍵。在面試過程中,能夠清晰地溝通自己需求的候選人,可能比那些盲目埋頭于問題的候選人更好。
技術面試的溝通一般分為兩種情況:編程和技術提問。編程時,面試官希望看到干凈、有效的代碼。技術提問時,面試官會引導你談論一些問題,通常與高級系統設計(比如“你將如何構建像Twitter一樣的應用?”)或比較瑣碎的技術細節(比如“Java語言中的static是什么?”)有關。有時,瑣碎的技術問題來自真實的開發場景,例如“如何快速對整數列表進行排序?現在假設我們擁有的整數……”。
在溝通時,除了技術實力,還有一些技巧可以使用。下面分享幾個能有效增強溝通效果的小技巧。
?表現得像在自己團隊中一樣。面試官總是想知道與你一起解決問題的感覺,因此你應該注意表現出你是懂得協作的。首先,表達時可以使用“我們”而不是“我”。例如:“如果進行廣度優先搜索,我們將在O(n)的時間內得到答案。”其次,如果可以選擇在紙上或者白板上編程,建議你選擇白板,這樣你可以面對面試官進行展示。
?大膽思考。如果你遇到困難,可以大膽地說出你的想法,比如提出可能有效的方法,說出你認為可行的部分以及無效部分的原因,例如:“我們可以嘗試以這種方式進行操作,雖然尚不確定它是否會起作用。”
?對于確實不知道的事情,勇敢地說不知道。如果你遇到一個事實性問題(例如特定語言的細節、程序運行時的某個問題等),不要試圖對你不了解的知識不懂裝懂。你可以說“我不確定,但是我猜……因為……”。這樣你可以通過列舉一些思路、排除一些無效方案,或者用其他語言或相似場景的問題進行對比,來展示你的思考能力。
?放慢節奏。在面試官提問時,不要立刻自信地脫口而出。即使你心中的答案是正確的,你也需要清晰地解釋它。回答速度過快不會讓你贏得任何東西,反而有可能讓你在沒聽完問題就打斷面試官,或者因為思考得不夠全面而給出不夠優秀甚至錯誤的答案。