인터뷰 중 화이트 보드 "테스트": (화이트 보드) 코드를 백업하는 합법적 인 방법? [닫은]


15

내가 알면서 화이트 보드 코드에 오류 (오타 나 ";"와 같은 오타가 있음)가 있으면 종종 인터뷰 비용이 발생합니다. 이를 피하는 것은 필연적으로 하나의 교정 판독 코드를 반복적으로 (시간과 신경 에너지 / 집중을 잃게) 만들거나 더 간단한 (따라서 덜 효과적인) 알고리즘을 사용하게 할 것입니다.이 두 가지 방법 모두 다시 "비용이 많이 듭니다"!

그렇다면 (단위) 테스트 프레임 워크를 원하는대로 신속하게 작성하고 정상적으로 화이트 보드에서 테스트하는 것이 어떻습니까?

누구 든지이 접근법을 시도 / 보았습니까? 모든 아이디어가 가치가 있습니까?

[이것은 물론 펜과 종이 케이스에도 적용됩니다]


23
인터뷰 중에 누군가가 화이트 보드 나 종이에 코드를 작성하기를 원한다면 구문 적으로 100 % 정확하지는 않을 것으로 예상됩니다. 예, 광범위하게 정확해야하지만 세미콜론이 없거나 메소드 이름 / 매개 변수 프로파일이 약간 잘못되었다는 것은 정상입니다.
ChrisF

17
인터뷰에서 화이트 보드 코딩을 좋아하지만 화이트 보드 코드가 구문 적으로 완벽 할 것으로 기대하는 사람은 잘못하고 있습니다. 요점은 완전히 비현실적인 환경에서 구문 적으로 완벽한 코드를 생성 할 수 있다는 점이 아니라 문제를 어떻게 공격하는지 확인하는 것입니다.
Tim Goodman

3
예를 들어 그들이 무엇을하고 있는지에 대한 논평을 요청하거나 그들이 끝난 후 그들과 해결책을 논의함으로써 어느 것이 어느 것인지 알 수 있어야합니다.
ChrisF

6
정확한 구문과 철자를 너무 걱정하면 내 책에서 면접관 요점을 지불해야합니다.
JeffO

2
이것은 psuedo 코드를위한 것입니다
jk.

답변:


49

나는 당신에게 내가 쓰는 화이트 보드 코드를 테스트하기를 절대적으로 원합니다. 글을 쓰는 동안 큰 소리로 말하고, 살펴보고, 구문 오류 대부분을 발견하고, 더 효율적일 수있는 방법을 지적하고자합니다. 사실, 그것은 화이트 보드에서하는 일입니다. 그건 하지 원샷, 쓰기 - 그것 - 모든 아웃, 어 - 허 - 당신 --얻는 70 가지의 / 100 종류. 대화가 코드로 중재되어 내 책상이 아닌 화이트 보드에서 열린 대화입니다.

"화이트 보드 코딩"테스트에 실패하는 좋은 방법은 다음과 같습니다.

  • 거절하다
  • 단 하나의 명확한 질문 (언어, 플랫폼, 요구 사항에 관한 것)을 묻지 말고 그 중 하나에 대한 가정을 말하지 말고 내가 대답 한 것에서 벗어난 가정을하십시오.

(예 : Fortran에서 작성하고, "디스플레이"또는 "인쇄"를 "이벤트 로그에 작성"으로 해석하십시오. 사전에 말한 경우 허용 할 수 있습니다.)

  • 내가 원하는 언어를 물어보고, 직업 설명에있는 답변을받은 다음, 내가 요청한 언어에 익숙하지 않기 때문에 다른 언어로 쓰십시오.

