Software Engineer の面接質問
各社ガイドから集めた代表的な Software Engineer の面接質問を、評価される内容ごとに分類しています。準備用の例であり、特定企業の確定した質問集ではありません。
行動面接 (32)
割り当てられた担当範囲を超えて、問題に自らオーナーシップを持って取り組んだ経験を教えてください。
難しい技術的問題に対して当事者意識を持って取り組んだ経験を説明してください。
技術的な判断についてチームメンバーと意見が対立した経験を教えてください。どのように解決しましたか?
チームメンバーと意見が対立した経験と、どのように結論に至ったかを教えてください。
技術的な意思決定をめぐる意見の相違と、その解決にどのように貢献したかを教えてください。
急増するリクエストを受け付け、正確性を維持し、障害時にも観測可能なサービスをどのように設計しますか?
不明確な技術的問題に当事者意識を持って取り組んだプロジェクトについて教えてください。
協働相手との技術的な意見の相違にどのように対処し、その話し合いによって何が変わりましたか?
障害処理とテストをより明確にするため、この関数をどのようにリファクタリングしますか?
技術方針をめぐる意見の対立と、チームが意思決定するためにあなたがどう貢献したかを教えてください。
予期しない障害が発生するまで自ら担当したプロジェクトについて説明してください。その後、何を変更しましたか?
自分が責任を持った技術的判断と、競合する手法をどのように評価したかを教えてください。
チームメイトと意見が食い違った経験と、どのように決定に至ったかを教えてください。
チームメンバーと意見が対立した経験と、どのように結論に至ったかを教えてください。
チームメンバーと意見が対立した経験と、どのように業務を前進させたかを教えてください。
割り当てられた業務の範囲を超えて、技術的な問題に主体的に取り組んだ経験を教えてください。
技術的な判断についてチームメイトと意見が合わなかった経験を教えてください。どのように仕事を前進させましたか?
あなたが責任を持った技術的な意思決定と、その判断の根拠となった情報について教えてください。
不明確な課題に対して当事者意識を持って取り組んだプロジェクトについて教えてください。
チームメンバーと意見が対立したとき、どのように決定へ至ったかを教えてください。
困難なエンジニアリング上の問題に主体的に取り組んだ経験について教えてください。
異なる視点を持つ人々との協働によって達成できた成果について教えてください。
要件が不明確な中でもオーナーシップを発揮した課題について教えてください。
チームメンバーと意見が対立した経験と、その解決にどのように貢献したかを教えてください。
Boston Consulting Group ガイドより · 模擬面接でこの質問を練習する · 履歴書から回答を作成する
予期せぬ障害が発生したプロジェクトを、オーナーとして完遂した経験を説明してください。
Boston Consulting Group ガイドより · 模擬面接でこの質問を練習する · 履歴書から回答を作成する
なぜソフトウェアエンジニアとしてBoston Consulting Groupに入社したいのですか?
Boston Consulting Group ガイドより · 模擬面接でこの質問を練習する · 履歴書から回答を作成する
技術的な決定に反対した経験と、その状況にどう対処したかを教えてください。
チームメンバーと意見が対立した経験と、どのように結論へ至ったかを教えてください。
技術的な意見の相違が生じた経験と、チームがどのように意思決定に至ったかを教えてください。
チームメイトとの意見の対立と、それをどう解決したかについて教えてください。
なぜこのチームでこのソフトウェアエンジニアの職種を志望するのですか?
技術的な設計についての意見の相違をどのように扱いましたか。そして、それを解決するために自分自身で何をしましたか?
コーディング (28)
正しく動作しているものの、他のエンジニアには保守しづらいコードをどのように改善しますか?
連結リスト内の循環をどのように検出し、その手法の計算量をどう説明しますか?
予測可能な削除動作を備えたキャッシュをどのように実装し、その設計上の選択をどう説明しますか?
連結リストに循環が含まれているかをどのように判定し、時間計算量と空間計算量のトレードオフをどのように説明しますか?
動作はするものの、読みにくくテストしにくいコードをどのように改善しますか?
重複する時間区間をまとめる関数を書き、その計算量を説明してください。
不慣れなコードで発生したパフォーマンス低下の原因を、どのように特定して説明しますか?
不正な形式、重複、遅延のある入力を処理するコードに対して、どのようなテストを書きますか?
境界条件で動作が変わる関数をどのようにテストしますか?
正しく動作するものの、別のエンジニアには保守しにくいコードをどのように改善しますか?
動作はするものの、ほかのエンジニアにとって保守が難しいコードを、どのように改善しますか?
このコードの可読性、正確性、保守性を高めるために、何を変更しますか?
コードを書く前に、曖昧な技術要件をどのように明確にしますか?
正しく動作するものの保守しにくいコードを、どのようにテストしてリファクタリングしますか?
連結リストに循環があるかどうかを、どのように判定しますか?また、どのようなトレードオフを説明しますか?
動作はしているものの、名前が分かりにくくロジックが重複している関数を、挙動を変えずにどのように改善しますか?
連結リストに循環が含まれているかどうかを、どのように判定しますか?また、そのトレードオフをどのように説明しますか?
動作を維持したまま、読みにくい関数をどのようにリファクタリングしますか?
正しく動作するものの、チームメンバーにとって理解しにくいコードをどのように改善しますか?
動作はするものの、別のエンジニアには保守しにくいコードをどのように改善しますか?
動作はするものの、他のエンジニアにとって保守が難しいコードをどのように改善しますか?
Boston Consulting Group ガイドより · 模擬面接でこの質問を練習する · 履歴書から回答を作成する
連結リストに循環が含まれているかどうかを、どのように判定しますか?また、その方法をどのように説明しますか?
動作はするものの保守が難しいコードを、どのように改善するか順を追って説明してください。
正しく動作するものの、読みにくくテストしにくい関数をどのように改善しますか?
変化し続けるネットワークの中で最短経路を見つけるアルゴリズムをどのように設計しますか?
通常の例では正しく動くのに、空の入力や重複した値では失敗する関数があるとき、どのように調査しますか?
連結リストの循環をどのように検出しますか。また、そのアプローチの時間計算量と空間計算量はどのくらいですか。
時々重複レコードを作成してしまう関数をレビューする際、原因をどのように特定し、修正の優先順位をどうつけますか?
システム設計 (33)
頻繁にアクセスされるオブジェクトを保存・取得し、予測可能な方法で退避させるサービスをどのように設計しますか?
トラフィックが増加しても可用性を維持するサービスをどのように設計しますか?
複数の配信チャネルに対応し、障害を処理できる通知サービスをどのように設計しますか?
ユーザー通知を確実に保存し取得するサービスをどのように設計しますか?
依存先に障害が発生しても可用性を維持する必要があるサービスを、どのように設計しますか?
同じサービスについて、より単純な設計と拡張性の高い設計のトレードオフを順を追って説明してください。
大規模な推論リクエストをキューに入れて処理するサービスをどのように設計しますか?
レイテンシ、コスト、信頼性、整合性の間で、どのようなトレードオフを選択しますか?
受信したリクエストと対応可能なプロバイダーをマッチングするサービスをどのように設計しますか?
障害に適切に対処しながら、パーソナライズされたコンテンツを配信するサービスをどのように設計しますか?
トラフィックが増加しても応答性を維持できるプロフェッショナル向けアクティビティフィードを、どのように設計しますか?
頻繁に変更されるユーザー設定を保存し、取得するサービスをどのように設計しますか?
大容量のクリエイティブアセットを確実に保存・取得するサービスをどのように設計しますか?
通知サービスを設計し、配信障害と需要の変化にどのように対処するか説明してください。
同時更新が発生しても商品の在庫情報の一貫性を維持できるサービスを設計してください。
変動するトラフィック下で、パーソナライズされた音声コンテンツのおすすめを提供するサービスをどのように設計しますか?
トラフィックが増えても応答性を維持できる短尺動画フィードを、どのように設計しますか?
チームが共有レコードを検索して更新できるサービスを、どのように設計しますか?
依存先に障害が発生しても利用可能なサービスをどのように設計しますか?
ジョブを受け付け、確実に処理し、その状態を報告するサービスをどのように設計しますか?
Boston Consulting Group ガイドより · 模擬面接でこの質問を練習する · 履歴書から回答を作成する
ジョブを受け付け、非同期で処理し、そのステータスを報告するサービスをどのように設計しますか?
新しい情報によって設計上の前提が無効になった場合、どのように対応しますか?
コンポーネントに障害が発生しても利用可能な通知サービスを、どのように設計しますか?
自分が責任を持ったシステムまたは機能と、予期せぬ問題にどう対処したかを説明してください。
リクエストのレイテンシーが突然増加した場合、どのように原因を診断しますか?
決済イベントを確実に処理し、障害から復旧できるサービスをどのように設計しますか?
障害を処理しながら、複数のデバイス間でユーザーデータを同期させ続けるサービスを設計してください。
あなたの設計におけるトレードオフと、それをどのようにテストするかを説明してください。
デバイスからのイベントを受け取り、保存し、トラフィックが増えてもクエリに対応できるサービスをどのように設計しますか?
イベントが遅れて到着したり、複数回配信されたりする可能性がある場合、その設計をどのように変更しますか?
重複した副作用を生まずにリトライに対応するWebhook配信サービスを、どのように設計しますか?
メモリ使用量を一定の範囲に抑えながら、デバイスのテレメトリを収集するサービスをどのように設計しますか。
同じ在庫に対する同時リクエストによる二重予約を防ぐ予約サービスを、どのように設計しますか?
技術 (78)
接続関係が時間とともに変化するグラフで、最短経路をどのように求めますか?
チームメンバーとの技術的な意見の対立と、どのように結論に至ったかを説明してください。
同時リクエストの下でも正しく動作しなければならないソリューションをどのようにテストしますか?
リレーショナルストレージと非リレーショナルストレージのどちらかを選ぶ際、どのようなトレードオフを考慮しますか?
協働関係を維持しながら、技術的な意見の相違にどのように対処しましたか?
負荷がかかると遅くなるサービスをどのように診断しますか?
メモリ使用量を考慮しながら、大規模なコレクション内の重複値をどのように見つけますか?
不明確な課題から提供まで、主体的に担当したプロジェクトについて説明してください。何を学びましたか?
次のソフトウェアエンジニア職で、あなたの意欲を高めるものは何ですか?
メモリ使用量を抑えながら、大規模なコレクション内の重複値をどのように見つけますか?
信頼性の低い外部サービスに依存するコンポーネントをどのようにテストしますか?
履歴書上のどのプロジェクトが当事者意識を最もよく示していますか?また、あなた自身は何を提供しましたか?
メモリ使用量を抑えながら高速な検索を実現するには、どのようなデータ構造を選びますか?
複数の並列プロセスに作業を分割する際、どのようなトレードオフを考慮しますか?
自身が責任を持ったプロジェクト、そこで下した意思決定、今なら変更したい点について説明してください。
有向グラフ内の閉路を効率的に検出する方法を、どのように見つけて説明しますか?
有向グラフに閉路が含まれているかをどのように判定し、その計算量をどのように説明しますか?
メモリ使用量のトレードオフを説明しながら、大規模なストリームから重複する値をどのように検出して削除しますか?
チームメンバーと意見が対立した経験と、実行可能な決定に至った方法を説明してください。
トラフィックの増加に伴って遅くなるサービスをどのように診断しますか?
大規模なコレクションで検索を繰り返す場合、効率的な解決策をどのように見つけ、説明しますか?
一貫性と可用性のどちらを優先するか選ぶ際、どのようなトレードオフを考慮しますか?
予期せぬ問題に直面しながらも、オーナーとして完遂したプロジェクトについて説明してください。
どのようなエンジニアリング業務に情熱を感じますか?また、その関心を最もよく示す経験は何ですか?
連結構造に循環が含まれているかをどのように判定し、そのアプローチの計算量をどのように説明しますか?
不明確な要件から納品まで、自ら責任を持って進めたプロジェクトについて説明してください。
同期処理と非同期処理のどちらかを選ぶ際に、どのようなトレードオフを考慮しますか?
計算量を選んだ理由を説明しながら、大規模なコレクションから重複する値を検出して削除するにはどうしますか?
あなたが責任を持って進めたプロジェクトについて、選択したトレードオフと学んだことを説明してください。
ストリーム内で最初の非反復文字をどのように見つけますか?また、どのようなトレードオフを検討しますか?
チームメンバーと意見が対立した経験と、どのように結論へ達したかを説明してください。
複雑なエンジニアリング上のトレードオフを、技術職ではないステークホルダーにどのように説明しますか?
割り当てられたタスクの範囲を超えて、問題に当事者意識を持って取り組んだプロジェクトについて説明してください。
チームがリリース準備を進めている最中に本番環境の問題が発生した場合、どうしますか?
チームメンバーとの意見の相違と、グループとして意思決定に至った方法を説明してください。
初期症状について十分な情報がない場合、本番環境の問題をどのように調査しますか?
メモリ使用量を抑えながら、大規模なストリーム内で重複する項目をどのように見つけますか?
協力者と意見が対立した経験と、どのように結論へ至ったかを説明してください。
新しい情報によって当初の技術的アプローチが無効になった場合、どのように対応しますか?
メモリ使用量を抑えながら、大規模なストリーム内の重複値をどのように見つけますか?
解決策、計算量、検証するエッジケースを順を追って説明してください。
納品直前にプロジェクト要件が変更されたとします。計画をどのように再評価しますか?
協力者への情報共有を続けながら、本番環境の問題にどのように責任を持って対処しますか?
メモリ使用量を抑えながら、大規模なストリーム内の重複値をどのように見つけますか?
頻繁な検索と順序付き走査には、どのデータ構造を選びますか?また、その理由は何ですか?
この動作する解決策の可読性、テスト容易性、性能をどのように改善しますか?
妥当な解決策が複数ある技術的な問題について説明してください。どのようにアプローチを選びましたか?
チームメンバーと意見が対立した経験と、どのように意思決定に至ったかを説明してください。
頻繁に変わる優先順位を追跡するには、どのようなデータ構造を選びますか?
ネットワーク内で最も効率的な経路をどのように見つけ、説明しますか?
考えられる解決策を分析する前に、曖昧なビジネス上の問題をどのように構造化しますか?
メモリ使用量を抑えながら、大規模なコレクション内の重複値をどのように見つけますか?
Boston Consulting Group ガイドより · 模擬面接でこの質問を練習する · 履歴書から回答を作成する
リレーショナルデータベースとドキュメントストアのどちらかを選ぶ際に、どのようなトレードオフを検討しますか?
Boston Consulting Group ガイドより · 模擬面接でこの質問を練習する · 履歴書から回答を作成する
大規模なコレクションから重複する値をどのように見つけ、どのようなトレードオフを検討しますか?
この実装をどのようにテストし、改善するか順を追って説明してください。
要件が不明確な状況で、自ら責任を持って進めたプロジェクトについて説明してください。
時間計算量と空間計算量のトレードオフを説明しながら、大規模なストリーム内の重複レコードをどのように見つけますか?
容量が限られたキャッシュについて、どのようなエッジケースをテストしますか?
当初の担当範囲を超えて問題の解決に責任を持ったプロジェクトについて説明してください。
この解法の時間計算量と空間計算量をどのように改善しますか?
難しいプロジェクトで何を担当しましたか、また今なら何を変えますか?
元の順序を保ったまま重複するイベント識別子を取り除くには、どうしますか。また、その解決策をどのようにテストしますか?
チームメンバーとの技術的な意見の対立をどのように解決しましたか。また、その判断にはどのような根拠がありましたか?
本番環境の問題に自ら責任を持って対応したとき、何が起きましたか。また、修正が機能したことをどのように確認しましたか?
メモリ使用量を抑えながら、受信するイベントの重複排除に適したデータ構造をどのように選びますか?
順序が入れ替わって届く更新を処理できるように、イベントアグリゲーターをどのように調整しますか?
空の入力のときだけテストが失敗する場合、未知のリポジトリでどのように不具合を切り分けますか?
タイムアウト、不正な形式のレスポンス、リトライを扱いながら、ページネーションのあるAPIをどのように統合しますか?
既存の動作を維持しながら、新しい入力形式に対応できるようパーサーをどのようにリファクタリングしますか?
C++で、バッファがコンポーネント間を渡される際に、その所有権をどのように明示しますか。
コンパイラの変更後にパフォーマンスの低下が起きた場合、どのように調査しますか。
他のチームとの技術的な判断をめぐる意見の対立を、どのように解決しましたか。
本番環境の問題を担当した際、どのような根拠を集め、自分の変更がその問題を解決したことをどのように確認しましたか。
重複する空き時間の区間をどのように統合しますか。また、どのエッジケースをテストしますか?
グラフの最短経路をどのように求めますか。辺の重みが異なる場合、アプローチはどう変わりますか?
キャッシュされた空室状況の結果が予約データベースと食い違っていた場合、どう対応しますか?
同僚との意見の相違について説明し、どのように結論に至ったかを教えてください。
自分が担当した変更が予期しない問題を引き起こしたことはありますか。その際、どのように対応しましたか?