バックエンド開発者の面接質問:実際に何を聞かれるか

文責 Aaron Cao · 更新

バックエンド開発者の面接質問:実際に何を聞かれるか
バックエンドの面接は主に5つの領域に集約されます。API設計、データベースとデータモデリング、キャッシュとパフォーマンス、並行処理と信頼性、そしてシステム設計ラウンドで、通常はコーディング課題も併せて行われます。面接官が重視するのは、どのツール名を挙げるかではなく、トレードオフを説明できるか、自分がデバッグした障害について具体的に語れるかどうかです。

バックエンドの面接は主に5つの領域に集約されます。API設計、データベースとデータモデリング、キャッシュとパフォーマンス、並行処理と信頼性、そしてシステム設計ラウンドで、通常はコーディング課題も併せて行われます。面接官が重視するのは、どのツール名を挙げるかではなく、トレードオフを説明できるか、自分がデバッグした障害について具体的に語れるかどうかです。

バックエンド開発者の面接では何が問われるか?

バックエンドの求人票には十数個の技術が並んでいて、実際にどれが面接で問われるのか判断しづらいものです。このセクションでは、バックエンドの面接ラウンドで繰り返し登場する質問領域を整理します。使われる技術スタックは会社ごとに異なりますが、根底にあるテーマは安定しています。

  • API設計。RESTとRPCの比較、バージョニング、ページネーション、エラーレスポンス、認証、冪等性キー。
  • データベースとデータモデリング。リレーショナルかドキュメント型かの選択、インデックス、結合、トランザクション、分離レベル、N+1クエリ、そして安全なスキーマ移行の実行方法。
  • キャッシュとパフォーマンス。キャッシュ無効化、有効期限、キャッシュスタンピード、遅いエンドポイントのプロファイリング方法。
  • 並行処理と信頼性。競合状態、ロック、キュー、タイムアウト、バックオフ付きリトライ。
  • システム設計。URL短縮サービス、レートリミッター、通知サービスなどのお題。
  • コーディング。データ構造と実践的な問題を、通常は自分の得意な言語で解く。

言語やフレームワーク専門のラウンドではより具体的な内容が問われます。問題集ハブにはGo、Java、Spring Boot、マイクロサービスなど、さらに多くの問題セットがまとまっています。

データベースとAPIについて最もよく聞かれる質問は?

これらの質問は、ほとんどのバックエンド面接で何らかの形で登場します。それぞれを2分以内で声に出して答える練習をしてみてください。

  • ある列にインデックスを追加すると何が起きるか、また、インデックスが逆効果になるのはどんな場合か?
  • read committedとserializableの分離レベルの違いは何か、また、より厳密なレベルにコストを払う価値があるのはどんな場合か?
  • ORMでN+1クエリをどう見つけて修正するか?
  • 決済用のエンドポイントをクライアントが安全にリトライできるようにするにはどうするか?
  • ユーザーがスクロールしている間に変化する大きな結果セットをどうページネーションするか?
  • リレーショナルデータベースよりドキュメントストアを選ぶのはどんな場合か?
  • ダウンタイムなしで列名の変更をどう展開するか?

説得力のある答えは毎回同じ形をたどります。まず自分のデフォルトの選択を述べ、その選択のコストを名指しし、答えが変わる状況を説明する。面接官はその「変わる状況」について深掘りしてくるので、具体的な実例を用意しておきましょう。

システム設計とデバッグの質問にはどう答えるか?

システム設計では、まず要件を確認することから始めます。誰がこのサービスを呼び出すのか、絶対に失ってはいけないものは何か、読み取りと書き込みのどちらが支配的か。その上で機能する最もシンプルな設計をスケッチし、キャッシュ、キュー、シャーディングを追加するのは、どの要件がそれを必要としているか説明できるときだけにします。

デバッグの質問では、実際の経験がそのまま表れます。ある決済会社のミドルレベルのポジションに応募していたバックエンドエンジニアは、リリース後にあるエンドポイントのレイテンシが2倍になった理由を尋ねられました。原因を推測するのではなく、彼らは自分の手順を説明しました。デプロイで何が変わったかを確認し、遅いパスのトレースを比較し、クエリプランを読み、同じレイテンシ指標で修正内容を確認する。その後、それを前職での低速クエリのインシデントに結びつけ、それ以降の会話はツールの話ではなく、そのインシデントについての話になりました。

バックエンドの面接の前には、本番環境にまつわる2つのストーリーを用意しておきましょう。自分が突き止めたバグと、今なら違う判断をする設計上の決定です。

どう練習すべきか、リアルタイムのアシスタントはどこで役立つか?

答えを読むことと、それを実際に話すことは別物です。上記の質問リストをタイマーを使いながら声に出して練習するか、模擬面接ツールに質問させて、曖昧な回答に対して深掘りしてもらいましょう。

実際のライブビデオ面接では、SubcueAIが面接官の発言を文字起こしし、構造化された回答のポイントをローカルのオーバーレイに下書きします。macOSまたはWindowsのデスクトップアプリ(Zoom、Google Meet、Microsoft Teams対応)、あるいはブラウザ拡張機能のサイドパネル(ChromeまたはEdgeのタブでの通話用)のどちらでも利用できます。通話にボットが参加することはありません。設計についての議論や経験に関する質問など、会話形式のラウンドで最も役立ちます。画面共有でのコーディングラウンド、監督付きの試験、録画形式の一方向面接、会社管理のデバイスは、安全にカバーできる範囲の外にあり、画面上で共有した内容はすべて相手に見えます。セットアップ方法はチュートリアルページにあります。

よくある質問

バックエンド開発者の面接でよくある質問は?

API設計、データベースのインデックスとトランザクション、キャッシュ、並行処理とリトライに関する質問、レートリミッターやURL短縮サービスなどのシステム設計のお題、そして通常はコーディング課題です。

ジュニア向けのバックエンド面接にもシステム設計は含まれますか?

多くの場合、より軽いバージョンが含まれます。ジュニア候補者は完全な分散システムよりも、1つの機能のAPIを設計するような小規模な設計課題を与えられることが多いです。ミドルレベルやシニアの面接プロセスには、通常、専用の設計ラウンドが含まれます。

バックエンドのコーディングラウンドではどの言語を使うべきですか?

求人情報が特定の言語を要求していない限り、自分が最も得意な言語を使いましょう。面接官は問題解決力と説明の明確さを評価しており、不慣れな構文と格闘することは、説明のために必要な時間を消費してしまいます。

短期間でバックエンドの面接に備えるにはどうすればよいですか?

データベースとAPI設計に関する質問を優先し、システム設計のお題を1つ最初から最後まで声に出して練習し、自分がデバッグしたバグと、今なら変えるであろう設計上の決定という2つの本番環境のストーリーを用意しましょう。

関連する質問

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