(여기서는 컨설턴트입니다. 코딩만큼 컨설턴트의 행동을 테스트하고 있습니다. 고객에게 실제로 선택하는 경우에만 고객에게 요청하는 것이 정확합니다. 비용을 지불 할 사람들과의 대화를 제어하는 ​​것은 어렵습니다. 이것은 수업 1입니다. 특정 주제에 대해 귀하를 상대로 표시 할 수 있지만 특정 "당신은 X 프로그래머를 고용하고 있지만 X를 쓰고 싶지 않습니다"에 대해 두 개의 큰 검은 색 표시가 나타납니다.)

  • 두 개의 화이트 보드에 인터페이스, 팩토리 패턴, 추상화, 주입 및 테스트를 통해 "1에서 5까지 숫자를 인쇄"하고 싶었던 건축 우주 비행사가 무엇인지 보여주십시오.

(당신은 내가 과장한다고 생각하지만 내 문제를 극적으로 일반화 한 사람이 있었다. 위의 예를 고수하면서 1-5 대신에 그의 솔루션은 임의의 정수 시퀀스 (어디에서 나왔습니까? 궁금해했습니다)를 할 것이라고 5 다른 사람의 시간만큼-그는 실제로 작업을 수행 한 함수를 호출하는 것을 잊어 버렸습니다. 디버거 인 것처럼 그것을 계속 걸으라는 프롬프트와 반복 제안은 함수가 결코 호출되지 않았다는 그의 인식으로 이어지지 않았습니다.)

난 항상 "좋아요?" "그것을 향상시킬 수 있습니까?" "그것을 통해 나를 안내"등. 일반적으로 누락 된 세미콜론은 해당 대화에서 발견됩니다. 그렇지 않다면 보통 신경에 표시합니다.

화이트 보드에서 중요하지 않다고 생각하는 다른 것들 :

  • 당신이 끝나면 여전히 읽을 수 있습니까? 번지거나 낙서하거나 색을 바꾸고 화살을 그렸으며 이제는 사용할 수없는 혼란을 겪었습니까? 또는 화이트 보드가 지울 수 있고 순환하거나 화살표 대신에 코드 라인을 가리키고 내가 사진을 찍고 디자인 파일에 보관할 수있는 것을 남겨 두었다는 것을 알고 있습니까?
  • 당신이 한 것처럼 나에게 얼마나 물어 봤어? 혼자 있고 코드에 대해 논의하지 않습니까? 아니면 코드를 공동 작업으로 보십니까? 글을 쓰고있는 동안 내가 물었을 때 어떻게 대답 했습니까?
  • 당신은 "쉬운"일을 조롱하거나 "딱딱한"일을 희미하게 했습니까? 코딩 할 수 있음을 보여 달라는 요청에 대해 무례 했습니까? 기술적 인 문제에 쉽게 겁 먹거나 좋은 알고리즘을 내놓는 능력에 대해 오만합니까?
  • 당신은 당신의 머리에서 그것을 해결하거나, 당신이 어딘가에서 읽은 해결책을 기억하고 있습니까? 나는 보통 어려운 문제를 말할 수 있습니다.
  • 어디에서 글을 쓰기 시작했는지 미리 계획 했습니까? 화이트 보드가 부족한 사람들은 일반적으로 너무 낮게 시작하거나 너무 크게 쓴다-나는 이것이 20 줄의 코드가 될 것이라는 것을 알지 못해서 5를위한 방만 남았음을 알 수있다-이 작은 세부 사항이 미러링되는지 여부 더 큰 추정 작업들.
  • 당신이 끝났다고 말하기 전에 그것을 살펴 보셨습니까? 요청하기 전에 길을 가리 키거나 두드리고 직접 테스트하는 것을 보셨습니까? 내가 당신에게 프롬프트하거나 그것에 대해 특정 질문을했을 때, 당신은 그것을 다시 보았습니까, 아니면 기억에서 나갔습니까? 첫 번째 초안이 완전하지 않을 수도 있다고 생각하십니까?

화이트 보드에서 코딩을 연습하는 것이 좋습니다. 나는 항상 인터뷰 대상자들에게 요청을받을 것이라고 경고합니다. 실제 화이트 보드에 액세스 할 수있는 경우 간단한 문제를 설정하고 연습하십시오. 그것은 당신의 성과와 자신감에 도움이 될 것입니다.

