모든 훌륭한 .NET 개발자가 대답 할 수있는 질문이 있습니까? [닫은]


246

우리 회사는 .NET 개발자 를 고용하려고합니다 . ASP.NET, Compact Framework, Windowsforms, 웹 서비스 등 다양한 .NET 플랫폼에서 작업합니다. 지원자가 경험이 있는지 확인하기위한 최소한의 표준 인 좋은 질문 목록 / 카탈로그를 작성하고 싶습니다. 그래서 내 질문은 :

좋은 .NET 프로그래머가 어떤 질문에 대답 할 수 있어야한다고 생각 하십니까?

또한 내 결함이있는 곳을 확인하기 위해 스스로 점검 목록 으로 볼 것입니다 (많은 ...) .

대체 텍스트

* 업데이트 : .NET 지식 만 테스트하는 것이 아니라 문제 해결 기능과 일반적인 프로그래밍 기술이 더 중요하다는 점을 분명히하고 싶습니다.

답변:


171

기본 질문은 다음과 같습니다.

일반적으로 지원자들에게 다음과 같은 간단한 코딩 연습을 완료하도록 요청하는 것이 도움이된다고 생각합니다.

  • 내장 클래스를 사용하지 않고 자신의 링크 된 목록 클래스를 작성하십시오.
  • 내장 클래스를 사용하지 않고 자신 만의 해시 테이블을 작성하십시오.
  • 이진 트리를 나타내는 클래스를 작성하십시오. 트리의 모든 노드를 가로 지르는 메소드를 작성하십시오.
  • 내장 메소드를 사용하지 않고 어레이에서 이진 검색을 수행하는 메소드를 작성하십시오.
  • 블로그의 데이터베이스 스키마를 그립니다. 각 사용자에게는 하나의 블로그 만 있고 각 블로그에는 많은 범주가 있으며 각 범주에는 많은 게시물이 있으며 각 게시물은 둘 이상의 범주에 속할 수 있습니다. 신청자에게 특정 정보를 가져 오기위한 쿼리를 작성하도록 요청하십시오.

