Google L4 ソフトウェアエンジニア 面接体験談:8ラウンドを経てオファーなし
GoogleL4 ソフトウェアエンジニア·記載なし·面接時期: 2024年2月不合格更新日: 2026年7月17日
候補者はGoogleの採用ポータルからL4ソフトウェアエンジニア職に直接応募し、その後まもなくリクルーターから連絡があった。最初のスクリーニング通話までに約1か月を準備に充て、全体のプロセスは最終的に約6か月にわたり8ラウンドに及んだ。
2回の電話面接の後、3回のオンサイト技術面接と短い文化面接が続き、いずれも好評価または中立的な評価だった。1週間後、リクルーターからフィードバックが良好だったとの連絡があり、採用マネージャーとのチームマッチング面談が設定され、そのマネージャーも話を進められそうだと示唆した。その直後、リクルーターから当該ポジションの経験年数要件が引き上げられたとの連絡があり、プロセスは約1か月半停止し、その後追加の1ラウンドで最終結果が決まった。
選考プロセス
応募
Googleの採用ポータルから直接応募し、その後リクルーターから連絡があった。最初のスクリーニングまでに約1か月の準備期間があった。
スクリーニングラウンド
オンサイトに進む前に、それぞれ1問のコーディング問題を中心とした2回のスクリーニング通話が行われた。
オンサイトラウンド
オンサイト面接はスクリーニングの約2週間後に設定され、3回のコーディングラウンドと短いGooglyness(文化)面接で構成されていた。
チームマッチング
オンサイトラウンドの約1週間後、リクルーターからフィードバックが好評だったとの連絡があり、採用マネージャーとのチームマッチング面談が設定された。この面談では高レベルの設計問題とチームの業務内容についての説明が行われた。
資格要件による保留
チームマッチングの後、リクルーターから当該ポジションの経験年数要件が3年に引き上げられたとの連絡があった。候補者の経験年数は2年10か月でこれを下回っていた。リクルーターは保留期間が最長で約2か月に及ぶ可能性があるとしていたが、実際には約1か月半後にプロセスが再開し、追加の1ラウンドが設定された。
追加ラウンド
プロセスは、実装よりもアプローチに重点を置いた追加の1ラウンドをもって再開し、その後候補者は結果を約1か月待った。
結果
リクルーターから追加ラウンドのフィードバックが否定的だったとの報告があり、プロセス開始から約6か月後、オファーなしで応募は終了となった。
スクリーニングラウンド1
リクルーターが設定した最初のコーディング電話面接
- 1問のコーディング問題(具体的な問題内容は候補者が別途まとめており、本記事には詳細を含まない)。面接官は、候補者が最初に示した解法よりもさらに最適化することを期待していた。
さらなる最適化についての期待のずれから、フィードバックは肯定的でも否定的でもない中立的な評価だった。
スクリーニングラウンド2
アプローチの前に確認質問が必要な、オープンエンドな幾何/最適化問題
- 重なり合う可能性のある長方形を表すX-Y平面上の点の集合が与えられたとき、全体の面積を2等分する垂直な線(長方形を通過してもよい)を求める。
制約を確認した上で二分探索によるアプローチで解いた。フィードバックは肯定的で、スクリーニング段階を通過したと伝えられた。
オンサイトラウンド1
計算量に関するフォローアップとテスト演習を伴う部分配列問題
- 数値の配列が与えられたとき、公差が+1または-1の「良い等差数列」(例:{1,2,3}や{3,2,1})を形成するすべての部分配列を求める。
- 得られた解法に対する単体テストケースを書く。
総当たりのアプローチから始め、フォローアップの要求を受けてO(n)に最適化した。フィードバックは肯定的だった。
オンサイトラウンド2
少数の与えられたブロッキングAPIを基にしたスケジューリング設計
- ブロッキングのcountWords() APIとisTaskCompleted() APIを持つクラス、および1台につき1ジョブを処理できるN台のマシンが与えられたとき、ブロッキングAPIの呼び出しを最小限に抑えつつ全体の完了時間を短く保つように、単語数カウントのジョブをマシンに割り振るスケジューリング方法を設計する。
空きマシンのキューと完了チェックによる再利用を組み合わせたラウンドロビン式のスケジューラを提案した。面接官はいくつかのフォローアップで掘り下げてきた。フィードバックは肯定的だった。
オンサイトラウンド3
重複禁止制約下でのランダム選択のためのデータ構造設計
- 常にランダムな曲を返す音楽プレイリストのシャッフラーを設計する。直前に再生した曲は、その後K回の再生では再び返されないようにする。
- 得られた解法に対する単体テストケースを書く。
時間・空間ともにO(n)のキューベースのアプローチから始め、時間O(1)・空間O(K)に最適化した。フィードバックは肯定的だった。
Googlyness
候補者の現在の職務とチームリーダーシップに関するシナリオについての短い行動面接 · 短時間のラウンド
- チームをゼロから作るとしたら、どのように進めますか。
- 成果が振るわないチームのマネージャーに任命されたら、どのように効率改善に取り組みますか。
- チーム内の対立をどのように解決しますか。
チームマッチング
経歴、高レベルの設計問題、チームとの相性についての採用マネージャーとの面談
- 高レベルの設計問題1問。実装の詳細ではなく、全体的なアプローチのみが求められた。
マネージャーはチームの現在の業務内容や職務内容についても説明し、話を進めることに前向きな姿勢を示した。
追加ラウンド
資格要件による保留の後に追加された、アプローチのみを問う設計問題
- 与えられたブール式(例:(a || b) && c)がTRUEと評価され得るかどうかを判定するライブラリを設計する。
- コーディングの知識はないが基礎となる数学には抵抗がない人が、このライブラリをどのように使うか。
- 入力形式はどうあるべきか、また、ライブラリはどのように呼び出されるべきか。
- 空間・時間の制約を踏まえると、実装を支えるデータ構造には何を使うべきか、またその理由は。
- 関連するクラスとAPI宣言(シグネチャのみ)を書く。
- 式がTRUEになり得るかを評価するコアロジックを実装する。
- その評価ロジックの想定される時間・空間計算量は何か。
式の変数に対する2^n通りの真偽値割り当てをすべて列挙するアプローチを提案した。面接官は、完全な実装ではなくアプローチと考え方を重視したいと述べた。その場での議論自体は好感触だったが、記録されたフィードバックは最終的に否定的だった。
学びのポイント
- コーディングラウンドを終えたと判断する前に、さらなる最適化が求められているかどうかを面接官に確認する。ここでは暗黙の期待とのずれにより、肯定的ではなく中立的なスクリーニング結果になった。
- オープンエンドな幾何や最適化の問題では、アプローチを決める前に制約(図形は重なり得るか、線は図形を通過してよいか等)を確認する時間を取る。
- 核心となる問題を解いた後の単体テストやエッジケースのフォローアップにも時間を確保する。今回のオンサイトの複数のラウンドでは、最初の解答の後も議論が続いた。
- ポジションの正確な経験年数やレベル要件について早い段階で確認する。今回はオンサイトで肯定的なフィードバックを得た後でも、終盤でその基準が変更されたことでプロセスが約1か月半停滞した。
- 数か月にわたる長いプロセスでは、他の応募を止めてしまいたくなることがある。振り返ってみると、他の選択肢を並行して残しておく価値はあった。
出典
質問と選考プロセスの事実は、下記リンクの候補者本人の公開投稿に基づきます。本文は当サイトによる再構成です。
候補者本人による英語の公開体験談を翻訳(出典: LeetCode Discuss)