죄송합니다. TL; DR 지역에 있지만 화이트 보드의 코딩은 코딩 이상의 것 입니다. 구문 이해 이상의 테스트입니다. 이 작업에 대한 응답으로 입증 된 훌륭한 프로그래머의 행동이 많이 있습니다. 코딩에 대해서만 생각한다면 요점을 놓친 것입니다.

화이트 보드 테스트에 대한 다른 대화에서 사람들은 내가 좋은 후보를 거부 할 수 있다고 말합니다. 솔직히, 그것은 기꺼이 감수 할 위험입니다. 모든 채용 라운드에는 내가 고용 할 수있는 여러 사람이 포함되어 있습니다. 이력서가 좋은 사람 중 일부는 인터뷰에서 질문과 답변 부분에서 문제를 해결하지 못하고 화이트 보드에 빠졌으며 자신이 알고 있다고 주장하는 언어로 간단한 코드를 작성할 수 없었습니다. 이 중 일부를 고용했을 수도 있습니다. 이를 방지하는 도구는 계속 사용하는 도구입니다. 나는 모든 후보자들이 화이트 보드를 엉망으로 만들었 기 때문에 아무도 보트를 빌리지 않았다.


2
하나의 위대한 답변 인 것 같습니다 (그리고 내가 처음에 받기를 원했던 훨씬 더 정직한 것 같습니다). 감사합니다
mlvljr

9
@KingOfHypocrites 실제로 답을 읽었습니까? 세미콜론 누락에 대해서는 신경 쓰지 않습니다. 내가 무슨 말을하는지보세요. 화이트 보드에서 20 분은 당신에 대해 많은 것을 말해줍니다.
Kate Gregory

7
화이트 보드 인터뷰를 검증 한 연구가 있는지 궁금합니다. 전체 공개 : 나는 화이트 보드 인터뷰에 실패한 후 열심히 궁금해졌습니다. 나는 몇 년 동안 인터뷰를하지 않았으며, 훌륭한 공연자 / 발표자가 아니며 거의 얼어 붙었습니다. 당신의 통찰력은 뛰어나고 나는 이것을 처음 읽었다면 나는 인터뷰 과정의 그 부분에 대해 매우 다르게 생각했을 것입니다 (그리고 더 이야기했습니다). 많은 사람들이이 주제에 대해 강한 의견을 가지고 있지만 그게 전부인 것 같습니다. 나는 자료를 뒷받침함으로써이 관행에 대한 객관적인 정당성이 있다고 가정한다. 있습니까?
Suboptimus

3
+1 솔직히 말해서, 페어 프로그래밍 연습을위한 대리로 화이트 보드에 접근하여 Kate가 제안한 작업에 대한 대화 흐름을 유지하기를 바랐습니다. 응시자 (또는 면접관과 응시하는 응시자). 코드를 작성하는 방법은 모든 규모의 조직에서 코드를 작성하는 방법만큼 중요합니다.
Julia Hayward '12

4
나는 이것이 오래되었다는 것을 알고 있지만 방금 연결되었고 지적하고 싶었습니다. 시각 처리 장애의 특징 중 하나는 쓰고있는 공간을 예측할 수있는 능력이 없기 때문에 공간이 부족하다는 것입니다. . 평가하는 사람이 더 많은 라인을위한 공간이 부족할뿐만 아니라 너무 큰 시작을 인식하여 라인 끝쪽으로 문자가 작아지는 경우 이해하지 못하는 것보다 학습 장애가있을 수 있습니다. 코드의 길이 공간이 아닌 것을 추정하도록 요청하면 더 나은 결과를 얻을 수 있습니다.
Yamikuronue

17

