찬란하게

C# 기술면접 기본 질문 본문

카테고리 없음

C# 기술면접 기본 질문

체리핫 2023. 2. 20. 02:08

Q1. C#이란 무엇인가요?

A1. C#은 자바와 비슷한 구문을 가지고 있으며, .NET 프레임워크에서 사용되는 객체 지향 프로그래밍 언어입니다. C#은 C++의 복잡성을 줄이고, 자바의 플랫폼 독립성과 보안성을 가지고 있습니다.

Q2. C#의 장단점은 무엇인가요?

A2. C#은 마치 자동차의 차체 역할을 하는 객체 지향 프로그래밍 언어입니다. C#은 간결한 구문과 높은 생산성을 제공하며, 안전성과 보안성이 높습니다. 하지만 C#은 다중 상속을 지원하지 않고, 성능이 상대적으로 느릴 수 있습니다.

Q3. C#에서 클래스와 구조체의 차이점은 무엇인가요?

A3. 클래스는 마치 자동차의 모델 역할을 하며, 객체를 힙 메모리에 저장합니다. 구조체는 마치 자동차의 부품 역할을 하며, 객체를 스택 메모리에 저장합니다. 또한 클래스는 다중 상속을 지원하지만, 구조체는 지원하지 않습니다.

Q4. C#에서 인터페이스와 추상 클래스의 차이점은 무엇인가요?

A4. 인터페이스는 마치 자동차의 도면 역할을 하며, 메서드와 프로퍼티를 정의하는 데 사용됩니다. 추상 클래스는 마치 자동차의 원형 역할을 하며, 일부 메서드와 프로퍼티를 구현하는데 사용됩니다. 인터페이스는 클래스에서 구현되며, 추상 클래스는 상속되어야 하며, 추상 클래스에서 정의한 메서드와 프로퍼티를 반드시 구현해야 합니다.

Q5. C#에서 네임스페이스란 무엇인가요?

A5. 네임스페이스는 마치 자동차의 이름표 역할을 하는 것으로, 클래스, 인터페이스, 구조체 등의 타입을 그룹화하는 데 사용됩니다. 네임스페이스를 사용하면 이름 충돌을 방지할 수 있으며, 타입을 조직화하여 코드의 가독성을 높일 수 있습니다.

Q6. C#에서 오버로딩이란 무엇인가요?

A6. 오버로딩은 마치 자동차의 다양한 모델 역할을 하는 것으로, 같은 이름의 메서드나 연산자를 다양한 매개

변수와 반환 값을 사용하여 여러 번 정의하는 것을 의미합니다. 이는 코드의 가독성을 높이고, 메서드를 사용하는 방법을 단순화할 수 있습니다. 예를 들어, Add 메서드를 정수와 실수, 문자열 등 다양한 타입의 매개 변수를 받아 덧셈을 수행하도록 오버로딩할 수 있습니다. 이를 통해 사용자는 같은 이름의 Add 메서드를 호출하여 다양한 데이터 타입에 대해 덧셈을 수행할 수 있습니다.

Q7. C#에서 이벤트란 무엇인가요?

A7. 이벤트는 마치 자동차의 신호등 역할을 하는 것으로, 객체의 상태 변화를 다른 객체에 알리는 데 사용됩니다. 이벤트는 delegate 타입으로 정의되며, 이벤트가 발생할 때마다 해당 이벤트를 구독하는 모든 객체에 이벤트가 전달됩니다.

Q8. C#에서 람다식이란 무엇인가요?

A8. 람다식은 마치 자동차의 축소판 역할을 하는 것으로, 익명 메서드를 간결하게 작성하는 방법입니다. 람다식은 delegate 타입의 인수로 사용되며, 익명 메서드와 비슷한 구문을 사용합니다.

Q9. C#에서 LINQ란 무엇인가요?

A9. LINQ는 마치 자동차의 내비게이션 시스템 역할을 하는 것으로, 데이터를 쉽게 검색하고 조작하는 데 사용됩니다. LINQ는 데이터 소스에 대한 쿼리를 작성하는데 사용되며, 일반적으로 컬렉션, 데이터베이스, XML 문서 등을 대상으로 사용됩니다.

Q10. C#에서 가비지 컬렉션이란 무엇인가요?

A10. 가비지 컬렉션은 마치 자동차의 청소기 역할을 하는 것으로, 더 이상 사용되지 않는 객체를 자동으로 삭제하는 프로세스입니다. C#에서는 가비지 컬렉터가 사용되며, 애플리케이션에서 메모리 관리를 자동으로 처리합니다. 이를 통해 메모리 누수를 방지하고, 프로그래머가 메모리 관리를 수동으로 처리할 필요가 없습니다.

 

Q11. C#에서 사용하는 접근 제한자에는 어떤 것들이 있나요?

