[解決済み】優れた.NET開発者なら答えられるはずの質問?[クローズド]
質問
私の会社では、これから採用する .NET開発者 . 私たちは様々な.NETプラットフォームで仕事をしています。ASP.NET、Compact Framework、Windowsforms、Web Servicesなど、さまざまな.NETプラットフォームに取り組んでいます。応募者が経験豊富かどうかを見るための最低基準のような、良い質問のリスト/カタログを編集したいのですが、どうすればいいですか?そこで、質問です。
どんな質問 が良いと思いますか? .NETプログラマーが答えられるようになるには ?
という見方もできますね。 チェックリスト 自分自身のために、どこに欠陥があるのかを確認するために (たくさんありますが...) .
*UPDATE:私たちは.NETの知識だけをテストしているわけではなく、問題解決能力と一般的なプログラミングスキルがより重要であることを明確にしたいと思います。
どのように解決するの?
基本的な質問は以下の通りです。
- 抽象クラスとインターフェースの違いは何ですか?また、どのような場合に使用するのでしょうか?
- 左結合と内側結合の違いは何ですか?
- viewstateとsessionstateの違いは何ですか?
- メソッドをオーバーライドすることとオーバーロードすることの違いは何ですか?また、どのようにオーバーライドするのか説明してください。
- protectedとinternalの違いは何ですか?protected internal"はどうですか?
- 短絡演算子はどのような仕組みになっていますか?
- StringBuilderクラスとは何か、なぜそれを使いたいのかを説明してください。
- 静的メソッドと非静的メソッドの違いは何ですか?
- C#のキーワード「"volatile"」は、どのような意味を持つのでしょうか?
- メソッドに "ref" または "out" パラメータを渡すと何が起こるかを説明します。 この2つのキーワードはどう違うのですか? ?
- weakreferenceって何?どんなときに使うの?
- DataTableとDataReaderの違いは何ですか?
- 値域型と参照型の違いは何ですか?
- C#のキーワード「"readonly"」は、どのような意味を持つのでしょうか?
通常、応募者に次のような簡単なコーディングの練習をさせるのが効果的だと思います。
- 組み込みのクラスを使用せずに、独自のリンクリストクラスを作成する。
- 組み込みクラスを使わずにハッシュテーブル・クラスを作成する。
- 二分木を表現するクラスを作成する。ツリーのすべてのノードを走査するメソッドを作成しなさい。
- 組み込みメソッドを使用せずに、配列のバイナリサーチを行うメソッドを作成しなさい。
- ブログのデータベーススキーマを描く。各ユーザは1つのブログしか持たず、各ブログは多くのカテゴリを持ち、各カテゴリは多くの投稿を持ち、各投稿は複数のカテゴリに属することができる。応募者には、特定の情報を引き出すためのクエリを書いてもらいましょう。
次に、具体的な技術的ノウハウを求めます。
- (イベントハンドラ)カスタムイベントハンドラを持つクラスを作成し、そのカスタムイベントハンドラにフックする別のクラスを作成します。
- (XML) XML 文書を読み込み、プロパティ x、y、z を持つすべてのノードを選択します。
- (関数型プログラミング)他の関数をパラメータとして受け取る関数を作成します。Map関数やFold関数は、このような場合にとても効果的です。
- (Reflection)あるクラスが特定の属性を持つかどうかを判断する関数を書け。
- (Regex) HTMLのブロックからすべてのタグを削除する正規表現を書きなさい。
どれも熟練したC#プログラマーが答えるには特に難しい問題ではありませんし、応募者の特定の強みを知ることができるはずです。また、特定のデザインパターンを利用した質問・コードサンプルをいくつか組み込んでおくとよいでしょう。
[明確化のための編集]。 :
なぜこのような質問をするのか、多くの人が理解できないようです。いくつかの人のコメントに触れてみましょう(直接引用するのではなく、言い換えています)。
Q: 最後に揮発性物質や弱いリファレンスを使った人はいつですか?
A: 私が技術面接をするとき、その人が高度な技術を理解しているかどうかを見ます。 と .NETの低レベルの機能です。揮発性物質と弱い参照は、.NETが提供する2つの低レベルの機能です。これらの機能が実際にはあまり使用されないとしても、これらの質問に対する回答は非常に分かりやすいものです。
-
volatilesをよく理解しているということは、コンパイラの最適化によってコードの正しさがどのように変わるか、スレッドが共有状態のローカルコピーを保持し、それらが任意の時点で同期していない可能性があることを理解しており、マルチスレッドコードの複雑さのいくつかを最低限認識していることを示しています。
-
弱参照をよく理解しているということは、ガベージコレクタの詳細と、ガベージコレクタがどのようにメモリの解放時期を決定するかについて知っていることを示しています。もちろん、候補者に「ガベージコレクタはどのように動作するのか」と尋ねることもできますが、弱参照について尋ねると、より良い、より思慮深い返答を得ることができます。
.NETはかなり抽象的な言語ですが、優秀な開発者はほとんどの場合、CLRと.NETのランタイムの低レベルの詳細について深い理解を持っています。
Q: なぜ、独自のハッシュテーブルやリンクリストを実装する必要があるのでしょうか?
A: 私は、Dictionaryクラスが劣っているとか、人々は自分でハッシュテーブルをロールバックするべきだとほのめかしているわけではありません。これは基本的な質問であり、その人が 最小限の データ構造について理解している。それがこの質問で試されることです:最低限の理解です。
このハッシュテーブルやリンクリストについては、データ構造101の初日に習いますよね。もし、ハッシュテーブルやリンクリストをゼロから書けない人がいるとしたら、その人は 巨大 技術的な知識にギャップがあるのです。
Q: なぜ、このようなクドイ質問をするのでしょうか?
A: このスレッドのタイトルは「優秀な.NET開発者が知っておくべき質問"」ですから。すべての.NET開発者は、粗悪なアプリケーションを書くことからキャリアを始めますが、人々が生活のために行うすべてのアプリケーション開発の90%は、業務用アプリケーションに関係しています。
コンパイラ開発、ゲームエンジン開発、定理証明、画像処理など、非常に特殊なニッチ分野の開発者を求めているのでなければ、業務用アプリケーションの知識を問う質問はほとんどの場合において適切であると思います。
関連
-
[解決済み】プラットフォームが同じでも「不正なフォーマットでプログラムを読み込もうとしました。
-
[解決済み】この動詞型ではcontent-bodyを送信できない
-
[解決済み] <Database> コンテキストを支えるモデルが、データベース作成後に変更されました。
-
[解決済み] LINQ to Entitiesはメソッドを認識しません。
-
[解決済み] WinSCP 応答待ちタイムアウト
-
[解決済み] Moq Callbackについて教えてください。
-
[解決済み] 埋め込みリソーステキストファイルの読み方
-
[解決済み] プライベートメソッドのユニットテストはどのように行うのですか?
-
[解決済み] HashSetとListの性能比較
-
[解決済み】いくつかの良い.NETプロファイラーとは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] WCF エラーの解決。このサービスのメタデータパブリッシングは現在無効になっています。
-
[解決済み] スマートクライアント・ソフトウェアファクトリーの体験談
-
[解決済み] Nuget接続の試行に失敗しました。"Unable to load service index for source"。
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] プロセスとスレッドの違いは何ですか?
-
[解決済み] MemoryStreamから文字列を取得する方法は?
-
[解決済み] 抽象クラスの代わりにインターフェイスを使用する場合とその逆は?
-
[解決済み] .NETにおけるrefパラメータとoutパラメータの違い【重複】について
-
[解決済み] ボクシングとアンボクシング、そのトレードオフとは?
-
[解決済み] 優れたJava/Java EE開発者が答えるべき質問とは?[クローズド]