나는 당신이 여기에 잘못된 가정을했다고 생각합니다. 후보자가 화이트 보드에 코드를 작성하여 모든 ';'를 얻을 수 있다고 기대할 방법은 없습니다. 완벽하게 제자리에. 당신을 불이익을주는 장소에서 인터뷰를하고 있다면, 그들은 당신이 일하고 싶은 조직이 아니라고 제안합니다 :-).


2
그들이 말했듯이 펜과 종이 시험의 첫 번째 패스에서 완벽하게 최적화 된 코드를 작성하지 않았기 때문에 한 번의 인터뷰에 실패했습니다 (단위 테스트와 함께 학교에서 얻은-최적화 학교) ). 그런 다음 다시 테스트 프레임 워크가 없었으며, 처음으로 제대로 한 코더가 있다고 가정했습니다!
줄리아 헤이워드

3
@ 줄리아 헤이워드-소리로 당신을위한 행운의 탈출! 사람들이 여전히 그렇게 믿을 수 없습니다.
Martijn Verburg

7

종이 또는 화이트 보드 테스트는 매우 효과적이지 않습니다. 나는 종이에 어떤 코드에서 오류를 찾아야했던 인터뷰를 기억했다. 그중 하나는 클래스가 인터페이스에서 상속되었지만 멤버의 구현이 누락되었다는 것입니다. 나는 이것이 오류 중 하나 일 가능성이 있음을 알고 있었고, 그것을 찾고 있었고, 그 자리에서 어떤 이유로 든 그것을 볼 수 없었습니다 (물론 내가 그것을 문제 중 하나로 찾고 있다고 언급했지만).