다음으로 특정 기술 노하우를 찾으십시오.

  • (이벤트 핸들러) 사용자 정의 이벤트 핸들러를 사용하여 클래스를 작성하고 사용자 정의 이벤트 핸들러에 연결되는 다른 클래스를 작성하십시오.
  • (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 %는 업무용 응용 프로그램과 관련이 있습니다.

컴파일러 개발, 게임 엔진 개발, 정리 증명, 이미지 처리 등과 같은 특정 분야의 개발자를 찾고 있지 않다면 업무용 앱에 대한 지식을 테스트하는 질문이 대부분의 경우에 적절하다고 생각합니다. .


8
나는 당신의 목록이 강점과 약점을 조사하는 좋은 방법이라고 생각하지만 "기본"지식은 아닙니다. Greg가 지적했듯이, 나는 "단락 된"연산자가 단순하지만 자주 사용하지만 자주 사용합니다. 이름을 잊어 버렸습니다. 실격 될까요?
Mark Brittingham

33
마찬가지로 변수 "Volatile"을 선언 한 적이 없으며 XML을 거의 사용하지 않으므로 프로그래밍 작업을 완료 할 수 없습니다. 그러나 저는 출판 된 저자이며 주요 프로그래밍 콘테스트에서 우승했으며 주요 상을 수상한 성공적인 제품 4 개를 작성했습니다.
Mark Brittingham

24
따라서, 나는 당신의 목록에 반드시 동의하지는 않습니다. 단지 "기본"이라는 지식 항목의 특성에 동의하지 않습니다. 어려운 개념 은 없지만 일부는 매우 구체적이며 많은 지원자에게 친숙하지 않습니다. 여전히-다시-사과드립니다.
Mark Brittingham

39
이 목록에있는 항목 중 절반은 사소한 질문입니다. 이것은 좋은 사람들을 찾는 데 도움이되지는 않지만 인터뷰에 참여할 정도로 성가신 사람들도 있습니다.
Jason Kester

15
(Regex) Write a regular expression which removes all tags from a block of HTML.- 나는 문제 냄새
BlueRaja - 대니 Pflughoeft

135

Scott Hanselman블로그 에서이 목록을 찾았습니다 .

다음은 게시물로 분류 된 가장 중요한 질문이라고 생각합니다. 나는 그것들을 편집하고 재정렬했다. 다행히도 이러한 대부분의 질문에 대해서는 스택 오버플로에 대한 좋은 대답이 이미 있습니다. 링크를 따라 가십시오 (나는 최대한 빨리 업데이트 할 것입니다) .

플랫폼 독립적 .NET 질문

ASP.NET


8
나는이 모든 것을 알고있는 개발자를 알고 여전히 책보다 더 이상 볼 수 없습니다. Open-Minded는 매우 중요하며, 너무 많은 세부 답변을 얻으려고 시도하지 말고 개념을 이해해야합니다.
Saif Khan

난 에이지, 사이프 그러나 다른 한편으로, 세부 사항을 모르면 "개념"을 올바르게 적용 할 수 없습니다.
splattne

2
디버그와 릴리스 빌드의 차이점과 같은 일부 질문은 실제로 어리 석습니다. 예, Visual Studio는 일부 빌드 구성을 미리 정의했지만 이는 플랫폼 독립적 질문이 아닙니다. 커맨드 라인 또는 Mono를 사용하여 컴파일하는 사람은 당신이 무엇을 말하는지 모를 것입니다.
lubos hasko

3
인터뷰 상황에서 일반적으로 2 페이지 또는 책의 장을 명확하게 표현하는 개념을 설명 할 수 있습니까? 미리 연습하지 않고는 할 수 없습니다
Chris S

1
사람들에게 용어를 정의하도록 요구하지 마십시오. 당신은 시험을 위해 암기해야했던 CS 전공으로 끝날 것이지만 실제로 프로그래밍 방법을 알고있는 사람들은 그리워합니다. 한 번 "지연"이 무엇인지 물어 본 기억이 있습니다. 나는 그 당시에 하루에 30 번을 했음에도 불구하고 첫 단서가 없었습니다.
Jason Kester

94

이것은 당신이 듣고 싶지 않을 수도 있지만 좁은 기술에 중점을 두지 말고 일반적인 프로그래밍 및 문제 해결 기술에 중점을 둘 것을 권장합니다. 견고한 개발자는 원하는 모든 것을 빠르게 배울 수 있습니다.

예를 들어, 나는 Compact Framework 사람이 아니므로, 당신이 그 방향으로 가면 인터뷰에 실패 할 수 있습니다. 그러나 그것을 사용해야한다면 연구를하고 바로 들어갈 수 있습니다.

Joel의 저서 Smart and Gets Things Done 은 개발자 채용에 대한 훌륭한 조언을 제공하며 질문 종류에 대한 수분이 많은 섹션이 있습니다. 나는 그것을 강력히 추천합니다.


채용 과정의 일부는 Cardspace 나 그들이 본 적이없는 무언가에 문제가있을 것입니다 !!
Jennifer

어쩌면 연구에 문제가있어서 불공평하다고 생각합니다. 나는 그들이 문제를 통해 어떻게 생각 하는지를 이해하고 그들이 추상적 인 코드를 작성하는 것을 보는 것에 더 관심이있어서 그들이 네이티브 코드를 말하는지 알 수 있습니다.
Brian MacKay

일반적인 프로그래밍과 문제 해결 기술을 모두 갖춘 두 사람을 선택할 수 있다면 실용적인 이유로 더 나은 .NET 지식과 경험을 가진 사람을 선택해야합니다.
splattne

.NET 지식은 확실하지만 더 좁은 기술에 관해서는 문제 해결 기술로 프로그래머와 함께 갈 수 있다고 생각합니다.
Jennifer

5
그렇습니다. 우리 모두는 수많은 "좁은 기술"을 알아야합니다. 그러나 우리가 아는 모든 사람들에게는 알지 못하는 무리가 있습니다 (보통 필요하지 않기 때문에). 나는 당신이 SharePoint를 모른다는 훌륭한 개발자를 놓치고 싶지 않다고 말하고 있습니다.
Brian MacKay

66

내가 LINQ 경험이있는 사람을 인터뷰한다면, 나는 아마도 거라고 생각 LINQ를 설명하도록 요청합니다. 지연된 실행, 스트리밍, IEnumerable / IEnumerator 인터페이스, foreach, 반복자 블록, 표현식 트리 (보너스 포인트의 경우)를 설명 할 수 있으면 나머지 부분에 대처할 수 있습니다. (실제로 그들은 "OK"개발자 일 수는 있지만 아직 LINQ를 "얻을"수는 없습니다. 저는 그들이 LINQ를 공정한 질문으로 만들기에 충분한 지식을 가지고 있다고 주장한 경우를 생각하고 있습니다.

과거에는 이미 나열된 몇 가지 질문과 몇 가지 다른 질문을했습니다.

  • 참조 유형과 값 유형의 차이점
  • 참조로 전달 및 값으로 전달
  • IDisposable 및 종료 자
  • 문자열, 불변성, 문자 인코딩
  • 부동 소수점
  • 대의원
  • 제네릭
  • 널 입력 가능 유형

1
예, 이런 종류의 답변을보고 싶었습니다. 받아 들여지는 좋은 후보자. 더 나은 사람?
splattne

5
@ splattne : 바보처럼 굴지 마라. 이것은 Jon Skeet의 대답이므로 받아들이십시오. 불가피하다.
Steven A. Lowe

3
방금 말하려고했는데 ... wt ... 당신은 Skeet을 의심하지 않습니다!
Saif Khan

1
이것은 허용되는 것보다 훨씬 더 나은 대답입니다. 이것은 전문 지식 영역에 대한 깊은 지식을 보유하고 있는지, 또한 광범위한 영역을 운영하는 언어 기능에 대한 지식을 제공하는지 이해하는 데 도움이됩니다.
Mark Brittingham

1
이 답변은 '자신의 링크 된 목록 디자인, "regexp를 사용하여 HTML 구문 분석"또는 "조립, GAC 등에 대해 얼마나 알고 있습니까 ..."의 도구를 능가합니다. 실제로 개발 중에 사용합니다. LINQ에 대한 친밀한 지식도 필수적입니다. 이 사이트에서 사람들이 LINQ를 이해하지 못하기 때문에 자신의 컬렉션을 위해 자신의 Union Distinct 및 Concat 버전을 롤링하려고하는 많은 사례를 보았습니다.
Evan Plaice 2018 년

42

저는 '101 top .NET interview Qs and As'에서 찾아보고 암기 할 수있는 것보다는 문제 해결 능력을 찾고있는 사람들과 함께 있습니다.

예를 들어 자신을 인용하기 위해 매일 사용해야하는 것들을 '알고'있습니다. 나는 거의 사용하지 않는 것을 잊어 버리는 경향이있다.

인터뷰에서 나를 위로하고 싶었다면 매우 쉬울 것입니다.

그럼에도 불구하고, WinForms 및 ASP.NET 화신에 대해 동일한 Business Objects 및 Data 계층을 사용하는 시스템을 위해 많은 인프라를 설계하고 코딩했으며, 우리의 코드베이스는 우리가 20+ 이상을 지원하고 개발할 수있을 정도로 강력하고 재사용 가능합니다. 다르게 구성된 웹 사이트 버전과 WinForms 응용 프로그램의 수 (현재 5) 증가

... 두 명의 개발 팀과 함께.

예전에는 기술 책임자로 팀에서 일 했었고, 직업에는 상당히 많은 채용과 인터뷰가있었습니다. 저의 가장 큰 실수는 저를 포함한 우리 모두가 합쳐 놓은 것보다 우리가 사용하고있는 기술에 대해 더 잘 아는 사람을 고용하는 것이 었습니다. 저는 전문가로 저를 세었습니다. 그는 모든 것을 알고 있었다

... 요구 사항을 충족하거나 자신을 제외한 다른 사람이 이해할 수있는 코드를 작성하는 방법을 제외하고. 계약을 갱신하지 말라고 PM을 설득했을 때, 그가 쓴 모든 것을 다시 써야했다.

면접을 현명하게 구성하십시오 ...


1
정말 흥미로운 관찰입니다. 우리는 정반대의 상황을 겪었습니다. 다른 사람들보다 알고 있지만 경영진이 더 많이 알고 있다고 확신 하는 개발자의 작은 부분입니다 . 그들은 내가 주장한 데이터 추상화 클래스를 제안했다 (나는 "팀 선수"가 아니라는 비판을 받았다).
Mark Brittingham

-계속-4 개월 동안의 "skunk works"노력으로 팀에게 다른 부서로 이관 서류를 제출했습니다. 나머지 팀원들은 조각을 가져와야했습니다.
Mark Brittingham

1
결론 : 코딩 구성에 대한 특정 지식이 고객의 요구를 충족시키는 작동중인 소프트웨어를 만들 수있는 능력을 보장하지는 않는다는 귀하의 의견을 정말로 좋아합니다.
Mark Brittingham

34

존 스키트는 누구입니까?


11
또는 더 나은 : 당신은 Jon Skeet입니까? ;-)
splattne

이것은 실제로 C # 위치에 대한 좋은 질문입니다. Jon Skeet이 이제 C # 관련 stackoverflow / google 검색을 소유하고 있음을 고려하십시오. 그가 지금 누구인지 모른다면 Jon Skeet이거나 C #으로 프로그래밍하지 않은 것입니다.
lubos hasko

2
Jon Skeet에 대한 공격은 없습니다. 그러나 Rick Strahl은 내가 겪고있는 문제 유형에 대한 답변을 더 자주 표시하는 경향이 있다고 생각합니다.
Andrew Theken

1
@ [Andrew Theken] : "Rick Strahl"에 대해 ;-) google에 대한 백분율을 재생합니다. 38,500 개의 히트를, "jon skeet"는 144,000을 생성합니다. 또한 Rick Strahl은 SO AFAIK에 게시하지 않습니다.
Steven A. Lowe

