見出し画像

GAFAMで働くために必要なコーディングインタビュー

コーディングインタビューとは

今まで、諸々、ブログの執筆が完全に止まっており申し訳ありませんでした。。。今回から、「GAFAMのコーディングインタビューに通過するには?」というテーマで、不定期で記事を作成していくので、皆様暖かく見守って下さい。

最近は、日本でもメルカリやLINE等の企業が、IT技術者を採用する際に、コーディングインタビューを実施し始めたようですが、未だ日本では知名度が低く、一般的ではありません。
しかしながら、読者の皆様がGAFAMを始めとした、アメリカの先鋭企業で働く事を希望されている場合は、さけては通れない通過儀式となります。

本記事では、弊社、代表江口のマイクロソフト時代のインタビュー実体験を元に、GAFAMレベルの企業の採用面接インタビューを通過するために学習しておくべき内容を、問題、及びコードの実例を交えて連載で解説を行っていきます。

fig1. GAFAMイメージロゴ

本連載の対象読者に関して

本連載の対象読者は、ある程度腕に自信があり、GAFAM等の企業をキャリアアップとして目指しているような、ソフトウェアディベロッパー、テスター等が対象になります。
全くのプログラミング初心者対象の連載で無いことにご注意ください

日本の一般的な面接に関して

日本の一般的なインタビュー(採用面接)の内容は、過去の経験や志望動機等を質問し、それにどのような返答をするかという手法が一般的ですね。

このインタビューのスタイルでは、候補者の熱意や、コミニケーション能力等はある程度知ることができると考えられます。

しかし、こういった内容のインタビューでは、ある意味慣れてしまえば攻略はしやすいため、インタビューでは印象が良くても、実際は・・・ といったようなギャップが採用後に生じやすいという問題点があります。

ITエンジニアの場合、具体的な技術レベルのチェックをする事が非常に大事で、従来の日本式インタビューではこの部分を見極める事ができません。
そこで、コーディングインタビューのような、技術を見極めることが出来る採用方法が、GAFAMを含めた、アメリカのトップ企業では重要視されています。

fig2. interviewイメージ

コーディングインタビューの内容に関して

それでは、実際にコーディングインタビューの内容について、私自身がマイクロソフト時代にしてきた経験を元に、GAFAMのコーディングインタビューを解説をしていきます。

コーディングインタビューは読んで字のごとく、実際のコーディングにフォーカスを当てたインタビューとなります。

どのように実行されるかというと、

  • アルゴリズムやデータ構造等に特化した、具体的なコーディングに関する問題が与えられる

  • オンラインの場合は、VS code等のエディターや、Webページ上の独自コンパイラー等を用いて、候補者がどのようなコーディングを行うのか、その場で確認をする


このようなインタビューを行う事で、候補者の実際のコーディングスキルを実施で測定できるだけでなく、

コーディングを観察されるという極端な環境下で、プレッシャー負けず、
冷静に問題を解く事ができるか?コーディングの
コーディングのロジックを効率良く組み立てられるか?タイムマネージメントし、きっちり時間内にコードを書き終えられるか?

等、様々な観点が問われる内容となっています。

fig3. coding interviewイメージ

GAFAMでのコーディングインタビュー

それでは、GAFAMクラスの企業でのコーディングインタビューはどのような感じなのかについて説明をしていきます。
まず、一言で伝えると「ひたすら長い」。これにつきます。

とにかくインタビューの数も時間も多くて、合計で8本くらいのインタビューは覚悟しなければならないです。
また、インタビューのうち幾つかは、日本であっても、本社のアメリカ人とのインタビューとなる事が多く、英語でのコーディングインタビューも踏まなければいけなくなるので、英語力も求められます。

参考までに、私がマイクロソフト時代に経験したインタビューの流れはだいたい以下の通りでした。

  • 電話でのpreインタビュー2~3回

  • 一週間程度の期間で取り組む課題がアサインされる

  • オンサイトでのインタビュー合計5時間(5人の面接官が一時間ずつインタビューを行う形式)

本番に進むまでも、電話越しのコーディングインタビューや、課題がアサインされる等、なかなかタフなのですが、5時間ぶっ続けの本番のインタビューは本当に大変で、気力との勝負になるところもあります。

しかもインタビューの内容は、日本式の志望動機を問うようなインタビューは殆ど出題されず、コーディングやコードのデザインを見るような内容で、徹底的にリアルタイムで成果が残さるかどうかを試されます。

そのため、生半可な覚悟でインタビューに挑んでしまうと、インタビュー自体が大変すぎて、心が折れてしまう事にもなりかねないので、強い意欲を持ち、むしろインタビュー自体を楽しめるようになっておく事がとても大切です。


コーディングインタビューの意義


コーディングインタビューでは、コンピュータサイエンスの基礎アルゴリズム等にフォーカスが当たる事が多く、
例えば、ソートのアルゴリズムを実装せよ等、実際の仕事では、ライブラリを使用して処理する事が大半な作業が多々あります。

コーディングインタビューを受けると、実際の業務との「乖離」を感じられることも予想されます。

しかしこのコーディングインタビューが、大きく的外れのゲームのようなものかというと、それは違っていて、
こういったアルゴリズム基礎やデータ構造の基礎をしっかり学んでいる人は、自然と計算量とメモリを意識した効率の良いコードを書く事ができるようになるので、プログラマーとしての素地が強くなるのです。

実際に、アメリカでコーディングインタビューを行っている企業に対してアンケートを取ると、コーディングインタビューを実施している企業の方が、10倍以上良い人材を採用できるとの結果になっているそうです。

また、例え実作業でライブラリを使用していても、アルゴリズム基礎や、データ構造の基礎に強い人は、自然とライブラリ自身の計算量等を意識するようになるため、プロダクションに耐えうるコードを実装する事ができるようになります。

そういった観点で、コーディングインタビューで学ぶ事を、実業務に応用できるような「強いプログラマー」になることを、目指されると良いかと思います。


まとめ

コーディングインタビューに関して、それがどのようなものなのか、実際にGAFAMではどのようなインタビューが行われているのかについて、概要をお話しました。

次回は、実際にコーディングインタビューに挑む際に、必要なアプローチについて解説を進めていきます。
闇雲にインタビューに挑むのと、しっかりとアプローチを理解してインタビューに挑むのでは大きな差があるので、まずはコーディングインタビューのアプローチを理解する事が大事です。

この記事が気に入ったらサポートをしてみませんか?