> 백엔드 개발 > C#.Net 튜토리얼 > 일부 인터뷰 질문에 대한 C# 예제 튜토리얼

일부 인터뷰 질문에 대한 C# 예제 튜토리얼

零下一度
풀어 주다: 2017-06-23 14:30:29
원래의
1727명이 탐색했습니다.

최근 NET 개발에 종사하던 친구가 퇴사했는데, 그가 새로운 도전에 직면할 수 있도록 NET 관련 인터뷰 질문을 찾아달라고 부탁했습니다.

이전에 검색했던 다양한 가이드와 시험문제를 빠르게 찾아냈고, 오늘은 NET에 대한 기본 지식 포인트를 정리했습니다.

1. 객체지향 언어의 세 가지 주요 특징: 캡슐화, 상속 및 다형성

2. 인터페이스와 클래스의 유사점과 차이점:

차이점:

 ①인터페이스는 직접 인스턴스화할 수 없습니다.

 ②인터페이스에는 메소드 또는 속성의 선언만 포함되며 메소드 구현은 포함되지 않습니다.

  ③인터페이스는 다중 상속을 가질 수 있지만 클래스는 단일 상속만 가질 수 있습니다.

  4표현식은 주로 사양을 정의하고 메서드를 균일하게 호출합니다. 즉, 클래스는 메서드 함수의 구현 및 집합입니다.

 같은 점:

  ①인터페이스, 클래스 및 구조는 모두 가능합니다. 여러 인터페이스에서 상속됩니다.

 ②인터페이스는 추상 기본 클래스와 유사합니다. 인터페이스를 상속하는 모든 비추상 유형은 인터페이스의 모든 멤버를 구현해야 합니다.

  ③인터페이스와 클래스 모두 이벤트, 인덱서, 메서드 및 속성을 포함할 수 있습니다.

3. 추상 클래스와 인터페이스의 유사점과 차이점은 무엇입니까? ①상속: 인터페이스는 다중 상속을 지원합니다.

 ②개념 표현: 명세를 위해 인터페이스를 사용하고, 계약을 더욱 강조하며, 공통성을 위해 추상 클래스를 사용하여 부모와 자식을 강조합니다. 추상 클래스는 사물 클래스의 높은 수준의 집합이므로 추상 클래스를 상속하는 하위 클래스의 경우 추상 클래스의 경우 "Is A" 관계에 속하지만 인터페이스는 동작 규범을 정의하고 "할 수 있음"의 관계를 강조합니다. " 이므로 인터페이스를 구현하는 하위 클래스의 경우 인터페이스에 비해 "인터페이스에 따라 동작이 완료되어야 합니다."

 3메소드 구현: 추상 클래스의 메소드에 대해 구현 부분을 제공할 수도 있고 그렇지 않을 수도 있지만, 인터페이스 메소드(추상 규칙)에 대해서는 구현 부분을 제공할 수 없으며 인터페이스의 메소드에 수정자를 추가할 수 없습니다.

  ④ 하위 클래스 재작성: 상속 클래스는 둘에 관련된 메서드를 다르게 구현합니다. 상속된 클래스는 추상 클래스에 의해 정의된 추상 메소드를 다시 작성할 필요가 없습니다. 즉, 추상 클래스의 메소드는 확장될 수 있지만 인터페이스 클래스에 의해 정의된 메소드 또는 속성의 경우에는 다시 작성되어야 합니다. 상속된 클래스입니다. 해당 메서드와 속성이 구현됩니다.

 ⑤새 메소드 추가의 영향: 추상 클래스에서 새 메소드가 추가되면 상속된 클래스를 인터페이스 처리에 사용할 필요가 없으며 새로 정의된 클래스를 제공하기 위해 상속된 클래스를 수정해야 합니다. 방법.

 ⑥인터페이스는 값 유형(열거형은 인터페이스 구현 가능)에 대해 작동할 수 있으며 참조 유형은 참조 유형에만 작동할 수 있습니다.

 7인터페이스는 필드와 구현된 메서드를 포함할 수 없습니다. 인터페이스에는 메서드, 속성, 인덱서 및 이벤트의 서명만 포함되며 추상 클래스는 필드, 속성 및 구현된 메서드를 정의할 수 있습니다.

4. virtual, sealing, override 및 abstract의 차이점

 ①Virtual은 가상 메서드의 키워드를 선언하여 메서드를 재정의할 수 있음을 나타냅니다.

  ②Sealed는 클래스를 상속할 수 없음을 나타냅니다.

 3Override는 가상 메서드의 메서드를 재정의합니다. base class

④Abstract는 추상 클래스와 추상 메서드의 키워드를 선언합니다. 추상 메서드는 구현을 제공하지 않으며 하위 클래스에 의해 구현됩니다.

5. 오버로드와 오버로드의 차이점은 무엇입니까? 오버로딩: 클래스에 이름은 같지만 서명이 다른 두 개의 메서드(동일한 메서드 이름, 다른 매개변수 목록)가 포함되어 있을 때 발생합니다. 동일한 의미를 수행하지만 기능이 다른 메서드를 제공하려면 메서드 오버로드를 사용합니다. (한 클래스에 여러 메서드가 있음)

  재작성: 클래스 상속에 사용되며 하위 클래스 메서드를 재정의하여 상위 클래스의 가상 메서드 구현을 변경할 수 있습니다. (클래스 2개 이상)

6. 구조체와 클래스의 차이점

  ① 구조체는 값형, 클래스는 참조형

  ② 구조체는 자유 생성자, 소멸자를 지원하지 않으며 보호할 수 없습니다. 데이터 저장에 자주 사용되며 클래스는 주로 동작에 사용됩니다.

  ④ 클래스는 객체를 인스턴스화하기 위해 new 키워드를 사용해야 하며 구조체는 new 키워드를 사용할 필요가 없습니다.

  ⑤ 클래스는 추상 클래스일 수 있으며 구조체는 지원하지 않습니다. it Abstract;


