Google L3 ソフトウェアエンジニア 面接体験談 ― バンガロール、2020年
GoogleL3 ソフトウェアエンジニア·インド、バンガロール·面接時期: 2020年オファー獲得更新日: 2026年7月17日
本体験談は、2020年にGoogleのバンガロールオフィスでL3ソフトウェアエンジニア職の面接を受けた候補者によるものである。候補者はまず2020年3月に、友人の紹介で2つのポジションに応募したが、HRから2日以内に、およそ2年という経験年数がそれらの求人と合わないという返信があった。数か月後、Googleのリクルーターが、候補者の履歴書が既に社内システムに登録されていたことを見つけて直接連絡してきた。採用マネージャーがその履歴書を確認済みで、面接に進めたいとのことだった。
候補者は既に他社からのオファーを保持していたため、リクルーターは通常のスケジュールを圧縮した。連絡開始は7月中旬で、電話面接と5回のバーチャルオンサイト面接は約3週間以内に完了し、その後8月中旬にオファーが提示された。候補者は後日、各ラウンドの詳細と準備方法をまとめた記録を執筆しており、その内容を以下に要約する。
選考プロセス
応募(紹介)
2020年3月に友人の紹介で2つの職種に応募。HRから2日以内に、およそ2年の経験年数が募集内容と合わないとの返信があった。
リクルーターからの連絡
2020年7月中旬、Googleのリクルーターが、候補者の履歴書が既にGoogleのシステムに登録されていたことを見つけて連絡してきた。採用マネージャーがその履歴書を確認済みで、面接を設定したいとのことだった。
電話面接
7月最終週にバーチャルの電話面接が実施され、コーディング問題と、業務で取り組んだ難しい問題についてのディスカッションが行われた。
オンサイトループ
電話面接での良好なフィードバックを受け、8月第1週の3日間にわたって5回のバーチャルオンサイト面接が設定された。
採用委員会とチームマッチング
8月第2週に、候補者のパケットが採用委員会のレビューを通過し、候補者はあるチームとマッチングされた。
採用マネージャーとの通話とオファー
リクルーターが、チームとの適性を話し合うために2名ほどの採用マネージャーとの通話を設定した。候補者が興味を持てるチームを見つけた数日後、8月中旬にオファーが提示された。
電話面接
コーディング(バーチャル)
- 一定の時間枠内に発生した重複しないイベントの数を数える問題(ハッシュマップを用いて解いた)。
- 解決した難しい問題とその取り組み方について説明する設問(候補者は最近の業務上の課題について話した)。
- Excel形式の列番号が与えられたとき、対応する列ラベルを返す問題(26進数の数体系)。
リクルーターからのフィードバックでは、コーディングの速さと明確な解法の組み立て方が評価され、このラウンドは高評価だったとされている。
オンサイト1
コーディング ― 配列と動的計画法
- 接頭和(prefix sum)と接尾和(suffix sum)を用いて解く配列の問題。
- 同じ問題を動的計画法で解く発展バージョン。
候補者は両方の問題を解いた。当初は空間計算量が最適ではなかったが、面接官からのヒントを受けて改善し、見落としていた境界条件も、例を使ってドライランする過程で気づいた。
オンサイト2
行動面接(「Googleyness」)
- リーダーシップ、同僚との対立、プレッシャー下での成果に関する一般的な職務シナリオの質問。
- Googleフォトの新機能のテストについての技術的なディスカッション。
- チームの親睦活動への参加を望まないメンバーへの対応についての仮定シナリオ。
候補者は、このラウンドは全体的にうまくいったと述べている。
オンサイト3
コーディング ― 木構造と二分探索
- 完全二分木のレベル順で最後のノードを見つける問題。親子のインデックス関係(親nは子2n+1と2n+2に対応)を利用する。
- 前半で書いた関数の上に二分探索を適用する発展問題。
候補者は、これを5回のオンサイト面接の中で最も弱かったラウンドだと振り返っている。ヒントをもらってもなお最初の解法にたどり着くまで時間がかかり、後半部分は時間の制約により最後までコーディングできなかった。面接官は遅れて到着し、他の面接官と比べて関与が薄かったと述べている。
オンサイト4
コーディング ― ヒープと二分探索
- 数値のストリームが流れてくる中で、k番目に大きい要素を見つける問題。kは固定(ヒープを使ったアプローチ)。
- ストリーム内の値の範囲は狭いがkが可変になる発展問題。値の出現頻度の累積和(prefix sum)に対して二分探索を行うことで解いた。
候補者は、ヒープのpush/pop操作のオーバーヘッド削減についての議論も含め、手応えのあるラウンドだったと報告している。見落としていた境界条件は、面接官の指摘を受けて修正した。
オンサイト5
コーディング ― 再帰とグラフ
- 重み付きn分木において、根から最も遠い葉を見つける問題。木のデータ構造の設計も含む(再帰)。
- 同じ問題を木ではなくグラフに拡張したもので、ダイクストラ法の距離配列の中で最大値を持つノードを見つける問題と等価であると気づく必要があった。
候補者は、リクルーターのフィードバックによれば、明確な思考プロセスとバグのないコードにより、ほぼ完璧なラウンドだったと述べている。
採用マネージャーとの通話
チームマッチング
- チームとの適性を評価する2名ほどの採用マネージャーからの、担当領域および行動特性に関する質問。
候補者は、これらの通話は名目上はカジュアルだが実際にはかなり突っ込んだ質問もあり得ると述べ、この機会を利用してチームの業務内容や使用技術について質問したとしている。
学びのポイント
- コーディング練習は量より質を重視する ― 候補者は、はるかに多い数をこなすのではなく、easy/medium/hardの比率がおよそ25/50/25になるように約260問を解いた。
- 問題を解きながら自分の考え方を声に出して説明する練習をする。候補者は、体系的かつ段階的に考えることで、面接官とのコミュニケーションが取りやすくなり、無言の時間を避けられたと述べている。
- よくある行動面接のシナリオごとに、少なくとも2つのエピソードを用意しておくことで、シナリオが重複した場合の予備にできる。また、暗記した回答ではなく、率直な強みと弱みについて話せるよう準備しておく。
- 準備は、高度な幾何学アルゴリズムのようなあまり出題されない分野ではなく、動的計画法、木構造、グラフ、二分探索、スライディングウィンドウ、基本的な組み合わせ論といった頻出分野に集中させる。
- 採用マネージャーとの通話は双方向の会話だと捉える。オファーを受け入れることは特定のチームにコミットすることでもあるため、この機会を使ってチームの業務範囲や使用技術について質問するとよい。
出典
質問と選考プロセスの事実は、下記リンクの候補者本人の公開投稿に基づきます。本文は当サイトによる再構成です。
候補者本人による英語の公開体験談を翻訳(出典: LeetCode Discuss)