このサイトを読んで、候補者がリンクリストを最初から実装しなければならないと言ったインタビューの質問と回答の多くの物語を見てきました。通常、これはFizzBuzzを書くようなロール候補者をプログラミングするための「ギミー」演習です。候補者がこれを行うことができない場合、彼らはプログラムすることができず、ほぼすぐに拒否されるべきであるという考えです。
ただし、次の理由から、これは悪い練習になると思わずにはいられません。
- C#やPythonなどの最新の高レベル言語は、ネイティブでリストを広く使用しています。独自のリンクリストオブジェクトの作成は、通常とは異なる状況でのみ必要であり、それでもおそらく不適切です。
- C ++のような低レベル言語には、イテレータ/リストコンテナとオブジェクトを備えた標準ライブラリがあります。
- 最初の2つのポイントに照らして、コーダーはリスト(リンク、二重リンクなど)を実装することさえ考えずに何年も行くことができます。大学時代からそのようなものを見ることさえない人もいます。
- コンピューティング能力も数年前の要因ではないため、ポインターを介した効率は以前の問題ではありません(一般的に)。
- 「リンクリストの例」のような単純なWeb検索では、多くのコード例が表示されますが、それらは暗記し、吐き出すだけで、申請者の真の能力を示すものではありません。
リンクされたリストを使用して、自由回答形式の質問/候補者の問題解決/批判的思考能力の議論につながることは、ほとんどの場合、非常に優れた面接の練習です。面接担当者は、応募者がどのようなもので、どのように考えると非常に有益であるかを実際に見ることができます。
デスクトップまたはWebアプリケーションで作業するプログラマーのための「リンクリストコードも仕事もない」というこのバイナリアプローチは少し時代遅れだと思います。また、非常に有害な場合もあります。リストの先頭で適切に作業する方法を覚えていない候補者は、そうでなければ優れたコーダーおよび同僚であり、ミックスで失われる可能性があります。考え?
編集:これが尋ねるべき良い質問か悪い質問かは、仕事の文脈に依存することを示唆する多くの(良い)コメントがあります。私は強く同意するので、この質問を言い換えてみましょう:リンクリストの実装は、FizzBuzzや階乗を計算するための再帰関数を書くような質問に似た、幅広いコーディングジョブの一般的なインタビューの質問です。この質問には、プログラミングの候補を全面的に評価するために一般的に使用するのに十分なユーティリティがありますか?または、「シニア開発者、埋め込みリンクリストチーム」の職を除いて、尋ねるべき悪い質問を検討すべきですか?