網路基礎練習題 (Practice - Networking)


網路層次與請求流程


Q1(Recall):系統設計面試中最重要的三個網路層次是什麼?各自的核心協定是?


Q2(Recall):一個完整的 Web 請求(瀏覽器輸入網址到顯示頁面)經歷哪些步驟?


Q3(Analysis):為什麼 HTTP keep-alive 和 HTTP/2 多路複用對效能很重要?它們解決了什麼問題?


傳輸層協定


Q4(Recall):TCP 和 UDP 各有哪些關鍵特性?標頭大小分別是?


Q5(Application):以下場景各適合用 TCP 還是 UDP?說明原因。
(A) 銀行轉帳 API (B) 線上遊戲角色移動 (C) 影片串流 (D) 下載大型檔案


Q6(Recall):在瀏覽器中使用 UDP 有什麼限制?如何在需要 UDP 但需支援瀏覽器的情況下設計?


HTTP 與 HTTPS


Q7(Recall):以下 HTTP 方法哪些是冪等的?(A) GET (B) POST (C) PUT (D) DELETE (E) PATCH


Q8(Recall):401 和 403 的差異是什麼?


Q9(Analysis):為什麼說「HTTPS 不代表請求內容可信」?請舉例說明錯誤做法和正確做法。


API 範式比較


Q10(Recall):REST、GraphQL、gRPC 的預設選型策略是什麼?


Q11(Application):請將以下 API 設計改成 RESTful 風格:
/updateUser?id=5/createOrder/deleteComment?id=10


Q12(Analysis):一個社群媒體平台,首頁需要顯示用戶資料、最新貼文、推薦好友。你會選 REST 還是 GraphQL?為什麼?


即時通訊協定


Q13(Recall):SSE、WebSocket、WebRTC 的方向性和底層傳輸分別是?


Q14(Application):以下場景應該選哪個即時通訊協定?(A) 拍賣平台出價更新 (B) 多人線上遊戲 (C) 視訊會議 (D) 股票報價顯示板


Q15(Analysis):為什麼「沒有說明原因就在設計中使用 WebSocket」會被面試官扣分?


負載平衡


Q16(Recall):L4 和 L7 負載平衡器的核心差異是什麼?各自的適用場景?


Q17(Application):一個聊天服務使用 WebSocket,應選哪種 LB?哪種 LB 演算法?為什麼?


Q18(Analysis):什麼情況下應該使用 CDN?什麼情況下用區域分片(Regional Partitioning)?


故障處理模式


Q19(Recall):重試策略中為什麼需要「抖動(jitter)」?如果沒有抖動會發生什麼?


Q20(Application):設計一個支付系統的重試機制。如何防止因網路問題重試導致的重複扣款?


Q21(Analysis):熔斷器的三個狀態是什麼?它解決了什麼問題?和簡單重試相比有何優勢?