A11. C#에서는 다음과 같은 네 가지의 접근 제한자를 사용합니다.

  • public: 모든 곳에서 접근이 가능합니다.
  • private: 같은 클래스 내에서만 접근이 가능합니다.
  • protected: 같은 클래스와 파생 클래스 내에서 접근이 가능합니다.
  • internal: 같은 어셈블리 내에서만 접근이 가능합니다.

Q12. C#에서 가상 메서드란 무엇인가요?

A12. 가상 메서드는 마치 자동차의 유연한 부품 역할을 하는 것으로, 파생 클래스에서 재정의할 수 있는 메서드입니다. 가상 메서드는 virtual 키워드로 정의되며, base 키워드를 사용하여 기본 클래스에서 정의한 메서드를 호출할 수 있습니다.

Q13. C#에서 오버라이드란 무엇인가요?

A13. 오버라이드는 마치 자동차의 부품을 대체하는 것과 같이, 기본 클래스에서 정의된 가상 메서드를 파생 클래스에서 재정의하는 것입니다. 이를 통해 파생 클래스에서는 기본 클래스의 가상 메서드를 다시 구현하여 자신에게 맞게 동작하도록 할 수 있습니다.

Q14. C#에서 추상 클래스란 무엇인가요?

A14. 추상 클래스는 마치 자동차의 원형 역할을 하는 것으로, 일부 메서드와 프로퍼티를 구현하지 않은 추상 멤버를 포함하는 클래스입니다. 추상 클래스는 abstract 키워드로 정의되며, 파생 클래스에서 구현해야 하는 추상 멤버를 지정할 수 있습니다.

Q15. C#에서 인터페이스란 무엇인가요?

A15. 인터페이스는 마치 자동차의 표준 부품 역할을 하는 것으로, 일련의 메서드, 프로퍼티 및 이벤트를 정의하는 역할을 합니다. 인터페이스는 interface 키워드로 정의되며, 클래스가 구현해야 하는 일련의 멤버를 지정하는데 사용됩니다. 인터페이스는 클래스와 달리 다중 상속을 지원합니다.

Q16. C#에서 대리자란 무엇인가요?

A16. 대리자는 마치 자동차의 운전 대리인 역할을 하는 것으로, 메서드를 참조할 수 있는 개체입니다. 대리자는 delegate 키워드로 정의되며, 메서드를 매개 변수로 받아서 해당 메서드를 대신 호출하는 데 사용됩니다.

 

Q17. C#에서 이벤트란?

A17. 이벤트는 마치 자동차의 신호등 역할을 하는 것으로, 객체의 상태 변화를 다른 객체에 알리는 데 사용됩니다. 이벤트는 delegate 타입으로 정의되며, 이벤트가 발생할 때마다 해당 이벤트를 구독하는 모든 객체에 이벤트가 전달됩니다.

Q18. C#에서 네임스페이스란 무엇인가요?

A18. 네임스페이스는 마치 자동차의 주택 역할을 하는 것으로, 클래스, 구조체, 대리자, 열거형 등의 이름을 그룹화하는 데 사용됩니다. 네임스페이스는 namespace 키워드로 정의되며, 중첩된 네임스페이스를 포함할 수 있습니다.

Q19. C#에서 인덱서란 무엇인가요?

A19. 인덱서는 마치 자동차의 번호표 역할을 하는 것으로, 클래스의 인스턴스 멤버에 대한 접근을 가능하게 합니다. 인덱서는 this 키워드와 대괄호를 사용하여 인덱싱을 정의하며, 인덱스를 사용하여 클래스의 인스턴스 멤버에 접근할 수 있습니다.

Q20. C#에서 람다식이란 무엇인가요?

A20. 람다식은 마치 자동차의 축소판 역할을 하는 것으로, 익명 메서드를 간결하게 작성하는 방법입니다. 람다식은 delegate 타입의 인수로 사용되며, 익명 메서드와 비슷한 구문을 사용합니다.

Q21. C#에서 오버로딩이란 무엇인가요?

A21. 오버로딩은 마치 자동차의 다양한 모델 역할을 하는 것으로, 같은 이름의 메서드를 다양한 매개 변수로 정의하는 것을 의미합니다. 이를 통해 다양한 데이터 타입에 대해 동작하는 같은 이름의 메서드를 호출할 수 있습니다.

Q22. C#에서 오버라이드란 무엇인가요?

A22. 오버라이드는 마치 자동차의 부품을 대체하는 것과 같이, 기본 클래스에서 정의된 가상 메서드를 파생 클래스에서 재정의하는 것입니다. 이를 통해 파생 클래스에서는 기본 클래스의 가상 메서드를 다시 구현하여 자신에게 맞게 동작하도록 할 수 있습니다.

Q23. C#에서 가상 메서드란 무엇인가요?

A23. 가상 메서드는 마치 자동차의 유연한 부품 역할을 하는 것으로, 파생 클래스에서 재정의 할 수 있는 메서드입니다. 가상 메서드는 virtual 키워드로 정의되며, base 키워드를 사용하여 기본 클래스에서 정의한 메서드를 호출할 수 있습니다.