面接で行う質問ですが、当社では、システム開発経験者が面接官を務めますので、テクニカルな質問が用意されています。まずは、コンピュータ科学に関する基本的な質問です。
◆コンピュータ科学に関する基本的な質問◆
引用元の記事では、
★「等価」と「等値」の違いを説明せよ。
★「値渡し」と「参照渡し」の違いを説明せよ。
★「ポリモーフィズム」について説明せよ
★「悲観的ロック」と「楽観的ロック」について違いを述べよ。
などが、挙げられているが、答えられなければ初心者だと言って良い。元記事にもそのように書かている。もちろん、上に挙げた問題は、公開しちゃったので、今後は出ないと思います。たぶん…。
ホワイトボードプログラミング
これは、応募者に問題を出して、それを解決するロジックを示してもらうために、ホワイトボードに擬似コードを記述してもらうものだ。以前はやってたのだが、プログラマによって得意範囲が異なるので、得意分野でない問題が提示されたときは悲惨な結果となるが、それが応募者の技量を正しく示しているわけではないので、やらなくなってきた。ちなみにだが、もと記事にある「ループを使わずに配列の順序を逆にする」というのはかなり話題になっているようで、回答例は「ループも再起も継続も使わずに配列のの順序を逆にする」に出ている。
コードのレビュー
応募者にコードを示し、レビューを求めるものだ。昔はこれをよくやっていた。もちろん、そのコードにはバグが潜ませてあるので、それを見つけ出せるか否かを見るものだ。当たり前だが、全角スペースのような意地悪な問題は出さない。Cで書かれたコードで、コンパイルは通るが正しく動作しないというものを用意していた。ただ、最近はCを使える応募者が少なくなってきているので、JavaかPythonで書いたサンプルコードを用意しないと行けない。とは思っているが用意はできていないので、たぶん、このテストはない。ただし、Cプログラマは気をつけた方が良いような気はする。
経験を吟味する
詳しくは、参考とした記事の4ページ目、面接官のSusanと応募者Kevinのやりとりを見て欲しい。このやりとりを見れば、システム開発経験者は、Kevinの力量を正しく判定できると思う。開発経験のない面接官では、これで何が分かるのかが分からないらしいのだが…。