後端工程師面試問題:面試官到底會問什麼
作者 Aaron Cao · 更新於

後端面試通常集中在五個方向:API 設計、資料庫與資料建模、快取與效能、並行處理與可靠性,以及系統設計環節,通常還會搭配一輪程式題。面試官在意的不是你講出了哪些工具名稱,而是你能不能講清楚取捨,並回顧一次你親自除錯過的故障。
後端工程師面試會考什麼?
後端職缺說明常常列出十幾種技術,很難判斷面試實際上會考哪些。本節整理了後端面試輪次中反覆出現的題目領域。技術堆疊因公司而異,但底層考察的主題相當穩定。
- API 設計。REST 與 RPC 的取捨、版本管理、分頁、錯誤回應、身分驗證,以及冪等鍵。
- 資料庫與資料建模。選擇關聯式或文件式儲存、索引、join、交易、隔離等級、N+1 查詢,以及如何安全地執行 schema migration。
- 快取與效能。快取失效、過期策略、快取雪崩,以及如何分析一個回應緩慢的端點。
- 並行處理與可靠性。競態條件、鎖、佇列、逾時,以及帶退避機制的重試。
- 系統設計。例如設計短網址服務、限流器或通知系統。
- 程式題。資料結構與實務問題,通常可以用你熟悉的語言作答。
語言與框架專項輪次會更深入細節;題庫中心收錄了 Go、Java、Spring Boot、微服務等更多題組。
哪些資料庫與 API 問題最常被問到?
這些問題以各種形式出現在大多數後端面試輪次中。練習時,試著在兩分鐘內大聲講完每一個答案:
- 替某一欄位加上索引會發生什麼事?什麼情況下加索引反而有害?
- read committed 與 serializable 隔離等級有什麼差別?什麼時候值得為更嚴格的等級付出代價?
- 如何在 ORM 中找出並修復 N+1 查詢?
- 如何讓一個付款端點能安全地被客戶端重試?
- 當結果集在使用者捲動過程中不斷變化時,該如何分頁?
- 什麼時候會選擇文件式資料庫而不是關聯式資料庫?
- 如何在不停機的情況下完成一次欄位改名?
一個有說服力的答案通常遵循同樣的結構:先講出你的預設選擇,再說明這個選擇的代價,最後描述在什麼情況下你的答案會反過來。面試官經常會追問那個「反過來」的情況,所以要準備一個真實的例子。
系統設計與除錯類問題該怎麼回答?
回答系統設計題時,先釐清需求:誰會呼叫這個服務、什麼資料絕對不能遺失、讀寫比例大致如何。接著畫出可行的最簡單設計,只有當你能講清楚是哪個需求逼你這麼做時,才加入快取、佇列或分片。
除錯類問題最能看出真實經驗。一位應徵某支付公司中階職缺的後端工程師被問到:為什麼某個端點在一次部署後延遲翻倍了。他沒有靠猜測原因,而是描述了自己的排查步驟:檢查這次部署改了什麼、比對慢路徑的追蹤紀錄、查看查詢執行計畫,並用同一個延遲指標驗證修復效果。接著他把這次經驗和上一份工作中的一次慢查詢事故連結起來,後續的對話幾乎都圍繞著那次事故展開,而不是圍繞工具展開。
在任何一場後端面試前,都準備好兩個正式環境的故事:一個是你追查到底的 bug,一個是你現在會做出不同選擇的設計決策。
該如何練習?即時助手能幫上什麼忙?
看著答案唸和真正說出來是兩回事。你可以掐著時間把上面的題目列表大聲練一遍,或是用模擬面試工具來提問,並針對模糊的回答進行追問。
在真正的視訊面試中,SubcueAI 會轉錄面試官的話,並在本機的懸浮視窗中草擬結構化的回答重點——你可以在 macOS 或 Windows 桌面應用程式中使用(適用於 Zoom、Google Meet、Microsoft Teams),也可以在瀏覽器擴充功能的側邊欄中用於 Chrome 或 Edge 分頁裡的通話。不會有機器人加入通話。它在對話性質的環節中最有用,例如設計討論與經歷相關的問題。共用畫面的程式題環節、有監考的測驗、預錄的單向面試,以及公司託管裝置,都超出了它能安全涵蓋的範圍,而且你在畫面上分享的任何內容都是可見的。設定方式請見教學頁面。