2013年5月28日火曜日

自分がFizzBuzzを採用に使うなら

FizzBuzzを入社試験に出したらどこを見るかを読んで、
自分ならどんな風に使うのかちょっと考えてみました。

こちらの想定は、
新入社員や中途採用の方向けを想定しています。
(分けて言わなきゃいけないことに違和感が…)

元の記事と前提が違うので、
違う結果になっていますが…まあそんな感じです。



まずは問題を2部構成ぐらいにしたいです。

  1. FizzBuzz相当の問題を解かせる。
  2. そこから何らかのお題を出してソースコードを変形させる。
でしょうか。

基本的にFizzBuzzは機械的にできなきゃ来るなと言って差し支えないレベルです。

採用したいレベルはさらにその上にあるので、
もう少しひねってやる必要があります。

じゃあなんで最初から難しい問題にしないのかというと、
ウォーミングアップとか、
頭をプログラミング用に切り替えるまでの準備とかです。



ではお題を出しましょう。

すぐに思いつくのは、
  1. ここから抽象化してみてください。
  2. ここからを高速化してみてください。
  3. ここからを省メモリ化してみてください。
でしょうか。

通常は1ですが、
シビアなスペックを要求するなら2や3もありでしょう。

このときのポイントは、
考え方を説明してもらいながら変形してもらうことです。

その人のコーディングに対する姿勢の鱗片が見えると思います。



1として考えてみましょう。

とりあえず、
関数化なりクラス化なりしないのはかなりまずいです。

1~100の部分をRangeクラスにしようと考える人は、
相当にオブジェクト指向が至高の思考にどっぷりな人でしょうか。

そもそも数値が連続していないかもと考え、
コレクションで用意してやるような人もいるでしょう。

倍数の判定もn個あるかもしれないと考えた人は、
判定もループさせなければならないことに気がつくのかな?

そもそも倍数の判定以外も入れたくなるだろうから、
倍数判定の関数を引数で渡そうと考え出せば、
この人は関数型の考えに足を踏み入れたことになるでしょう。



ここらへんは、
その会社が求めたい人材に合わせて評価してあげてください。

大事なのは、
自分の会社に近いレベルを選ぶということです。

高すぎるのもアウトだと思ってください。

あまりにハイレベルな人にExcel方眼紙を書かせたりしてみなさい。

すぐに去ってしまうことでしょう。

それに一人だけ関数型を完璧に使いこなせたとしても、
回りがついてこられなければ同様に去られてしまうでしょう。
※例え仕事で使われることが無かったとしても。知っているだけで違うことが、確かにあります。



このレベルを要求するのが、
ごく少数の企業でありませんように。


0 件のコメント:

コメントを投稿