Spring Boot 面試題

作者 Aaron Cao · 更新於

Spring Boot 面試題
預期會被問到自動組態與 starter、依賴注入與 bean 作用域、profile 與外部化設定、Spring Data JPA、REST 控制器與例外處理、測試切片,以及 Actuator。資深職缺的面試還會加入交易邊界、快取,以及服務在重新啟動前後的行為表現。

預期會被問到自動組態與 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 瀏覽器擴充功能的側邊欄。不會有任何會議機器人加入通話,也不會把任何東西注入會議頁面。老實說,寫程式的環節是明確的界線:如果流程轉到有螢幕監控或監考機制的平台,即時協助就不在範圍內;如果你分享了螢幕,螢幕上的一切都會被看到。

常見問題

Spring 和 Spring Boot 有什麼差別?

Spring 是底層框架。Spring Boot 在此基礎上加入了慣例優先的自動組態、starter 依賴,以及內嵌伺服器,讓服務不需要外部設定檔就能執行。

為什麼建構子注入比較受青睞?

它讓依賴變得明確又必要,能讓欄位保持 final,而且可以在測試裡不靠容器就建立出物件。欄位注入則會把缺少的依賴一路藏到執行期才爆出來。

什麼是 N 加 1 問題?

一條查詢載入出一份清單後,清單裡的每個元素又各自觸發一條關聯查詢。解法是用 fetch join、entity graph 或批次抓取,而不是把所有東西都設成立即載入。

哪些 Actuator 端點公開出來會有風險?

任何會洩漏設定、環境變數或 heap 狀態的端點都有風險。應該透過你的監控管道公開健康檢查與指標,其餘的要嘛加上驗證,要嘛完全關閉。

資深職缺的 Spring Boot 面試會問到多深?

資深職缺的面試會從註解層面轉向行為層面:代理邊界、交易傳播、快取正確性、啟動效能,以及服務在滾動式重新啟動過程中的表現。

相關問題

← 更多關於 依職位與主題分類的面試問題