1
두 사람 모두 그들이하는 일에 능숙합니다 ... 우리의 이익.
GR7

33

좋은 질문은

  • 당신은 어떻게 생각하십니까 좋은 .NET에 대한?
  • .NET에 대해 나쁜 점은 무엇이라고 생각 하십니까?

후보자가 무엇을 보게 될지를 보는 것은 흥미로울 것이며, 프레임 워크를 어떻게 사용하는지에 대해 확실히 배울 것입니다.


18

나는 항상 부드러운 기술을 찾고 싶습니다. 그래서 좋은 OO 디자인, 테스트 주도 개발, 좋은 멀티 (프로그래밍) 언어 배경 및 모든 둥근 일반 영리 (그리고 추측이 끝난 것입니다!).

지능형 개발자는 이전에 본 적이 없어도 알아야 할 개별 기술을 배우는 데 어려움을 겪지 않아야하므로 WCF / 컴팩트 프레임 워크와 관련된 특정 질문에 대해 너무 걱정하지 않아도됩니다.

나는 그들이 알고있는 것과 작동하는 방법을 찾는 가장 좋은 방법 인 코드를 작성하도록 할 것입니다. 누구나 '참조 유형과 값 유형의 차이점은 무엇입니까?'에 대한 답변을 외울 수 있습니다.


