自分ならどんな風に使うのかちょっと考えてみました。
こちらの想定は、
新入社員や中途採用の方向けを想定しています。
(分けて言わなきゃいけないことに違和感が…)
元の記事と前提が違うので、
違う結果になっていますが…まあそんな感じです。
まずは問題を2部構成ぐらいにしたいです。
- FizzBuzz相当の問題を解かせる。
- そこから何らかのお題を出してソースコードを変形させる。
でしょうか。
基本的にFizzBuzzは機械的にできなきゃ来るなと言って差し支えないレベルです。
採用したいレベルはさらにその上にあるので、
もう少しひねってやる必要があります。
じゃあなんで最初から難しい問題にしないのかというと、
ウォーミングアップとか、
頭をプログラミング用に切り替えるまでの準備とかです。
ではお題を出しましょう。
すぐに思いつくのは、
- ここから抽象化してみてください。
- ここからを高速化してみてください。
- ここからを省メモリ化してみてください。
でしょうか。
通常は1ですが、
シビアなスペックを要求するなら2や3もありでしょう。
このときのポイントは、
考え方を説明してもらいながら変形してもらうことです。
その人のコーディングに対する姿勢の鱗片が見えると思います。
1として考えてみましょう。
とりあえず、
関数化なりクラス化なりしないのはかなりまずいです。
1~100の部分をRangeクラスにしようと考える人は、
相当にオブジェクト指向が至高の思考にどっぷりな人でしょうか。
そもそも数値が連続していないかもと考え、
コレクションで用意してやるような人もいるでしょう。
倍数の判定もn個あるかもしれないと考えた人は、
判定もループさせなければならないことに気がつくのかな?
そもそも倍数の判定以外も入れたくなるだろうから、
倍数判定の関数を引数で渡そうと考え出せば、
この人は関数型の考えに足を踏み入れたことになるでしょう。
ここらへんは、
その会社が求めたい人材に合わせて評価してあげてください。
大事なのは、
自分の会社に近いレベルを選ぶということです。
高すぎるのもアウトだと思ってください。
あまりにハイレベルな人にExcel方眼紙を書かせたりしてみなさい。
すぐに去ってしまうことでしょう。
それに一人だけ関数型を完璧に使いこなせたとしても、
回りがついてこられなければ同様に去られてしまうでしょう。
※例え仕事で使われることが無かったとしても。知っているだけで違うことが、確かにあります。
このレベルを要求するのが、
ごく少数の企業でありませんように。
0 件のコメント:
コメントを投稿