기본 질문은 다음과 같습니다.
일반적으로 지원자들에게 다음과 같은 간단한 코딩 연습을 완료하도록 요청하는 것이 도움이된다고 생각합니다.
- 내장 클래스를 사용하지 않고 자신의 링크 된 목록 클래스를 작성하십시오.
- 내장 클래스를 사용하지 않고 자신 만의 해시 테이블을 작성하십시오.
- 이진 트리를 나타내는 클래스를 작성하십시오. 트리의 모든 노드를 가로 지르는 메소드를 작성하십시오.
- 내장 메소드를 사용하지 않고 어레이에서 이진 검색을 수행하는 메소드를 작성하십시오.
- 블로그의 데이터베이스 스키마를 그립니다. 각 사용자에게는 하나의 블로그 만 있고 각 블로그에는 많은 범주가 있으며 각 범주에는 많은 게시물이 있으며 각 게시물은 둘 이상의 범주에 속할 수 있습니다. 신청자에게 특정 정보를 가져 오기위한 쿼리를 작성하도록 요청하십시오.
다음으로 특정 기술 노하우를 찾으십시오.
- (이벤트 핸들러) 사용자 정의 이벤트 핸들러를 사용하여 클래스를 작성하고 사용자 정의 이벤트 핸들러에 연결되는 다른 클래스를 작성하십시오.
- (XML) XML 문서를로드하고 속성 x, y 및 z를 가진 모든 노드를 선택하십시오.
- (기능 프로그래밍) 다른 기능을 파라미터로 받아들이는 기능을 작성하십시오. Map 또는 Fold 함수는이 작업에 실제로 효과적입니다.
- (반사) 클래스에 특정 속성이 있는지 확인하는 함수를 작성하십시오.
- (정규식) HTML 블록에서 모든 태그를 제거하는 정규식을 작성하십시오.
이 중 어느 것도 능숙한 C # 프로그래머가 대답하기 어려운 어려운 질문은 아니며 지원자에게 특정 강점을 잘 알려 주어야합니다. 특정 디자인 패턴을 사용하는 몇 가지 질문 / 코드 샘플로 작업 할 수도 있습니다.
[설명 편집] :
내가 이런 유형의 질문을하는 이유를 많은 사람들이 이해하지 못하는 것 같습니다. 몇 가지 사람들의 의견에 대해 설명하겠습니다 (직접 인용하지는 않지만 대신 말로 표현).
Q : 휘발성 물질이나 약한 참조를 마지막으로 사용한 사람은 언제입니까?
A : 기술 인터뷰를 할 때 사람 이 .NET의 고급 및 저수준 기능을 이해하는지 확인합니다 . 휘발성 및 약한 참조는 .NET에서 제공하는 두 가지 저수준 기능입니다. 이러한 기능이 실제로 자주 사용되지 않더라도 이러한 질문에 대한 답변은 매우 드러납니다.
휘발성을 잘 이해하면 컴파일러 최적화가 코드의 정확성을 변경하는 방법, 스레드가 특정 시점에 동기화되지 않을 수있는 공유 상태의 로컬 사본을 유지하는 방법을 이해하고 다중 스레드 코드의 복잡성을 최소화하는 방법을 이해한다는 것을 알 수 있습니다 .
약한 참조를 잘 이해하면 가비지 수집기의 친밀한 세부 사항과 메모리를 언제 비울 수 있는지 결정하는 방법을 알 수 있습니다. 물론 후보자에게 "가비지 수집기의 작동 방식"을 물어볼 수는 있지만 약한 참조에 대해 묻는 것이 훨씬 더 좋고 신중한 답변을 얻을 수 있습니다.
.NET은 상당히 추상적 인 언어이지만 스타 개발자는 거의 항상 CLR과 .NET 런타임의 하위 수준 세부 사항에 대해 깊이 이해하고 있습니다.
Q : 왜 해시 테이블이나 링크 된리스트를 구현해야합니까?
A : Dictionary 클래스가 열등하거나 사람들이 자신의 해시 테이블을 굴려야한다는 것을 암시하지 않습니다. 이것은 개인이 데이터 구조를 최소한으로 이해 하고 있는지 테스트하는 기본적인 질문입니다 . 이 질문들이 시험하는 것 : 최소한의 이해.
Data Structures 101의 첫날에 이러한 해시 테이블과 연결 목록에 대해 배웁니다. 누군가 해시 테이블이나 연결 목록을 처음부터 작성할 수 없으면 기술 지식에 큰 차이가 있습니다.
Q : 이 질문들이 왜 그렇게 방향이 정교합니까?
A : 이 글타래의 제목은 "모든 훌륭한 .NET 개발자가 알아야 할 질문"입니다. 모든 .NET 개발자는 크루 드 앱을 작성하면서 경력을 쌓기 시작하며 사람들이 일상적으로 사용하는 모든 응용 프로그램 개발의 90 %는 업무용 응용 프로그램과 관련이 있습니다.
컴파일러 개발, 게임 엔진 개발, 정리 증명, 이미지 처리 등과 같은 특정 분야의 개발자를 찾고 있지 않다면 업무용 앱에 대한 지식을 테스트하는 질문이 대부분의 경우에 적절하다고 생각합니다. .