>  기사  >  백엔드 개발  >  자주 헷갈리기 쉬운 C#.net 상식

자주 헷갈리기 쉬운 C#.net 상식

巴扎黑
巴扎黑원래의
2016-12-19 16:44:101697검색

1. .NET의 클래스와 구조의 차이점을 알려주실 수 있나요?
답변: 구조와 클래스에는 일반적인 구문이 있지만 구조는 클래스보다 더 제한적입니다. 구조의 복사본은 컴파일러에 의해 생성되고 소멸되므로 구조는 기본 생성자를 선언할 수 없습니다. 따라서 기본 생성자와 소멸자가 필요하지 않습니다. 구조는 값 유형이므로 구조 변수를 변경해도 원래 값에 영향을 미치지 않는 반면, 클래스는 응용 프로그램 유형이므로 변수 값을 변경하면 원래 값이 변경됩니다. 구조체를 선언하려면 Struck 키워드를 사용하고, 클래스를 선언하려면 class 키워드를 사용하여 메서드에 구조체를 전달할 때 참조가 아닌 값으로 전달됩니다. 클래스와 달리 구조체는 New 키워드를 사용하지 않고도 인스턴스화할 수 있습니다. 클래스는 인터페이스를 구현할 수 있습니다.
2. 교착상태의 필요조건은 무엇인가요? 그것을 극복하는 방법?
답변: 시스템의 리소스가 부족하고 진행 프로세스의 순서가 부적절하며 리소스가 잘못 할당되었습니다. 리소스는 한 번에 하나의 프로세스에서만 사용할 수 있으며 리소스가 차단됩니다. 프로세스가 리소스를 획득하면 해당 리소스를 모두 사용하기 전에 강제로 박탈할 수 없습니다.
3. 인터페이스는 인터페이스를 상속받나요? 추상 클래스가 인터페이스를 구현할 수 있나요? 추상 클래스가 엔터티 클래스에서 상속될 수 있나요?
답변: 인터페이스는 인터페이스를 상속할 수 있고, 추상 클래스는 인터페이스를 구현할 수 있으며, 추상 클래스는 엔터티 클래스를 상속할 수 있지만 조건이 있습니다. 단, 엔터티 클래스에는 명확한 생성자가 있어야 합니다.
4. 생성자를 상속받을 수 있나요? 재정의할 수 있나요?
답변: 생성자는 상속할 수 없으므로 재정의할 수는 없지만 String 클래스를 상속할 수 있나요?
답변: String 클래스는 최종 클래스이므로 String 클래스를 상속받을 수 없습니다.
5. 스레드가 객체의 메소드에 진입하면 다른 스레드도 해당 객체의 메소드에 진입할 수 있나요?
답변: 아니요, 객체의 메서드는 하나의 스레드에서만 액세스할 수 있습니다.
6. 8 대 8이 무엇인지 계산하는 데 가장 효과적인 방법을 사용하시겠습니까?
답변: 2<<3.
7. C#은 메모리에서 직접 작동할 수 있나요?
답변: 이 질문은 대답하기 어렵고 큰 질문이기도 합니다. 하지만 이런 질문을 할 수는 있습니다. C#에서는 메모리를 직접 조작할 수 있지만 포인터를 사용할 경우에는 앞에 unsafe를 추가해야 합니다. 가비지 수집 메커니즘(GC) 기능이 프로그래머를 대체합니다. 그러나 C#에서는 finalize 메서드를 직접 사용할 수 없으며 대신 소멸자에서 기본 클래스의 finalize() 메서드를 호출합니다.
7. 배열에 Length() 메서드가 있나요? 문자열에 이 방법이 있나요?
답변: 배열에는 그런 메소드가 없는데 이런 속성이 있고, 문자열에 이런 메소드가 있습니다.
8. 오류와 예외의 차이점은 무엇인가요?
답변: 오류는 복구가 불가능하지는 않지만 매우 어렵다는 것을 의미합니다. 예외는 실제 또는 구현 문제로 프로그램이 정상적으로 실행될 수 없음을 의미합니다.
9. final, finally, finalize의 차이점에 대해 말씀해 주세요.
답변: Final은 속성, 메서드 및 클래스를 선언하는 데 사용되며, 이는 속성이 변경 불가능하고 메서드를 재정의할 수 없으며 클래스를 상속할 수 없음을 나타냅니다.
마지막으로 항상 실행되는 예외처리문 구조 부분입니다.
Finalize는 객체 클래스의 메소드를 나타냅니다. 가비지 수집 메커니즘에서 실행될 때 재활용된 객체의 메소드가 호출됩니다.
10. 해시맵과 해시테이블의 차이점은 무엇인가요?
답변: HashMap은 Hashtable의 경량 구현입니다. 스레드로부터 안전하지 않은 구현은 모두 맵 인터페이스를 구현합니다. 주요 차이점은 HashMap 키 값이 비어 있을 수 있고 Hashtable보다 효율성이 더 높을 수 있다는 것입니다. .
11. 컬렉션과 컬렉션의 차이점은 무엇인가요?
답변: 컬렉션은 **** 클래스의 우수한 인터페이스입니다. 컬렉션은 다양한 ****의 검색, 정렬 및 스레딩을 실현하는 일련의 정적 메서드를 제공합니다. 수업이 안전합니다.
12. C#에서 위임이란 무엇인가요? 이벤트는 커미션인가요?
답변: 대리자는 함수 포인터와 유사한 안전한 메서드이지만 포인터보다 훨씬 안전합니다. 메서드를 다른 메서드에 매개 변수로 전달할 수 있으며 이는 함수에 대한 참조로 이해될 수 있습니다. 이벤트는 메시지 메커니즘이며 일종의 위임이며 위임에는 메서드 본문이 없습니다.
13. 오버라이드와 오버로드의 차이점은 무엇인가요?
답변: Override는 기본 클래스의 메서드를 재정의한다는 뜻으로, 메서드 이름, 반환 유형, 매개변수 유형, 매개변수 개수가 기본 클래스와 동일해야 합니다.
오버로드는 기본 클래스의 메서드를 재정의한다는 뜻이기도 하지만 메서드 이름이 동일한 한 다른 모든 것은 다를 수 있습니다.
14. BS 구조에서 변수 값을 전송해야 할 경우 세션, 쿨, 애플리케이션을 사용할 수 없습니다.
답변: this.server.Transfer,Querystring.
15. C# 인덱서 구현 프로세스는 숫자를 기준으로만 인덱싱할 수 있나요?
답변: 아니요, 어떤 유형이든 가능합니다.
15. C# 인덱서 구현 프로세스는 숫자를 기준으로만 인덱싱할 수 있나요?
답변: 아니요, 어떤 유형이든 가능합니다.
16. 뉴 이용방법은?
답변: 세 가지 유형이 있습니다. 첫 번째는 New Class()
와 같은 인스턴스화입니다.두 번째는 public new가 기본 클래스 메서드
를 숨긴다는 것입니다. 세 번째는 제네릭 클래스 선언의 모든 유형 매개변수에 인수 없는 공용 생성자가 있어야 한다는 것입니다.
17. 배열을 Arraylist에 복사하는 방법은 무엇입니까?
답변: Foreach(배열의 객체 o), ArrayList.Add(0)
중국어 메서드가 많이 있습니다. 스스로 생각해보세요.
18, 반영과 연재 개요?
답변: 반성: 방출에 대한 정의를 내리는 것은 여전히 ​​어렵습니다. 먼저 제가 이해한 것에 대해 말씀드리겠습니다. 리플렉션은 캡슐화 어셈블리, 모듈 및 형식 개체를 제공하여 리플렉션을 사용하여 형식 인스턴스를 동적으로 만들고, 형식을 기존 개체에 바인딩하거나, 기존 개체 형식에서 형식을 가져온 다음 해당 형식의 메서드를 호출하거나 필드 및 속성에 액세스할 수 있습니다.
직렬화: 객체를 다른 매체를 통해 전송할 수 있는 형식으로 변환하는 프로세스입니다. 예를 들어 개체를 직렬화하고, Http를 사용하여 인터넷을 통해 클라이언트와 서버 간에 개체를 전송하고, 역직렬화를 사용하여 반대쪽 스트림에서 개체를 검색합니다.
19, Const 및 ReadOnly?
답변: Const는 프로그래밍 중에 상수를 선언하는 데 사용되며 ReadOnly는 런타임 상수를 선언하는 데 사용됩니다.
20. UDP와 TCP 연결의 유사점과 차이점은 무엇인가요?
답변: TCP는 연결 지향적이고 안정적인 바이트 스트림 서비스를 제공하는 전송 제어 프로토콜입니다. 사용자와 서버가 서로 상호 작용할 때 데이터를 전송하려면 먼저 TCP 연결을 설정해야 합니다. TCP는 시간 초과 재다이얼 및 데이터 확인 기능을 제공합니다. UDP는 사용자 데이터그램 프로토콜(User Datagram Protocol)로, 단순한 데이터그램 중심 전송 프로토콜이며 신뢰할 수 없는 연결입니다.
21. 프로세스와 스레드를 각각 이해하는 방법은 무엇입니까?
답변: 프로세스는 스레드보다 큰 프로그램 실행 단위입니다. 이는 운영 체제에서 경험하는 시스템 실행 단위이며, 프로그램에는 하나 이상의 스레드가 있어야 합니다. 프로세스의 분할 프로세스에 비해 규모가 작습니다. 프로세스는 독립적인 메모리 단위를 가지며, 스레드는 메모리를 공유하므로 동일한 프로세스에서 여러 스레드를 실행할 수 있습니다. 동시에.
22, ASP. NET 페이지?
답변: QueryString, 세션, 쿠키, 애플리케이션, server.Transfer, respose.redictor.
41. 애플리케이션 도메인이란 무엇인가요? 관리 코드란 무엇입니까? 강력한 형식의 시스템이란 무엇입니까? 복싱과 언박싱이란 무엇인가요? 과부하란 무엇입니까? CTS, CLS 및 CLR에 대한 설명은 무엇입니까?
답변: 애플리케이션 도메인: 보안, 안정성, 격리, 버전 관리 및 제거를 위해 제공되는 격리 경계입니다. 일반적으로 런타임 호스트에 의해 생성되는 애플리케이션 도메인은 보다 안전하고 다양한 처리 장치를 제공합니다.
관리 코드: CLR 컴파일 언어 편집기를 사용하여 개발 및 작성된 코드를 관리 코드라고 합니다.
박싱 및 언박싱: 값 유형을 암시적 참조 유형으로 변환하는 프로세스입니다. 반대 프로세스는 명시적인 언박싱입니다.
CTS는 공용 유형 시스템이고, CLS는 공용 언어 사양이며, CLR은 공용 언어 런타임입니다.
강력한 유형 시스템: 모든 변수와 객체에는 선언된 유형이 있어야 합니다.
41. 값 유형과 참조 유형의 차이점은 무엇입니까?
답변: 값 유형은 스택에 저장됩니다. 값을 변경해도 변수의 원래 값은 변경되지 않지만 참조 유형 값은 스택에 저장되며 참조하는 주소는 스택에 저장됩니다. , 해당 값을 변경하면 변수의 원래 값도 변경됩니다. 값 유형은 null 값을 포함할 수 없지만 null 허용 유형은 값 유형 l에 null을 할당할 수 있습니다.
42. ASP.net의 인증 방법은 무엇입니까?
정답: 창문, 양식, 여권
43. UDDI와 WSDL의 의미와 기능을 설명하세요.
답변: UDDI는 WEB 서비스에서 제공하는 정보 등록을 위한 웹 기반 분산 구현 표준의 집합입니다. 또한 기업이 다른 프로토콜 표준을 허용하도록 기업 자체에 대한 웹 서비스 등록도 제공합니다. 발견하고 접근할 수 있습니다. 서비스 설명 및 검색을 위한 표준 기반 사양과 인터넷 기반 구현 세트를 제공합니다.
WSDL은 웹 서비스를 설명하기 위한 XML 기반 인터페이스입니다.
44. 비누란 무엇입니까?
답변: 단순 액세스 프로토콜입니다. 분산 환경에서 정보를 교환하고 원격 호출을 구현하기 위한 프로토콜입니다. XML 기반 프로토콜입니다. 전송 프로토콜(일반적으로 HTTP 프로토콜)에 관계없이 SOAP를 사용하면 모든 유형의 개체나 코드가 모든 플랫폼과 언어로 서로 통신할 수 있습니다. 가벼운 프로토콜입니다.
45. ASP.net 페이지를 배포하는 방법은 무엇입니까?
답변: vs2003 및 vs2005에는 게시 메커니즘이 있습니다. vs2003을 게시한 다음 복사하고 배포할 수 있습니다.
Vs2005는 해당 위치에 직접 배포할 수 있습니다.
46. .net의 가비지 수집 메커니즘을 이해하는 방법은 무엇입니까?
답변: .NET의 가비지 수집 메커니즘은 참조 프로그램에 의한 메모리 재활용 및 해제를 의미합니다. new 키워드를 사용하여 개체가 생성될 때마다 런타임 라이브러리는 관리되는 힙에서 해당 개체에 대한 메모리를 할당해야 합니다. 공간이 제한되어 있기 때문이며 가비지 수집 메커니즘은 결국 사용되지 않은 메모리를 회수해야 합니다. 메모리가 해제되어 재사용되었습니다.
47. 객체지향의 세 가지 기본 원칙은 무엇입니까?
답변: 캡슐화, 상속, 다형성.
48. .NET의 모든 클래스에 대한 기본 클래스는 무엇입니까?
답변: 개체입니다.
50. foreach를 사용하여 탐색하고 액세스할 수 있는 개체를 구현해야 합니까?
답변: IEnumerable 인터페이스와 GetEnumerator() 메서드를 구현해야 합니다.
51. 힙과 스택의 차이점은 무엇입니까?
답변: 힙은 수동 작업에 의해 공간이 할당되고 해제되는 공간입니다.
스택은 운영 체제에 의해 자동으로 할당 및 해제되는 스택입니다. 프로그램을 컴파일하는 동안 변수와 함수에 대한 메모리 할당이 스택에서 수행되고, 런타임 시 함수 호출 중 매개변수 전달도 스택에서 수행됩니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.