Microsoftのような大企業のほとんどは、主にデータ構造に焦点を当てています。データ構造が卒業生に期待される唯一のものであるかのように見えます。
いいえ、まだあります。たとえば、短期間で新しいフレームワーク、API、またはプログラミング言語を学ぶことができる素早い学習者になることも期待しています。それは最低限のバーです。新しいフレームワーク、API、または言語を習得するのに時間がかかる人は、Microsoftのほとんどのチームで成功する開発者にはなりません。
そしてもちろん、インタビューでは、データ構造の生の知識だけでなく、もっと多くの側面に焦点を当てています。たとえば、あいまいな仕様に対処する機能、または安全でないコードを生成するコーディングパターンなどを認識する機能。しかし、データ構造を理解する能力は確かに非常に大きなものです。
それは特にインタビューは最近CSの卒業生のためのデータ構造のテストの知識に偏っている場合。最近の卒業生は、そのほとんどが実際の経験をあまり持っていないため、15年の業界経験を持つ人が得意とするのと同じ種類のことを上手には期待されていません。
私はデータ構造がそれほど強くなかったことを告白しなければなりません
自分自身について知っているのは良いことです。自分についてそれを変更できない、または変更したくない場合は、データ構造を持つ機能を必要とするジョブには応募しないことをお勧めします。
優れたプログラマーは必然的にデータ構造についての十分な知識を持つプログラマーであるという一般的な見方があります。
優れたプログラマーとは、構築する必要のある種類のプログラムを構築するのが得意なプログラマーであるということです。多くのプログラマーは、データ構造の深い知識を必要としないタスクに取り組んでいます。それらのいくつかは、たとえば、ユーザーインターフェイス設計の深い知識を必要とするタスクで動作します。またはデータベースの正規化。または何でも。それらの人々は、まだ彼らの領域で「良いプログラマー」でありえます。
なぜこれがすべてデータ構造に重点を置いているのですか?
私のチームでは開発者が毎日複雑なデータ構造を設計、実装、操作しているため、データ構造に関するインタビューの質問をしています。昨日、4時間の会議があり、6人の開発者が特定のツリーノードに単一のブールフィールドを追加することの長所と短所について議論しました。私のチームには、データ構造を深いレベルで理解する能力よりも重要なスキルはおそらくないでしょう。それについて面接で質問しないのは愚かなことです。
データ構造の知識がないと、プログラミングのキャリアに本当に影響しませんか?
まあそれは確かにあなたが私のチームに就職することを妨げるでしょう。しかし、前に言ったように、プログラミングは大きな分野です。データ構造の知識を必要としない多くの種類のコンピュータープログラミングがあります。
このテーマの知識は本当に良いプログラマと悪いプログラマを区別するのに十分な基礎ですか?
いいえ。ただし、ほとんどの場合、Microsoftで成功する可能性が低い開発者を検出するだけで十分です。それが私が検出することに主に興味を持っているので、データ構造の知識はインタビューで私がテストする要因の1つです。