2
에 딱 맞다. 부패한 질문을하는 것은 문제를 요구합니다. 내가 일하는 회사는 오래된 기술자에게 질문하지만 대부분은 다음과 같습니다. 나는 이러한 문제가 있습니다. 여기에는 화이트 보드가 있습니다. 무섭지 만 효과적입니다.
Chris Brooks

4
...하지만 면접관이 기대하는 방식으로 해결하지 않으면 실패합니다.
gbjbaanb

1
가끔 @gbjbaanb. 그러나이 경우 어쨌든 거기서 일하고 싶지 않을 수도 있습니다. 당신도 회사를 인터뷰하고 있다는 것을 기억하십시오. 인터뷰에 실패한 몇몇 회사를 알고 있습니다!
Tony Ennis

13

솔직히?

".NET은 무엇입니까?"

.NET이 무엇인지, 무엇이 사용되지 않는지, 어떻게 사용되는지, 어떤 요소로 구성되어 있는지 등을 명확하게 대답 할 수 있다면 ... 그들이 무엇인지 알고 있는지 확신 할 수 있다면, 그들은 기회 일 것입니다 잘 아세요.

중요한 것은 많은 사람들이 .NET이 무엇인지 실제로 모른다는 것입니다. 프로그램을 작성하는 사람들조차도.