그 일이 일어 났을 때 나는 여전히 그 직업을 얻었지만, 무슨 일이 있었는지 생각하게 만들었습니다. 이런 종류의 일에 대한 현실적인 시나리오에서 뭔가 잘못 (Visual Studio의 C # 임)하고 컴파일되지 않는 순간에 구불 구불 한 줄을 얻습니다. 나는 그것이 결코 일어나지 않기 때문에 (실제로는 불가능 하기 때문에) 실제 상황에서 이것을 확인 하지 않으므로 이런 종류의 것을 보지 않아도 됩니다. 누락 된 세미콜론은 더 극단적 인 예입니다. 메모장에서 작성하지 않고 다른 사람에게 코드를 전자 메일로 보내지 않는 한 실제 세계에서는 완전히 비현실적입니다!

누군가 인터뷰 중에 화이트 보드를 사용하여 원하는 말을 뒷받침 해달라고 요청하는 경우, 다른 방법으로는 절대하지 않을 것입니다.


2
당신의 이야기는 당신의 시험이 효과적임을 증명하는 것 같습니다. 일반적으로 "코드를 어떻게 검토합니까?" 그들은 당신에게 검토 할 약간을 주었다. 당신은 큰 소리로 말하고 "모든 것을 구현해야한다"고 말했고, 빠진 것을 발견하지는 못했지만 실제로 질문에 대한 답이 아니라 오류에 대한 코드를 검토하는 방법을 실제로 알고 있음을 보여주었습니다. . 또한 일부 사람들이 가질 수있는 많은 비 오류를 지적하지 않았으며 다른 오류도 보았습니다. 그리고 당신은 일을 얻었다. 그것은 모두에게 효과적입니다!
Kate Gregory

2
또한 누락 된 세미콜론은 실제 음수가 아닌 것으로 계속 해고됩니다. 선호하는 언어의 구문을 일관되게 잘못 이해하면 해당 구문을 모두 내재화 한 사람보다 느린 개발자입니다. 당신은 끊임없이 돌아가서 잊어 버린 물건을 고치고 있습니다. IDE에서 끊임없는 잔소리로 리듬을 잃을 가능성이 큽니다. 또한 화이트 보드에서 모든 세미콜론을 제거하고 프롬프트를 표시 할 때주의를 기울이지 않는 사람들은 일주일에 한 번 IDE에 세미콜론을 입력 한 다음 수정하는 것을 좋아하는 훌륭한 개발자와 같은 수준이 아닙니다. 그것.
Kate Gregory

2
+1 효과가 없습니다. 그것은 절대적으로 아무것도 증명하지 못한다. 나는 시험에 실패한 많은 사람들이 그것을 통과하는 평범한 사람보다 낫다고 확신합니다.

3
@ 케이트-나는 당신이 어디에서 왔는지에 동의하지만 동의하지 않습니다. 특히 테이블 반대편에 앉았습니다. 누군가가 세미콜론을 정기적으로 빠뜨리면 IDE에서 인공 환경이 아닌 것을보고 싶습니다. 내 사무실의 키 코드와 같습니다. 생각없이 숫자를 입력하고 100 % 자신감을 갖고 기록하도록 요청하면 어려움을 겪고 있습니다. 인터뷰는 절대 100 % 현실적이 될 수 없기 때문에 인터뷰에서 벗어나기 싫습니다.
FinnNk

1
타이핑은 근육 메모리에 의해 강화되기 때문에 화이트 보드보다 키보드에서 중요한 구문을 생략 할 가능성이 훨씬 적습니다. 그러나 특히 페어 프로그래밍 상황에서 오해 (및 편집자 또는 페어 파트너의 잔소리)는 오류로 인해 오류를 유발하는 신경을 강화시키는 피드백 루프에 빠질 수 있습니다. 폴리 글 로트는 단일 언어 후보보다 불리한 것으로 보입니다.
dcorking

5

내가 해냈어 인터뷰에서 화이트 보드에 런 렝스 인코딩을 구현하라는 요청을 받았으며 화이트 보드에 맞게 일부 코드 (단축 된 내용을 설명)를 짧게하면서 여전히이 장치에 대한 테스트 모음을 찾았습니다. 그중 하나를 통해 내 솔루션의 유효성을 검사하고 테스트가 어떻게 도움이되는지 보여주었습니다. 나는 그 위치가 제안되었으므로 테스트가 도움이되거나 최악의 경우 성가신 것이 아니라고 가정합니다.


4

학교 시험을 볼 때이 방법을 사용합니다. 먼저 함수를 작성한 다음 입력, 출력 및 vars 테이블을 작성합니다. 이 방법으로 몇 가지 바보 같은 오류가 발생했습니다. 종이 / 화이트 보드 테스트조차도 테스트는 테스트하지 않는 것보다 낫습니다.

그러나 전문적인 환경에서 세미콜론을 놀라게하는 것에 동의하지 않습니다.


4

후보자에게 화이트 보드에 코딩하도록 요청하는 것은 어리석은 일입니다. 스 니핏, jsfiddle 및 intellisense와 같은 최신 도구가 있습니다. 또한 구문을 기억하기 위해 엔지니어가 필요하지 않습니다. 구문을 찾아서 참조합니다. 코드를 암기하고 있다면 아마도 경력에서 멀티 테넌트 환경에서 코드를 작성하고 구문을 최적화하거나 호스팅 환경을 배우는 데 시간을 투자하지 않았을 것입니다.


3
특정 언어로 반쯤 괜찮은 사람은 구문을 단순히 많이 사용하는 것에서 암기해야합니다. 남자가 하루 종일 C # 코드를 작성하고 머리 꼭대기에서 대부분의 구문을 모르면 느리고 끔찍할 것입니다. 또한 2 ^ 8이 무엇인지 찾아 볼 수 있지만, 소금의 가치가있는 개발자는 그것이 자주 발생하는 것만으로 머리 꼭대기에 무엇이 있는지 알아야합니다. 구문도 마찬가지입니다.
whatsisname

1
그것은 사실이 아닙니다. 이 시대와 시대에 구문을 기억할 필요는 없습니다. sql, vb, c #, javascript와 같은 다양한 언어로 코딩하고 json, angularjs, telerik 및 기타를 사용하는 방법을 아는 개발자는 구문을 암기 할 수 없기 때문에 소금을 쓸 가치가 없습니다. 당신과 같은 수학 연산자보다 훌륭한 소프트웨어 엔지니어가되는 것이 더 많습니다. 요구 사항, 디자인 구조, 패턴, 산업 경험을 이해하는 것은 어떻습니까? 언어와 라이브러리에는 말 그대로 트럭 뒤를 채우기에 충분한 구문이 있습니다.
제임스 베일리

"필요한"문제는 아닙니다. 충분히 자주 사용하면 기억할 것입니다. 어떤 사람이 SQL 개발자라고 주장하지만 그의 머리 꼭대기에 조인 진술을 쓸 수 없다면, a) 무능한 b) 자격에 대해 거짓말을했거나 c) 매우 이상한 두뇌를 가지고 있기 때문입니다. 내가 다루고 싶지 않은 세 가지 상황.
whatsisname

