分散式基礎練習題 (Practice - Distributed Systems)


Part 1:Client-Server Architecture

Q1(Recall):Client 和 Server 各自的核心職責是什麼?


Q2(Recall):Client-Server 架構中「職責分離」帶來哪三個好處?


Q3(Recall):Thin Client 和 Thick Client 的差異是什麼?現代系統設計通常偏向哪種?


Q4(Application):你在設計一個拍賣系統。請描述 Client-Server 的起手式:Client 是什麼、Server 需要什麼元件、用什麼 API?


Q5(Recall):什麼情況下應該考慮 P2P 而不是 Client-Server?


Q6(Application):一個朋友說「我要設計 Google Docs,應該用 P2P 讓用戶直接同步」。你的評估是?


Q7(Analysis):「Server 不是一台機器而是一個叢集」意味著系統設計時需要考慮哪些額外問題?


Q8(Analysis):以「電商網站」為例,哪些部分適合 Thick Client 邏輯,哪些必須在 Server 端?


Part 2:CAP Theorem

Q9(Recall):CAP 定理的三個字母分別代表什麼?各自的含義是?


Q10(Recall):為什麼 CA 系統在真實分散式環境中幾乎不存在?


Q11(Recall):CP 系統和 AP 系統各自犧牲了什麼?請各舉一個真實例子。


Q12(Application):以下場景各應選 CP 還是 AP?說明理由。
(A) 社群媒體動態牆 (B) 飯店訂房系統 (C) 使用者頭像快取 (D) 銀行帳戶餘額


Q13(Application):ATM 系統選擇 AP,台北和台中同時提款可能造成什麼問題?如何緩解?


Q14(Recall):在系統設計面試中,預設應該選擇 CP 還是 AP?什麼情況下才改選另一個?


Q15(Analysis):「最終一致性(Eventual Consistency)」是什麼意思?AP 系統選擇它有什麼代價?


Q16(Analysis):你在設計一個線上購票系統(演唱會門票)。面試官問「你選 CP 還是 AP?為什麼?」請給出完整回答。


Part 3:Scalability

Q17(Recall):Throughput 和 Latency 分別指什麼?它們的關係是?


Q18(Recall):垂直擴展和水平擴展的做法各是什麼?各有什麼優缺點?


Q19(Recall):一般企業在系統擴展上的策略順序是什麼?為什麼?


Q20(Application):以下敘述何者正確?
(A) Horizontal scaling 設計比 vertical scaling 簡單
(B) Vertical scaling 理論上沒有上限
(C) Horizontal scaling 需要處理分散式資料一致性問題
(D) 一般建議直接從 horizontal scaling 開始


Q21(Application):你的服務目前是單台 Server,流量突然暴增 10 倍。你的擴展計畫是什麼?


Q22(Application):水平擴展後,Load Balancer 本身成為單點故障(SPOF)。你如何解決?


Q23(Analysis):為什麼可擴展性對業務重要?從技術和商業兩個角度說明。


Q24(Analysis):Scalability、CAP Theorem、Client-Server 這三個概念在系統設計中如何串連?


Part 4:Consistent Hashing

Q25(Recall):為什麼不能直接用 hash(key) % N 來分片?請舉例說明。


Q26(Recall):是非題 — 在 Consistent Hashing 中新增一個節點,所有 key 都需要重新分配。


Q27(Recall):Virtual Nodes(虛擬節點)解決了哪兩個問題?


Q28(Application):列舉三個適合使用 Consistent Hashing 的系統設計場景。


Q29(Application):你的 Redis 叢集原本 3 台,擴充到 5 台。用 hash(key) % N vs Consistent Hashing 差在哪裡?


Q30(Analysis):為什麼現代系統通常同時使用 Consistent Hashing + Virtual Nodes?只用其中一個會有什麼問題?


Part 5:Numbers to Know

Q31(Recall):配對題 — 將指標與量級配對:
(1) Redis 單節點讀取延遲 (2) Kafka 單 broker 吞吐量 (3) PostgreSQL cached read (4) Aurora/RDS 單節點寫入
/ (a) ~1M msgs/sec (b) <1ms (c) 10–20k TPS (d) 1–5ms


Q32(Recall):一個調校良好的單一資料庫可以支撐多少用戶?什麼時候才真的需要 sharding?


Q33(Recall):現代系統中,真正的瓶頸通常是什麼?是記憶體大小嗎?


Q34(Application):你的同事說「我們有 800GB 資料、每秒 3,000 次查詢,先做 sharding 比較保險」。你的評估是?


Q35(Analysis):「Latency 順序:memory ≪ disk ≪ network」這個量級直覺在系統設計面試中怎麼用?舉一個應用例子。