상위 50개 C# 인터뷰 질문 및 답변(2024)

신입생 및 2/3/5/10년 경력을 위한 C# 인터뷰 질문 및 답변

꿈의 직업을 얻기 위한 신입 지원자와 5년 또는 10년 경력의 지원자를 위한 C# 인터뷰 질문과 답변은 다음과 같습니다.

1) C#이란 무엇입니까?

C#은 .Net 프레임워크로 컴파일되어 개체 지향적이고 형식이 안전한 관리형 언어입니다. Microsoft 중급 언어.

👉 무료 PDF 다운로드: C# 인터뷰 인터뷰 질문 및 답변


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#의 객체

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)로 생성된 컨트롤로, 사용하기 쉽고 도구 상자에 추가할 수 있습니다. 개발자는 컨트롤을 웹 양식으로 끌어서 놓을 수 있습니다. 속성은 디자인 타임에 추가할 수 있습니다. 여러 애플리케이션(공유 DLL인 경우)에 사용자 지정 컨트롤을 쉽게 추가할 수 있습니다. 따라서 비공개인 경우 웹 애플리케이션의 bin 디렉토리에 dll을 복사한 다음 참조를 추가하여 사용할 수 있습니다.

사용자 컨트롤은 ASP 포함 파일과 매우 유사하며 만들기 쉽습니다. 사용자 컨트롤은 도구 상자에 배치하여 끌어서 놓을 수 없습니다. 디자인과 코드 비하인드가 있습니다. 사용자 컨트롤의 파일 확장자는 ascx입니다.


16) C#의 봉인 클래스란 무엇입니까?

클래스가 상속되도록 제한하려면 봉인 클래스를 만듭니다. 클래스에서 파생되는 것을 방지하는 데 사용되는 봉인된 수정자입니다. 봉인된 클래스를 기본 클래스로 강제로 지정하면 컴파일 타임 오류가 발생합니다.


17) 메소드 오버로딩이란 무엇입니까?

메소드 오버로딩은 동일한 클래스에서 고유한 시그니처를 사용하여 동일한 이름을 가진 여러 메소드를 생성하는 것입니다. 컴파일할 때 컴파일러는 오버로드 확인을 사용하여 호출할 특정 메서드를 결정합니다.


18) 어레이와 어레이리스트의 차이점은 무엇입니까?

배열에는 동일한 유형의 항목만 포함될 수 있습니다. 비교할 때 배열의 크기는 고정되어 있습니다. arraylist는 배열과 비슷하지만 크기가 고정되어 있지 않습니다.


19) 비공개 가상 메서드를 재정의할 수 있나요?

아니요, 클래스 외부에서는 액세스할 수 없기 때문입니다.


20) 접근성 수정자 "보호된 내부"를 설명하세요.

보호된 내부 변수/메서드는 같은 어셈블리 내에서 액세스할 수 있으며, 이 부모 클래스에서 파생된 클래스에서도 액세스할 수 있습니다.


21) System.String과 System.Text.StringBuilder 클래스의 차이점은 무엇입니까?

System.String은 변경 불가능합니다. 문자열 변수의 값을 수정하면 새 메모리가 새 값에 할당되고 이전 메모리 할당은 해제됩니다. System.StringBuilder는 수정된 문자열에 대한 별도의 메모리 위치를 할당하지 않고도 다양한 작업을 수행할 수 있는 변경 가능한 문자열의 개념을 갖도록 설계되었습니다.


22) System.Array.CopyTo()와 System.Array.Clone()의 차이점은 무엇입니까?

사용 Clone() 메소드를 사용하여 원본 Array의 모든 요소를 ​​포함하고 다음을 사용하여 새 배열 객체를 만듭니다. CopyTo() 방법. 기존 배열의 모든 요소가 다른 기존 배열에 복사됩니다. 두 방법 모두 얕은 복사를 수행합니다.


23) 배열의 요소를 내림차순으로 정렬하려면 어떻게 해야 합니까?

사용 Sort() 메소드 다음에 Reverse() 방법.


24) 예외를 포착하기 위한 C# 구문을 적어보세요.

예외를 포착하기 위해 try-catch 블록을 사용합니다. Catch 블록은 system.Exception 유형의 매개변수를 가질 수 있습니다.

예 :

try {
    GetAllData();
} 
catch (Exception ex) {
}

위의 예에서는 catch 문에서 매개변수를 생략할 수 있습니다.


25) 인터페이스와 추상 클래스의 차이점은 무엇입니까?

인터페이스에는 선언만 있고 정의가 없는 모든 메서드가 있습니다. 추상 클래스에서는 몇 가지 구체적인 메소드를 가질 수 있습니다. 인터페이스 클래스에서는 모든 메소드가 공개됩니다. 추상 클래스에는 개인 메소드가 있을 수 있습니다.


26) Finalize() 메소드와 Dispose() 메소드의 차이점은 무엇입니까?

Dispose() 개체가 관리되지 않는 리소스를 해제하기를 원할 때 호출됩니다. 반면에, Finalize() 동일한 목적으로 사용되지만 객체의 가비지 수집을 보장하지는 않습니다.


27) 순환 참조란 무엇입니까?

순환 참조는 두 개 이상의 리소스가 서로 상호 의존하여 잠금 조건이 발생하고 리소스를 사용할 수 없게 만드는 상황입니다.


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에서 nullable 유형을 사용하는 방법은 무엇입니까?

값 유형은 일반 값이나 null 값을 사용할 수 있습니다. 이러한 유형을 nullable 유형이라고 합니다.

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#은 개발자에게 특정 엔터티에 선언적 태그를 정의하는 방법을 제공합니다. 클래스, 메소드 등을 속성이라고 합니다. 속성 정보는 Reflection을 사용하여 런타임에 검색할 수 있습니다.


48) C#에서 싱글톤 디자인 패턴을 구현하는 방법은 무엇입니까?

싱글톤 패턴에서 클래스는 하나의 인스턴스만 가질 수 있으며 전역적으로 이에 대한 액세스 지점을 제공합니다.

예 :

Public sealed class Singleton
{
Private static readonly Singleton _instance = new Singleton();
}

49) directcast와 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();
   }
 }
}

이 인터뷰 질문은 당신의 비바(구술)에도 도움이 될 것입니다.