編集部からのお知らせ
宇宙ビジネスの記事まとめダウンロード
記事まとめ「テレワーク常態化で見えたこと」

プログラマーの力量を見極める--面接官になったら尋ねるべき質問実例集

文:Justin James(TechRepublic) 翻訳校正:村上雅章・野崎裕子

2010-03-02 07:00

 ソフトウェア開発者を採用する面接の場においては、応募者の専門家としての力量を見極めることが最も困難な作業の1つである。彼らの考え方については、面接時に少しやり取りを行えばそれなりに見当が付くだろう。しかし、実際のプログラミング経験を推し量るのは至難の業だ。一部の企業では、さまざまなテストを実施することでこれを行おうとするものの、筆者の経験から言えば、こういったテストは近代的な開発環境では必要性が薄い知識(IDEのオートコンプリート機能や、F1キーの押下で表示されるヘルプ、インターネットといったものがあるため、ライブラリの知識は以前ほど重要ではなくなっている)の丸暗記能力を試すだけに終わることも多い。そこで本記事では、開発者を評価するうえでの優れた質問を紹介するとともに、なぜそれらが優れているのかを説明している。あなたが技術的な質問に対する返答を判定する自信がないというのであれば、上級開発者にも同席してもらえばよい。本記事で紹介している質問は汎用性のあるものとなっているため、あなたのプロジェクトに関する特定の質問を行うに先立って候補者を絞り込むために使用できるはずだ。

コンピュータ科学に関する基礎的な質問

 筆者は長い間、「プログラマー」を名乗る人であれば誰でも、コンピュータ科学に関する一定レベルの基礎知識を有しているものだと思っていた。しかし、そんなことはまったくない(!)ということが分かった。開発者であれば必ずコンピュータ科学の学位を持っているわけではないものの、開発者は皆、一定レベルの基礎的な知識を有していて然るべきである。こういった知識は日々のプログラミングで必ず必要となるわけではないものの、開発者であれば理解しておかなければいけないはずである。基礎的な知識の有無を判定する質問の例として、以下のようなものを挙げることができる。

  • 「等値」と「等価」の違いを説明してください(この質問はTechRepublicのTony Patton氏に教えてもらったものである)。
  • 「値渡し」と「参照渡し」の違いは何ですか?オブジェクト指向システムや手続き型システムにおいて、これらにはどのような違いが存在するのかを説明してください。
  • 「ポリモーフィズム」とは何かを説明してください。
  • 「悲観的ロック」と「楽観的ロック」を比較し、違いを明確に述べてください。

 これらの質問のうち、最初の2つに答えられない応募者は、どう考えても「入門者レベル」ということになる。また残り2つの質問は、「中級」開発者であれば答えられるはずである。

思考問題

 MicrosoftやGoogleといった企業が採用面接において応募者の問題解決能力を推し量るために行っている難しいテストがよく話題に上る。こういったテストはよく考えられており、有用であるものの、ほとんどのマネージャーや企業にとって、応募者にパズルを解かせる丸1日がかりのテストに時間を割く余裕などないというのが実情だろう。しかし、応募者がいかにうまく問題に立ち向かい、解決策を相手に伝えることができるのかを知っておくことは重要だ。筆者の経験から言うと、この種の質問の中で最も優れているのは「鶏の問題」である。筆者は約3年前の採用面接でこの質問を耳にした際、素晴らしい質問だと感心したものだ。具体的には、応募者に対して「自分の好きなようにできるとすれば、どのような鶏をデザインしますか?そしてその理由は何ですか?」と質問するわけである。この質問には「正しい答え」も「間違った答え」も存在しないものの、問題へのアプローチ方法を心得ている応募者であれば、詳しく回答できるはずである。また、応募者の中には「哲学者ぶって」(あるいはさらに悪い場合には非協力的な態度を示して)、「そもそも、鶏をデザインする必要が本当にあるのですか?」といった質問を返してくる者もいるだろう。こういった回答によって、仕事に対する彼らの姿勢をうかがい知ることもできるはずである。この質問は、上級開発者やソフトウェアアーキテクトの職を求めている人々に特に適している。もちろん、質問は鶏である必要はない。どのような動物でもよいし、何らかの機械であっても構わない。

ZDNet Japan 記事を毎朝メールでまとめ読み(登録無料)

特集

CIO

モバイル

セキュリティ

スペシャル

ホワイトペーパー

新着

ランキング

  1. クラウドコンピューティング

    MITスローン編著、経営層向けガイド「AIと機械学習の重要性」日本語版

  2. クラウドコンピューティング

    AWS提供! 機械学習でビジネスの成功を掴むためのエグゼクティブ向けプレイブック

  3. クラウドコンピューティング

    DX実現の鍵は「深層学習を用いたアプリ開発の高度化」 最適な導入アプローチをIDCが提言

  4. セキュリティ

    ランサムウェアを阻止するための10のベストプラクティス、エンドポイント保護編

  5. セキュリティ

    テレワークで急増、リモートデスクトップ経由のサイバー脅威、実態と対策とは

NEWSLETTERS

エンタープライズ・コンピューティングの最前線を配信

ZDNet Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]