程式面試技巧

作者 Aaron Cao · 更新於

寫程式前先釐清問題和限制條件,大聲說出你的思路,先做出可執行的方案再優化,用邊界情況測試,並說明時間和空間複雜度。面試官評估的是你的推理和溝通方式,而不僅僅是最終程式碼能否執行。

寫程式之前:先釐清,再規劃

如果你在壓力下的本能反應是立刻開始打字,這一節正是為了修正這種本能。最優秀的候選人往往會先花幾分鐘完全不寫程式,面試官會注意到這一點。

先用自己的話複述問題,並向面試官確認理解無誤。詢問限制條件:輸入規模、數值範圍、輸入是否已排序、如何處理空輸入或格式錯誤的輸入。接著在動手寫任何程式之前,說明你打算採用的方法及其複雜度。這個簡短的規劃步驟能及早發現理解落差,並展現結構化思維,而這正是評分的重要部分。

寫程式時:邊思考邊說,逐步建構

沉默是能力很強的解題者顯得能力不足的最常見方式。持續講解你正在寫什麼以及為什麼這樣寫,這樣面試官才能跟上你的思路,並在你偏離方向時提醒你。

先得出正確答案,再追求巧妙。一個能執行的暴力解法,價值高於一個從未編譯通過的精妙想法,等有了可執行的方案之後再優化。以小而可測試的片段撰寫程式,使用清楚的變數名稱;如果卡住了,說出你正在考慮的想法,而不是陷入沉默。面試官經常會給提示,但前提是他們能聽到你當下的想法。

程式跑通之後:測試、邊界情況與複雜度

程式編譯通過並不代表完成;只有當你嘗試過讓它出錯之後才算完成。先用一個普通輸入走一遍程式邏輯,再刻意用一些刁鑽的輸入:空輸入、單一元素、重複元素、負數、限制條件允許的最大規模。

設想一位應徵中階職位的前端工程師,寫出了一個可執行的雙指標解法,然後主動、不需要提示地用空陣列和單一元素陣列走一遍邏輯,並說明其執行時間為 O(n)。這最後一分鐘的自我測試和複雜度分析,往往是決定錄取還是待定的關鍵,因為它顯示這名工程師在實際工作中也會發現自己的 bug。即使沒有被要求,也要主動說出時間和空間複雜度。

在真正的面試之前,把技巧變成習慣

閱讀技巧很容易;在緊張狀態下做到卻不容易。解決辦法是在接近真實場景的條件下反覆演練:計時器在跑,解法大聲說出來,中途不查資料。每做完一題練習,不僅要檢查是否解對了,還要檢查自己是否做到了釐清問題、講解思路和測試,因為這些正是被評分的習慣。

與 AI 面試官進行限時口頭模擬是培養這種反應的一種方式;你可以在模擬面試工具中練習。有一點值得再三提醒:真正的程式面試環節往往在被監看的共用編輯器上進行,或會被錄影,因此任何即時助手在其中都不安全,練習的目標正是讓你不再需要它。更多關於程式面試的解答請見面試類型主題中心,練習指引請見模擬面試主題中心

常見問題

程式面試中最重要的技巧是什麼?

先釐清問題,再邊寫邊講。面試官評估的是你的推理和溝通能力,因此一個解釋清楚的思路勝過一個沉默完成的正確答案。先確認問題和限制條件,然後大聲說出你的思考過程。

我應該一開始就寫出最佳解嗎?

不需要。先得出任何正確的解法,即使是暴力解法,然後當著面試官的面進行優化。一個能執行的簡單答案,比一個從未跑通的精妙想法更能得分。

卡住了該怎麼辦?

大聲說出你正在考慮的想法,而不是陷入沉默。面試官經常會給提示,但前提是他們能聽到你的想法。重新複述問題,並嘗試一個更小的範例來幫助自己突破。

需要說明時間和空間複雜度嗎?

需要,即使沒有被要求也應主動說明。分析 Big-O 表示你理解其中的取捨,這一點面試官會非常看重。請在寫程式前後都說明你方法的複雜度。

相關問題

← 更多關於 面試類型