Google ソフトウェアエンジニア 面接質問(2026年)
Googleのソフトウェアエンジニア選考プロセスは、データ構造とアルゴリズムを重視することで有名です。ほとんどの候補者は2〜3回のコーディングラウンド、少なくとも1回のシステム設計ラウンド(L4以上)、そしてGoogle社内で『Googleyness and Leadership』と呼ばれる行動面接に直面します。求められる水準は奇抜なトリックよりも、きれいで正しく、しっかり説明されたコンプレキシティ分析のある解答です。
面接官は、特定の問題を記憶しているかどうかではなく、あなたがどう考えるかを評価するよう訓練されています。問題を明確にし、前提を述べ、時間と空間について声に出して考え、制約を厳しくするフォローアップにどう対応するかを聞きたいのです。後で最適化する動くブルートフォースは、説明できない中途半端に記憶した最適解よりも評価されます。
以下の質問はGoogleが重視するカテゴリを反映しています。アプローチを語る練習をしましょう。L3とL4のシグナルの違いは、しばしば生の問題解決スピードではなく、コミュニケーションとトレードオフを議論する能力です。
Google ソフトウェアエンジニア 面接質問とその回答方法
1. 区間のリストが与えられたとき、重複するすべての区間をマージしてください。
アプローチ: 開始時刻でソートし、一度の走査で現在の開始が直前の終了以下のときにマージします。O(n log n)がソートで支配されます。ソート済みという不変条件を声に出して述べましょう — Googleの面接官はコーディング前に明確に述べられたアプローチを評価します。
2. 未整列の配列からk番目に大きい要素を見つけてください。
アプローチ: サイズkの最小ヒープ(O(n log k))とquickselect(平均O(n))を提示します。トレードオフを議論します:quickselectは平均で高速ですが最悪ケースはO(n²)、ヒープはより安定しストリーミングも可能です。両方を挙げることが深さを示します。
3. 二分木のシリアライズとデシリアライズを行ってください。
アプローチ: 走査方法を選び(nullマーカー付きのpreorderがきれい)、両方向の整合性を示します。区切り文字とどう再構築するかを議論します。Googleはnullノードの境界条件を明示的に扱うことを好みます。
4. Word ladder: 2つの単語間の最短変換シーケンス。
アプローチ: 1文字異なる単語同士を辺でつないだグラフ上のBFSとしてモデル化します。隣接関係を効率的に構築する方法(ワイルドカードバケット)と、BFSが最短路を保証する理由を議論します。双方向BFSは強いフォローアップです。
5. LRUキャッシュを設計してください。
アプローチ: O(1)のget/putのためにハッシュマップ+双方向連結リストを使います。立ち退き(eviction)の経路を明示的に説明します。これは2つの構造を時間的な圧力の中できれいに組み合わせられるかを試す、Googleの定番ウォームアップです。
6. 2Dグリッド内の島の数。
アプローチ: 未訪問の陸地セルごとにDFSまたはBFSのフラッドフィルを行い、コンポーネント数を数えます。O(行×列)。インプレースのマーキングと訪問済みセットの比較を空間トレードオフとして挙げます — Googleの一般的なフォローアップです。
7. 最も頻繁な検索クエリ上位kを返すシステムを設計してください。
アプローチ: まず読み取り対書き込みの比率を明確にします。大規模での近似top-kのためのcount-min sketchやハッシュマップ上のヒープを議論し、どのようにシャーディングするかを説明します。これは多くのGoogleの選考プロセスに含まれるシステム設計ラウンドへとつながります。
8. 完全なデータがない状況で意思決定しなければならなかった経験を教えてください。
アプローチ: STAR法。Googleの『Googleyness』ラウンドは、あいまいさへの耐性、判断力とバランスの取れた行動への偏り、そして結果から学ぶ姿勢を求めます。具体的な結果と、違う方法でやるなら何をするかを含む実例を選びます。
Googleソフトウェアエンジニア面接でリアルタイムサポートを受ける
実際のGoogle面接中、Nativelyは質問を文字起こしし、共有されたコーディングドキュメントを画面OCRで読み取り、500ミリ秒以内に複雑度分析を含む構造化されたアプローチを提案します — すべてデバイス上で完結します。アルゴリズムとGoogleynessの両ラウンドで構造立てて話すために使えます。
