基本的な質問は次のとおりです。
通常、応募者に次のような簡単なコーディング演習を完了するように依頼すると役立つと思います。
- 組み込みクラスを使用せずに、独自のリンクリストクラスを記述します。
- 組み込みクラスを使用せずに、独自のハッシュテーブルクラスを記述します。
- バイナリツリーを表すクラスを記述します。ツリーのすべてのノードをトラバースするメソッドを記述します。
- 組み込みメソッドを使用せずに配列に対してバイナリ検索を実行するメソッドを記述します。
- ブログのデータベーススキーマを描画します。各ユーザーは1つのブログのみを持ち、各ブログには多くのカテゴリがあり、各カテゴリには多くの投稿があり、各投稿は複数のカテゴリに属することができます。特定の情報を引き出すためのクエリを書くよう申請者に依頼してください。
次に、特定の技術的ノウハウを探します。
- (イベントハンドラー)カスタムイベントハンドラーでクラスを作成し、カスタムイベントハンドラーにフックする別のクラスを作成します。
- (XML)XML文書をロードし、x、y、zのプロパティを持つすべてのノードを選択します。
- (関数型プログラミング)別の関数をパラメーターとして受け入れる関数を作成します。Map関数またはFold関数は、これに非常に適しています。
- (リフレクション)クラスに特定の属性があるかどうかを決定する関数を記述します。
- (正規表現)HTMLのブロックからすべてのタグを削除する正規表現を記述します。
これらはどれも、熟練したC#プログラマが答えるのが特に難しい質問ではなく、応募者に特定の長所についての良い考えを与えるはずです。また、特定のデザインパターンを利用するいくつかの質問/コードサンプルで作業することもできます。
[説明のために編集]:
多くの人がなぜ私がこのような種類の質問をするのか理解していないようです。いくつかの人々のコメントに触れさせてください(直接引用するのではなく、言い換えます):
Q:揮発性または弱い参照を最後に使用したのはいつですか?
A:技術面接を行うとき、.NET の高レベルおよび低レベルの機能を理解しているかどうかを確認します。揮発性と弱参照は、.NETによって提供される2つの低レベルの機能です。これらの機能が実際に頻繁に使用されない場合でも、これらの質問に対する回答は非常に明らかになります。
揮発性の十分な理解は、コンパイラの最適化がコードの正確さをどのように変更するか、スレッドが共有状態のローカルコピーを保持する方法を理解していることを示し、マルチスレッドコードの複雑さの一部を最小限に認識します。
弱い参照を十分に理解すると、ガベージコレクタの詳細と、メモリを解放するタイミングを決定する方法を知っていることがわかります。確かに、候補者に「ガベージコレクターはどのように機能するのか」と質問することもできますが、弱い参照について質問すると、はるかに優れた、より思慮深い回答が得られます。
.NETはかなり抽象的な言語ですが、スター開発者はほとんど常にCLRと.NETのランタイムの低レベルの詳細を深く理解しています。
Q:なぜ誰もが独自のハッシュテーブルまたはリンクリストを実装する必要があるのですか?
A:私は、Dictionaryクラスが劣っている、または人々が自分のハッシュテーブルを転がすべきだと言っているのではありません。これは、人がデータ構造について最小限の理解しか持っていないかどうかをテストする基本的な質問です。それがこれらの質問がテストするものです:最低限の理解。
データ構造101の初日にこれらのハッシュテーブルとリンクリストについて学びます。ハッシュテーブルまたはリンクリストを最初から作成できない場合、技術的な知識に大きなギャップがあります。
Q:これらの質問はなぜそんなにクラッド指向なのですか?
A:このスレッドのタイトルは「すべての優れた.NET開発者が知っておくべき質問」であるためです。すべての.NET開発者がキャリアアプリの作成を開始し、人々が生活のために行うすべてのアプリケーション開発の90%は、基幹業務アプリケーションに関係しています。
コンパイラーの開発、ゲームエンジンの開発、定理の証明、画像処理など、非常に具体的なニッチな開発者を探しているのでなければ、ほとんどの場合、基幹業務アプリに関する個人の知識をテストする質問が適切だと思います。 。