Câu hỏi phỏng vấn backend developer: thực sự sẽ hỏi gì
Bởi Aaron Cao · Cập nhật

Phỏng vấn backend thường xoay quanh năm mảng: thiết kế API, cơ sở dữ liệu và mô hình hóa dữ liệu, caching và hiệu năng, concurrency và độ tin cậy, cùng một vòng thiết kế hệ thống, thường đi kèm một bài code. Người phỏng vấn quan tâm ít hơn đến việc bạn nêu tên công cụ nào, mà quan tâm nhiều hơn đến việc bạn có giải thích được sự đánh đổi và kể lại một lỗi thực tế bạn từng debug hay không.
Phỏng vấn backend developer bao quát những gì?
Mô tả công việc backend liệt kê hàng chục công nghệ, và rất khó biết cái nào thực sự sẽ được kiểm tra trong buổi phỏng vấn. Phần này liệt kê các mảng câu hỏi lặp lại xuyên suốt các vòng phỏng vấn backend. Công nghệ sử dụng khác nhau tùy công ty, nhưng các chủ đề cốt lõi vẫn khá ổn định.
- Thiết kế API. REST so với RPC, quản lý phiên bản, phân trang, phản hồi lỗi, xác thực, và idempotency key.
- Cơ sở dữ liệu và mô hình hóa dữ liệu. Chọn lưu trữ quan hệ hay dạng document, index, join, transaction, mức cô lập, truy vấn N+1, và cách chạy schema migration an toàn.
- Caching và hiệu năng. Vô hiệu hóa cache, thời gian hết hạn, cache stampede, và cách bạn sẽ profile một endpoint chậm.
- Concurrency và độ tin cậy. Race condition, lock, hàng đợi, timeout, và retry kèm backoff.
- Thiết kế hệ thống. Đề bài như thiết kế dịch vụ rút gọn URL, rate limiter, hoặc dịch vụ thông báo.
- Code. Cấu trúc dữ liệu và một bài toán thực tế, thường bằng ngôn ngữ bạn chọn.
Các vòng chuyên sâu về ngôn ngữ và framework sẽ đi sâu hơn vào chi tiết cụ thể; question banks hub tổng hợp bộ câu hỏi cho Go, Java, Spring Boot, microservices và nhiều hơn nữa.
Câu hỏi cơ sở dữ liệu và API nào xuất hiện nhiều nhất?
Những câu hỏi này xuất hiện dưới dạng này hay dạng khác trong hầu hết các vòng phỏng vấn backend. Hãy luyện trả lời từng câu thành tiếng trong dưới hai phút:
- Điều gì xảy ra khi bạn thêm index vào một cột, và khi nào thì index lại gây hại?
- Sự khác biệt giữa mức cô lập read committed và serializable là gì, và khi nào bạn chấp nhận trả giá cho mức nghiêm ngặt hơn?
- Bạn sẽ tìm và sửa một truy vấn N+1 trong ORM như thế nào?
- Làm sao để một endpoint thanh toán an toàn cho client thử lại?
- Bạn phân trang một tập kết quả lớn đang thay đổi trong lúc người dùng cuộn như thế nào?
- Khi nào bạn sẽ chọn document store thay vì cơ sở dữ liệu quan hệ?
- Bạn sẽ triển khai việc đổi tên một cột mà không gây downtime như thế nào?
Một câu trả lời tốt luôn theo cùng một cấu trúc: nêu lựa chọn mặc định của bạn, chỉ ra cái giá của lựa chọn đó, và mô tả tình huống khiến câu trả lời của bạn thay đổi. Người phỏng vấn thường hỏi sâu vào chính tình huống thay đổi đó, nên hãy chuẩn bị sẵn một ví dụ thực tế.
Trả lời câu hỏi thiết kế hệ thống và debug như thế nào?
Với thiết kế hệ thống, hãy bắt đầu bằng việc làm rõ yêu cầu: ai gọi dịch vụ này, cái gì tuyệt đối không được mất, và đọc hay ghi chiếm ưu thế. Sau đó phác thảo thiết kế đơn giản nhất có thể hoạt động, và chỉ thêm cache, hàng đợi hay sharding khi bạn có thể nói rõ yêu cầu nào buộc phải làm vậy.
Câu hỏi debug là nơi kinh nghiệm thực sự bộc lộ. Một kỹ sư backend phỏng vấn cho vị trí mid-level tại một công ty thanh toán được hỏi vì sao độ trễ của một endpoint tăng gấp đôi sau một lần release. Thay vì đoán nguyên nhân, người này mô tả từng bước: kiểm tra những gì đã thay đổi trong lần deploy, so sánh trace của đường dẫn chậm, đọc query plan, và xác nhận bản sửa lỗi dựa trên cùng một chỉ số độ trễ. Sau đó họ liên hệ điều này với một sự cố truy vấn chậm ở công việc trước, và phần còn lại của cuộc trò chuyện xoay quanh sự cố đó thay vì xoay quanh công cụ.
Hãy chuẩn bị hai câu chuyện production trước bất kỳ buổi phỏng vấn backend nào: một lỗi bạn đã truy ra tận gốc, và một quyết định thiết kế mà giờ bạn sẽ làm khác đi.
Nên luyện tập thế nào, và trợ lý trực tiếp phù hợp ở đâu?
Đọc câu trả lời không giống với việc nói ra chúng. Hãy đọc to danh sách câu hỏi ở trên trong khi bấm giờ, hoặc để công cụ phỏng vấn thử đặt câu hỏi và hỏi thêm khi câu trả lời còn mơ hồ.
Với buổi phỏng vấn video trực tiếp, SubcueAI phiên âm lời người phỏng vấn và soạn sẵn các ý trả lời có cấu trúc trong một lớp phủ cục bộ, có thể dùng trong ứng dụng desktop trên macOS hoặc Windows (Zoom, Google Meet, Microsoft Teams) hoặc trong Side Panel của tiện ích trình duyệt cho các cuộc gọi trên tab Chrome hay Edge. Không có bot nào tham gia cuộc gọi. Công cụ này hữu ích nhất trong các vòng mang tính trò chuyện, như thảo luận thiết kế và câu hỏi về kinh nghiệm. Vòng code trên màn hình chia sẻ, bài đánh giá có giám sát, phỏng vấn một chiều được ghi hình, và thiết bị do công ty quản lý nằm ngoài phạm vi có thể bao quát an toàn, và bất cứ điều gì bạn chia sẻ trên màn hình đều hiển thị. Cách cài đặt có trên trang tutorial.
Câu hỏi thường gặp
Những câu hỏi phỏng vấn backend developer phổ biến là gì?
Phỏng vấn backend cho vị trí junior có bao gồm thiết kế hệ thống không?
Tôi nên dùng ngôn ngữ nào trong vòng code backend?
Làm sao để chuẩn bị cho phỏng vấn backend trong thời gian ngắn?
Câu hỏi liên quan
- Phỏng vấn Full Stack Developer thường hỏi những câu hỏi gì?
- Phỏng vấn frontend developer thường hỏi những câu gì?
- Phỏng vấn Product Designer thường hỏi những câu gì?
- Phỏng vấn an ninh mạng thường hỏi những câu hỏi gì?
- Buổi phỏng vấn xin việc lần đầu thường hỏi những câu gì, và trả lời sao khi chưa có kinh nghiệm?
- Phỏng vấn MLOps thường hỏi những câu gì?