11

정말이지 세상에서 가장 똑똑한 사람들이 답을 모르는 매우 간단한 질문이있을 것입니다. 그들이 힘들 기 때문이 아니라 단순히 그것을 겪지 않았기 때문입니다. 임의의 질문에 대답 할 수 있는지 여부가 아니라 전체 패키지와 개발자의 기술을 살펴보아야합니다.

질문이 짧은 문장이나 두 문장으로 대답하기에 충분히 쉬운 경우, 모르는 사람에게 간단히 말할 수 있습니다. "모든 .NET 개발자가 대답 할 수 있어야합니다."라는 질문에 대답 할 수있는 능력이 아니라 개념과 추론 기능에 대한 이해를 찾아야합니다.


10

참조 유형과 값 유형의 차이점을 알아야합니다.

이벤트는 하드 참조로 저장됩니다 (즉, 이벤트 등록을 취소해야합니다. 그렇지 않으면 응용 프로그램에서 메모리가 누출 됨).

문자열은 변경할 수 없습니다.



4

나는 정기적으로 읽는 블로그와 그들이 해왔 던 개인 프로그래밍 프로젝트에 대해 물어 보는 것이 좋습니다. 이것이 배우려는 의지와 프로그래밍에 대한 열정을 보여줄 것입니다.


3

다음은 C # 프로그래머로 작업을 신청하는 프로그래머를 필터링하는 데 사용한 것입니다.

참조 유형과 값 유형의 차이점은 무엇입니까?

C # 언어 구성에 필요한 IDisposable 인터페이스와 구현 방법을 설명하십시오.

해당 매개 변수에 대해 널을 허용하지 않는 계약이있는 메소드에 널로 인수로 전달되면 어떤 예외가 발생합니까?


내 코드는 일반적으로 NullReferenceException을 발생시킵니다.
Joshua

5
@Joshua, ArgumentNullException 실패했습니다.
Nicolas Dorier 2016 년

3

"ASP의 어느 쪽 : 프로덕션에서 어떤 컨트롤을 사용하고 왜 사용합니까?"

그것은 당신의 주제가 DataGrids와 LinkButtons에 의해 태워 질 정도로 오랫동안 오랫동안 큰 프로젝트를 실제로 구축하고 유지했는지, 또는 그가 여전히 드래그 / 드롭 "21 일 안에 자신을 가르 칠"단계에 있는지 여부를 빠르게 알려줄 것입니다.

(답은 asp : Repeater, asp : PlaceHolder, asp : Literal 및 asp : Content입니다)



2

이것은 약간 가변적 인 질문이며, 실제로 지금 완전히 대답 할 수있는 것이 아니라 적절할 때 대답 할 수있는 질문입니다.

".NET 프레임 워크는 태스크 X를 수행하기 위해 무엇을 제공합니까?"

또는 더 구체적으로 :

".NET 프레임 워크에 X를 수행하는 개체가 포함되어 있습니까?"

