先日とある会社の採用試験でオンラインコーディングスキルチェックを受けた。 それがなかなか面白かった。
内容は、サーバーサイド(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/ あたりで慣れておくと良さそう。
エンジニア転職活動中です。