はじめに、コーディングインタビューとは
コーディングインタビューとは
最近は、日本でもメルカリやLINE等の企業が、IT技術者を採用する際に、コーディングインタビューを実施し始めたようですが、未だ日本では知名度が低く、一般的ではありません。しかしながら、読者の皆様がGAFAMを始めとした、アメリカの先鋭企業で働く事を希望されている場合は、さけては通れない通過儀式となります。
本記事では、弊社、代表江口のマイクロソフト時代ののインタビューの実体験を元に、GAFAMレベルの企業のインタビューを通過するために学習しておくべき内容を、問題、及びコードの実例を交えて連載で解説を行っていきます。
本連載の対象読者に関して
本連載の対象読者は、ある程度腕に自信があり、GAFAM等の企業をキャリアアップとして目指しているような、ソフトウェアディベロッパー、テスター等が対象になります。全くのプログラミング初心者対象の連載で無いことにご注意ください。
私自身が、実際にマイクロソフト時代にGAFAMのコーディングインタビューを経験してきた事と、独立開業後に、複数の企業でコーディングインタビューを実施してきた経験に基づいて記事を書いていく予定なので、皆様にとって有益な情報を発信できるかと思います。
日本の一般的な面接に関して
こちらに関しては、実際に皆様の何らかの面接を経験してきたでしょうからイメージが湧きやすいと思いますが、日本の一般的なインタビューの内容は、過去の経験や、志望動機等を質問して、それにどのような返答をするかというインタビューが一般的かと思います。このインタビューのスタイルでは、候補者の熱意や、コミニケーション能力等はある程度知ることができても、候補者の具体的な技術レベル等を判定する事は極めて難しいかと思います。
こういった内容のインタビューでは、ある意味慣れてしまえば攻略はしやすいため、インタビューでは印象が良くても、実際は・・・ といったようなギャップが採用後に生じやすいという問題点があります。ITエンジニアの場合、具体的な技術レベルのチェックをする事が非常に大事で、従来の日本式インタビューではこの部分を見極める事ができません。そこで、コーディングインタビューがGAFAMを含めた、アメリカのトップ企業では重要視されています。
コーディングインタビューの内容に関して
それでは、実際にコーディングインタビューの内容について解説をしていきます。コーディングインタビューは読んで字のごとく、実際のコーディングにフォーカスを当てたインタビューとなります。どのように実行されるかというと、アルゴリズムやデータ構造等に特化した、具体的なコーディングに関する問題が与えられ、オンラインの場合は、VS code等のエディターや、Webページ上の独自コンパイラー等を用いて、候補者がどのようなコーディングを行うのか、その場で確認をしていきます。
このようなインタビューを行う事で、候補者の実際のコーディングスキルを実施で測定できるだけでなく、コーディングを観察されるという極端な環境下で、プレッシャーに強く、冷静に問題を解く事ができるか、コーディングのロジックを効率良く組み立てられるか、タイムマネージメントし、きっちり時間内にコードを書き終えられるか等、様々な観点が問われる内容となっています。
なかなか、敷居が高い内容ですね・・・ 私自身、相当苦しんだ思い出がありますが、GAFAMでITエンジニアとして働きたい場合は避けて通れない試練となっています。
GAFAMでのコーディングインタビュー
それでは、GAFAMクラスの企業でのコーディングインタビューはどのような感じなのかについて説明をしていきます。まず、一言でGAFAMのコーディングインタビューを言うと「ひたすら長い」これにつきます。とにかくインタビューの数が多くて、合計で8本くらいのインタビューは覚悟しなければならなくなり、また、インタビューのうち幾つかは、日本であっても、本社のアメリカ人とのインタビューとなる事が多く、英語でのコーディングインタビューも踏まなければいけなくなるので、英語力も求められます。
参考までに、私がマイクロソフト時代に経験したインタビューの流れはだいたい以下の通りでした。
- 電話でのpreインタビュー2~3回
- 一週間程度の期間で取り組む課題がアサインされる
- オンサイトでのインタビュー合計5時間(5人の面接官が一時間ずつインタビューを行う形式)
本番に進むまでも、電話越しのコーディングインタビューや、課題がアサインされる等、なかなかタフなのですが、5時間ぶっ続けの本番のインタビューは本当に大変で、気力との勝負になるところもあります。しかも、インタビューの内容は、日本式の志望動機を問うようなインタビューは殆ど出題されず、コーディングインタビューや、コードのデザインを見るような内容のインタビューで、徹底的にリアルタイムで成果が残さるかどうかを試されます。
そのため、生半可な覚悟でインタビューに挑んでしまうと、インタビュー自体が大変すぎて、心が折れてしまう事にもなりかねないので、強い意欲をもち、むしろインタビュー自体を楽しめるようになっておく事がとても大事になります。
コーディングインタビューの意義
コーディングインタビューを受けられると、実際の業務との乖離を感じる部分が大きいかと思います。コーディングインタビューでは、コンピュータサイエンスの基礎アルゴリズム等にフォーカスがあたる事が多く、例えば、ソートのアルゴリズムを実装せよ等、実際の仕事では、ライブラリを使用して処理する事が大半な作業が多々あります。
それでは、このコーディングインタビューが全くの的外れのゲームのようなものかというと、それは違っていて、こういったアルゴリズム基礎やデータ構造の基礎をしっかり学んでいる人は、自然と計算量とメモリを意識した効率の良いコードを書く事ができるようになるので、プログラマーとしての素地が強くなります。実際に、アメリカでコーディングインタビューを行っている企業に対して、アンケートを取ると、コーディングインタビューを実施している企業の方が、10倍以上良い人材を採用できるとの結果になっているそうです。
また、例え実作業でライブラリを使用していても、アルゴリズム基礎や、データ構造の基礎に強い人は、自然とライブラリ自身の計算量等を意識するようになるため、プロダクションに耐えうるコードを実装する事ができるようになります。そういった観点で、コーディングインタビューで学ぶ事を実業務に応用できるような、強いプログラマーになることを目指されると良いかと思います。
まとめ
コーディングインタビューに関して、それがどのようなものなのか、実際にGAFAMではどのようなインタビューが行われているのかについて、概要をお話しました。
次回は、実際にコーディングインタビューに挑む際に、必要なアプローチについて解説を進めていきます。闇雲にインタビューに挑むのと、しっかりとアプローチを理解してインタビューに挑むのでは大きな差があるので、まずはコーディングインタビューのアプローチを理解する事が大事です。