真 もわ爛漫

しゃーら、しゃーらしゃーら

Programming Interviews Exposed

http://www.amazon.com/dp/047012167X

日本の会社もこんくらいはやって欲しいなぁと思う感じ。

アメリカのITな会社がプログラマというかその界隈を雇う際にどういう流れで雇っていて、学生とかインドから来る人とかがどういう態度で挑めば良いのか書いてある。服装とか、レジュメとか。あとコーディングの話は割と多い。

コーディングに関連する部分は、非常に基礎的なADT (抽象データ型) な話ばかりでしかも超が付く基本。例えばLinked ListとArrayとかそういう。Tree, Binary Tree, Heapとかそういう。それでいてBalanced Treeについての解説はない。ナイスすぎて吹く。グラフもある。でもダイクストラすら説明がない。ナイス過ぎてことごとく吹く。文字列もある。言語毎のstringの宣言方法とかだったりして吹く。並行処理もある。何故かここだけCとC++はまるで出てこないでsynchronizedを使うので吹く。

コーディングについて言えば、大学でCSやっててこの本のコーディングサイドの内容が分からなかったら恥じてよく、こんくらい出来なかったら日本のプログラマであっても総じて恥じて良い。これができたからと言って、多分全然すごくない気がする。

逆に好意的な見方をすれば、そういう本ってほとんどないんだよね、と。プログラミングコンテストだと逆にアルゴリズムは強力だけど会社で使えるという意味でのデザインはお粗末になるし、基本的な言語入門書だとしばしばADTを書く部分は言語を使う例として所与になるし (こういうデータ構造をこの新しい言語で「書いてご覧」なんてことにはあんまりならない。演習でちょっとあるとかは分かる)、大学の授業は多分社会人には辛い。そう考えれば、このあたりから始めるのは、まぁありといえばあり。それで満足されたらそれはそれで困るわけだけど。

パズル (brainteaser) についてのページも結構ある。まぁなんだかんだでメジャーだよね、と。多分『ビル・ゲイツの面接試験』の影響が強い。

色々と疑問に思いつつ「プログラマー面接」と関係なく面白かったネタ。

You are standing in a hallway next to three light switches, all of which are off. Each switch operates a different incandescent light bulb in the room at the end of the hall. You cannot see the lights from where the switches are. Determinate which light corresponds to each switch. You may go into the room with the lights only once.

プログラマーの面接についてはジョエルも書いてた。例えば以下みたいな。

http://japanese.joelonsoftware.com/Articles/Interviewing.html
採用面接ゲリラガイド(version 3.0) - The Joel on Software Translation Project

個人的にはジョエルの話のほうがストレートで良い、ということで以下の本をおすすめ。ただ、受ける側が即座に実行出来るアクションアイテムがないので、面接受ける側にとってはなかなか困る話だね

http://www.amazon.co.jp/dp/4798115827/mowanetjp-22