読者です 読者をやめる 読者になる 読者になる

外資系マネージャーの独り言

日本で外資系企業のソフトウェアエンジニアマネージャーをやってる人のブログです

Googleのリクルーターから連絡が来た話 (1)

東京暮らし ソフトウェアエンジニア インタビュー

時間が経って記憶が風化しそうなので(?)、GoogleのOfferをもらいそこねた経験を書いてみます。プライベートで書いている日記からの引用なので、インタビューの質問や、センシティブな情報はマスクしてあるのでご了承ください。

M/N、何の前触れもなくGoogleのリクルーターから連絡が来た。

曰く、次のステップに進みたいから話をしよう、とのこと。TokyoのGoogleは過去に何回か面白そうなポジションを見つけてレジュメを送ってはいたけど、記憶にある限り最後に送ったのは連絡が来る1年以上前で、何の反応もなかったので箸にも棒にもかからなかったのだろうとすっかり忘れてた。

どうやら最近になって某SNSでXXのポジションにプロモートされたことがトラックされていて、そのトリガーによって過去のアプリケーションが引きづり出されて今回の連絡ということになったらしい。

で、M/Nに日本にいるXX人のリクルーターとおしゃべり。事前にメールでポジションに期待することと、転職する理由を簡単に説明してあったけど、それに関する話は一切なし。Googleのエンジニアの待遇がどうとか、プロジェクトがどうとか、日本のオフィスがどうとか、面接への流れが云々という話を一通り聞かせてもらって、あとはこちらから適当に質問。リクルーターの仕事は一人でも多くの有望そうに思える候補者を面接のパイプラインに放り込むことなので、候補者にモチベーションを与えて、できるだけ面接にパスしやすいように尽力してくれる、ということらしい。

で、電話面接の予定を入れるにあたって面接の準備をするためのTipsが入った資料をもらったのでお勉強の準備。徹底的・網羅的に準備するには時間がかかるけど、ざざっと記憶が怪しかったり理解が甘かったりする領域を復習して、コーディングの模擬試験になるものをいくつかやる時間...という意味で2週間くらい時間が欲しいということにしておいた。

SFOのリクルーターが西海岸時間の午前中、日本時間の午前2時にセットアップしたので慌てて「そりゃ無茶よ」と教えてスケジュールを調整してもらったりしつつ、M/Nに電話面接と相成った。

結局、やった準備は以下のようなもの

  • 資料でもおすすめされていた"Programming Interviews Exposed: Secrets to Landing Your Next Job (Wrox Professional Guides)"を一通り読んだ
  • 同様にこの記事も読んだ
  • ウェブ検索でどんな質問が聞かれるかをチェック。特に役に立ったのはこのあたり
  • 上のアドバイスに従い、Resumeを大幅にシンプル化(2ページきっちり)して再送 (ただし、これがきちんとhiring processに適用された形跡はなかった‥)
  • Project Eulerの課題がよいとどこかに書いてあったので、5,6問ほどC言語で解いてみた
  • Paizaの問題をいくつか解いてみた。C言語Pythonで難易度D, A, Sあたり
  • TopCoderの練習問題や解法を解説したページをざざっとチェック
  • Interview Cakeの解説や、模擬試験がとてもよさげだったのでお試しで解ける5問を一通りやってみた。ここの解説はとても詳細かつ分かりやすいのでおすすめ
  • XXに修了していたMachine Learningの授業のメモを読み返し (特に役には立たず)

...というわけで色々やったけど、自分がやったPhone Screeningに限って言えば、結果的に最も効果的だったのはProject Eulerの問題をしっかり考えて解くことだったかなと思う。プログラミングの基礎力、発想力、それに会話力を見ている印象で、ある程度まともにコードを書けるエンジニアかどうかを判別するためだけのシンプルなプロセスという印象。Phone Screeningで9/10が落ちるというけど、それは本当にコードを書けないエンジニアが多いということなのか、何なのか...。

インタビューはHangoutで45分。XX人でGoogleに6年いるというセキュリティー関係の仕事をしていたという人。

質問はシンプルで、XXXXXXXXXXXXXXXXというお題。

ここでもう少し条件に関して質問をすべきだったのが今回の反省で、XとかYじゃ表現しきれないXYZだから、Z使うのはどうでしょうとコードを書き始めたらストップサイン。きっちり正確な値を出力しなさいという要求仕様を提示されたので、作戦を変更。XXXXXXなデータ構造を自前で準備して、そこで計算を行って出力するのはどうだろうと提案してコーディングを開始。

途中でコードをちょこちょこ手直しして、実際の入力データでシミュレーションしてバグを見つけて修正して、最後にシンタックスエラーがひとつ残ったけどマイナーなやつだったので問題無いかな、ということで課題は終了。途中、stack v.s. heapとか、データ構造を使って一般化するアプローチとか、どの型を使って配列を構成すべきかとか、色々と議論はあったけど、それなりに正しいことが言えたんじゃないかなと思う。

こちらからの質問は、社内でプロジェクトがどうやって動くのかとか、コードへのアクセスとか、何がGoogleで一番好きなことかとか、何が嫌いかとか聞いておしまい。すごくあっさりしていた印象だけど、Phone Screeningの役割を考えるとこんなもんなのでしょうな。

つづく...