エンジニアとして就職する場合は、新卒でも中途でもコーディングテストを課される場合があります。その多くが足切りとして利用されており、コーディングテストを突破しなければ面接に進めません。そのコーディングテストの対策をご紹介します。
コーディングテストはどんな企業で実施される?
コーディングテストはYahooやLineなどの有名なWEB系企業や事業会社のエンジニアの選考にて実施されます。SIerではあまりコーディングは重要視されていないため、コーディングテストが実施されるケースはほとんどないでしょう。
コーディングテスト未経験でも問題ない?
コーディングの未経験の方が合格することは当然ながら、ほぼ不可能です。そのため、そもそものコーディング経験がない方はスクールに通うなり独学で勉強するなりしてからコーディングテストのある企業への入社を目指しましょう。普段の業務でコーディングをしている業務経験がある方もコーディングテストの対策は実施しておいたほうが良いです。コーディングテストにはそれぞれのサービスなどに癖があり、問題を解く前にそこで時間を浪費してしまう可能性があります。そのため、事前にコーディングテストの対策をしておく必要があります。
コーディングテストの種類
コーディングテストには主に二種類あります。
自社専用のコーディングテスト
特定のサービスを利用したものではなく、企業側が独自に問題を考えその問題を解くタイプのコーディングテストです。アルゴリズムの問題を課される場合もあれば、スマホアプリやWebアプリの実装を課される場合があります。このような課題の場合は、1週間~2週間の間に実装を行い提出をするタイプがあるため、ゆっくりと課題に取り組めるケースがほとんどです。また、コーディングテスト突破後に本格的な技術面接が課される場合が多いことも特徴です。企業が出してくる問題の形式を特定することが難しいことや提出までの期間が十分にあり調べる時間も確保できるため、特段対策が不要なタイプのコーディングテストであると言えるでしょう。言い換えると、対策が困難であり普段の業務経験や学習が重要とも言えます。
外部サービスを利用したコーディングテスト
外部のコーディングテスト用のサービスを利用したコーディングテストです。競技プログラミングの問題を解くものやAPIやフロントエンドの実装能力を問われるものなどいくつか種類があります。代表的なものとその対策をいくつかご紹介します。
AtCoder
競技プログラミングで有名なサービスです。このサービスは採用にも利用することができ、コーディングテストとして採用時に利用されることがあります。
対策
対策概要
まずは愚直に過去問を解きましょう。
コーディングテストで過去問が出題されるわけではありませんが、AtCoderの流れと事前に用意しておいたほうが良いコードがわかります。特にAtCoderで用意しておいたほうが良いのは、入力値を読み取るコードです。標準入力から読み取る必要があり、やり方を調べている時間が非常に無駄です。複数の値を入力する場合などがあるため、事前に標準入力の処理を用意しておきましょう。また、基礎ができていない人はA問題、B問題は解けても、C問題やD問題が解けなかったり間に合わないといったことが起こります。その場合は、下記の対策本で基礎固めを行なってください。B問題までは解けないと選考を通過できない可能性が高く、C問題も解けないと落ちる可能性が高いでしょう。D問題は解ければ、高評価の会社が多いと思います。
対策本
問題のレベルが高くなると、アルゴリズムとデータ構造の知識がないと解法を思いつけない問題が出てきます。アルゴリズムとデータ構造の基礎固めができていない人は以下の本でまずは基礎固めをしましょう。
合格基準
当然企業によりますが、AtCoder Beginner ContestのB問題までは最低限解ける必要があります。このレベルが解けないと大手のWEB系企業などでは足切りされる可能性が高いと思います。確実に大手WEB系企業の面接にたどり着くためにはC問題までは解けるようにしておくべきでしょう。
Codility
AtCoderのような競技プログラミングに近い問題が出題されます。大きな違いは、問題が英語であることです。それほど難しい英語ではないケースがほとんどですが、心配な人は翻訳を上手く使いながらコーディングテストに臨むようにしましょう。本番では英語で記載された問題をコピペすることができませんので、全く英語ができないと苦しい可能性があります。
対策
対策概要
まずサンプル問題を解きましょう。 サンプルの問題が少ないので、残りはAtCoderやLeetCodeなどを解いて対策するのが良いかと思います。
対策はAtCoderと同じで基礎的なアルゴリズムやデータ構造が理解できていないと感じたら、対策本で基礎固めを行なってください。
対策本
AtCoder同様、問題のレベルが高くなると、アルゴリズムとデータ構造の知識がないと解法を思いつけない問題が出てきます。アルゴリズムとデータ構造の基礎固めができていない人は以下の本でまずは基礎固めをしましょう。
合格基準
AtCoder Beginner Contest C問題が解けれるレベルであれば、Codilitiyにおいても多くの企業で問題がないと思います。
Track(トラック)
上記2つと異なりアルゴリズムだけではなく、APIの実装やフロントエンドの実装能力が問われる試験です。どのような問題が出るかは企業次第ですが、画面や実装方法に癖があるため、事前に練習をしておかないと戸惑う可能性があります。
対策
対策概要
athleticsというサービスでTrack(トラック)と同様のコーディングテストが受験可能です。ほとんどの問題が新卒向けのため、中途が受験できる問題は多くありませんが、中途も受験が可能な問題がいくつかあります。しかし、過去問やサンプル問題などは公式には提供されていないため、問題自体の対策は不可能です。システムがやや特殊なため、システムの操作方法になれるため一度athleticsの問題を解いてみるのも良いでしょう。問題はフロントエンド、バックエンド、アルゴリズム、SQL、選択式のクイズなど多岐にわたるため、対策はほぼ不可能です。フロントエンドエンジニアであれば、フロントエンドの問題が、バックエンドであればアルゴリズムやバックエンド(API作成)などの問題が出題されることが推測されるため、自らが選考が受けるポジションの技術を普段から磨いておく必要があります。
対策本
Track(トラック)の場合は対策本が出題される問題によって異なります。出題される問題は試験開始画面で推測できることがあるため、そこから必要な対策を判断してください。
アルゴリズムが出る場合
AtCoderなどと同じ対策を行いましょう。
フロントエンドの問題が出る場合
React, Vue, jQueryのいずれかを使えるようにしておきましょう(jQueryはあまりおすすめできませんん)。また、他のコーディングテストと違いアプリの実装能力を問われる試験のため、余裕があればCSSなどデザイン周りも復習しておくと良いでしょう(あくまで優先はReact or Vueに絞った方が良い)。
バックエンドの問題が出る場合
バックエンドでは、SQLやAPIの作成などが問われます。APIについては、REST APIの基礎知識はもちろんのこと、いずれかのフレームワークを使いAPIを作成し、どこかにデプロイまでできるようにしておきましょう。
合格基準
フロントエンドやバックエンドの実装の問題についてもテストコードが用意されており、そのテストコードを元に採点されます。そして、そのテストコードを通過したかどうかは受験者もコーディングテストを受けている最中に見ることができます。受験者はこのコーディングテストを受験中に、すべてのテストコードを通過するように実装を行う形になります。どの基準を合格にするかというのは企業によるため一概に言えませんが、このコーディングテストを実施する企業は、地頭だけでなく実装能力を求めていると考えられるため、実際のシステムの実装を意識して変数名などもつけていく必要があるでしょう。また、解法はわかったが実装まで行えなかった部分や工夫した点などを受験後に書き込むことができ、受験後に最後のアピールができるのも特徴です。この辺りもしっかりと書き込むのが良いでしょう。
コーディング面接などに向けてさらなる対策も必要
上記の対策で日系の大手WEB系企業や事業会社のコーディングテストは十分に突破できます。そして、実際にエンジニアの採用も行っていましたが、上記のサービスのレベルの問題を解けない日本人エンジニアが多くいることもわかりました。よって、上記対策がしっかりできるレベルであれば、日本人の中ではそこそこのレベルであり、特にジュニアクラスのエンジニアであれば余裕を持って日系WEB系企業などには入社できると思います。一方で、外資のIT企業などに入社する場合は、もっと本格的にアルゴリズムや実装を学ぶ必要があります。AtCorderのより難しい問題を解いたり、LeetCodeなどで少なくとも基本的なアルゴリズムは網羅的に習得する必要があるので、上記に加えてさらなる対策が必要でしょう。また、コーディングテスト通過後にコーディングした内容についての質問の受け答えやその場でホワイトボードなどにコードを書くコーディング面接がある可能性もあります。余裕のある人は下記の対策本などを使い、さらなる対策も行なっておきましょう。
対策本
コーディングテストにおいて不正はバレるのか?
高い確率でバレまる。まずコーディングテストは裏でどのようにコードが書かれているか見れるものが多いです。そのため、コピペや途中で言語が変わったりすると非常に不自然に見えます。また、仮にそこで怪しまれなかったとしても多くの場合、コーディングテストの後にエンジニアとの技術面接が実施されるはずです。そこを結局突破できません。なので、日頃からのスキルアップはもちろん、コーディングテストは自らの力で突破できるようにすることが重要であると言えます。
各企業のコーディングテストの内容はどうやって入手する?
まずは企業がインターネット上にコーディングテストの内容を公開しているか検索しましょう。しかし、多くの企業でどのようなコーディングテストが実施されるのかは、インターネット上には公開されていません。そのため、コーディングテストの内容を掴むのに有効なのはエージェント経由で応募し、エージェントから過去の受験者の情報をもらうことです。その時重要なのは、過去に多くの求職者を送り込んでおり、そこから情報を得ているエージェントであることです。そのため、下記の大手エージェントのいずれかを経由して選考に応募するのが良いでしょう。転職エージェントは転職の試験や面接後に、求職者からアンケートを取っており、どういった内容を質問されたのか?どういう内容のコーディング試験が課されるのか?などの情報も蓄積されています。こういった情報をもらえるのは大きなアドバンテージです。私自身もコーディングテストの内容や面接の内容がわからない企業はエージェントに情報をもらって転職活動を行ってきました。どこにも登録していない人は以下のエージェントに登録して、選考の情報をもらうのが良いでしょう。
【JAC Recruitment】公式サイト(無料登録)はこちら
まとめ
コーディングテストといえば、GAFAのような先進企業で実施されるイメージが強いですが日系のWEB系企業はもちろんのこと、内製化を進める事業会社などでも実施されるケースが増えています。テック企業でなくても、例としてあげたサービスのレベルは最低限として解けなければエンジニアとして入社することは難しいです。より難度の高いテック企業に入社を目指す場合は、本記事で紹介した内容を最低限としてさらに追加で対策をしていってほしいと思います。また、各企業のコーディングテストの内容が探しても見つからない場合は、エージェントを経由して申し込みを行い、エージェントから過去の選考情報として、コーディングテストの内容を教えてもらうのが良いでしょう。