예를 들어, 최근에는 컬렉션 방식의 NOT, OR, XOR 및 AND를 수행하고 모든 값을 설정하는 등 부울 배열을 저장하고 그에 대해 작동하도록 최적화 된 객체를 개발하는 데 몇 시간을 보냈습니다. 모든 단위 테스트를 작성하고 최상의 성능을 위해 조정할 때까지 "BoolArray"개체가 .NET 프레임 워크에 "BitArray"라는 이름으로 이미 존재한다는 사실을 깨달았습니다.

어떤 객체 / 도우미가 사용하는지에 대한 가장 좋은 대답은 당신이 모르거나 완전히 이해하지 못하는 것이므로 여러 번 대답하기가 어려울 수 있습니다. 모든 사람이 실제로 성능을 대폭 향상시킬 수있는 기본 도구 인 간단한 StringBuilder에 대해 알고 있다면 .NET 세계는 얼마나 멋진 지 알 수 있습니다.


2

닷넷을 사용하여 프로그래밍 개념을 이해하는 데 중점을 둔 몇 가지 질문을 제안합니다.

관리되는 환경과 관리되지 않는 환경의 차이점은 무엇입니까? GC 장단점 JIT 장단점 응용 프로그램 X를 개발해야하는 경우 닷넷을 사용할 수있는 이유는 무엇입니까? (이것은 그가 닷넷을 보는 방법을 식별 할 것입니다)

또한 작은 방법을 작성하고 더 나은 닷넷 클래스 또는 표준 방법을 사용하여 더 나은 성능으로 다시 작성하도록 요청하십시오. 또한 논리적 인 방법 또는 다른 방법으로 부정확 한 방법을 작성하고 수정하도록 요청하십시오.


2

나는 이미 언급 한 몇 가지 질문 외에도 다음을 좋아합니다.

  • 대리인은 무엇입니까?
  • 앱 도메인은 무엇입니까?
  • 언제 lock 키워드를 사용 하시겠습니까?
  • 표준 라이브러리 일반 컬렉션 클래스는 스레드 안전합니까?
  • 확장 방법은 무엇입니까?
  • XmlDocument와 XmlReader의 차이점은 무엇입니까?
  • 응용 프로그램 구성 파일에서 구성 설정을 어떻게 읽습니까?

2

이것은 흥미롭고, 귀머거리로 태어 났을 때, 내 생각을 개인적으로 전달하는 데 더 많은 노력이 필요할 것 같은 질문을 받음으로써 내 의견을 넣은 것에 대해 투표를하지 않을 위험이 있습니다.

기본 패러다임은 ' 당신의 생각과 이해를 얼마나 잘 말할 수 있습니까? ', 그것은 실제로 면접관이 찾고있는 것입니다. 의사 소통은 항상 내가하는 방식으로 인해 가장 큰 약점이며 좌절하기 쉽습니다.

지식을 가지고 모든 것을 알고있는 것이 이상적이지만 불행히도 알지 못하는 것이 있지만 실제로 대답을 모르고 허풍보다는 인정하면 두려워하지 않아야합니다. 그것을 통해. 면접관이 위의 질문 중 하나와 같은 질문을했을 때, 그 질문을 확신하지 못하거나 오해 / 오해 할 수 없다고 개인적으로 당황 스러울 수 있지만 그것을 처리하는 법을 배웠습니다.

당신은 실제로 얼마나 많은 사람들이 와플을 통해 허풍을 치는가에 대해 놀랄 것입니다.

내 2 센트, 안부 인사, 톰


2

몇 가지 더 :

  1. 부분 수업. 그리고 그 한계?
  2. 봉인 된 수업
  3. .NET에서 현지화를 수행하는 방법
  4. 데이터베이스 연결
  5. 다양한 구성 파일
  6. 대리인 대 이벤트
  7. 관리되지 않는 dll 액세스
  8. 반사
  9. 일반 클래스
  10. .NET 3.5에서 가장 인기
  11. 사용한 단위 테스트 프레임 워크

2

