Giao diện
System design
Phỏng vấn system design hỏi “thiết kế hệ thống X”. Không có đáp án duy nhất; người phỏng vấn xem cách bạn làm rõ yêu cầu, ước lượng, chọn thành phần và giải thích đánh đổi.
Cách dùng phần này
- Đọc Phương pháp để có khung trình bày cho một buổi 45 phút.
- Lướt Building blocks: mỗi thành phần có tóm tắt ngắn và link tới trang chuyên sâu (cache, database, Kafka…).
- Đọc Latency: cách đo (percentile, fan-out, load test open-loop) và vì sao latency tăng (mạng, hàng đợi, xử lý). Phần này dùng trong mọi bài, nhất là khi trả lời yêu cầu phi chức năng.
- Luyện các case study. Mỗi bài tập trung vào một vấn đề khó, ghép lại từ kiến thức ở các phần khác.
Case study
| Bài | Vấn đề khó nhất |
|---|---|
| Đặt vé không trùng | Hai người không được đặt cùng một chỗ; giữ chỗ có hạn |
| Flash sale | Một dòng tồn kho bị hàng chục nghìn request tranh nhau |
| Chat | Kết nối thời gian thực, lưu và phân trang tin nhắn, trạng thái đã đọc |
| Newsfeed | Đẩy bài lúc ghi hay gom lúc đọc; người có hàng triệu follower |
| URL shortener | Sinh mã ngắn, đọc nhiều hơn ghi rất nhiều |
| Thông báo | Gửi qua nhiều kênh, không gửi trùng, tôn trọng giờ yên lặng |
| Thanh toán | Không mất tiền, không trừ trùng, đối soát |
| Leaderboard & counter | Xếp hạng và đếm với lượng ghi lớn |
| Rate limiter | Đếm request chính xác giữa nhiều instance, chọn thuật toán |