C# 面接の質問と回答トップ 50 (2025)
新人および 2/3/5/10 年の経験者向けの C# 面接の質問と回答
ここでは、夢の仕事に就くための、新人だけでなく 5 年または 10 年の経験を持つ候補者向けの C# 面接の質問と回答を紹介します。
1) C# とは何ですか?
C# はオブジェクト指向でタイプセーフなマネージ言語であり、.Net Framework によってコンパイルされて Microsoft 中間言語。
2) コメントの種類を説明します。 C# 例を挙げて
単線
例:
//This is a single line comment
ii. 複数行 (/* */)
例:
/*This is a multiple line comment We are in line 2 Last line of comment*/
iii. XML コメント (///)。
例:
/// summary; /// Set error message for multilingual language. /// summary
3) 複数の catch ブロックを実行できますか?
いいえ、同様のタイプの複数の catch ブロックを実行することはできません。 適切な catch コードが実行されると、制御はfinally ブロックに転送され、その後、finally ブロックに続くコードが実行されます。
4) public、static、void の違いは何ですか?
パブリックに宣言された変数またはメソッドには、アプリケーション内のどこからでもアクセスできます。 静的に宣言された変数またはメソッドは、クラスのインスタンスを作成しなくてもグローバルにアクセスできます。 静的メンバーはデフォルトではグローバルにアクセスできず、使用される変更されたアクセスのタイプによって異なります。 コンパイラはメソッドのアドレスをエントリ ポイントとして保存し、オブジェクトが作成される前にこの情報を使用して実行を開始します。 Void は、メソッドまたは変数が値を返さないことを示す型修飾子です。
C# の面接での質問
5) オブジェクトとは何ですか?
オブジェクトは、クラスのメソッドにアクセスするためのクラスのインスタンスです。 「New」キーワードはオブジェクトを作成するために使用されます。 メモリ内にオブジェクトを作成するクラスには、そのクラスのメソッド、変数、および動作に関する情報が含まれます。
6) コンストラクターを定義する
コンストラクターは、クラスと同じ名前を持つクラス内のメンバー関数です。 コンストラクターは、オブジェクト クラスが作成されるたびに自動的に呼び出されます。 クラスの初期化中にデータ メンバーの値を構築します。
7) ギザギザ配列とは何ですか?
配列型の要素を持つ配列は、ジャグ配列と呼ばれます。 要素はさまざまな寸法やサイズにすることができます。 ジャグ配列を配列の配列として呼び出すこともできます。
8) ref パラメータと out パラメータの違いは何ですか?
ref として渡される引数はメソッドに渡す前に初期化する必要がありますが、out パラメータはメソッドに渡す前に初期化する必要はありません。
9) C# での 'using' ステートメントの用途は何ですか?
「using」ブロックは、リソースを取得して処理し、ブロックの実行が完了すると自動的に破棄するために使用されます。
10) シリアル化とは何ですか?
ネットワーク経由でオブジェクトを転送したい場合は、オブジェクトをバイトのストリームに変換する必要があります。 オブジェクトをバイトのストリームに変換するプロセスはシリアル化と呼ばれます。 オブジェクトをシリアル化可能にするには、ISerialize インターフェイスを実装する必要があります。 逆シリアル化は、バイト ストリームからオブジェクトを作成する逆のプロセスです。
11) 静的メソッド内で「this」コマンドを使用できますか?
静的メソッドでは静的な変数/メソッドしか使用できないため、静的メソッドでは「This」を使用できません。
12) 定数と読み取り専用の違いは何ですか?
定数変数はコンパイル時に宣言され、初期化されます。 後から値を変更することはできません。 読み取り専用は、実行時に値を割り当てる場合にのみ使用されます。
13) インターフェースクラスとは何ですか? その一例を挙げてください
インターフェイスはパブリック抽象メソッドのみを持つ抽象クラスであり、メソッドには宣言のみがあり、定義はありません。 これらの抽象メソッドは、継承されたクラスに実装する必要があります。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { interface Guru99Interface { void SetTutorial(int pID, string pName); String GetTutorial(); } class Guru99Tutorial : Guru99Interface { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID, string pName) { TutorialID = pID; TutorialName = pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Guru99Tutorial pTutor = new Guru99Tutorial(); pTutor.SetTutorial(1,".Net by Guru99"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
14) 値型と参照型とは何ですか?
値型は、独自のメモリ空間内にデータ値を保持します。 例
int a = 30;
参照型には、値が格納されているオブジェクトのアドレスが格納されます。 これは別のメモリ位置へのポインタです。
string b = "Hello Guru99!!";
15) カスタム コントロールとユーザー コントロールとは何ですか?
カスタム コントロールは、コンパイルされたコード (DLL) として生成されるコントロールで、使いやすく、ツールボックスに追加できます。開発者は、コントロールを Web フォームにドラッグ アンド ドロップできます。属性は、デザイン時に追加できます。カスタム コントロールは、複数のアプリケーション (DLL を共有している場合) に簡単に追加できます。そのため、カスタム コントロールがプライベートである場合は、DLL を Web アプリケーションの bin ディレクトリにコピーし、参照を追加して使用できます。
ユーザー コントロールは ASP インクルード ファイルに非常によく似ており、簡単に作成できます。ユーザー コントロールはツールボックスに配置したり、そこからドラッグ アンド ドロップしたりすることはできません。ユーザー コントロールには独自のデザインとコード ビハインドがあります。ユーザー コントロールのファイル拡張子は ascx です。
16) C# のシールド クラスとは何ですか?
継承するクラスを制限したい場合はsealedクラスを作成します。 クラスからの派生を防ぐために使用される Sealed 修飾子。 シールされたクラスを基底クラスとして強制的に指定すると、コンパイル時エラーが発生します。
17) メソッドのオーバーロードとは何ですか?
メソッドのオーバーロードとは、同じクラス内に一意のシグネチャを持つ同じ名前の複数のメソッドを作成することです。 コンパイル時に、コンパイラーはオーバーロード解決を使用して、呼び出す特定のメソッドを決定します。
18) 配列と配列リストの違いは何ですか?
配列には、同じ型の項目のみを含めることができます。 配列のサイズは比較時に固定されます。 arraylist は配列に似ていますが、固定サイズがありません。
19) プライベート仮想メソッドをオーバーライドできますか?
いいえ、クラス外からはアクセスできないためです。
20) アクセシビリティ修飾子「protected external」を記述します。
保護された内部変数/メソッドは、同じアセンブリ内、およびこの親クラスから派生したクラスからもアクセスできます。
21) System.String クラスと System.Text.StringBuilder クラスの違いは何ですか?
System.String は不変です。文字列変数の値を変更すると、新しい値に新しいメモリが割り当てられ、以前のメモリ割り当てが解放されます。System.StringBuilder は、変更された文字列に別のメモリ位置を割り当てることなくさまざまな操作を実行できる可変文字列の概念を持つように設計されています。
22) System.Array.CopyTo() と System.Array.Clone() の違いは何ですか?
使い方 Clone()
メソッドでは、元の配列内のすべての要素を含む新しい配列オブジェクトを作成し、次を使用します。 CopyTo()
方法。 既存の配列のすべての要素が別の既存の配列にコピーされます。 どちらの方法でも浅いコピーが実行されます。
23) 配列の要素を降順に並べ替えるにはどうすればよいですか?
使い方 Sort()
メソッドの後に続く Reverse()
方法。
24) 例外をキャッチするための C# 構文を書き留めます。
例外をキャッチするには、try-catch ブロックを使用します。 Catch ブロックには、system.Exception タイプのパラメータを含めることができます。
例えば:
try { GetAllData(); } catch (Exception ex) { }
上の例では、catch ステートメントからパラメータを省略できます。
25) インターフェースと抽象クラスの違いは何ですか?
インターフェイスには、宣言のみで定義のないメソッドがすべてあります。 抽象クラスでは、いくつかの具象メソッドを持つことができます。 インターフェイス クラスでは、すべてのメソッドがパブリックです。 抽象クラスにはプライベート メソッドが含まれる場合があります。
26) Finalize() メソッドと Dispose() メソッドの違いは何ですか?
Dispose()
は、オブジェクトが管理されていないリソースを一緒に解放したいときに呼び出されます。 一方で、 Finalize()
も同じ目的で使用されますが、オブジェクトのガベージ コレクションは保証されません。
27) 循環参照とは何ですか?
循環参照とは、XNUMX つ以上のリソースが相互に依存しており、ロック状態が発生し、リソースが使用できなくなる状況です。
28) C#.NET のジェネリックスとは何ですか?
ジェネリックは、コードの冗長性を減らし、型の安全性とパフォーマンスを向上させるために、再利用可能なコード クラスを作成するために使用されます。ジェネリックを使用すると、コレクション クラスを作成できます。ジェネリック コレクションを作成するには、System.Collections 名前空間の ArrayList などのクラスではなく、System.Collections.Generic 名前空間を使用する必要があります。ジェネリックは、パラメーター化された型の使用を促進します。
29) .NET のオブジェクト プールとは何ですか?
オブジェクト プールは、すぐに使用できるオブジェクトが含まれるコンテナです。 現在使用中のオブジェクト、プール内のオブジェクトの総数を追跡します。 これにより、オブジェクトの作成と再作成のオーバーヘッドが軽減されます。
30) .net で一般的に使用される例外の種類をリストアップします。
ArgumentException、ArgumentNullException、ArgumentOutOfRangeException、ArithmeticException、DivideByZeroException、OverflowException、IndexOutOfRangeException、InvalidCastException、InvalidOperationException、IOEndOfStreamException、NullReferenceException、OutOfMemoryException、StackOverflowException など。
31) カスタム例外とは何ですか?
場合によっては、ユーザーの要件に応じて処理する必要があるエラーが発生することがあります。 これらにはカスタム例外が使用され、定義された例外が使用されます。
32) デリゲートとは何ですか?
デリゲートは関数ポインタと同じです C++ただし、唯一の違いは、関数ポインタとは異なり、型安全であることです。デリゲートは、より汎用的な型安全な関数を記述するために使用できるため必要です。
33) C# でクラスを他のクラスに継承するにはどうすればよいですか?
C# ではコロンが継承演算子として使用されます。コロンの後にクラス名を置くだけです。
public class DerivedClass : BaseClass
34) すべてのクラスの派生元となる .net の基本クラスは何ですか?
System.Object
35) メソッドのオーバーライドとメソッドのオーバーロードの違いは何ですか?
メソッドのオーバーライドでは、メソッドの動作を変更する派生クラスのメソッド定義を変更します。 メソッドのオーバーロードとは、異なるシグネチャを持つ同じクラス内に同じ名前のメソッドを作成することです。
36) メソッドをオーバーロードするにはどのような方法がありますか?
メソッドは、パラメーターのさまざまなデータ型、パラメーターのさまざまな順序、パラメーターの数を使用してオーバーロードできます。
37) インターフェイス内のメソッドにアクセシビリティ修飾子を指定できないのはなぜですか?
インターフェイスには、メソッド定義を持たない仮想メソッドがあります。 すべてのメソッドは、派生クラスでオーバーライドされるために存在します。 だからこそ、それらはすべて公開されているのです。
38) メソッドがオーバーライドされないようにしながら、クラスを継承するように設定するにはどうすればよいですか?
クラスをパブリックとして宣言し、オーバーライドされないようにメソッドをシールします。
39) 継承されたインターフェースに競合するメソッド名がある場合はどうなりますか?
メソッドは独自のクラス内にあるため、実装はあなた次第です。異なるインターフェースのメソッドが異なるデータを期待する場合は問題が発生する可能性がありますが、コンパイラーにとっては問題ありません。
40) 構造体とクラスの違いは何ですか?
構造体は値型の変数であり、クラスは参照型です。 スタックに構造体を格納すると、追加のオーバーヘッドが発生しますが、取得は高速になります。 構造体は継承できません。
41) .Net で null 許容型を使用するにはどうすればよいですか?
値の型は、通常の値または null 値のいずれかをとります。 このような型は null 許容型と呼ばれます。
Int? someID = null; If(someID.HasVAlue) { }
42) デフォルト以外の値を含む配列を作成するにはどうすればよいですか?
Enumerable.Repeat を使用して、デフォルト以外の値を含む配列を作成できます。
43) C# の「is」演算子と「as」演算子の違いは何ですか?
「is」演算子は、オブジェクトと指定された型の互換性をチェックするために使用され、結果をブール値として返します。
「as」演算子は、オブジェクトを型またはクラスにキャストするために使用されます。
44) マルチキャストデリゲートとは何ですか?
複数のハンドラーが割り当てられているデリゲートは、マルチキャスト デリゲートと呼ばれます。 各ハンドラーはメソッドに割り当てられます。
45) C# .NET のインデクサーとは何ですか?
インデクサーは賢いものとして知られています C# の配列。 これにより、クラスのインスタンスに配列と同じ方法でインデックスを付けることができます。
例えば:
public int this[int index] // Indexer declaration
46) .NET の「throw」と「throw ex」の違いは何ですか?
「Throw」ステートメントは元のエラー スタックを保持しますが、「throw ex」はスロー ポイントからのスタック トレースを保持します。 より正確なエラー情報が得られるため、常に「throw」を使用することをお勧めします。
47) C# の属性とその重要性は何ですか?
C# は、開発者に特定のエンティティに宣言タグを定義する方法を提供します。 クラスやメソッドなどを属性と呼びます。 属性の情報は、実行時にリフレクションを使用して取得できます。
48) C# でシングルトン設計パターンを実装するにはどうすればよいですか?
シングルトン パターンでは、クラスは XNUMX つのインスタンスのみを持つことができ、そのインスタンスへのアクセス ポイントをグローバルに提供します。
例えば:
Public sealed class Singleton { Private static readonly Singleton _instance = new Singleton(); }
49) ダイレクトキャストと ctype の違いは何ですか?
DirectCast は、実行時の型が DirectCast で指定された型と同じである必要があるオブジェクトの型を変換するために使用されます。
Ctype は、式と型の間で変換が定義される変換に使用されます。
50) C# コードはマネージ コードですか、それともアンマネージ コードですか?
共通言語ランタイムは C# コードを中間言語にコンパイルできるため、C# はマネージ コードです。
51) コンソールアプリケーションとは何ですか?
コンソール アプリケーションは、コマンド プロンプトで実行できるアプリケーションです。 Windows。 どれについても .Net の初心者理想的には、まずコンソール アプリケーションを構築することが最初のステップです。
52) キューから要素を削除する例を挙げてください
dequeue メソッドは、キューから要素を削除するために使用されます。
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Queue qt = new Queue(); qt.Enqueue(1); qt.Enqueue(2); qt.Enqueue(3); foreach (Object obj in qt) { Console.WriteLine(obj); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine("The number of elements in the Queue " + qt.Count); Console.WriteLine("Does the Queue contain " + qt.Contains(3)); Console.ReadKey(); } } }
これらの面接の質問は、あなたの活力(口頭)にも役立ちます