Câu hỏi phỏng vấn Spring Boot

Bởi Aaron Cao · Cập nhật

Câu hỏi phỏng vấn Spring Boot
Hãy chuẩn bị cho các câu hỏi về autoconfiguration và starter, dependency injection và bean scope, profile và cấu hình bên ngoài, Spring Data JPA, REST controller và xử lý exception, testing slice, và Actuator. Các vòng phỏng vấn senior còn hỏi thêm về ranh giới transaction, caching, và cách một service hoạt động qua các lần khởi động lại.

Hãy chuẩn bị cho các câu hỏi về autoconfiguration và starter, dependency injection và bean scope, profile và cấu hình bên ngoài, Spring Data JPA, REST controller và xử lý exception, testing slice, và Actuator. Các vòng phỏng vấn senior còn hỏi thêm về ranh giới transaction, caching, và cách một service hoạt động qua các lần khởi động lại.

Nhà tuyển dụng hỏi gì về autoconfiguration và starter?

Có thể bạn dùng Spring Boot mỗi ngày mà chưa từng đọc log khởi động của nó, và nhà tuyển dụng biết điều đó, nên họ thường bắt đầu từ đây. Phần này gồm các câu hỏi kiểm tra xem bạn hiểu framework hay chỉ biết các giá trị mặc định của nó.

  • @SpringBootApplication thực sự kết hợp những gì, và nếu bỏ một phần thì điều gì sẽ hỏng?
  • Autoconfiguration quyết định cấu hình gì như thế nào, và annotation điều kiện đóng vai trò gì?
  • Starter là gì, và bên trong nó có gì ngoài các dependency?
  • Làm sao để ghi đè hoặc tắt một autoconfiguration cụ thể?
  • Embedded server đến từ đâu, và bạn sẽ thay thế nó thế nào?

Một câu trả lời tốt sẽ gắn cơ chế đó với điều bạn thực sự đã làm: một bean bạn phải loại trừ, một starter bạn đã thay thế, một lỗi khởi động mà bạn đã truy ra qua condition evaluation report.

Những câu hỏi nào về core container và dữ liệu thường xuất hiện?

  • Dependency injection. Constructor injection so với field injection, vì sao constructor injection được ưu tiên, và cách giải quyết khi có hai bean ứng viên cùng loại.
  • Vòng đời và scope của bean. Vì sao singleton là scope mặc định, khi nào scope request hoặc prototype là đúng, và điều gì khiến việc chia sẻ một bean singleton trở nên không an toàn.
  • Cấu hình. Thứ tự ưu tiên property, profile theo môi trường, và sự khác biệt giữa @ConfigurationProperties với việc inject giá trị rải rác.
  • Spring Data JPA. Các phương thức truy vấn dẫn xuất, vấn đề N cộng 1, lazy so với eager fetching, và khi nào nên chuyển sang native query.
  • Transaction. Proxy @Transactional thực sự chặn cái gì, vì sao self-invocation lại âm thầm bỏ qua transaction, và các quy tắc rollback hoạt động thế nào với checked exception.

Câu hỏi về transaction proxy là nơi một câu trả lời tự tin thường sụp đổ nhất, vì vậy hãy chuẩn bị để giải thích ranh giới của proxy chứ không chỉ nêu tên annotation.

Nên nói thế nào về thiết kế REST, testing, và vận hành?

Ngoài container, nhà tuyển dụng còn muốn thấy những phần thể hiện trong production. Ở tầng web: cách chọn status code, validation, và xử lý lỗi tập trung bằng @ControllerAdvice thay vì try-catch trong từng controller. Về testing: sự khác biệt giữa một @SpringBootTest đầy đủ và một slice như test tầng web, và vì sao khởi động cả context chỉ cho một test controller là thói quen chậm chạp. Về vận hành: Actuator lộ ra những gì, endpoint nào không bao giờ được public, và health check nuôi dưỡng việc deploy ra sao.

Hãy hình dung một kỹ sư backend phỏng vấn cho vị trí mid-level tại một công ty logistics. Cô ấy được hỏi vì sao một scheduled job đôi khi ghi dữ liệu không đầy đủ. Thay vì đoán, cô lần theo ranh giới transaction, nhận ra job đó gọi một phương thức transactional lên chính nó, và giải thích hành vi proxy khiến lệnh gọi đó bị bỏ qua. Người phỏng vấn chuyển thẳng sang bàn về offer, vì câu trả lời cho thấy thói quen debug chứ không phải một định nghĩa học thuộc.

Bộ câu hỏi cho các ngôn ngữ và framework khác được tập hợp tại question banks.

Nên luyện tập thế nào, và trợ lý trực tiếp phù hợp ở đâu?

Hãy đọc log khởi động của chính service bạn một lần và có thể kể lại nó. Sau đó luyện nói thành tiếng, vì khoảng cách giữa việc biết một khái niệm và giải thích nó trong bốn mươi giây chính là điều quyết định các vòng phỏng vấn này. Một AI interviewer trên trang /mock-interview có thể hỏi những câu follow-up mà bạn sẽ không tự hỏi mình.

Trong một buổi phỏng vấn video nói trực tiếp, SubcueAI phiên âm câu hỏi của người phỏng vấn và hiển thị bên phía bạn một cấu trúc trả lời được gợi ý, trong overlay trên desktop ở macOS và Windows hoặc trong side panel của tiện ích mở rộng trình duyệt Chromium. Không có meeting bot nào tham gia cuộc gọi, và không có gì được chèn vào trang cuộc họp. Giới hạn trung thực là vòng coding: nếu nó chuyển sang một nền tảng bị giám sát màn hình hoặc có giám thị, hỗ trợ trực tiếp nằm ngoài phạm vi, và nếu bạn chia sẻ màn hình, mọi thứ trên đó đều hiển thị.

Câu hỏi thường gặp

Sự khác biệt giữa Spring và Spring Boot là gì?

Spring là framework nền tảng. Spring Boot bổ sung autoconfiguration có định hướng rõ ràng, các starter dependency, và một embedded server để service chạy được mà không cần file cấu hình bên ngoài.

Vì sao constructor injection được ưu tiên?

Nó làm cho dependency trở nên rõ ràng và bắt buộc, giữ field ở dạng final, và cho phép dựng object trong test mà không cần container. Field injection giấu các dependency bị thiếu cho đến khi runtime.

Vấn đề N cộng 1 là gì?

Một query tải một danh sách, sau đó mỗi phần tử lại kích hoạt một query khác cho association của nó. Hãy khắc phục bằng fetch join, entity graph, hoặc batch fetching thay vì eager loading tất cả.

Những endpoint Actuator nào rủi ro khi công khai?

Bất kỳ endpoint nào tiết lộ cấu hình, môi trường, hoặc trạng thái heap. Hãy công khai health và metrics qua đường monitoring của bạn, và giữ phần còn lại phía sau authentication hoặc tắt hoàn toàn.

Câu hỏi Spring Boot cho vị trí senior đi sâu đến mức nào?

Các vòng senior chuyển từ annotation sang hành vi: ranh giới proxy, sự lan truyền transaction, tính đúng đắn của cache, hiệu năng khởi động, và cách service hoạt động trong một rolling restart.

Câu hỏi liên quan

← Thêm về Câu hỏi phỏng vấn theo vai trò & chủ đề