【22新卒エンジニア】私はこうしてGoogle SWEに落ちた
はじめに・自己紹介
22卒の学生エンジニアです。この度、GoogleのSWE(software engineer)の選考を受けました。結果は落選です。落選したとはいえ、選考の過程で実に多くのことを学びましたし、対策のためのノウハウも溜まったので、それを皆さんにシェアできればと思い、本記事を作成しました。
僕が受けた選考の過程は以下のとおりです。4の技術面接を突破すると、最後に1対1で面接があり、それで採用が決まるようです。
1. 履歴書(CV)
2. オンラインテスト 90min 2問
3. 電話面接: Phone Interview 45min
4. 技術面接: 1vs1 45min × 4回
GoogleをはじめとしたBigTechを志すまで
そもそもなぜGoogleに応募するにしたのか、そこから話を始めます。僕は大学に入ってからプログラミングを勉強し始め、ベンチャー企業でエンジニアとしてコードを書くようになりました。大学ではコンピューターサイエンスの授業も取っており、理論に関する勉強もしていました。習ったことがすぐにインターンで活かせるというのは、非常に面白かったです。
そこから色々な経験を積んでいたのですが、就活とか、どこの企業で働きたいとか、そういうことはまだ全く考えていませんでした。そんなときにある一つの記事に出会います。
この記事の反響はとてつもなく、twitterではこの記事で話題がもちきりだったことを覚えています。僕もシェアで流れてきたこの記事を読み、そして衝撃を受けました。それまで、GoogleやAmazonを始めとするBigTechは雲の上の存在だったのですが、この記事を読んで、もしかしたら自分もGoogleで働けるのではないか、という考えを抱くようになりました。大学2年生の夏頃です。
それから一年後の学部3年の夏休み、LinkedInを見ていると、Amazon Japanの新卒エンジニア募集のフィードが流れてきました。
詳しくは下記記事を読んでください
Amazonの選考は残念ながら落ちてしまったのですが、想像以上に手応えを感じました。全く歯が立たない、というわけではなかったのです。このときの経験から、Googleにも応募してみよう、そう決意しました。
僕が学部4年の2月頃、Google Japanの新卒エンジニア(GoogleではSWEと呼んでいるようです)の募集が始まり、僕は迷うことなくエントリーしました。
オンラインコーディングテスト
書類が通ると、今度はオンラインでのコーディングテストの案内が送られてきました。LeetCodeやAlgoExpertといったサイトで対策を重ね、テストに臨みました。対策の方法については後述します。
90分で2問出題されるのですが、両方とも危なげなく解くことができました。時間は25分ほど余りましたし、テストケースは全て通っていたので、安心してコードをsubmitしました。
一次面接
数日後、オンラインコーディングテストの結果の連絡が来ます。次に進めるとのことでした。
Amazonでは、すべての面接は英語だったのですが、Googleでは面接での言語を選ぶことが可能でした。とにかくプログラミングの能力を重要視しており、英語は最低限あればいい、ということなのでしょう。僕は日本語を選びました。
実際の面接はというと、少し詰まったり、バグのあるコードを書いてしまったりしたのですが、面接官の人に手助けをしてもらいながら、解決することができました。
Googleの新卒で応募してくる人は大量にいるはずなので、少しのミスが命取りになるのかも?と危惧していたのですが、一次面接通過のメールを数日後にもらうことができました。
選考全体を通してですが、面接官は基本的にフレンドリーな方が多く、気軽に質問することができました。面接官は敵ではなく味方、そんな考え方で挑むと良いパフォーマンスが出せるはずです。
本面接
1対1、45分間の面接が4回ありました。午前中に2回、午後に2回です。日本語を希望したところ、2回の面接を日本語で、残りの2回を英語でやることになりました。
肝心の面接の出来はというと、5点満点中、4.5, 1.0, 4.0, 3.5 というところです。1回は完全にやらかしてしまい、1回は非常にうまくいき、残り2回はまあまあ、という感じでした。
出題される問題はどれも、全く手が届かない、という類ではありませんでした。適切な訓練をしていけば、ある程度再現性を持って誰でも解けるようになると思います。そういう意味で、非常にフェアな仕組みだと感じました。
結果
すでに他の企業で内定が出ていたので、一日4回の面接が終わった段階で、もうやりきったな、と感じてました。やれることはすべてやったので、後は結果を待つだけでした。
数日後にメールが届きます。今回は採用を見送るとのことでした。膝から崩れは落ちませんでしたが、非常に悔しかったことを覚えています。とはいえ、最大限の努力を100とすると、80ぐらいは自分の中で出せたかなと思いますし、不採用の結果も納得しました。
学習に使った教材やサイト、勉強法など
同時期にIndeedの選考を受けていたのですが、対策したことはどちらの企業も同じでした。勉強法や使用した教材などはこちらに書きました。気になる方はこちらをご覧ください。
上記の記事は結構長いので、使用したサイトだけ書いておきます
などです。「コーディングテスト」の対策のために使用したのはほぼ上述のサイトだけになります。コンピューターサイエンスの勉強は本で行ったのですが、詳しいリストについては↑のリンクから見てみてください。
どれぐらい勉強したのか
・AlgoExpert: 100問ほど
・LeetCode: 150問ほど
・AtCoder: 100問ほど
です。コーディングの対策を始めたのが、2月の頭からだったので、約2ヶ月ほどしか時間を割けませんでした。正直なところ、もう少し早くから勉強を始めるべきだったと思います。合計で350問ほど問題を解いたわけですが、復習が間に合わず、中には放置してしまった問題もありますし、もっとたくさん、具体的にはさらに100問ほど演習をしておけばよかったと思ってます。
当時は、インターンでプログラミングをしており、それが週に3~4日ほど。予定がある日は一日5問、なにもない日は10問を目安に演習をしていました。演習の合間にCSの本を読んだり、英会話の練習をすることで、時間を有効活用しました。
AmazonやGoogle、Indeedの選考を受けて感じましたが、募集が始まってから勉強を始めるのでは、時間がかなり厳しいです。募集開始から2~3ヶ月程度しか猶予がないので、元々かなり競プロができる場合を除いて、最低でも準備には4~5ヶ月程度は確保しておくことをおすすめします。
参考にした情報源
Googleが公式で出している情報が参考になります。
秀逸なまとめ記事です。これを読めば、大体必要な情報網羅できるかと。
Google software engineer interview: the only post you'll need to read
この記事も大変参考になりました。
ここに出てくる記事は片っ端から目を通しました。
最後に
Googleを始めとするBigTechは、面接にたどり着くまでが一番難しいといいます。特にアメリカでは、CS選考の学部生、諸外国からきた大学院生、博士が大量にBigTechに応募するため、選考の難易度は熾烈を極めるそうです。
日本でも、選考の難易度は高いと思いますが、少なくとも面接には、そこまで労せずともたどり着くことができます(と僕は感じました)。募集要項には、「大学でCSに関連する選考、もしくはそれに準ずる経験」、と書いてありますが、逆に言えば、それさえ満たしていれば、書類を出して応募するだけで、高確率でバッターボックスに立つことができます。
自分がGoogleで働くなんて、大学2年生の頃は考えてもみませんでした。全く選択肢に入ってなかったのです。結果的に採用には至りませんでしたが。
僕は、LinkedInで手当たり次第有名な外資系企業をお気に入りしてました。面白い求人が流れてくるので、まじでおすすめです。
この記事が皆さんの役に立てば幸いです。