最近、NET 開発に従事していた友人が退職し、新しい課題に取り組む準備ができるように、NET に関連する面接の質問をいくつか見つけてほしいと頼まれました。
以前に検索したさまざまなガイドやテストの質問をすぐに見つけて、今日はNETに関する基礎知識のポイントを整理しました。
1. オブジェクト指向言語の 3 つの主要な機能: カプセル化、継承、ポリモーフィズム
2. インターフェイスとクラスの類似点と相違点:
相違点:
①インターフェイスは直接インスタンス化できません。
②インターフェースにはメソッドや属性の宣言のみが含まれており、メソッドの実装は含まれません。
③インターフェースは多重継承が可能ですが、クラスは単一継承のみです。
④式の意味は異なります。インターフェースは主に仕様を定義し、メソッドを一律に呼び出します。つまり、クラスはメソッドの機能の実現と集合です
同じ点:
①インターフェース、クラス、構造体はすべて可能です。複数のインターフェースから継承して使用できます。
②インターフェイスは抽象基本クラスに似ており、インターフェイスを継承する非抽象型はインターフェイスのすべてのメンバーを実装する必要があります。
③インターフェイスとクラスの両方に、イベント、インデクサー、メソッド、プロパティを含めることができます。
3. 抽象クラスとインターフェースの類似点と相違点は何ですか? ①継承: インターフェースは多重継承をサポートします。
②概念の表現:インターフェースは仕様に使用され、コントラクトに重点が置かれ、抽象クラスは共通性に使用され、親と子が強調されます。抽象クラスは、物事のクラスを高度に集約したものであるため、抽象クラスを継承するサブクラスの場合、抽象クラスの場合は「Is A」関係に属しますが、インターフェイスは動作規範を定義し、「Can Do」関係を強調します。したがって、インターフェイスを実装するサブクラスの場合、インターフェイスと比較して、「動作はインターフェイスに従って完了する必要があります」。
③メソッドの実装:抽象クラスのメソッドの場合は実装部分を与えても与えなくてもよいが、インターフェースメソッド(抽象ルール)の場合は実装部分を与えることができず、インターフェース内のメソッドを変更することはできない。
④ サブクラスの書き換え: 継承クラスは、この 2 つに関与するメソッドの実装が異なります。継承されたクラスは、抽象クラスによって定義された抽象メソッドを書き直す必要はありません。つまり、抽象クラスのメソッドは拡張できますが、インターフェイス クラスによって定義されたメソッドまたは属性については、それらを書き換える必要があります。継承されたクラスに対応するメソッドとプロパティが実装されます。
⑤新しいメソッドの追加の影響: 抽象クラスでは、新しいメソッドが追加された場合、継承されたクラスをインターフェイスの処理に使用する必要はなく、新しく定義されたメソッドを提供するために継承されたクラスを変更する必要があります。方法。
⑥インターフェイスは値型(列挙型はインターフェイスを実装できる)と参照型に対して動作できますが、抽象クラスは参照型に対してのみ動作します。
⑦インターフェースにはフィールドと実装されたメソッドを含めることはできません。インターフェースにはメソッド、プロパティ、インデクサーのシグネチャのみが含まれ、抽象クラスはフィールド、プロパティ、実装されたメソッドを定義できます。
4. virtual、sealed、override、abstractの違い
①Virtualは、メソッドをオーバーライドできることを示す、virtualメソッドのキーワードを宣言します
②Sealedは、クラスを継承できないことを示します
③Overrideは、メソッドをオーバーライドします基本クラス
④抽象クラスと抽象メソッドのキーワードを宣言します。抽象メソッドは実装を提供せず、抽象クラスによって実装されます。
5. オーバーライドとオーバーロードの違いは何ですか? オーバーロード: メソッドのオーバーロードは、クラスに同じ名前でシグネチャが異なる 2 つのメソッド (同じメソッド名、異なるパラメーター リスト) が含まれている場合に発生します。メソッドのオーバーロードを使用して、同じセマンティクスを実行するが異なる機能を持つメソッドを提供します。 (1つのクラスに複数のメソッド)
書き換え:クラスの継承で使用され、サブクラスのメソッドをオーバーライドすることで親クラスの仮想メソッドの実装を変更できます。 (2クラス以上)
6. 構造体とクラスの違い
① 構造体は値型、クラスは参照型
② 構造体は自由なコンストラクター、デストラクターをサポートせず、保護することはできません③ 構造体は多くの場合データストレージに使用され、クラスは主に動作に使用されます
④ クラスはオブジェクトをインスタンス化するために new キーワードを使用する必要がありますが、struct は new キーワードを使用する必要はありません ⑤ クラスは抽象クラスにすることができますが、struct はサポートしません。 it Abstract;
7. out と ref の類似点と相違点
①ref は使用前にパラメータを明示的に初期化する必要があり、out はメソッド内で初期化する必要があります
②out は、retrun が複数の戻り値を必要とする場合の使用に適しています。 ref 呼び出されたメソッドが呼び出し元の参照を変更する必要がある場合に使用されます。
③refには受信関数と送信関数があり、outはoutのみでinはできません(refはパラメータの値を関数に渡すことができますが、outはパラメータをクリアする必要があるため、outから値を渡すことはできません)。 outがinになる その後パラメータの値は空になります)
8. 値型と参照型の違い
①値型:実データを含む量です。つまり、値型の変数を定義すると、C# は宣言された型に基づいてスタック方式で適切なサイズの記憶領域を変数に割り当てます。この変数に対する後続の読み取りまたは書き込み操作は、このメモリ内で直接実行されます。エリアに進みます。
②参照型:参照型変数は、それが表す実際のデータを格納するのではなく、実際のデータへの参照を格納します。
参照型は 2 つのステップで作成されます。まずスタック上に参照変数を作成し、次にヒープ上にオブジェクト自体を作成し、次にこのメモリのハンドル (メモリの最初のアドレスも) を参照変数に割り当てます。
9. アンボックス化とボックス化とは何ですか? ボックス化→値型を参照型に変換、アンボックス化→参照型を値型に変換します。
10. ボックス化とボックス化解除によるパフォーマンスへの影響は何ですか?どうやって解決すればいいでしょうか?
①影響: どちらもメモリの割り当てとオブジェクトの作成に関係し、パフォーマンスに大きな影響を与えます。
②解決策: ジェネリックを使用します
11. デリゲートとは何ですか?イベントはコミッションですか?
①デリゲート:CやC++の関数ポインタに似ており、メソッドをパラメータとして渡すことができます(メソッドをパラメータとして別のメソッドに置き換えることができます)
②イベントは特別なデリゲートであり、イベントは内部的にデリゲートに基づいています。実装されました。
12. コンストラクターは継承できますか?上書きすることはできますか?
コンストラクターは継承できないのでオーバーライドはできませんが、オーバーロードは可能です
13. Stringクラスは統合できますか?
Stringクラスはfinalクラスなのでstringクラスを継承することはできません。
14. スレッドがオブジェクトのメソッドに入るとき、他のスレッドもそのメソッドに入ることができますか?
いいえ、オブジェクトのメソッドには 1 つのスレッドからのみアクセスできます。
15. 2 × 8 を計算する最も効果的な方法を使用します。
2
16. エラーと例外の違いは何ですか?
エラーは、回復が不可能ではないが、非常に困難であることを意味します。例外は、プログラムが正常に実行できないことを意味します。
17. UDP 接続と TCP 接続の類似点と相違点は何ですか?
①TCPは、コネクション指向で信頼性の高いバイトストリームサービスを提供する伝送制御プロトコルであり、タイムアウトリダイヤル機能とデータ検証機能を提供します。
②UDPはUser Datagram Protocolであり、単純なデータグラム指向の送信プロトコルであり、信頼性の低い接続です。
18. newキーワードの使い方
①new演算子はオブジェクトの作成とコンストラクターの呼び出しに使用されます。
②new 修飾子は、継承されたメンバーを基本クラスのメンバーから隠すために使用されます。
③新しい制約は、ジェネリック宣言で型パラメータとして使用されるパラメータの型を制約するために使用されます。
19. using キーワードの使い方
①名前空間を参照する;
②名前空間または型のエイリアスを作成する(using + alias = 詳細な名前空間情報を含む特定の型)
③リソースを解放する(ファイルストリームを閉じる) 20. アクセシビリティレベルは何ですか? ① パブリックアクセスは無制限です。
②保護されたアクセスは、包含クラス、または包含クラスから派生した型に限定されます。 ③内部アクセスは現在のアセンブリに限定されます。 ④保護された内部アクセスは、現在のアセンブリまたは包含クラスから派生した型に制限されます。 ⑤プライベートアクセスは包含型に限定されます。 21. 数字の列のルールは次のとおりです: 1、1、2、3、5、8、13、21、34... 30 番目の桁を見つけ、再帰アルゴリズムを使用してそれを達成します。 22. バブルソート以上が面接の質問に対する C# サンプル チュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。