1
"결합"은 일반적으로 화이트 보드에 요구되는 것이 아닙니다. 종종 수수께끼이며 직업과 관련이없는 것들입니다. 응시자가 인증을 받았으며 학위를 가지고 있고 이력서가 강한 경우 어떻게해야합니까? 생계를 위해 화이트 보드에 코드를 작성하지 않아서 여전히 "무능한 사람"이라고 생각하십니까? 마케팅 담당자는 인터뷰 장소에서 분기 별 마케팅 전략을 화이트 보드에 제출하지 않아도됩니다. 바보입니다. 응시자와 대화하고 코딩 할 수 있는지 쉽게 추론 할 수 있어야합니다.
James Bailey

3

식당이 요리사를 고용하려고 할 때, 주인은 그에게 이쑤시개와 뚜껑이있는 "pot au feu"를 요리하라고 요구하지 않습니다.

인터뷰에서 개발자에게 화이트 보드에 코드를 작성하도록 요청하지 마십시오.


3
그리고 물었을 때?
mlvljr

인터뷰 중

3

화이트 보드 코딩은 어렵습니다. 나는 디즈니와 인터뷰를하기 전까지는 그것에 대해 소개 된 적이 없다. 무엇을 기대하고 디버깅 할 수 없는지 알지 못해서 문제를 해결하고 의사 코드를 작성했지만 의사 코드는 다소 문제가있었습니다. 그들이 물었을 때 그것을 달릴 수 있었다.

구문 오류를 수정해야 할 수도 있습니다. 화이트 보드로 인해 고용되지 않으면 아주 좋은 후보를 잃었다 고 생각합니다. 나는 자격을 보았고 직책에 자격이 있고 일을 할 수있는 것처럼 보입니다. 나는 현재 일을 잘하고 그들과 함께 할 수 있기를 바랍니다.

입력 해 주셔서 감사합니다 Kate, 나는 모든 단어를 읽었습니다. 그것은 프로그래머로서 나에게있어, 화이트 보드는 실제로 당신의 기술을 보여주지 않습니다. 저는 여러 언어로 일하는 훌륭한 프로그래머입니다. 나는 프로그래밍해야 할 언어를 알고 있었지만 화이트 보드에서 갑자기 잊었다.

복잡한 통합 및 신용 카드 처리를 구축했지만 화이트 보드에서 올바른 구문을 수행하는 방법조차 기억 나지 못했습니다.

고용주로서 저는 화이트 보드 테스트를 좋아합니다. 그러나 나는 그들이 일을 할 때 실제 기술을보고 싶은 프로그래머를 고용하고 있습니다. 그들이 의사 소통을 할 수 있다면 좋지만, 그들이 문제를 해결할 수 있는지 확인해야합니다.


1
입력 주셔서 감사합니다, 그것은 질문을 할 때 내가 생각했던 것에 대해 맞습니다. 실제로 올바른지 알지 못하고 "실제로"확인 할 수단이없는 화이트 보드 코드에 실제로 붙어있을 수 있습니다. 까다로운 솔루션-화이트 보드 테스트 작성! ;)
mlvljr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.