Thư Viện Câu Hỏi Phỏng Vấn
Tổng hợp các câu hỏi tuyển dụng thực tế theo nhiều cấp độ từ Entry đến Expert để bạn tự tin chinh phục nhà tuyển dụng.
Hiện tượng Cache Stampede (hoặc Cache Avalanche) là gì? Làm thế nào để phòng chống hiện tượng này trong các hệ thống chịu tải cao?
- Mutex Lock (Single Flight): Chỉ cho phép request đầu tiên truy cập CSDL để lấy dữ liệu mới và khóa các request khác lại bắt chúng chờ cho đến khi dữ liệu mới được cập nhật vào cache.
- Chạy Background Worker: Tự động cập nhật (refresh) dữ liệu trong cache bằng tác vụ ngầm trước khi key đó hết hạn thực tế.
- Xác suất tính toán sớm (Probabilistic Early Expiration): Cho phép một tỷ lệ nhỏ request tính toán lại giá trị cache trước khi key hết hạn.
Hãy giải thích các chiến lược thu hồi bộ nhớ đệm (Cache Eviction Policies) phổ biến như LRU (Least Recently Used) và LFU (Least Frequently Used)?
Khi bộ nhớ đệm (Cache) bị đầy, hệ thống cần giải phóng không gian bằng cách loại bỏ các key cũ theo các chiến lược nhất định:
- LRU (Least Recently Used - Ít được sử dụng gần đây nhất): Loại bỏ phần tử đã lâu không được truy cập. Cơ chế hoạt động dựa trên thứ tự thời gian của lần truy cập cuối cùng. Mỗi lần một key được truy cập, nó sẽ được đưa lên đầu danh sách. Khi đầy, phần tử ở cuối danh sách (cũ nhất) sẽ bị xóa. Phù hợp cho đa số trường hợp vì dữ liệu vừa được truy cập có khả năng cao sẽ được truy cập lại.
- LFU (Least Frequently Used - Ít được sử dụng thường xuyên nhất): Loại bỏ phần tử có tần suất (số lần) truy cập thấp nhất trong một khoảng thời gian. Cơ chế này đếm số lần truy cập của từng key. Khi đầy, key có bộ đếm nhỏ nhất bị xóa.
- Khác biệt: LRU tập trung vào tính chất thời gian (recency), trong khi LFU tập trung vào độ phổ biến (frequency). LFU có thể gặp vấn đề nếu một key được truy cập rất nhiều lần trong quá khứ nhưng hiện tại không dùng nữa, nó vẫn chiếm chỗ trong cache do bộ đếm tích lũy quá cao (có thể giải quyết bằng cách áp dụng cơ chế suy giảm - aging).



.png)
.png)