System Design 學習筆記 (System Design Vault)
系統設計面試準備筆記。以 PDF 教材為起點,整理成 Obsidian vault;採概念筆記 + 練習題的形式,幫助快速掌握面試常考主題。
涵蓋網路、分散式、API、儲存、快取、訊息、設計模式、基礎設施、維運等十二個資料夾。
從這裡開始
- 學習地圖 (MOC) — 全部章節索引與學習路徑
- 速查表 — 一頁速覽各主題決策樹
- 面試陷阱題 — 容易答錯的觀念集錦
章節結構
| 編號 | 主題 | 來源 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 | — | ⬜ |
| 07 | Caching & Storage | 1-18, 3-07, 3-14, 3-15 | 2 | 🔄 |
| 08 | Search & AI (RAG / Elasticsearch / Vector DB) | 2-06, 2-08, 3-05, 3-06 | — | ⬜ |
| 09 | Messaging & Coordination (Kafka / Queue / Zookeeper) | 2-07, 3-12, 3-13, 3-16, 3-17 | — | ⬜ |
| 10 | Design Patterns (Scaling / Long Tasks / Real-time) | 2-01 ~ 2-05 | — | ⬜ |
| 11 | Infrastructure (API Gateway / LB / Container / CDN) | 3-08 ~ 3-11, 3-18 | — | ⬜ |
| 12 | Operations & Reliability | 4-01 ~ 4-04 | — | ⬜ |
| 目前 | 40 |
狀態:✅ 完成 / 🔄 部分完成 / ⬜ 未開始
建議學習順序
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
練習題分布
每個主題資料夾內含對應 Practice-XXX.md,目前累計:
- 6 個資料夾、138 題(網路 21、分散式 35、API 26、索引 25、資料庫進階 24、快取 12)
- 答案皆採
> [!answer]-折疊式 callout,可先想再展開
題型分布(依教材整理慣例):
- Recall(記憶/定義):~60%
- Application(情境選型):~25%
- Analysis(對比/取捨):~15%
高頻面試重點(⭐⭐⭐)
- CAP 取捨 vs ACID-C:CP / AP / CA 三角,且能說清 ACID 的 C 跟 CAP 的 C 不同
- TCP vs UDP:哪些情境用哪個,QUIC 為何崛起
- REST / GraphQL / gRPC 選型:external/internal、over/under-fetching
- HTTP 冪等性:GET/PUT/DELETE 是 idempotent,POST/PATCH 不是
- Consistent Hashing:Hash Ring + Virtual Nodes,資料搬遷最小化
- B-Tree vs LSM Tree:讀多寫多取向、寫入放大、壓實機制
- 隔離等級 + Lost Update:超賣本質是 Lost Update,原子 UPDATE 即可(不要動到 Serializable)
- Sharding 時機 + Saga:50TiB / 10k TPS 寫才動 sharding;跨服務交易用 Saga 不用 2PC
- Replication Lag:Read-After-Write 用 LSN(不要用時鐘);Failover 要 fencing token 防 split brain
- Caching 五步驟:瓶頸 → 快取什麼 → 架構(Cache-Aside)→ 淘汰(LRU+TTL)→ 缺點(Stampede / Hot Key / 故障降級)
標籤系統
領域:#networking, #distributed-systems, #api-design, #database, #indexing, #caching, #performance
層次:#transport-layer, #application-layer, #architecture-pattern
模式:#scalability, #consistency, #availability, #fault-tolerance, #high-availability
技術:#rest, #graphql, #grpc, #http, #b-tree, #lsm-tree, #hash-index, #transactions, #acid, #replication, #sharding
治理:#authentication, #authorization, #api-security
規劃:#capacity-planning(量級數字、scale triggers)
類型:#concept-note, #practice, #moc, #dashboard, #exam-traps
使用建議
資料來源
- 原始教材 PDF 放在
pdfs/,使用 git-lfs 管理 - 筆記由
/tutor-setupskill 結構化產出,再人工校讀 - 命名與 frontmatter 約定見 CLAUDE.md
注意:本筆記為系統設計面試備考整理版本,不取代原版教材;面試前建議重看原本 PDF 章節以掌握細節與例外。