最近、Googleや大学が開催しているキャリアイベントなどに参加する機会がおおかったので、そこで話したことをまとめて書いてみました。2017年4月入社なので、現在2年目が終わろうとしているところです。
なるべく汎用的に、具体的な対策を中心に書いたので、他の外資系企業の採用面接にも役立つかもしれません。参考にしていただければ幸いです。
応募時の経歴
- 狭義の Computer Science 専攻ではありませんでしたが (電気情報工学科→学際情報学)、選択科目によってはコンパイラやプログラミング言語を自作する実験など計算機科学っぽい科目もありました。
- 学生のあいだにインターン・フリーランスエンジニアとして業務経験がありました (C++ / Obj-C / Swift)。そのことを記載した上で新卒採用として応募しました。
英語力
- 留学経験・英語での勤務経験はありませんでした。TOEICは800点台でしたが、私は4択問題が異様に得意なのでこの数字は実力より上振れしてると思います。英語を学ぶのは好きだったので、英語論文を読んだり、レアジョブ・DMM英会話で英会話の勉強をしたりしていました。
- また、iOSのマニアックな開発 (Bluetoothデバイス連携や音声波形生成等) は英語の情報源に頼らないと解決できない問題が多く、英語の技術的なドキュメントで使われる表現には多少慣れていました。
英語が不安な方、仕事で英語が使えるようになりたい方は、いわゆる英語の勉強に加えて、とにかく英語で情報収集をすることを心がけるのがおすすめです。
応募の流れ
私はリクルータから連絡をもらい (メールだったか LinkedIn 経由だったかは忘れました)、東京オフィスのSoftware Engineer (新卒) のロールに応募しました。他のロール・オフィスに並行で応募することも可能ですが、あるポジションに応募して落ちたあとに他のポジションを紹介してもらうことも可能です。
事前の準備
最初は日本語で情報収集していたのですが、途中からはすべて英語に切り替えました。
英語ではGoogleによる公式ビデオやガイドがあり、また対策に関する情報も圧倒的に充実しています。有名企業だけあって誤解に基づいて語られる非公式情報も多いので、バイアスを受ける前に先に目を通しておくのがおすすめです。また、非公式ソースは英語でも「いかがですかブログ」のようなクオリティの記事も多いので、Youtube / Quoraなど実名で発信している情報源をおすすめします。
- Youtube
- “Life at Google” Google 公式チャンネル。非常におすすめです。全部見るべき
- CS Dojo How to Crack a Google Coding Interview
- Quora の “Google Recruiting” タグ https://www.quora.com/topic/Google-Recruiting-1
How to: Prepare for a Google Engineering Interview
Interview tips from Google Software Engineers
How to: Work at Google — Resume Tips
英文レジュメ
レジュメの準備が重要だと聞いたので、英語圏の就活サイト等を参考に書きました。
PDF形式での提出が必要なので、LaTeXを使って生成するのが簡単です。TexShopで書きましたが、Overleaf などのオンラインLaTeXエディタにもたくさんテンプレートがあります。
https://ja.overleaf.com/gallery/tagged/cv
- カバーレターは必要ありません。志望動機などを書く必要もありません。最初は面倒ですが、一度作ってしまえば更新しながら一生使い回せるので便利です。
- GPAは自分で計算しましたが、記入の必要はないかもしれません。卒業した学部・学科の公式英語名が長く記入が面倒でした。
- 「履歴書に空白期間が空いている」とかは特に重要ではないです。僕も留年/休学で学部時代が長かったのですが、特に気付かれもしなかったと思います。
- “M.S. in xxxx” “B.S. in xxxx” の xxxx 部分に関しては、学士 (工学) の部分を翻訳して記入してください。
レジュメの記入方法やサンプルは、アメリカの大学が学生に配布しているガイドラインを参考にするのがおすすめです。
- Stanford’s Career Planning Handbook
- Tufts, Engineering Resumes
面接官も事前に読むことが想像されたので、留学経験・Googlerでのインターン経験のある友人にチェックをお願いしました。スペルミスはもちろん、レジュメとして不自然な表現があると目立ちますので、何らかの手段でチェックしてもらうのがおすすめです。例えばDMM英会話では先生に自由な相談ができるので、そこでチェックしてもらうこともできます。
面接対策
いわゆる競技プログラミングは全く手を付けませんでした。個人的には思考過程やコードのメンテナビリティを評価できない評価システムがあまり馴染まなかったためです。ただスコアが可視化されるのは楽しいので、モチベーションになって良いかもしれません。競プロが苦手だったりレートが低いから諦める必要は全くないです。入社後に聞いてみたところ、自分のチームでは競技プログラミング経験のある人は少数派でした (部署によります)。
とはいえデータ構造や計算量の問題は解けるようにしておいたほうが良いと思います。自分はこの本の英語版と日本語版を両方買って読みました。日本語版を先に読んでから英語版を読んで意味が分からないところを日本語版に戻って確認しました。
世界で闘うプログラミング力を鍛える本 ~コーディング面接189問とその解法~
Gayle Laakmann McDowell https://www.amazon.co.jp/dp/4839960100/
面接の流れ
面接はすべていわゆる『コーディングインタビュー形式』です。面接官は全員ソフトウェアエンジニアです。途中でリクルーターとも会いましたが、彼らは採用評価には関与しません。面接の流れや入社後の待遇等の質問に答えたり、面接をセッティングするのがリクルータの役割です。
面接 (Phone interview)
リモート面接は1回 (45分) ありました。Google Hangouts のビデオチャットを使います。チャットルームへのリンクをメールで事前にメールで共有していただき、それを開いて待っていると面接官が入室し面接が始まります。
プログラミング言語は JavaScript を希望したので、JavaScript で問題を出してもらいました。面接官が仮定していた解答にコーナーケースでの誤りがあることに気づき、途中からは2人で協力しながらデバッグしていたのを覚えています。
面接 (Onsite interview)
リモート面接に通過した連絡を受けたあと、日程調整を行い、「終日インタビューの日」をセッティングしました。私の場合はランチを挟んで1時間×5回=5時間のインタビューでした。アルゴリズム、一般のコーディング、(経験があると申告した) JavaScriptに関する質問、システムデザインについて等、様々な観点からの質問がありました。
どのステージにおけるコーディング面接も、1時間1セット (休憩や質問タイムは除き、実際の面接は45分ほど) です。面接の問題は面白いものが多く、また面接に最前線のプロジェクトで働くエンジニアを惜しみなく投入していることから、採用に妥協しない精神が感じられました。
すでに有名な話ですが「シアトルにいるピアノの調律師の数」のようなフェルミ推定の問題はまったく出題されません (エンジニアとしての能力には特に相関がないそうです)。
面接 (追加のOnsite interview)
リクルータから「さらに2回インタビューを行いたい」という連絡を受けて、追加のインタビューがありました。私は合計8時間の面接を受けたことになります。
Hiring Committee による審査
これら8回の面接を総合し、「Hire」の判断が下りたあと、Hiring Comittee による審査がありました。これにも通過したので、オファーをいただきました。
オファー
オファーの通知はビデオチャットでもらいました。リクルータから「伝えたいことがあるのでビデオチャットを開いてほしい」と連絡があり、Singaporeオフィスのリクルータ3名にサプライズ合格通知(?)をしてもらいました。(メールを貰った時点で勘付いてはいましたが、)フレンドリーな雰囲気が伝わってきました。
おわりに
Googleに関する情報は他の企業 (例えばメルカリ、Cookpad、Freee、DeNAもしくはIndeed) に比べて在籍者による情報発信が少ない傾向にあるので、なんだか少しさみしいなと思っていたところに、サイトリードの Ryoichi さんからの後押しを見かけて書いてみました。
弊社は英語が必須だったりと万人におすすめできる職場ではありませんが、エンジニアの裁量がとても広く、自由で楽しい職場です。現在 Google ではソフトウェアエンジニアを募集しています (特にiOSチームは人手不足が続いています…)。質問などありましたら fushimir@ や fushimi@google.com にご連絡ください。
他の社員の話はこちらでどうぞ。