Phỏng vấn system design đánh giá khả năng thiết kế các hệ thống quy mô lớn của bạn — chúng phổ biến cho các vị trí mid/senior. Để thành công cần một cách tiếp cận có cấu trúc: làm rõ yêu cầu, thiết kế ở mức tổng quan, đi sâu vào chi tiết, và thảo luận về trade-off cùng khả năng mở rộng.
Một cách tiếp cận có cấu trúc
1. LÀM RÕ yêu cầu → chức năng (hệ thống làm gì) + phi chức năng (quy mô, độ trễ,
tính sẵn sàng); hỏi về phạm vi, người dùng, ràng buộc (đừng giả định — thu hẹp bài toán)
2. ƯỚC LƯỢNG quy mô → người dùng, request/giây, khối lượng dữ liệu (định hướng cho thiết kế)
3. THIẾT KẾ MỨC TỔNG QUAN → các thành phần chính và luồng dữ liệu (API, service, database, cache,
v.v.); vẽ kiến trúc
4. ĐI SÂU → chi tiết các thành phần quan trọng; mô hình dữ liệu; các thách thức cụ thể
5. QUY MÔ & TRADE-OFF → xác định bottleneck; thảo luận về scaling (caching, load balancing,
sharding, replication); trade-off của các lựa chọn
