転職活動中にCodilityでオンラインコーディング選考を受けた話

# この記事は何?

  • 機械学習エンジニア/データサイエンティスト職で転職活動していた増田と申します。今回は、某企業の選考の過程で、Codilityというサイトを使ったオンラインコーディングテストを受ける、という珍しい(?)体験をしたので、体験記を共有します。
  • 選考の具体的な企業名、問題のずばりそのままは公開しません。

# Codilityとは何?

Codilityとは、ブラウザ上で実施するオンラインコーディングテストプラットフォームです。受験の流れは以下になります。

  1. 企業から受験案内のURLが送られてきます。
  2. URLをクリックして「Start」を押すと、ブラウザ上のエディタが立ち上がります。受験者は、制限時間内に問題文の指示通りに動くプログラムを書きます。問題数、制限時間は企業が指定し、受験者は「Start」押下前に問題の数と制限時間を確認できます。
  3. 書き終わったら提出(Submitボタンをクリック)します。

既にオンラインジャッジシステム(AtCoder、AizuOnlineJugdeなど)に慣れ親しんでいる方は、それの就活版だと思ってくださればイメージが付くと思います。ただし、AtCoderといくつか違う点があり、以下にまとめます。

# AtCoderとの違い

  1. 関数のシグネチャが事前に与えられる。つまり、標準入出力でやり取りすることはなく、用意された引数に対して処理を書いていけばOKです。
  2. 問題文は全部英語で、かつ問題文がコピー不可になっており、翻訳機にかけることができません。そこまで難しい単語や表現が出てくる印象はないですが、普段日本語でしか問題を解いたことがない方は、事前に何問か練習しておくと良いでしょう。
  3. Submitは1度きり(※問1つに対して1回ずつだけ押せる、の意)。十分にコードテストを走らせ、ケアレスミスがなさそうな確証を得てからSubmitボタンを押すようにしましょう。
  4. 問題の傾向としては、AtCoderのような数学的考察が必要はあまり必要なく、どちらかというとLeetCodeに載っているような、いわゆるテックジャイアント企業が用いるような王道のアルゴリズム/データ構造に関する問題が多い気がします。練習をするならAtCoderよりもCodilityまたはLeetCodeを使うと良いでしょう。
  5. 受験時間帯:Codilityの場合、受験時間を自由に設定できます。ただし、企業側からは「なるべくN日以内に受けてください」と連絡があるはずなので、最低限そこに遅れないようにしましょう。
  6. 部分点が与えられる:Codilityの最終スコアは「Correctness(small~mediumテストケースを何%合格したか)」と「Performance(largeテストケースに対して、時間以内に終了するか)」の2軸で評価され、AtCoderのように全ケースクリアして初めて加点、というわけではないようです。また、問いの種類によっては、「この問題はPerformanceでは採点しないため、大きな入力は考慮しなくて良い」という断り書きがある場合もあります。
  7. ブラウザ上のエディタがそこそこリッチ:変数名の補完機能が使えたりします。
  8. 提出したソースコードは選考で使われる:仕事で書いているような、第三者が見て分かりやすいコードを書くことをお勧めします。

# AtCoderと同じところ

  1. 試験中はググってOK。
  2. タイマーの一時停止は不可。邪魔されない自信のある時間をきっちり確保しましょう。宅配便の配達なども時間指定で避けておくと良いですね。ちなみに筆者の場合は、昼15時頃に受験していたら途中で廃品回収車の大きな音が近づいてきて集中力を欠いてしまいました。夜に受ければよかったです😭
  3. (もちろん)替え玉受験や友達との共同作業は不可。原理的に替え玉は見抜けませんが、倫理的に著しくアウトなのでやめましょう。

# どんな問題が出たの?

CodilityでいうところのPainless〜Respectable、LeetCodeでいうところのEasyレベルだと思います。同じくらいの難易度(当社比)の問題だとこの辺りでしょうか。

AtCoderレートでいうと茶色までの人はちゃんと練習が必要そう、緑の人はちょっと形式慣れしておけばまあ行けそう、水色以上の人はお茶の子さいさいといったところでしょうか。ここも恐らく、企業によって難易度の調整が変わるところだと思います。

# 受験結果

  • 選考で次のプロセスに進めたので、結果的には成功したようです。
  • ある問題で大きく点を落としてしまいました。後でググってみたところ、それは界隈ではちょっと有名な問題を軽くひねったものだったようです。不合格を覚悟しましたが通過できたので、単なる正解率だけでなく、コードの書き方も加味してくれたのかもしれません。実際、コードの readability はかなり意識して書くようにしました。

# 終わりに

  • この記事ではCodilityを使ったオンラインコーディング選考を受けた体験記をまとめました。
  • 同じ立場になった(あるいは将来なる)方に対して少しでもお役に立てていたら嬉しいです。