Googleのソフトウェアエンジニア面接を受けたときのメモが残っていたので、自分の振り返りとしてまとめてみます。いわゆるLeetCode型の選考で、最後に採用委員会が待っているやつです。電話スクリーニングからコーディング、システム設計、行動面接までひと通り全部受けました。質問だけでなく、選考の流れも書いていきます。
Googleの面接については、この仕組みを擁護する人もいれば、心底嫌っている人もいます。かなり両極端です。運任せだと文句を言うこともできますが、自分を追い込んで、この機械がどう動くのか覚えることもできます。自分は後のほうで行くことにしました。
普通の面接と違うなと思ったのは、最初の電話でリクルーターから聞いた話です。5年間に受けられるのは3回まで。それを使い切ると、もう応募を受け付けてもらえません。キャリア全体で3回ということです。元同僚に話したら5秒ほど黙り込んだので、その沈黙は「絶対に失敗するな」だと受け取りました。
メモはこんな感じで分けました。
- 電話スクリーニング
- コーディング
- システム設計
- Googleyness and Leadership
- 採用委員会
- 模擬面接と、そこで使ったツール
- チームマッチング
電話スクリーニング
Googleの電話スクリーニングでは、共有のGoogle Docを使う。IDEではない。シンタックスハイライトもオートコンプリートもない、ただの文書だ。誰かに入力を見られながら、そこで45分間、本物のコードを書く。私に出たのはsliding windowの問題とbinary searchの変形で、どちらもmediumだった。
Ready to ace your next interview?
InterviewMan gives you real-time AI answers during live interviews — undetectable on Zoom, Meet, and Teams.
Try InterviewMan Free普段コードを書くときは、いろいろ試し、動かしながら直していく。ところが、45分、何の補助もないGoogle Doc、しかもこちらの入力を見ている人がいる、となると同じやり方は通用しない。スクリーニング前に、誰かがDocのことを教えてくれていればと思った。
あとになって知った選考上の細かい話もある。スクリーナーが合否を決めかねた場合、不合格にはせず、電話スクリーニングをもう一度受けさせる。実際にそうなった人を2人知っている。そのうち1人とはコーディングブートキャンプのDiscordで知り合った。2人とも2回目を通過した。
コーディング
本番のループまでに、LeetCodeを200問やり込んだ。役には立ったが、期待したほどではない。問題が難しすぎたからではなかった。
Googleの問題で大変だったのは、本当は何を聞かれているのかを見つけるところでした。面接官が余分な背景や引っかけをわざと混ぜてきます。元同僚からまさにその話を聞いていたのですが、自分はちゃんと聞いてませんでした。
実際の面接では見覚えのあるパターンにすぐ飛びつきました。そして8分解いたところで、別の問題を解いていることに気づきます。最初からやり直しです。前の晩に練習したsliding window問題とそっくりに聞こえたのですが、違う問題でした。
その間、面接官は何も言わずにずっと見ていました。8分間です。終わった後、駐車場から元同僚に電話したら「だから言っただろ」とだけ言われました。
ここで覚えたのは3つです。
- 一秒たりとも黙らず、考えていることを口にする
- 複数の手法を組み合わせる問題を練習する
- 前夜に覚えたパターンを信用しない
特に、考えを口に出すことはかなり大事でした。採用委員会が読むのは面接官の記録です。そして面接官が書くのは、自分がその場で話したことです。
自分はgraphの問題を黙ったまま解きました。返ってきたフィードバックは「推論が不明瞭」。何をしているか自分には分かっていましたが、口にしなかったので、ほかの人には分かりません。あとで評価資料を読んだ元同僚からも「解けているのに、当てずっぽうだったように書かれている」と言われました。
組み合わせ問題は、あるラウンドでgraphとdynamic programmingが出て、別のラウンドではtreeとhashmapが一緒に出ました。純粋なbinary searchやBFSが、それだけで出ることはほぼありません。ばらばらのmediumを500問やるより、組み合わせ問題を50問やるほうが役立ちます。ここに気づくまで、個別トピックだけで週末を3回使いました。
システム設計
システム設計は1ラウンドです。その全部が1つの設計判断で決まることもあります。準備を見てもらったコーチは「linchpin insight」と呼んでいました。ちょっと大げさだと思っていましたが、正しかったです。
自分の問題では、分散システムのcache invalidationがそれでした。気づかないまま終わるまで、あと30秒。これを落とすと話は図のところから進まず、3回しかない挑戦の1回が無駄になります。
Googleyness and Leadership
Googleyness and Leadershipは名前だけだとよく分かりませんが、実際は行動面接でした。チーム内の衝突やプロジェクトの失敗、ownershipを示した経験を聞かれます。面接官の1人によると、採用委員のなかには評価資料のここをほとんど読まない人もいるそうです。それでも準備は必要です。自分で委員を選べるわけではないので。
採用委員会
Googleの面接はくじ引きのようなものだ。採用委員会が、その性格をさらに強くしている。私に会ったことのない4人か5人のエンジニアが、面接を担当した人たちの評価資料だけを読み、私の結果を決めた。知らない人が書いた自分についての記録を、別の知らない人たちが読む。元同僚の知人には、Googleの選考を2回受け、毎回違う委員会に審査された人がいた。ほぼ同じ出来だったのに、結果はまるで違ったという。
模擬面接
模擬面接がいちばん役立つのは、質問集を覚えることより、選考にまつわる細かな作法を知ることだ。私は元同僚に面接官役を頼み、Google Meetでラウンドを最初から最後まで通した。
Ready to ace your next interview?
InterviewMan gives you real-time AI answers during live interviews — undetectable on Zoom, Meet, and Teams.
Try InterviewMan Freeここでは少し反則をした。私はInterviewManの開発に関わっているので、本物の候補者が使うのと同じ形で、模擬面接中に自分たちのツールを動かした。音声から問題を拾い、本人にしか見えないoverlayへ解き方の候補を出す。元同僚は5分かけ、画面共有、私のdock、セッションの録画まで確認したが、何も見つけられなかった。Googleynessの模擬ラウンドでは、会話の中から、私自身がすっかり忘れていた衝突のエピソードを拾ってきた。採用委員会がほとんど読まないらしい一方で、評価資料には必要になる、まさにその種の話だった。システム設計の模擬ラウンドでは、cacheに関する着眼点を知らせてくれた。それが、その問題のlinchpinだとあとで分かった。
ツール全般についても触れておく。Interview Coderのようにコーディングだけを扱うツールは月$299だ。5ラウンドのうち3ラウンドには使えるが、システム設計と行動面接では助けてくれない。InterviewManなら、年払いプランの月$12で5ラウンドすべてをカバーする。3か月の準備にかかったのは$36で、Interview Coderを1週間使うより安かった。利用者は57,000人、stealth機能は20以上ある。私が把握しているかぎり、使っているところを見つかった人はいない。
チームマッチング
採用委員会が合格を出しても、それはまだオファーではない。そのあとにチームマッチングがあり、候補者と採用マネージャーの双方が合意しなければならない。合格は約1年間有効なので、急ぐ必要はない。この選考全体を通じてもらった助言のうち、いちばん良く、それでいて少し直感に反していたのはこれだった。朝起きてでも行きたいと思えるチームが見つかるまで待つ。
Ready to Ace Your Next Interview?
Join 57,000+ professionals using InterviewMan to get real-time AI assistance during their interviews.

