모든 좋은 .NET 개발자가 질문에 대답 할 수 있어야합니까?


Answers

Scott Hanselman 의 blog 에서이 목록을 발견했습니다.

다음은 카테고리로 분류 된이 게시물의 가장 중요한 질문입니다. 나는 그들을 편집하고 재 배열했다. 다행히도 이러한 질문의 대부분은 Stack Overflow에 대한 좋은 대답입니다. 그냥 링크를 따라 가십시오 (나는 최대한 빨리 업데이트 할 것입니다) .

플랫폼 독립적 인. NET 질문

ASP.NET

Question

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

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

나는 또한 내 자신의 결점이 어디에 있는지 알기 위해 나 자신을위한 체크리스트 로 보았다.

* 업데이트 : .NET 지식에 대해서만 테스트하지는 않으며, 문제 해결 기능과 일반적인 프로그래밍 기술은 우리에게 더욱 중요하다는 것을 분명히하고 싶습니다.




나는 LINQ 경험이있는 사람을 인터뷰했다면 LINQ를 설명하도록 요청했을 것입니다. 그들이 지연된 실행, 스트리밍, IEnumerable / IEnumerator 인터페이스, foreach, iterator 블록, 표현 트리 (보너스 포인트 용)를 설명 할 수 있다면 나머지 부분은 대처할 수 있습니다. (확실히 "OK"개발자 일 수도 있고 LINQ를 아직 얻지 못했을 수도 있습니다 - 나는 그들이 공정한 질문을하기에 충분한 LINQ를 알고 있다고 주장한 경우를 정말로 생각하고 있습니다.)

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

  • 참조 유형과 값 유형의 차이점
  • 참조로 전달하고 값으로 전달
  • IDisposable 및 finalizers
  • 문자열, 불변성, 문자 인코딩
  • 부동 소수점
  • 대표자들
  • 제네릭
  • Null 가능 유형



나는 그 사람들에게 "교과서의 어떤 것을 안다"는 질문을하지 않고 오히려 다음과 같이 약간의 질문을한다.

  • foreach 루프는 평범한 C #에서 무엇을합니까? (반복자 루프를 작성해야한다.)
  • 싱글 톤은 무엇입니까?
  • 그 / 그녀가 Datetime에 문자열을 파싱하게하십시오 (try / catch 대신 tryParse를 사용할 것을 기대합니다)
  • 싱글 톤, 전략 및 명령 패턴 구현
  • 시험용 코드 조각을 리팩터링하게하십시오. 시험중인 장비에서 외부 서비스를 추상화하고 자체 Test-double 서비스를 구현할 것을 기대합니다 (조롱 프레임 워크 제공 없음).

이것들은 제가 물어볼 수있는 사람에 따라 100 % 확실하지 않습니다 :

  • 그 / 그녀가 null 입력에서 방법을 지키게하십시오 (그 / 그녀가 여러 반환을 사용하여 중첩을 줄이기를 기대 함)
  • 객체 이니셜 라이저는 어떻게 작동합니까? (스레드 안전 지정을 쓰려고합니다)

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




나는 항상 자신의 연약한 기술을 찾겠다. 그래서 좋은 OO 디자인, 테스트 주도 개발, 좋은 멀티 (프로그래밍) 언어 배경과 모든 라운드 일반 smartness (그리고 점점 일을 다 끝났어!).

지능적인 개발자는 이전에 한번도 본 적이 없더라도 알 필요가있는 개별 기술을 배우는 데 어려움을 겪지 않아야합니다. WCF / 컴팩트 프레임 워크와 관련된 특정 질문에 대해서는 너무 걱정하지 않아도됩니다.

나는 그들이 그들이 무엇을 알고 어떻게 작동하는지 알아내는 가장 좋은 방법을 몇 가지 코드로 작성하게 할 것이다. 누구나 '참조 유형과 값 유형의 차이점은 무엇입니까?'라는 대답을 암기 할 수 있습니다.




다음은 C # 프로그래머로 일하는 프로그래머를 필터링하는 데 사용 된 몇 가지 예입니다.

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

IDisposable 인터페이스를 설명하십시오. C # 언어 구문에는이 인터페이스가 필요하며 구현 방법은 무엇인지 설명하십시오.

null가 그 파라미터에 null를 허가하지 않는 계약을 가지는 메소드에 인수로서 건네받는 경우는, 어느 쪽의 예외를 throw합니까?







스레드 란 무엇입니까?

