採用試験でコーディングスキルチェックを受けた

先日とある会社の採用試験でオンラインコーディングスキルチェックを受けた。 それがなかなか面白かった。

内容は、サーバーサイド(PHP/Ruby(Rails)/Database) に関する問題で、全9題、試験時間は1時間45分程度、出題は全て英語。

最初の3題ぐらいはPHPでのコーディング(クラス設計)問題。 コーディング問題は、ideone.com のようなUIで、テキストエリアにコードを書いてSubmitするという形式。Submitすると次の問題へ移動する。当然制限時間は各題に設けられており、制限時間がくると強制的に次の問題へ移動する。

以下、コーディング問題の一例。 提示された仕様書を読み取り、コードを作成、用意されたテストケースを全てパスすればOK。 出題内容は伏せるが、だいたいコードから雰囲気でわかると思う。

<?php

class Solution
{
    private $categories = [];

    /**
     * @param string $category
     * @param string @parent
     * @throw InvalidArgumentException
     */
    public function addCategory($category, $parent) {
        if (isset($this->categories[$category])) {
            throw new InvalidArgumentException;
        }
        if ($parent === null) { $parent = ''; }
        $this->categories[$category] = $parent;
    }

    /**
     * @param string @category
     * @return array
     */
    public function getCategory($category) {
        $ret = [];
        if (isset($this->categories[$category])) {
            foreach ($this->categories as $k => $v) {
                if ($v === $category) {
                    $ret[] = $k;
                }
            }
        }
        return $ret;
    }
}

$s = new Solution();
$s->addCategory('A', null);
$s->addCategory('B', 'A');
$s->addCategory('C', 'A');
$s->addCategory('D', 'B');
$s->addCategory('E', 'B');
echo implode(',', $s->getCategory('B')); # D, E

競プロのようなアルゴリズム系、パズル系問題というよりは、実務寄りな内容だった。 地頭の良さ、というより実務寄りな能力を重視しているということだろうか。

PHPが終わると、Ruby(Rails)の問題へ。 表示されているソースコードからバグを見つける、なんていう問題や、Active Recordに関する問題など。

最後の3-4題ぐらいはDB、SQL知識を問う問題。

SQLについては、普段簡単あまりテクニカルなSQLを書くことがないので、慌ててSQLのテスト環境を作ったりして確認しながら確認した。 集計系のSQLが苦しかったので、ちゃんと勉強しとかなきゃなあ。

SQL以外ではDBのパフォーマンスに関する問いが多かった印象。

感想

  • 色々時間がなかったので会社帰りに某チェーンのカフェ*1で受験した。これは失敗だった。ネット途切れる、うるさくて集中できない。ちゃんと家で受けよう。
  • SQLに関する出題はありえるので、手元に実行環境を予め用意しておくと確認が捗る。
  • 英語出題、アルゴリズム問題に関しては、http://hackerrank.com/ あたりで慣れておくと良さそう。

エンジニア転職活動中です。