Câu hỏi phỏng vấn Backend hay gặp và cách trả lời cho có chiều sâu
Phần lớn câu hỏi phỏng vấn backend xoay quanh vài chủ đề lặp lại. Điều phân biệt junior với senior không phải là thuộc định nghĩa, mà là nói được khi nào nó hỏng và mình xử lý thế nào. Dưới đây là các câu hay gặp, kèm ý chính nên chạm tới.
Database
Index hoạt động thế nào? Khi nào index không giúp gì?
Nói về B-tree, cột được lọc hay sắp xếp thường xuyên, index nhiều cột và thứ tự cột. Điểm cộng: index làm chậm ghi, query dùng hàm trên cột (lower(email)) hoặc LIKE '%abc' không dùng được index thường, và cách bạn kiểm tra bằng EXPLAIN ANALYZE.
Transaction isolation level khác nhau ra sao?
Nêu được các hiện tượng: dirty read, non-repeatable read, phantom read, và level nào chặn cái nào. Điểm cộng: ví dụ thật như hai request cùng trừ tồn kho, và cách xử lý bằng SELECT … FOR UPDATE, optimistic locking (cột version) hay ràng buộc unique.
N+1 query là gì? Lấy 50 bài viết rồi gọi thêm 50 query lấy tác giả. Cách sửa: join, batch theo danh sách id, hoặc dataloader.
API và hệ thống
Làm sao để retry an toàn? Idempotency: client gửi một khoá duy nhất cho mỗi thao tác, server lưu kết quả theo khoá đó và trả lại kết quả cũ nếu nhận trùng. Rất hay gặp ở bài toán thanh toán.
Cache thì invalidate thế nào? Cache-aside, TTL, xoá cache khi ghi. Điểm cộng: nói được cache stampede (nhiều request cùng lúc nạp lại một khoá) và cách giảm: khoá, gộp request, TTL ngẫu nhiên.
Rate limiting làm thế nào? Fixed window, sliding window, token bucket; lưu bộ đếm ở đâu khi có nhiều instance (Redis hoặc database).
Xử lý việc chạy lâu (gửi email, xuất file) ra sao? Đưa vào hàng đợi, worker xử lý, retry có giới hạn, và hàng đợi lỗi (dead letter) để xem lại.
Câu hỏi về trải nghiệm
Kể một sự cố production bạn từng xử lý. Trả lời theo trình tự: phát hiện thế nào, giảm thiệt hại trước (rollback, tắt tính năng), tìm nguyên nhân gốc, rồi thay đổi gì để không lặp lại. Người phỏng vấn nghe cách bạn nghĩ, không chỉ nghe kết cục.
Mẹo khi trả lời
- Không chắc thì nói "em chưa làm trực tiếp, nhưng em sẽ tiếp cận thế này…". Đoán bừa cho có thường tệ hơn.
- Mỗi khái niệm, chuẩn bị sẵn một ví dụ từ dự án của chính bạn.
- Hỏi lại khi đề mơ hồ: dữ liệu bao lớn, bao nhiêu request mỗi giây, cần nhất quán tới mức nào.
Bạn từng gặp câu backend nào không có trong danh sách này? Kể ở dưới, hoặc đăng trọn buổi phỏng vấn ở mục Interview (có thể ẩn tên công ty).
0 bình luận
Chưa có bình luận nào. Bạn mở lời trước nhé.