GC가 무엇입니까?




몇 가지 질문은 dotnet을 사용하여 프로그래밍 개념을 이해하는 데 초점을 맞출 것을 제안합니다.

관리되는 환경과 관리되지 않는 환경의 차이점은 무엇입니까? GC 장단점 JIT 장단점 우리가 X 응용 프로그램을 개발해야한다면 dotnet을 사용할 수 있습니까? (이것은 그가 어떻게 도트 넷을 보는지 식별 할 것입니다)

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




나는 그것이 단지 질문이 아니어야한다고 생각한다. 나는 당신이 인터뷰 할 때 매우 빛나는 몇 사람을 안다. 그러나 그들은 현실주의에 빠지면 너무 많은 완벽 주의자이다. 나는 그들이 비참하게 작업을 코딩하지 못한다고 말할 것이다.

나는 한 번 인터뷰를 한 적이 있는데, 처음 고용주가 30 분 안에 기술 설문지를 작성하는 접근법을 좀 좋아했습니다. 그 중 하나가 성공하면 성격 심판 및 인물 찾기 질문과 기술 전문 용어를 포함하는 1 시간의 인터뷰를 요청 받게됩니다.

그런 다음 6 시간 안에 3 페이지 웹 응용 프로그램을 개발하도록 요청 받았습니다. 작은 ERD, Layerd 디자인, UI 일관성, GridView에서 라디오 버튼 사용, 웹 페이지의 DB에서 이미지 유형 가져 오기, 특정 알고리즘 개발과 같은 특정 문제 제어와 같은 애플리케이션 개발의 주요 측면을 스마트하게 응용 한 제약이있었습니다. 보안, 암호화, 해싱, 데이터 표현 및 조작.

그런 다음 다음 날 그들은 성능 병목 영역과 디자인 및 사용 된 알고리즘의 개선을 다루는 개발 된 응용 프로그램에 대한 30 분 토론을했습니다. 그리고 특정 조건으로 이전 단계에서 개발 된 알고리즘을 개선하기위한 1 시간 옵션 테스트.

따라서 상당한 시간이 걸렸지 만,이 방법을 사용하면 고용인이 잘 아는 개발자가 될 수있는 개념을 알 수 있습니다.




이것은 흥미 롭습니다. 내 의견을 말하면서 투표를 거절 당할 위험에 처해 있습니다. 귀가 먹을 때 태어날 때, 그런 질문을하는 것이 내 생각을 개인적으로 의사 소통하는 데 더 많은 노력을 요구하게됩니다.

무디게하기 위해서, 나는 전형적인 질문을 너무 많이 읽지 않을 것입니다. 근본적인 패러다임은 ' 당신의 생각과 이해를 얼마나 잘 표현할 수 있습니까? ', 그것은 정말로 면접관이 찾고있는 것입니다. 의사 소통은 내가하는 방식으로 인해 항상 가장 큰 약점이며 아주 쉽게 좌절 할 수 있습니다.

지식을 갖고 노하우가있는 유형이되는 것이 이상적이지만 불행히도 모르는 일이 있습니다. 실제로 대답을 모르고 허풍을 부르는 대신 두려워하지 마십시오. 그것을 통해. 면접관이 위의 질문 중 하나와 같은 질문을했는데 질문을 잘못 이해했거나 잘못 해석 한 경우이를 개인적으로 당혹스럽게 할 수는 있지만 선생님은이를 처리하는 방법을 배웠습니다.

얼마나 많은 사람들이 실제로 와플을하고 허세 부리는 것이 놀랍습니까? 하루가 끝나면 은유 적으로 말하면서 '바지를 내리고'내려갑니다.

내 2 센트, 안부 인사, 톰.




Jon Skeet은 누구입니까?




없음. 아마도 세계에서 가장 똑똑한 사람들이 답을 모른다는 것은 매우 간단한 질문 일 것입니다. 그들이 열심히하기 때문에가 아니라 단순히 그들이 그걸 보지 않았기 때문입니다. 개발자는 임의의 질문에 답할 수 있는지 여부가 아닌 전체 패키지와 개발자의 기술을 조사해야합니다.

질문이 짧은 문장이나 2 문장으로 쉽게 대답 할 수 있다면, 모르는 사람에게 말하기 만하면됩니다. "모든 .NET 개발자가 대답 할 수 있어야합니다."라는 질문에 대답하는 능력이 아니라 개념과 추론 능력에 대한 이해를 찾고 있어야합니다.







Tags