系統設計面試練習
在共用白板上端到端設計一個系統。Vera 會看你畫的內容、針對它提問,並一次改變一個條件,看哪裡會出問題。最後你會拿到一份引用你推理過程的報告。
Vera 用英文面試你,就像你正在準備的美國面試一樣。註冊、應用程式和報告也都是英文的。
- 45–50 分鐘
- 一個系統,端到端
- 最多兩次小提示
- Vera 看得懂的共用白板
這一輪如何進行
- 01
需求和範圍
Vera 用一兩句話說明題目,然後請你提問。在畫任何框之前,先確定系統必須做什麼、規模多大,以及你的假設。
- 02
高階設計
端到端走一遍主要流程。準備好被問 API、資料模型,以及為什麼選這種儲存方式。
- 03
深入細節
Vera 會挑出風險最高或講得最少的部分,問它實際上如何運作,而不是它叫什麼名字。
- 04
擴展和故障
一次一個變化:負載成長十倍、某個節點在請求途中故障、某個 key 變成熱點。什麼會先出問題,使用者又會看到什麼?
- 05
收尾
說出你的設計中最弱的部分、你會如何監控和上線,以及第二版會加上什麼。
報告評哪些面向
每項能力都會對照你所在級別的標準線評 1 到 5 分,並附上評分所依據的原話和你說出它們的時間。報告最後會給出下一步最該改的一件事。
- 需求與範圍 Requirements and scoping
- 結構與主導節奏 Structure and driving
- API 與資料模型 API and data model
- 架構 Architecture
- 深度 Depth
- 取捨 Trade-offs
- 擴展與故障處理 Scale and failure handling
- 溝通 Communication
Lead 級別還會評: 可維運性與成本(Operability and cost)、範圍與影響力(Scope and influence)。
真實面試中這一輪如何進行
系統設計面試通常持續 45 到 60 分鐘,步驟大致相同:釐清需求,勾勒 API 和資料,畫出一個能端到端運作的簡單設計,深入談兩三個部分,最後討論瓶頸和改進。根據我們讀過的準備指南,最常見的失敗方式是時間用完了,卻沒有拿出一個完整連貫的設計。
閱讀完整指南(英文)Regular 和 Lead 級別
- Regular
- Vera 會溫和地引導。如果你直接開始畫框,會先被問需求和規模;如果卡住了,會得到一個關於下一部分的小提示。
- Lead
- Vera 不會幫你安排結構。由你主導節奏,挑出有風險的部分,並談到成本、維運和對團隊的影響。只要提到一項技術,你就會被問它在這裡具體如何運作。
時長:Regular 級別 45 分鐘,Lead 級別 50 分鐘。
在各個職位中
- 軟體工程(英文)
系統設計。端到端設計一個大規模服務,並說明其中的取捨。
- 資料科學(英文)
指標與實驗設計。設計一個實驗、一套指標框架或一條分析資料管線。
- 機器學習(英文)
機器學習系統設計。設計一個正式環境的機器學習系統:資料、訓練、上線服務和監控。
- 量化開發(C++)(英文)
低延遲系統設計。設計一個撮合引擎、行情處理程式或低延遲資料管線。
開始之前,先看看回饋
由真實報告流程產生的完整報告,學生是虛構的,面試是依腳本進行的。
常見問題
需要畫圖,還是只要用說的?
都要。你一邊說一邊在共用白板上畫框和箭頭,Vera 會看你新加的內容並據此提問,就像面試官站在你身後看你畫一樣。
會有哪些變化?
在擴展和故障階段,Vera 一次只改變一個條件,例如負載變成十倍、某個節點在請求途中掛掉,或者出現熱點 key,然後問你什麼會先出問題、使用者會看到什麼。
資料科學、機器學習和量化職位也有系統設計面試嗎?
有。資料科學設計的是實驗、指標框架或分析資料管線。機器學習設計的是正式環境的機器學習系統。量化設計的是撮合引擎、行情處理程式或低延遲資料管線。
Vera 會告訴我正確答案嗎?
不會。如果你問 Vera 怎麼看,你會得到一個簡短、平衡的分析:某個方案帶來什麼、付出什麼代價,但絕不會給出結論。之後的報告會告訴你哪裡做得好、哪裡需要改。