C#은 개체 지향 프로그래밍, 정적 타이핑, 구성 요소 지향 프로그래밍, 강력한 타이핑 등과 같은 다양한 분야를 포괄하는 범용 프로그래밍 언어입니다. C#은 웹 사이트, 웹 응용 프로그램 및 게임을 만들기 위한 ASP.NET 프레임워크에서 널리 사용됩니다. 전 세계적으로 C# 프로그래밍을 위한 방대한 기회가 있습니다. C# 프로그래밍 분야에서 경력을 쌓고자 하는 경우 아래 나열된 몇 가지 C# 기본에서 C# 까다로운 인터뷰 질문과 답변을 받게 되는 인터뷰에 응해야 합니다.
이것은 인터뷰 중에 질문할 가능성이 높은 C# 인터뷰 질문 및 답변의 선별된 목록입니다. 응시자는 경험 및 기타 다양한 요인에 따라 기본 C# 면접 질문에서 고급 C# 면접 질문까지 받게 될 것입니다. 이 목록에는 신입생을 위한 모든 C 날카로운 면접 질문과 숙련된 전문가를 위한 C# 면접 질문이 포함되어 있습니다.
무료 PDF 다운로드:C# 인터뷰 인터뷰 질문
신입생 및 2/3/5/10년 경력을 위한 C# 인터뷰 질문 및 답변
다음은 신입 및 경험 많은 C# 개발자 후보자가 올바른 일자리를 얻기 위해 자주 묻는 인터뷰 질문입니다.
우리는 자주 묻는 C# 인터뷰 질문 및 답변을 진행하기 위해 50개 이상의 기본 사항을 다루었습니다.
신입생을 위한 C# 기본 면접 질문
C#이란 무엇입니까?
예제를 사용하여 C#의 주석 유형 설명
여러 catch 블록을 실행할 수 있나요?
공개, 정적 및 무효의 차이점은 무엇입니까?
객체란 무엇입니까?
생성자 정의
지그재그 배열이란 무엇입니까?
ref 매개변수와 out 매개변수의 차이점은 무엇입니까?
C#에서 'using' 문의 용도는 무엇인가요?
직렬화란 무엇입니까?
1. C#이란 무엇입니까?
C#은 Microsoft Intermediate Language를 생성하기 위해 .Net 프레임워크로 컴파일된 개체 지향, 유형 안전 및 관리 언어입니다.
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. 공개, 정적 및 무효의 차이점은 무엇입니까?
공개 선언된 변수 또는 메서드는 응용 프로그램의 어디에서나 액세스할 수 있습니다. 정적 선언 변수 또는 메서드는 클래스의 인스턴스를 만들지 않고도 전역적으로 액세스할 수 있습니다. 정적 멤버는 기본적으로 전역적으로 액세스할 수 없으며 사용되는 수정된 액세스 유형에 따라 다릅니다. 컴파일러는 메서드의 주소를 진입점으로 저장하고 이 정보를 사용하여 개체가 생성되기 전에 실행을 시작합니다. 그리고 Void는 메서드나 변수가 값을 반환하지 않는다는 것을 나타내는 유형 수정자입니다.
5. 개체란 무엇입니까?
<중앙>
<그림>
C#의 개체
그림>
객체는 해당 클래스의 메서드에 액세스하는 데 사용되는 클래스의 인스턴스입니다. "New" 키워드는 객체를 생성하는 데 사용됩니다. 메모리에 객체를 생성하는 클래스에는 해당 클래스의 메서드, 변수 및 동작에 대한 정보가 포함됩니다.
6. 생성자 정의
생성자는 클래스와 이름이 같은 클래스의 멤버 함수입니다. 생성자는 객체 클래스가 생성될 때마다 자동으로 호출됩니다. 클래스를 초기화하는 동안 데이터 멤버의 값을 구성합니다.
7. 들쭉날쭉한 배열이란 무엇입니까?
배열 유형의 요소가 있는 배열을 지그재그 배열이라고 합니다. 요소는 크기와 크기가 다를 수 있습니다. 들쭉날쭉한 배열을 배열의 배열로 호출할 수도 있습니다.
8. ref 및 out 매개변수의 차이점은 무엇입니까?
ref로 전달된 인수는 메소드에 전달하기 전에 초기화되어야 하지만 out 매개변수는 메소드에 전달하기 전에 초기화될 필요가 없습니다.
9. C#에서 'using' 문의 용도는 무엇인가요?
'using' 블록은 자원을 확보하여 처리한 후 블록의 실행이 완료되면 자동으로 폐기하는 데 사용됩니다.
10. 직렬화란 무엇입니까?
네트워크를 통해 객체를 전송하려면 객체를 바이트 스트림으로 변환해야 합니다. 객체를 바이트 스트림으로 변환하는 프로세스를 직렬화라고 합니다. 개체가 직렬화 가능하려면 ISerialize Interface를 구현해야 합니다. 역직렬화는 바이트 스트림에서 객체를 생성하는 역 과정입니다.
11. 정적 메서드 내에서 "this" 명령을 사용할 수 있나요?
정적 메서드에서는 정적 변수/메서드만 사용할 수 있으므로 정적 메서드에서는 'This'를 사용할 수 없습니다.
12. 상수와 읽기 전용의 차이점은 무엇입니까?
상수 변수는 컴파일 타임에 선언되고 초기화됩니다. 값은 나중에 변경할 수 없습니다. 읽기 전용은 런타임에 값을 할당하려는 경우에만 사용됩니다.
3/5/10년 경력을 위한 C# 고급 면접 질문
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인 경우). 따라서 private인 경우 웹 애플리케이션의 bin 디렉터리에 dll을 복사한 다음 참조를 추가하여 사용할 수 있습니다.
사용자 컨트롤은 ASP 포함 파일과 매우 유사하며 만들기 쉽습니다. 사용자 컨트롤은 도구 상자에 놓고 끌어서 놓을 수 없습니다. 디자인과 코드 숨김이 있습니다. 사용자 컨트롤의 파일 확장자는 ascx입니다.
16. C#에서 봉인된 클래스는 무엇입니까?
상속되는 클래스를 제한하고 싶을 때 봉인된 클래스를 만듭니다. 클래스에서 파생되는 것을 방지하는 데 사용되는 봉인된 수정자입니다. 봉인된 클래스를 기본 클래스로 강제 지정하면 컴파일 타임 오류가 발생합니다.
17. 메소드 오버로딩이란 무엇입니까?
메소드 오버로딩은 동일한 클래스에서 고유한 서명을 사용하여 동일한 이름을 가진 여러 메소드를 생성하는 것입니다. 컴파일할 때 컴파일러는 오버로드 확인을 사용하여 호출할 특정 메서드를 결정합니다.
18. Array와 Arraylist의 차이점은 무엇입니까?
배열에서는 같은 유형의 항목만 가질 수 있습니다. 배열의 크기는 비교할 때 고정됩니다. to 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의 개체 풀이란 무엇입니까?
개체 풀은 사용할 준비가 된 개체가 있는 컨테이너입니다. 현재 사용 중인 개체, 풀에 있는 총 개체 수를 추적합니다. 이렇게 하면 개체를 만들고 다시 만드는 오버헤드가 줄어듭니다.
때때로 사용자 요구 사항에 따라 처리해야 하는 몇 가지 오류가 있습니다. 사용자 정의 예외가 사용되며 정의된 예외로 사용됩니다.
32. 대의원이란 무엇입니까?
대리자는 C++의 함수 포인터와 동일하지만 유일한 차이점은 함수 포인터와 달리 형식이 안전하다는 것입니다. 대리자는 훨씬 더 일반적인 형식 안전 함수를 작성하는 데 사용할 수 있기 때문에 필요합니다.
33. C#에서 클래스를 다른 클래스로 어떻게 상속합니까?
콜론은 C#에서 상속 연산자로 사용됩니다. 콜론을 입력하고 클래스 이름을 입력하면 됩니다.
공개 클래스 DerivedClass :BaseClass
34. 모든 클래스가 파생된 .net의 기본 클래스는 무엇입니까?
System.Object
35. 메서드 재정의와 메서드 오버로딩의 차이점은 무엇입니까?
메서드 재정의에서 메서드 동작을 변경하는 파생 클래스의 메서드 정의를 변경합니다. 메소드 오버로딩은 서명이 다른 동일한 클래스 내에서 동일한 이름의 메소드를 생성하는 것입니다.
36. 메소드가 오버로드될 수 있는 다른 방법은 무엇입니까?
매개변수에 대해 다른 데이터 유형, 매개변수 순서 및 매개변수 수를 사용하여 메소드를 오버로드할 수 있습니다.
37. 인터페이스 내부의 메서드에 대한 접근성 수정자를 지정할 수 없는 이유는 무엇입니까?
인터페이스에는 메서드 정의가 없는 가상 메서드가 있습니다. 모든 메서드는 파생 클래스에서 재정의되어야 합니다. 이것이 모두 공개된 이유입니다.
38. 클래스를 상속하도록 설정하면서 메서드가 재정의되는 것을 방지하려면 어떻게 해야 합니까?
클래스를 public으로 선언하고 메서드를 봉인하여 재정의되지 않도록 합니다.
39. 상속된 인터페이스에 충돌하는 메서드 이름이 있으면 어떻게 됩니까?
메소드가 자신의 클래스 안에 있으므로 구현은 귀하에게 달려 있습니다. 다른 인터페이스의 메소드가 다른 데이터를 기대하는 경우 문제가 있을 수 있지만 컴파일러가 고려하는 한 괜찮습니다.
40. 구조체와 클래스의 차이점은 무엇입니까?
구조체는 값 유형 변수이고 클래스는 참조 유형입니다. 스택에 저장된 구조체는 추가 오버헤드를 유발하지만 검색은 더 빠릅니다. 구조체는 상속될 수 없습니다.
41. .Net에서 nullable 유형을 사용하는 방법은 무엇입니까?
값 유형은 일반 값 또는 null 값을 사용할 수 있습니다. 이러한 유형을 nullable 유형이라고 합니다.
Int? someID = null;
If(someID.HasVAlue)
{
}
42. 기본값이 아닌 배열을 어떻게 만들 수 있습니까?
Enumerable.Repeat를 사용하여 기본값이 아닌 배열을 만들 수 있습니다.
43. C#에서 "is"와 "as" 연산자의 차이점은 무엇입니까?
"is" 연산자는 주어진 유형과 객체의 호환성을 확인하는 데 사용되며 결과를 Boolean으로 반환합니다.
"as" 연산자는 개체를 유형 또는 클래스로 캐스팅하는 데 사용됩니다.
44. 멀티캐스트 델리게이트란 무엇인가요?
여러 핸들러가 할당된 대리자를 멀티캐스트 대리자라고 합니다. 각 핸들러는 메소드에 할당됩니다.
45. C# .NET의 인덱서는 무엇입니까?
인덱서는 C#에서 스마트 배열로 알려져 있습니다. 클래스의 인스턴스가 배열과 같은 방식으로 인덱싱되도록 합니다.
예:
public int this[int index] // Indexer declaration
46. .NET에서 "throw"와 "throw ex"의 차이점은 무엇입니까?
"Throw" 문은 원래 오류 스택을 유지하는 반면 "throw ex"는 throw 지점에서 스택 추적을 갖습니다. 보다 정확한 오류 정보를 제공하기 때문에 항상 "throw"를 사용하는 것이 좋습니다.
47. C# 속성과 그 중요성은 무엇입니까?
C#은 개발자에게 특정 엔터티에 대한 선언적 태그를 정의하는 방법을 제공합니다. 클래스, 메소드 등을 속성이라고 합니다. 속성 정보는 Reflection을 사용하여 런타임에 검색할 수 있습니다.
48. C#에서 싱글톤 디자인 패턴을 구현하는 방법은 무엇입니까?
싱글톤 패턴에서 클래스는 하나의 인스턴스만 가질 수 있으며 전역적으로 액세스 포인트를 제공합니다.
예:
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();
}
}
}