会員登録すると
このコラムを保存して、いつでも見返せます
外資系か日系かを問わず、ソフトウェアエンジニア職の面接プロセスの一環として、多くの企業で コーディングテスト (コーディング面接、コーディング試験)が導入されています。コーディングテストとは文字通り、技術試験によりプログラミングの能力を測るために行われるものです。1~2次面接など、選考の序盤~中盤の段階で行われます。
面接内容は会社や業種により異なりますが、一般的には競技プログラミングのような問題を解き、アルゴリズムを解説するという流れで行われます。本記事では主に、その場で問題を解きアルゴリズムを解説する形式のコーディングテストについて解説していきます。また、後半は対策方法も紹介します。
地方国立大学情報系学部にてアルゴリズムの研究を行っている。GAFAや外資コンサル,メガベンチャーを含めた複数の難関企業から内定を獲得し,2022年からGAFAでエンジニアとして勤務予定。趣味は音楽。GAFAM・メガベンチャー志望学生のための就活ノウハウ伝授サイト『IT就活ナビ』を開設。
前提
コーディングテストに近いもので、以下のような形式の面接もあります。
・コーディング自体は行わないものの、コンピュータサイエンスに関連した知識を問われる 技術面接 と呼ばれるもの
・オンラインでコーディングを行う事前課題を解き、面接官にその実装について解説をする面接(事前のコーディングに3,4時間かかるものもあります)
コーディングテストの実施方式
オンラインと対面の2パターンがあります。
近年はほとんどがオンラインによる実施ですが、コロナ禍以前には対面でも多く行われていました。
対面の場合は、紙とペンや、ホワイトボードを使い、その場でコードを直接書いていく形で行います。
オンラインの場合は、HackerRank やcodeshare など、書いたコードを共有できるツールを用います。これらのツールを使用する場合は、主にブラウザのエディタにコードを書き進めていくことになります。
プログラム言語について
コーディングを行うプログラム言語に関しては、基本的に制約などはなく、自分の好きな言語を使って構いません。あらかじめ制約がある場合でも、主要な言語は必ず使えるのでほぼ問題ないと言ってよいでしょう。
競技プログラミングで人気の、以下の2つの言語を使う学生が多いですが、どの言語を選択してもマイナスに働くことはありません。
Python: 処理が簡潔に書けることや文字列や配列の扱いやすさ、ポインタなどを意識しなくてもプログラムを書けることから人気
C++: 処理速度が早いため競技プログラミングでは圧倒的に人気
また、言語を選んだ理由を深く聞かれることはあまりないですが、なぜその言語を選択したのかを軽く言えるようにしておくと良いでしょう。
全体の流れ
およそ45分~1時間です。
企業により進め方はさまざまですが、以下のようなパターンが多いです。
・45分程度の面接で、全てコーディングテスト
・90分の面接で、およそ半分がコーデイングテスト(半分は志望動機など、オーソドックスな面接)
・1日に複数回連続して面接を行い、そのうちの1つとしてコーディングテストが課される(45分程度)
雰囲気
面接官は、主に実際に現場でエンジニアとして働きコードを書いている方が出てきます。
年次に関しては比較的若い方が多い印象です。
雰囲気は比較的和やかに進むことがほとんどです。というのも、学生がアルゴリズムの解説をした後に、そのアルゴリズムや拡張した解法についてディスカッションしながら問題を一緒に解いていく際、面接官本人がプログラムへの興味関心から面接を楽しんで行っている場合が多いからです。
学生側は緊張で楽しむどころの場合ではないかもしれませんが、リラックスして臨むよう心がけましょう。
コーディングテストの流れ
大まかな流れは下記の通りです。1回の面接で複数問を解く場合は、この流れを複数回繰り返します。
↓
2. 解法を考える
↓
3. 実際にコーディング
↓
4. 解説
↓
5. ディスカッション
1. 問題の確認
まず最初に、問題が出題されます。問題を読む時間が与えられて静かに読む場合もあれば、面接官の方が問題を説明する場合もあります。
出力がどのような形式で与えられるのか、また結果としてなにを出力するのかをまず最初にチェックする ことが重要です。
2. 解法を考える
問題を確認したらすぐにコーディングに移る必要はなく、一旦解法について考える時間が与えられます(数十秒~数分程度)。
1と2のステップがまとめられており、数分間じっくりと考える時間を作ることができる場合もあります。
3. 実際にコーディングを行う
問題を確認して解法を思いついたら、実際にコーディングを進めていきます。
黙々とコードを書いていくのではなく、いま書いている行がどのような挙動をするのかを説明しながら書いていくことができると、面接官がよりコードを理解しやすくなります。
4. 解説
実際にコーディングを終えたら、自分の書いたコードを解説していきます。
挙動の説明だけでなく、コードの中で工夫した点などをここで話しましょう。
5. ディスカッション
4の解説を終えると、面接官からさまざまな質問が飛んでくることを覚悟しましょう。
質問の例
- 計算量
- 更に改善できるコードがあるかどうか
- エッジケースに対応できているか
- コードを書く際に気をつけたこと(コーディング規約など)
コードを書いている時には気づかなかったものの、少しのアドバイスを受けてより良いコードを思いついたりすることもよくあります。
コードを書き終わったからと言って気を抜かないようにしましょう。
point:面接官とコミュニケーションを取ろう
自分の実力をしっかりと評価してもらうために、以下のことを心がけましょう。
- 設問について面接官から解説や補足があった場合は注意深く傾聴する
解法に特殊な条件が課せられている場合など、重要な情報である可能性が高いです。
- 分からない事やうっかり忘れてしまった事については遠慮せず聞く
- 自分の考えをこまめに口に出し、面接官に思考プロセスを開示する
どんなに普段のコーディングスキルに自信があっても、選考本番の緊張で単純な文法をド忘れしてしまったり、解法が思いつかずに焦ったりといったトラブルは起こりえます。
そんな時は自分から積極的に面接官にコミュニケーションを取りに行き、素直にアドバイスを求めましょう。
コーディングテストの評価ポイント
企業により評価方法はさまざまですが、以下の項目については共通していると思ってよいでしょう。
...
会員登録して全ての内容を見る
続きは外資就活ドットコム会員の方のみご覧いただけます。
外資就活ドットコムはグローバルに活躍したい学生向けの就職活動支援サイトです。会員登録をすると、「先輩のES・体験記」や「トップ企業の募集情報リスト」など、就活に役立つ情報をご覧いただけます。
この記事を友達に教える