System Design Vault

系統設計面試準備筆記。以 PDF 教材為起點,整理成 Obsidian vault;採概念筆記 + 練習題的形式,幫助快速掌握面試常考主題。
涵蓋網路、分散式、API、儲存、快取、訊息、設計模式、基礎設施、維運,以及真實大型應用設計案例等十三個資料夾。


從這裡開始

  1. 學習地圖 (MOC) — 全部章節索引與學習路徑
  2. 速查表 — 一頁速覽各主題決策樹
  3. 面試陷阱題 — 容易答錯的觀念集錦

章節結構

編號 主題 來源 PDF 檔案數 狀態
00 Dashboard 儀表板 3
01 Networking 網路 1-01 8
02 Distributed Systems 分散式 1-02, 1-03, 1-04, 1-10, 1-21 6
03 API Design API 設計 1-05 ~ 1-09 6
04 Database Indexing 索引結構 1-11 ~ 1-16 7
05 Database Advanced (Transactions / Sharding / Replication) 1-17, 1-19, 1-20 4
06 Database Tech (PostgreSQL / DynamoDB / OLTP vs OLAP) 3-01 ~ 3-04 5
07 Caching & Storage 1-18, 3-07, 3-14, 3-15 5
08 Search & AI (RAG / Elasticsearch / Vector DB) 2-06, 2-08, 3-05, 3-06 5
09 Messaging & Coordination (Kafka / Queue / Zookeeper) 2-07, 3-12, 3-13, 3-16, 3-17 6
10 Design Patterns (Scaling / Long Tasks / Real-time) 2-01 ~ 2-05 6
11 Infrastructure (API Gateway / LB / Container / CDN) 3-08 ~ 3-11, 3-18 6
12 Operations & Reliability (Contention / Overload / Observability) 4-01 ~ 4-04 5
13 Case Studies 真實大型應用設計案例 5-01 ~ 5-14 15
目前 87

狀態:✅ 完成 / 🔄 部分完成 / ⬜ 未開始


建議學習順序

Week 1:基礎協定 + 分散式核心
  └─ 01-Networking → 02-Distributed-Systems

Week 2:API 與儲存基本盤
  └─ 03-API-Design → 04-Database-Indexing → 05-Database-Advanced

Week 3:技術選型 + 快取
  └─ 06-Database-Tech → 07-Caching-Storage → 08-Search-and-AI

Week 4:訊息與設計模式
  └─ 09-Messaging-Coord → 10-Design-Patterns

Week 5:基礎設施 + 維運衝刺
  └─ 11-Infrastructure → 12-Ops-and-Reliability → 重看 Exam-Traps

Week 6:案例實戰(整合練兵)
  └─ 13-Case-Studies(先 easy 後 hard)→ Practice-Case-Studies 跨案例比較 → 速查表「案例招牌取捨」

練習題分布

每個主題資料夾內含對應 Practice-XXX.md,目前累計:

題型分布(依教材整理慣例):


