2012-09-12

プログラマ採用面接における足切り質問

Joel氏の採用面接ゲリラガイドにもあるように、デキる開発者と一緒に仕事をしたいというのは、開発者なら誰でも思うことだ。

そこで、自分面接する側だったら、初歩の初歩レベル、即ちプロとしてあり得ないレベルの人を足切りするような、くだらない質問を2つ考えてみた。

JavaVB.NETC/C++PHPPerlといったオープン系では広く普及している言語で、ごく普通PCサーバで動作するコードを想定し、実装方法を考えてもらうというもの


  1. 1からnまでの整数を加えるといくつか求める。
  2. ある年が閏年かどうか求める。


ここでポイントとなるのは「プログラムに正解はないが、明らかな間違いはある」という考え方。

まり2つの質問に対して、明らかに間違った回答をしてきた人が失格ということ。

では上の問いで想定している明らかな間違いは・・・


  1. n回ループする処理内でループカウントしている変数を足していく。
  2. 4で割り切れる年は閏年だけど100で割り切れる年は(中略)というロジックを書く。


どっちも教科書でよく見るやり方だけど、仕事でそれやるのは頭悪すぎて話にならないということで。

ちなみにそれぞれの質問で何を見ているか、デキる開発者には一目瞭然だと思うけど、説明すると


  1. シンプルでエレガント()で力強く、高速かつ可読性も高くて(中略)そのためのアルゴリズム・・・という工夫を実装において考えられるか
  2. 誰もが欲しいと思うものは既に用意されているだろうという想像力を発揮してサボれるか


結局、コードを書くときに一番大事なのはそういう能力であって、間違っても努力気合じゃないってこと。

最後に、各質問の正解例を書いてみるとこんな感じ。


  1. n(n+1)/2
  2. 求めたい年の2月29日0時0分0秒をtimelocal()的な関数に放り込んで、結果がエラーだったら閏年じゃない


願わくば、こんなのよりもっと驚くような回答をする人と仕事したいっす。

記事への反応(ブックマークコメント)

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん