コンピュータ科学に関する基礎的な質問
筆者は長い間、「プログラマー」を名乗る人であれば誰でも、コンピュータ科学に関する一定レベルの基礎知識を有しているものだと思っていた。しかし、そんなことはまったくない(!)ということが分かった。開発者であれば必ずコンピュータ科学の学位を持っているわけではないものの、開発者は皆、一定レベルの基礎的な知識を有していて然るべきである。こういった知識は日々のプログラミングで必ず必要となるわけではないものの、開発者であれば理解しておかなければいけないはずである。基礎的な知識の有無を判定する質問の例として、以下のようなものを挙げることができる。
- 「等値」と「等価」の違いを説明してください(この質問はTechRepublicのTony Patton氏に教えてもらったものである)。
- 「値渡し」と「参照渡し」の違いは何ですか?オブジェクト指向システムや手続き型システムにおいて、これらにはどのような違いが存在するのかを説明してください。
- 「ポリモーフィズム」とは何かを説明してください。
- 「悲観的ロック」と「楽観的ロック」を比較し、違いを明確に述べてください。
これらの質問のうち、最初の2つに答えられない応募者は、どう考えても「入門者レベル」ということになる。また残り2つの質問は、「中級」開発者であれば答えられるはずである。