系統設計面試

一句話定義

系統設計面試是技術面試中的開放式架構討論:候選人要在模糊需求下釐清邊界、估算容量、提出高層架構、深入關鍵元件並說明取捨,讓面試官看見其工程判斷與溝通方式。

核心要點

四步流程

2026-05-14-搞定系統設計面試 的框架可壓成四步:

步驟面試現場要做什麼常見失誤
1. 理解問題並確定邊界問需求、使用者、規模、讀寫比例、功能範圍與非功能需求一上來畫架構,結果解錯題
2. 提出高層設計並取得認同畫核心資料流、主要服務與儲存層,先讓面試官同意方向架構太細,對方還沒接受大方向
3. 深入關鍵設計選 1-2 個瓶頸深入,例如資料分片、快取失效、限流、佇列、同步 / 非同步每個點都淺談,沒有展示 trade-off
4. 總結回顧設計、限制、可擴展方向與未處理風險時間結束時沒有收斂,留下散亂印象

這不是僵硬模板,而是把開放題變成可對話、可調整的討論流程。

面試官看的是思考過程

系統設計面試沒有唯一正解;面試官通常在看:

  • 能否把模糊問題變成清楚需求。
  • 能否用 封底估算 快速檢查規模與瓶頸。
  • 能否把架構圖和資料流講成一個能被討論的模型。
  • 能否知道哪些地方需要深入,哪些可先略過。
  • 能否承認取捨與限制,而不是把每個技術都說成萬靈丹。
  • 能否和面試官互動,而不是背誦預先準備的標準答案。

因此它也是 面試 的一種「雙向對談」:候選人不是單向交卷,而是在共同釐清問題。

練習重點

  • 需求澄清練習:拿到題目先列出要問的問題,不急著畫圖。
  • 數量級練習:熟悉 QPS、儲存量、頻寬、延遲、可用性等估算口徑。
  • 元件組合練習:同一組 分散式系統元件 在不同案例中如何重排。
  • 深挖練習:每個案例至少準備一個能深入到資料模型 / cache invalidation / retry / consistency 的點。
  • 總結練習:最後 1-2 分鐘用「已滿足需求、限制、下一步」收束,不讓答案停在未完成狀態。

與其他概念的關係

  • 面試 — 一般面試頁處理心態、準備與故事表達;本頁是技術面試中的系統設計子場景。
  • 系統設計 — 本頁是系統設計能力在面試中的展示方式。
  • 封底估算 — 系統設計面試的數量級檢查工具。
  • 可擴展性 — 面試最常追問的非功能需求之一。
  • 分散式系統元件 — 案例題的常用積木庫。
  • STAR原則 — 行為面試用 STAR / QAR 講經歷;系統設計面試則用需求、架構、深挖、總結講工程判斷。兩者都是把思考外部化給面試官看。
  • MOC-職涯 / MOC-工程 — 本頁同時屬於職涯求職場景與工程能力地圖。

相關來源

備註

未來可接:LeetCode-style coding interview、behavioral interview、staff engineer architecture interview、real-world architecture review。若累積到非面試場景的 architecture review 來源,應回寫 系統設計 而非只擴充本頁。