こんにちは、皆さん!

今回は僕が2020年にアメリカのシリコンバレーにあるFacebookの新卒採用最終面接を受けてきたときの話をしたいと思います。


トピック


採用までの流れ

Facebookの新卒エンジニアとして採用されるにはまず、書類、つまり、履歴書をしっかり作り、採用担当に「こいつ試してみるか」と思わせないといけません。この辺はインターンや個人プロジェクトをとにかくたくさんがんばってやってください。インターンは取るのが難しい部分がありますが、個人プロジェクトならやる気次第でいくらでも作れますので、インターンが難しい場合はそちらに全力を注いでください。

次に待ち受ける関門はエンジニアとの電話面接です。こちらではおおよそ45分の間、現役エンジニアから出題されたプログラミングの問題(僕の場合は2問)を解きます。そして、後日最終面接に行かしてもらえるかどうか結果が伝えられます。

最後に最終面接です。こちらは本来、飛行機代が出て、現地で受けることになるのですが、今回はコロナの関係でこの工程はオンラインで行うことになりました。


最終面接

最終面接が4月16日に行われました。僕の場合、最初に3月23日に人事から連絡があり、3月30日に最初のエンジニアとの電話面接をすることになりました。4月1日に最終面接への招待がきました。

最終面接に関しては合計で4時間かかってしまうため、僕の都合のいい時を教えて欲しいとのことでした。その結果、4月16日に決まりました。

最終面接は合計で4つの面接を異なるエンジニアたちと行います。それぞれが45分で、2つ終えたところで45分間の休憩が入ります。その間、画面共有はしなくていいのですが、ずっとビデオを開いてます。

最初の面接

最初の面接はインスタのストーリー機能を担当しているインド人のエンジニアと1対1の面接でした。始まる前にはグループのストーリー機能を開発しているという話もしてくれました。

面接の内容ではプログラミングの問題を出題されました。一問目では文字列の処理をする問題が出されました。Runtimeも考慮しながら、良さげな回答をしましたので、若干時間がかかってしまいました。

一問目が終わって、残り15分くらいでしたが、まさかの二問目を出題されました。時間あんまりなくて、「ヤバイ!」と思いましたが、なんとかそれらしい回答を出しました。二問目も文字列に関わる問題でした。こちらの問題はなかなか面白かったです(笑)。

最後に5分ほど雑談して終了!

2番目の面接

次の面接ではトルコ系っぽいエンジニアとの面接でした。こちらも現在インスタの開発をしているそうです。

ここでは意外にも僕の背景について問題が多かったです。僕がどのようなプロジェクトに関わってきたのか、どのように難しい状況を解決してきたかなどです。

チームでやったプロジェクトのことについて知りたかったみたいでしたので、ハッカソンの話をしました(参加してよかったニヤ)。チームでの役割分担などをこなし、どのようなフレームワークなどを使ったかについて、入賞できなかった理由、チームの反対が生じた時にどのように説得したのかについても聞かれました。

僕が参加したハッカソンの話に関してはこちらを参考にしてください↓


それが終わってから一つプログラミングの問題を出題されました。こちらはあまり難しいものではなかったのですが、エッジケースが多かったので、あれこれとあり得る可能性を対処していく作業になりました。

3番目の面接

45分の休憩を挟んでから3番目の面接が始まりました。インスタの機械学習を担当している中国人のエンジニアと南米系のエンジニア2人と僕による3人の面接でしたが、南米系のエンジニアは質問の時間以外何も喋っていない感じです。

ここでは僕のグノシーでのインターンについてあれこれと聞かれました。どのように他の人たちと働いていたのか、このインターン中にどのようなものを作ったか、同僚や上司との間の問題はどのように解決したのかとかです。一応、敬語がうまく使えてなかったが、直した話をしたら、敬語の理解をしてもらうために一苦労しました。この話題はもう使わないことにします(笑)。

僕がグノシーでインターンしたときの話はこちらを参考にしてください↓


その後は僕の個人プロジェクトの方に目が向けられ、僕は自分の中では一番自信がある、ツイートスケジュラーについて説明しました。どうしてそれを作ったのか、どのようなところで苦労したのか、開発していく上でどのようなことを学んだのかについて聞かれました。

