第5回 実際のコーディング面接|Tech Book Zone Manatee

マナティ

世界で闘うプログラミング力を鍛える本

第5回 実際のコーディング面接

海外のIT企業で働きたい・活躍していきたいならばコーディング面接への理解が必須です。
筆者経験から、コーディング面接の実際とその対策について解説します。

電子書籍『世界で闘うプログラミング力を鍛える本』をマナティで発売中!
(上の書籍画像をクリックすると購入サイトに移動できます)

実際のコーディング面接

コーディング面接の対策は本書をしっかり読み込めば大丈夫でしょう。きちんと準備しておけば怖いものはありませんが、実際のコーディング面接がどのような形で進むのかについて知っておけば、いざ本番の場面でも緊張や焦りが軽減できるはずです。今回は、どのように面接が進んでいくのかについて見ていくことにしましょう。

面接のプロセス

コーディング面接は、1回ではありません。実際に企業に採用されるまでは何度か毎回別の面接官から出題をされ、その都度、問題を解いていくことになります。日本法人がある企業ならば、おそらく最初の段階では日本で働いている方とコーディング面接を行うことになるでしょう。一方、日本には法人がない企業(シリコンバレーには、大手・ベンチャーに限らず日本ではあまり知られていないが、現地ではとても有名という会社はたくさんあります)を受けることになった場合、いきなり現地のエンジニアとコーディング面接を行うことになります。つまり、コーディング面接と一口に言っても、面接官がその場にいるとは限らず、様々な形に向き合っていくことになります。

面接における出題のされ方

誰と面接をしていくのかにもいくつかパターンがあるのと同様、どうやって面接をするのかについてもいくつかのパターンがあります。代表的なものには下記があります。

1. ホワイトボードで書きながら答える
2. 電話で口頭のみで答えていく
3. オンライン上でエディタを共有してその場でコーディングする

有名なのは一番目のホワイトボードのものでしょう。実際に企業に行って面接を行う場合、このパターンが多いのではないでしょうか。一方、先に述べたように、例えば日本からシリコンバレーの企業を受ける場合、プロセスが進めば現地に行って面接ということもありますが、最初の段階では電話でやりとりすることになります。

本書が重要視している、「未知の問題に出会ったときに、どういう切り口で考えていくべきなのか」が特に大事になってくるのがこの現地のエンジニアと電話で答えていくパターンです。その場で対面で面接をするのも大変なのに、それが電話越しとなると、言葉だけで自分の考えを伝えていかなくてはならないので、更に難易度はアップします。本書は問題のアプローチの仕方も解説で書いてあるので、実際の面接では電話だけもあり得る、ということを意識して読み進めるようにするといいかもしれません。こうした電話上で会話だけで解いていく場合もあれば、上記の3番目のように、電話越しに出題された後、話しながらオンライン上のエディタで実際にコーディングすることもあります。この場合、どのようにコーディングするかがリアルタイムで見られているので緊張するかもしれませんが、実は電話だけの場合よりも格段に難易度は下がります。

また、コーディング面接と言ってもいきなり問題を出されて(ホワイトボードやオンライン上での)実装にはいるパターンもあれば、はじめは基礎的なことを聞かれ口頭ベースでやりとりし、最後の関門として問題を出してくるパターンもあります。出題の仕方も、ある問題を「じゃあこれを解いて」と言ってくるよりかは、ひとつの大きな問題に向けて、いくつかの小問に分けて出題してくる場合が多いです。この場合、一見関係なさそうに見える問題が、実は前に出された問題がヒントになっていた、ということもあるのでよく注意しておきましょう。

「解く」のではなく「考える」

繰り返しになりますが、コーディング面接で問われているのは出題された問題を解けるか・解けないかよりも、どのようなアプローチで解いていくかという考え方です。解き方を知っている問題に出会うこともあるかもしれませんが、大抵の場合は未知の問題に出会うことになるでしょう。その際、面接官とどのようなやりとりをし、どう答えに向かっていくのかも評価されていると思ってください。

「面接」と聞くと自己PRといったことを思い浮かべる方もいるかもしれませんが、これまで見てきたように、コーディング面接で問われるのはあくまでも与えられた問題に対して、エンジニアとしてどのように対処していくのかです。それは、単純に実装力があることも重要な要素のひとつであるものの、会社という組織から見ると、他のメンバーとどのようにコミュニケーションをとり、どうやってひとつの問題に取り組んでいくのかも同じくらい重要な指針となります。つまり、例えばウェブやアプリの開発で求められるスキルとコーディング面接で求められるスキルが一致しているかと言われると、必ずしもそうではない部分が多いです。しかし、コーディング面接を行う企業から見ると、問題にきちんと対処できるかどうかによって、

事前に知っているコーディング面接という「課題」に対して、きちんと準備し、対策をとれる人か
面接官という「同じチームのメンバー」と、ひとつの課題に適切に向き合っていけるか

を評価できることになります。これは実装力と同じくらい、あるいはそれ以上に組織にとっては大事な評価軸です。また、これは面接を受ける自身にとっても大事なことでしょう。面接官は、将来自分が働くかもしれない企業、チームメンバーの一人ですから、コーディング面接は、その企業ではどのような人が働いているのかを知るチャンスでもあります。コーディング面接だからと言って緊張せず、相手の企業を評価してあげるくらいの気持ちで臨むといいかもしれません。本書を読んでおけば、それくらいのゆとりを持って面接を受けることができるでしょう。

著者プロフィール

巣籠悠輔(著者)
Gunosy、READYFOR創業メンバー、電通・Google NY支社に勤務後、株式会社情報医療の創業に参加。医療分野での人工知能活用を目指す。著書に『Deep Learning Javaプログラミング 深層学習の理論と実装』(インプレス刊、Packet Publishing:Java Deep Learning Essentials)がある。

5月30日に『詳解 ディープラーニング TensorFlow・Kerasによる時系列データ処理』(マイナビ出版)が発刊予定!