快取與儲存練習題 (Practice - Caching & Storage)


Caching(Q1–Q12)

Question 1 - 為什麼用快取 [recall]

從 PostgreSQL 讀一個用戶資料約需 50ms,從 Redis 讀只需 1ms。這個差距背後的根本原因是什麼?


Question 2 - Latency 排序 [recall]

將以下快取位置依延遲由低到高排序:External Cache (Redis)、CDN、In-Process Cache。


Question 3 - Cache-Aside vs Write-Through [analysis]

Cache-Aside 和 Write-Through 的核心差異是什麼?為什麼面試預設選 Cache-Aside?


Question 4 - Write-Behind 風險 [recall]

Write-Behind(Write-Back)的主要風險是什麼?適合什麼場景?


Question 5 - Cache Stampede [recall]

什麼是 Cache Stampede(快取雪崩)?最有效的解決方案是什麼?


Question 6 - Eviction Policy 錯誤敘述 [recall]

以下關於 eviction policy 的敘述,何者錯誤
(A) LRU 移除最久沒被存取的資料
(B) LFU 移除存取次數最少的資料
(C) FIFO 是生產環境最常用的策略
(D) TTL 通常搭配 LRU 或 LFU 一起使用


Question 7 - Hot Key 問題 [application]

如果你的系統有一個極端熱門的快取 key(例如名人的個人資料),可能造成什麼問題?列舉三個解決方案。


Question 8 - 五步驟面試話術 [recall]

面試中介紹快取策略的五個步驟是什麼?


Question 9 - 何時用 CDN [application]

系統設計面試中,引入 CDN 最穩妥的理由是什麼?什麼時候不該用 CDN 當第一個答案?


Question 10 - 一致性策略選擇 [application]

你正在設計一個社群媒體 App 的用戶 profile cache。用戶可以隨時更新自己的暱稱和大頭照。請選擇並說明一個 cache invalidation 策略,包含取捨。


Question 11 - Cache + DB 一致性根本問題 [analysis]

「Cache 和 DB 兩個儲存系統永遠不會 100% 一致」——這個說法對嗎?為什麼?


Question 12 - Redis 掛了 [application]

你的系統重度依賴 Redis 快取,DB 在尖峰時被快取擋掉 80% 流量。如果 Redis 掛了,會發生什麼?怎麼設計才能撐住?