僕が作ったツイートスケジュラーについて詳しくはこちらを参考にしてください↓


その後、大体残り15分〜20分の頃にまたプログラミングの問題を出題されました。今度は久しぶりのツリー系統の問題でした。少し悩みましたが、アマゾンの問題とも似ていたので、なんとか解けました。

こちらの問題に似ています。


雑談ではどうしてインスタのチームで働きたいと思ったかについて聞きました。そしたら、すごい勢いで成長しているプロジェクトに関わりたいというのが本人の言い分でした。それに、まだコアの機械学習の部分を作っていて、それも誇らしい実績になるのではないかと思います。

4番目の面接

ついに最後の面接まで来ました。今度はシリコンバレー育ちの中国人のエンジニアでした。話し方がすごく優しいし、僕の適当な話も面白そうに笑って聞いてくれたので、とても印象がよかったです。Facebookとその傘下たちの通知機能の開発を行っているそうです。ちなみに滞在している3年間で3つのチームで合計働いたことがあるそうです。

ここでは最初からプログラミングの問題が出されました。多分Leetcodeでやったことのあるような問題でしたが、まあ、完全に忘れていました。こちらの問題に似ています。


面接中こっそりLeetcodeを検索しなかった自分偉いということにしておきましょう(笑)

ヒントをたくさんもらったので、こちらはなんとか解けました。

最後の雑談では以前、日本でのユーザー獲得のために、日本に来て、アンケートなどを実施したこともあったそうです。その際に技術的な問題が起こったらという感じでエンジニアでしたが、10日間日本に来ていたそうです。


最後にちょこっと担当してくれている人事との話が入って最終面接終了という形になりました。


Facebookエンジニアと話してわかったこと

最後に雑談などでFacebookのエンジニアたちと話していてわかったことについて書き残しておこうと思います。

  • 残業をすると、場合によっては昇進が速くなるかもしれないが、基本的には推奨されていない(不健康、無給料)
  • 期限がキツめのチームだと残業を多くしている可能性が高いそうだ
  • インスタはまだ比較的新しい方で、コアの機械学習モデルに関わることができ、小さくて家族みたいなチームの雰囲気もある
  • Facebookのように大きくなってくると、誰がどこのコードを書いているかすごくわかりづらい
  • インスタやWhatsAppなどで働きたい場合はFacebookに入社できなければならない
  • Facebookでは最初にBootcampというプログラムがあり、そこで自分の所属したいチームを選べる
  • チームに入る時はお互いが相性良いかどうか見るための期間として、大体6〜8週間の時間を設けている
  • 通知機能の開発は全てのプラットフォームで使われ、その通知数は1日に3000億通という恐ろしい数字(コードの効率性を維持するのが大変)
  • 今回のようにオンラインだけで面接と採用をするのは初めてだからいろいろ試している
  • 9月から5月にかけて新卒の採用をしているそう(他の会社より少し採用に時間を使う方ではある)

こういう貴重な話が聞けるからこそ、こういう面接が結構楽しいというのが僕の中にはありますね。3000億通の通知はさすがにビビりましたが(笑)


まとめ

今回は僕がFacebookの新卒最終面接に行ったときの話をしました。

既にアマゾンのオファーもありますから、全く緊張せずに臨めました。やはり緊張していないと、かなり良いパフォーマンスができるなというのは直に感じました。

個人的にはアマゾンのプログラミング問題よりも少し簡単だったかなと思います。その分、問題数は多かったですけどね。今のところ、一番難しいと感じたのはやはりGoogleですね。

自分の実力を試せる良い機会でした。エンジニアたちから貴重な話もしてもらえたので、とても楽しかったです。次は現地で面接を受けたいものです。

今回のにも結構大きく影響しますが、僕がアマゾンのオファーにたどり着くまでの軌跡をこちらにまとめましたので、ぜひ参考にしてみてください↓


皆さんの役に立つことを願います!
では、また次回まで✌
記事更新はツイッターで告知するので、ツイッターの方でもフォローお願いします!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です