Spring Boot面接でよく聞かれる質問

文責 Aaron Cao · 更新

Spring Boot面接でよく聞かれる質問
自動設定とスターター、依存性注入とBeanスコープ、プロファイルと外部設定、Spring Data JPA、RESTコントローラーと例外処理、テストスライス、そしてActuatorについて質問されると考えてください。シニア向けの面接では、トランザクション境界、キャッシュ、再起動をまたいだサービスの挙動についても聞かれます。

自動設定とスターター、依存性注入とBeanスコープ、プロファイルと外部設定、Spring Data JPA、RESTコントローラーと例外処理、テストスライス、そしてActuatorについて質問されると考えてください。シニア向けの面接では、トランザクション境界、キャッシュ、再起動をまたいだサービスの挙動についても聞かれます。

自動設定とスターターについて、面接官は何を聞いてきますか?

Spring Bootを毎日使っていても、起動ログを読んだことがない人は多いはずです。面接官もそれを分かっているからこそ、ここから質問を始めます。このセクションでは、フレームワークを本当に理解しているか、それともデフォルト設定しか知らないかを見極める質問を扱います。

  • @SpringBootApplicationは実際には何を組み合わせているのか、その一部を外すと何が壊れるのか?
  • 自動設定は何を設定するかをどう判断するのか、条件付きアノテーションはどんな役割を果たすのか?
  • スターターとは何か、依存関係以外に何が含まれているのか?
  • 特定の自動設定を上書きしたり無効化したりするにはどうすればよいか?
  • 組み込みサーバーはどこから来るのか、どうやって差し替えるのか?

良い回答は、そのメカニズムを自分が実際に経験したことと結び付けます。除外せざるを得なかったBean、置き換えたスターター、条件評価レポートを読み解いて追跡した起動失敗などです。

コアコンテナとデータに関するどんな質問が出ますか?

  • 依存性注入。コンストラクタインジェクションとフィールドインジェクションの違い、なぜコンストラクタインジェクションが好まれるのか、そして同じ型の候補Beanが二つあるときの解決方法。
  • Beanのライフサイクルとスコープ。なぜシングルトンがデフォルトなのか、requestスコープやprototypeスコープが適切なのはどんなときか、シングルトンBeanを共有すると何が危険になるのか。
  • 設定。プロパティの優先順位、環境ごとのプロファイル、そして @ConfigurationProperties と個別の値注入の違い。
  • Spring Data JPA。派生クエリメソッド、Nプラス1問題、遅延フェッチと即時フェッチの違い、ネイティブクエリに切り替えるべきタイミング。
  • トランザクション。@Transactionalプロキシが実際にインターセプトしているのは何か、なぜ自己呼び出しはトランザクションを黙って素通りしてしまうのか、そしてロールバックのルールが検査例外とどう連動するのか。

トランザクションプロキシに関する質問は、自信満々の回答が崩れる最も多い場面です。アノテーションの名前を挙げるだけでなく、プロキシの境界をきちんと説明できるように準備しておきましょう。

REST設計、テスト、運用についてはどう話せばよいですか?

コンテナの話にとどまらず、面接官は本番環境で実際に現れる部分も見たいと考えています。Web層では、ステータスコードの選び方、バリデーション、そして各コントローラーでtry-catchを書く代わりに @ControllerAdvice による一元的なエラーハンドリングです。テストでは、完全な @SpringBootTest とWeb層テストのようなスライステストの違い、そして一つのコントローラーテストのためだけにコンテキスト全体を起動するのがなぜ遅い習慣なのかです。運用では、Actuatorが何を公開するのか、どのエンドポイントを公開してはいけないのか、そしてヘルスチェックがデプロイにどう反映されるのかです。

物流会社のミドルレベル職に応募したバックエンドエンジニアを例に考えてみましょう。彼女は、あるスケジュールジョブが不完全なデータを書き込むことがある理由を聞かれました。彼女は推測に頼らず、トランザクション境界を順に説明し、そのジョブが自分自身に対してトランザクションメソッドを呼び出していたことを指摘し、それが原因でトランザクションがスキップされたプロキシの挙動を説明しました。面接官はすぐにオファーの話に進みました。その回答が、暗記した定義ではなくデバッグの習慣を示していたからです。

ほかの言語やフレームワークの質問は問題集としてまとめられています。

どう練習すればよいですか?ライブアシスタントはどこで役立ちますか?

まず自分のサービスの起動ログを一度通して読み、それを説明できるようにしましょう。次に声に出して練習してください。ある概念を理解していることと、それを四十秒で説明できることの間にあるギャップこそが、これらの面接の合否を分けるからです。「/mock-interview」ページのAI面接官は、自分では思いつかないような深掘り質問をしてくれます。

音声によるビデオ面接の最中、SubcueAIが面接官の質問を文字起こしし、あなたの側に提案された回答の構成を表示します。macOSとWindowsではデスクトップのオーバーレイに、Chromiumブラウザ拡張機能ではサイドパネルに表示されます。会議にボットが参加することはなく、会議ページに何かが注入されることもありません。正直に言うと、コーディングラウンドには限界があります。画面監視や監督付きのプラットフォームに移った場合、ライブサポートの対象外となり、画面を共有すればそこに映っているものはすべて見えてしまいます。

よくある質問

SpringとSpring Bootの違いは何ですか?

Springは基盤となるフレームワークです。Spring Bootはその上に、opinionatedな自動設定、スターター依存関係、組み込みサーバーを追加し、外部設定ファイルなしでサービスを実行できるようにします。

なぜコンストラクタインジェクションが好まれるのですか?

依存関係を明示的かつ必須にし、フィールドをfinalに保つことができ、コンテナなしでもテスト内でオブジェクトを構築できるようになります。フィールドインジェクションは、依存関係の欠落を実行時まで隠してしまいます。

Nプラス1問題とは何ですか?

一つのクエリでリストを読み込んだ後、各要素がそれぞれ関連付けのための別のクエリを発生させる問題です。すべてを即時フェッチにするのではなく、fetch join、entity graph、バッチフェッチで解決します。

公開するとリスクが高いActuatorエンドポイントはどれですか?

設定、環境、ヒープの状態を明らかにしてしまうものはすべて危険です。ヘルスチェックとメトリクスは監視用の経路を通じて公開し、それ以外は認証の背後に置くか、完全に無効化してください。

シニア向けのSpring Boot面接では、どこまで深く聞かれますか?

シニア向けの面接では、アノテーションの話から挙動の話に移ります。プロキシの境界、トランザクションの伝播、キャッシュの正確性、起動パフォーマンス、そしてローリング再起動時のサービスの挙動などです。

関連する質問

← 詳しく見る: 職種・トピック別の面接質問