7. out과 ref

 ①ref는 사용하기 전에 매개변수를 명시적으로 초기화해야 하며, out은 메서드 내부에서 초기화되어야 합니다.

 ②out은 여러 반환 값이 필요한 곳에 사용하기에 적합합니다. ref가 호출된 메서드에서 호출자의 참조를 수정해야 할 때 사용됩니다.

 ③ref에는 들어오고 나가는 기능이 있으며, out은 나가기만 하고 안으로 들어오지는 않습니다. (ref는 매개변수 값을 함수에 전달할 수 있지만 out에서는 매개변수를 지워야 합니다. 즉, out에서 값을 전달할 수 없습니다. 그 이후에는 매개변수의 값이 비어있습니다.)

8. 값형과 참조형의 차이

 ① 값형 : 실제 데이터를 담고 있는 수량입니다. 즉, 값 형식의 변수를 정의할 때 C#에서는 선언된 형식에 따라 해당 변수에 적절한 크기의 저장 영역을 스택 방식으로 할당하고, 이후 변수에 대한 읽기 또는 쓰기 작업은 여기에서 직접 수행됩니다.

메모리 영역을 진행하세요.

 ②참조 유형: 참조 유형 변수는 자신이 나타내는 실제 데이터를 저장하지 않고 실제 데이터에 대한 참조를 저장합니다.
 참조 유형은 두 단계로 생성됩니다. 먼저 스택에 참조 변수를 생성한 다음 힙에 객체 자체를 생성한 다음 이 메모리의 핸들(메모리의 첫 번째 주소이기도 함)을 참조 변수에 할당합니다.

9. 언박싱과 박싱이란? Boxing → 값 유형을 참조 유형으로 변환, unboxing → 참조 유형을 값 유형으로 변환.

10. 복싱과 언박싱이 성능에 미치는 영향은 무엇인가요? 어떻게 해결하나요?

 ①영향: 둘 다 메모리 할당 및 개체 생성과 관련되어 성능에 큰 영향을 미칩니다.

 ②해결책: 제네릭을 사용하세요

11. 이벤트는 커미션인가요?

  ① 위임: C 또는 C++의 함수 포인터와 유사하며 메서드를 매개 변수로 전달할 수 있습니다(메서드를 매개 변수로 다른 메서드로 대체할 수 있음)

  ②이벤트는 특수 위임이며 이벤트는 내부적으로 위임을 기반으로 합니다. 구현됨

12. 생성자를 상속받을 수 있나요? 재정의할 수 있나요?

  생성자는 상속될 수 없으므로 재정의할 수는 없지만 오버로드할 수는 있습니다.

13. String 클래스를 통합할 수 있나요?

 String 클래스는 최종 클래스이므로 String 클래스를 상속받을 수 없습니다.

14. 스레드가 객체의 메서드에 들어가면 다른 스레드도 해당 메서드에 들어갈 수 있나요?

 아니요, 객체의 메서드는 하나의 스레드에서만 액세스할 수 있습니다.

15. 2 곱하기 8이 무엇인지 계산하는 가장 효과적인 방법은 무엇인가요?

 2<<3 (왼쪽 곱하기, 오른쪽 나누기)

16. 오류와 예외의 차이점은 무엇인가요?

오류는 복구가 불가능하지는 않지만 매우 어려운 것을 의미합니다. 예외는 실제 또는 구현 문제로 프로그램이 정상적으로 실행될 수 없음을 의미합니다.

17. UDP와 TCP 연결의 유사점과 차이점은 무엇인가요?

 ①TCP는 연결 지향적이고 안정적인 바이트 스트림 서비스를 제공하는 전송 제어 프로토콜입니다. TCP는 타임아웃 재다이얼링 및 데이터 확인 기능을 제공합니다.

 ②UDP는 사용자 데이터그램 프로토콜(User Datagram Protocol)입니다. 이는 단순한 데이터그램 중심의 전송 프로토콜이며 신뢰할 수 없는 연결입니다.

18. new 키워드의 사용법

 ①new 연산자는 객체를 생성하고 생성자를 호출하는 데 사용됩니다.

②new 수식자는 기본 클래스 멤버로부터 상속된 멤버를 숨기는 데 사용됩니다.

③새로운 제약 조건은 일반 선언에서 유형 매개변수로 사용될 수 있는 매개변수 유형을 제한하는 데 사용됩니다.

19. 키워드 사용 사용법

 ①참조 네임스페이스;

 ②네임스페이스 또는 유형에 대한 별칭 생성(사용 + 별칭 = 자세한 네임스페이스 정보가 포함된 특정 유형)

  

3리소스 해제(파일 스트림 닫기) 20. 접근성 수준은 무엇인가요? ① 공개 접근이 제한되지 않습니다.

 ②보호된 액세스는 포함하는 클래스 또는 포함하는 클래스에서 파생된 형식으로 제한됩니다.

  ③내부 접근은 현재 어셈블리로 제한되어 있습니다.

 4protected 내부 액세스는 현재 어셈블리 또는 포함 클래스에서 파생된 형식으로 제한됩니다.

 ⑤비공개 접근은 포함된 유형으로 제한됩니다.

21. 숫자 열의 규칙은 다음과 같습니다: 1, 1, 2, 3, 5, 8, 13, 21, 34... 30번째 숫자를 찾아 재귀 알고리즘을 사용하여 구하세요.

22. 버블 정렬

위 내용은 일부 인터뷰 질문에 대한 C# 예제 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