高頻面試重點(⭐⭐⭐)

  1. CAP 取捨 vs ACID-C:CP / AP / CA 三角,且能說清 ACID 的 C 跟 CAP 的 C 不同
  2. TCP vs UDP:哪些情境用哪個,QUIC 為何崛起
  3. REST / GraphQL / gRPC 選型:external/internal、over/under-fetching
  4. HTTP 冪等性:GET/PUT/DELETE 是 idempotent,POST/PATCH 不是
  5. Consistent Hashing:Hash Ring + Virtual Nodes,資料搬遷最小化
  6. B-Tree vs LSM Tree:讀多寫多取向、寫入放大、壓實機制
  7. 隔離等級 + Lost Update:超賣本質是 Lost Update,原子 UPDATE 即可(不要動到 Serializable)
  8. Sharding 時機 + Saga:50TiB / 10k TPS 寫才動 sharding;跨服務交易用 Saga 不用 2PC
  9. Replication Lag:Read-After-Write 用 LSN(不要用時鐘);Failover 要 fencing token 防 split brain
  10. Caching 五步驟:瓶頸 → 快取什麼 → 架構(Cache-Aside)→ 淘汰(LRU+TTL)→ 缺點(Stampede / Hot Key / 故障降級)
  11. 讀取/寫入擴展:讀取走 index → replica → cache;寫入走 sharding + queue + batching;先估算再優化,別過早 sharding
  12. 長時間任務(Async):操作 > 幾秒 → queue + worker pool,立刻回 job ID;DLQ 隔離 poison message、Idempotency Key 防重複、依 queue 深度做 backpressure
  13. 大型檔案處理:> 10MB → Presigned URL 直傳 + CDN download,server 不碰 bytes;狀態同步用 Storage 事件 + 對帳(不要信任 client)
  14. 即時更新兩個 hop:協定(SSE 單向 / WebSocket 雙向,WS 必用 L4 LB)+ 傳播(Pub/Sub 廣播 / Consistent Hashing 有狀態);先問「輪詢夠嗎」別過度設計
  15. 搜尋系統:不用 LIKE,獨立搜尋索引 + CDC 同步;倒排索引 + BM25(TF 有上限 / IDF 越罕見越高)+ Boosting + 業務指標
  16. RAG:解 foundation model 四限制(cutoff / 領域深度 / 私有資料 / 引用);Ingestion → Retrieval → Augmentation → Generation;Hybrid Search + 「不知道就說不知道」降 hallucination
  17. 資料管線:批次 vs 串流(< 10 分必串流);Kappa(單套,主流)vs Lambda;容錯用 at-least-once + 冪等寫入(勝過 exactly-once)
  18. 資料庫選型:從需求推導(資料形狀/查詢模式 → OLTP/OLAP → 規模一致性),別背 SQL vs NoSQL;從 PostgreSQL 出發再說明偏離理由
  19. PostgreSQL vs DynamoDB:PG 強一致 + 複雜查詢 + JSONB/PostGIS/全文;DynamoDB 託管 + 水平擴展,GSI 僅最終一致、sort key 用單調遞增 ID(UUIDv7)
  20. OLTP vs OLAP:row vs column 儲存(column 快 = 只讀需要欄位 + 高壓縮 + 向量化);OLTP + CDC/ETL → OLAP,先 ETL 再 CDC
  21. Elasticsearch / 向量 DB:ES segment 不可變、深分頁用 search_after、CDC 同步權威來源;相似度搜尋先 pgvector 再專門庫(HNSW,95% recall)
  22. Blob Storage:二進位不進 DB(DB 存 metadata);生命週期分層控成本;私有 Bucket + Presigned URL(耐久性 ≠ 可用性)
  23. 基礎設施:API Gateway(authN + 路由 + 限流)vs LB(L4/L7 分發);容器無狀態 + K8s HPA;Serverless 事件驅動但有 Cold Start / 15 分上限 / 連線爆炸(RDS Proxy)
  24. 訊息與協調:Queue 削峰但不增容量(過載靠 backpressure);Kafka partition 保序 + at-least-once;分散式鎖正確性需 fencing token(TTL 不夠);ZooKeeper/etcd 共識 vs Redis 效率鎖
  25. 處理競爭(Contention):原子操作 → 樂觀鎖(版本號,避免 ABA)→ 悲觀鎖(FOR UPDATE)→ 分散式鎖;超賣本質是 Lost Update,預設隔離級擋不住、別亂提 Serializable;跨服務用 Saga
  26. 過載保護 + 可靠交付:限流預設 Token Bucket、Concurrency vs Rate 並用;Load Shedding vs Backpressure;重試只對暫時性故障 + 指數退避加抖動 + 冪等鍵;熔斷器 Half-Open 漸進放量
  27. 可觀測性 + CDN:Metrics/Logs/Traces 三支柱 + 四個黃金信號;對症狀告警(非原因)、P99 看 Histogram、SLO 99.9% + Error Budget;CDN 只放靜態資源、immutable + hash busting(別用短 TTL)

標籤系統

領域: #networking, #distributed-systems, #api-design, #database, #indexing, #caching, #performance, #design-patterns, #search-and-ai, #messaging-coord, #infrastructure, #ops-reliability
層次: #transport-layer, #application-layer, #architecture-pattern
模式: #scalability, #consistency, #availability, #fault-tolerance, #high-availability, #async, #real-time
技術: #rest, #graphql, #grpc, #http, #b-tree, #lsm-tree, #hash-index, #transactions, #acid, #replication, #sharding, #message-queue, #kafka, #data-pipeline, #stream-processing, #websocket, #sse, #pub-sub, #blob-storage, #cdn, #search-system, #elasticsearch, #rag, #vector-database, #postgresql, #dynamodb, #nosql, #oltp-olap, #data-warehouse, #api-gateway, #load-balancer, #container, #kubernetes, #serverless, #distributed-cache, #redis, #distributed-lock, #zookeeper, #contention, #overload-protection, #reliable-delivery, #observability
治理: #authentication, #authorization, #api-security
規劃: #capacity-planning(量級數字、scale triggers)
類型: #concept-note, #practice, #moc, #dashboard, #exam-traps, #case-study

使用建議

  1. 背骨架:先讀 速查表 速覽各主題決策樹
  2. 深入概念:依 MOC 順序讀各章節筆記
  3. 作題驗證:每讀完一個資料夾做對應 Practice-XXX.md
  4. 考前衝刺:重看 面試陷阱題,把混淆觀念清乾淨

資料來源

注意:本筆記為系統設計面試備考整理版本,不取代原版教材;面試前建議重看原本 PDF 章節以掌握細節與例外。