Spring Boot 面試題
作者 Aaron Cao · 更新於

預期會被問到自動組態與 starter、依賴注入與 bean 作用域、profile 與外部化設定、Spring Data JPA、REST 控制器與例外處理、測試切片,以及 Actuator。資深職缺的面試還會加入交易邊界、快取,以及服務在重新啟動前後的行為表現。
面試官會問哪些關於自動組態與 starter 的問題?
你可能每天都在用 Spring Boot,卻從來沒讀過它的啟動記錄——面試官很清楚這點,所以常從這裡切入。這部分要考的,是你到底懂不懂這個框架,還是只會用它的預設值。
@SpringBootApplication實際上組合了哪些功能?拿掉其中一部分會出什麼問題?- 自動組態如何決定要設定什麼?條件式註解在其中扮演什麼角色?
- 什麼是 starter?除了依賴之外,裡面還有什麼?
- 要怎麼覆寫或停用某個特定的自動組態?
- 內嵌伺服器是從哪裡來的?你會怎麼替換它?
好的答案會把機制和你實際做過的事連結起來:你排除過的某個 bean、你換掉的某個 starter,或是你透過條件評估報告追出的一次啟動失敗。
還會出現哪些核心容器與資料相關的問題?
- 依賴注入。建構子注入與欄位注入的差別、為什麼建構子注入比較受青睞,以及當同一種型別出現兩個候選 bean 時要怎麼解決。
- Bean 生命週期與作用域。為什麼單例是預設作用域、什麼時候該用 request 或 prototype 作用域,以及是什麼讓單例 bean 在共用時變得不安全。
- 設定。屬性優先順序、依環境區分的 profile,以及
@ConfigurationProperties和零散的數值注入之間的差別。 - Spring Data JPA。衍生查詢方法、N 加 1 問題、延遲載入與立即載入的差別,以及什麼時候該改用原生查詢。
- 交易。
@Transactional代理實際攔截的是什麼、為什麼自我呼叫會悄悄跳過交易,以及回滾規則如何與受檢例外搭配運作。
交易代理問題是最常見的翻車點,就算是很有自信的答案,也常在這裡破功,所以要準備好解釋代理邊界,而不只是說出註解的名字。
該怎麼談 REST 設計、測試與維運?
除了容器本身,面試官也想聽到會出現在正式環境裡的部分。在 Web 層:狀態碼的選擇、驗證,以及用 @ControllerAdvice 做集中式錯誤處理,而不是每個控制器都寫 try-catch。在測試方面:完整的 @SpringBootTest 和像是 Web 層測試這種切片測試之間的差別,以及為什麼為了一個控制器測試就啟動整個上下文是個低效的習慣。在維運方面:Actuator 會揭露哪些資訊、哪些端點絕對不能公開,以及健康檢查如何回饋給部署流程。
想像一位在物流公司面試中階職缺的後端工程師。她被問到,為什麼一個排程工作有時候會寫入不完整的資料。她沒有用猜的,而是一步步梳理交易邊界,指出這個工作在自身內部呼叫了一個交易方法,並解釋了讓這次呼叫被跳過的代理行為。面試官隨即直接進入 offer 的對話,因為這個答案展現的是除錯的習慣,而不是死背的定義。
其他語言與框架的題庫整理在 題庫 頁面下。
該怎麼練習?即時助手在其中扮演什麼角色?
先把自己服務的啟動記錄完整讀過一遍,做到能夠講清楚每一步。接著要大聲練習,因為能不能在四十秒內把一個概念講清楚,往往就是這些面試輪次成敗的關鍵。「/mock-interview」頁面上的 AI 面試官,能問出你自己想不到的追問。
在語音視訊面試過程中,SubcueAI 會轉寫面試官提出的問題,並在你這一側顯示建議的回答結構——可以是 macOS 與 Windows 上的桌面懸浮視窗,也可以是 Chromium 瀏覽器擴充功能的側邊欄。不會有任何會議機器人加入通話,也不會把任何東西注入會議頁面。老實說,寫程式的環節是明確的界線:如果流程轉到有螢幕監控或監考機制的平台,即時協助就不在範圍內;如果你分享了螢幕,螢幕上的一切都會被看到。