나는 그 사람들에게 "교과서에서 무언가를 알고있다"라는 질문을하지 말고 다음과 같은 어설프게 물어보십시오.

  • foreach 루프는 일반 C #에서 무엇을합니까? (반복자 루프를 쓸 것으로 예상합니다.)
  • 싱글 톤은 무엇입니까?
  • 문자열을 Datetime으로 구문 분석하도록하십시오 (try / catch 대신 TryParse를 사용할 것으로 예상)
  • 싱글 톤, 전략 및 명령 패턴 구현
  • 테스트를 위해 코드 조각을 리팩터링하십시오. 테스트 대상 유닛에서 외부 서비스를 추상화하고 서비스의 자체 테스트 더블을 구현할 것으로 예상 (모의 프레임 워크를 제공하지 않음)

내가 요청할 수있는 사람에 따라 100 % 확실하지 않습니다.

  • 널 입력으로부터 메소드를 지키게한다 (네스트를 줄이기 위해 여러 번의 리턴을 사용할 것으로 예상)
  • 객체 이니셜 라이저 작동 방식 (스레드 안전 할당을 작성할 것으로 예상)

또한 나는 그 / 그녀가 자신의 물건을 어떻게 배웠는지 그리고 무엇을 읽고 있는지 (어떤 블로그, 책)를 물어볼 것입니다.


1

몇 가지 더 :

가비지 수집의 제한 사항은 무엇입니까?

종료 자 및 IDisposable에 대해 알고 있습니다.

스레드 풀과 사용시기를 알고 있어야합니다.

GUI 응용 프로그램을 수행하는 경우 Windows GUI는 단일 스레드입니다.

foreach를 사용하십시오 (MoveNext 등을하는 많은 사람들이 있습니다)


1
몰랐으므로 가비지 콜렉션한계를 찾아 보았습니다 .
MSpeed

1

나는 그것이 단지 질문이 아니라고 생각한다. 나는 당신이 그들을 인터뷰 할 때 똑똑한 몇 사람을 알고 있지만 일단 그들이 진짜에 도달하면 너무 완벽 주의자이다. 나는 그들이 과제를 비참하게 코딩하지 못한다고 말할 것이다.

나는 한 번 인터뷰를 받았으며 첫 번째 고용주가 30 분 안에 채울 기술 설문지를 제공하는 접근법을 좋아했습니다. 사람이 성공하면 성격 판단 및 성격 찾기 질문과 기술 전문 용어를 다루는 1 시간의 인터뷰가 필요합니다.

그런 다음 6 시간 안에 3 페이지 웹 응용 프로그램을 개발하라는 요청을 받았습니다. 응용 프로그램에 부과되는 제약 조건은 작은 ERD, Layered Design, UI Consistency와 같은 응용 프로그램 개발의 주요 측면을 현명하게 다루고 GridView의 라디오 버튼 사용 및 웹 페이지의 DB에서 이미지 유형 가져 오기 및 하나의 알고리즘 개발과 같은 특정 문제를 제어합니다. 보안, 암호화, 해싱, 데이터 표현 및 조작.

다음 날에는 성능 병목 현상 영역을 다루는 개발 된 응용 프로그램과 디자인 및 사용 된 알고리즘의 개선 사항에 대해 30 분 동안 논의했습니다. 특정 조건으로 이전 단계에서 개발 한 알고리즘을 개선하기위한 1 시간의 선택적 테스트.

따라서 상당한 시간이 걸렸지 만이 방법으로 고용하는 사람이 훌륭한 개발자가되기 위해 반드시 필요한 개념을 알지 못하게 할 수 있습니다.


0

나는 그에게 문제를 주며 알고있는 .net의 기능을 사용하여 문제를 해결하도록 요청하고 왜 그것이 최선의 해결책이라고 생각합니까?

이것은 문제를 해결하기위한 그의 접근 방식과 함께 기술, 분석 및 문제 해결 능력 측면에서 후보자의 거의 모든 능력을 깨뜨릴 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.