인터뷰 과정에서 과도하게 프로그래밍 된 과제를 걱정해야합니까? [닫은]


27

최근에 회사와 전화 인터뷰를했습니다. 그 전화 인터뷰 후, 나는 짧은 프로그래밍 과제 (작은 프로그램; 3 시간 이상 걸리지 않아야 함)를 완료하라는 지시를 받았다. 과제를 완료하고 코드를 제출하도록 직접 지시 받았습니다. 원하는 언어를 사용할 수있는 자유가 주어졌으며 코드를 켜는 방법을 정확히 알지 못했습니다.

즉시 Github에 던지고 테스트 스위트를 작성하고 Travis-CI (공용 Github 리포지토리에 대한 무료 연속 통합)를 사용하여 테스트 스위트를 실행하고 CMake를 사용하여 Travis-CI 용 Linux makefile을 빌드 할 계획이었습니다. 이렇게하면 Git, CMake, Travis-CI 사용 방법 및 테스트 작성 방법을 이해하고 있음을 보여줄뿐 아니라 Travis-CI 페이지에 연결하여 테스트 결과를 볼 수 있습니다. 나는 그것이 면접관에게 조금 더 편리 할 것이라고 생각했다.

이러한 기술을 잘 알고 있기 때문에 과제에 시간이 전혀 필요하지 않습니다.

그러나 비교적 간단한 작업을 위해이 모든 작업을 수행하는 것이 나빠 보일까 걱정됩니다. 그것은 나를 위해 더 많은 시간을 추가하지는 않지만, 나는 그들이 단순한 일에 너무 많은 시간을 보낸다고 생각하고 싶지 않습니다.


5
일부 회사는 문제를 기밀로 유지하기를 원하기 때문에 github에 대한 인터뷰 문제에 대한 답변을 신중하게 제시합니다.
Scroog1 2018 년

7
질문은 블로그에서 공개적으로 사용할 수 있으므로 (블로그 게시물에 대한 링크를 보냈습니다), 나는 그들이 그것에 대해 걱정하지 않는다고 생각합니다.
DormoTheNord 2016 년

3
@DormoTheNord 나는 당신이 과도하게 엔지니어링하고 있지 않다고 말하고 싶습니다. 좋은 개발 프로세스를 갖는 것은 과도하게 엔지니어링하는 것과 완전히 다른 것이며, (IMO) 좋은 신호입니다.
K.Steff 2016 년

3
문제 사양, 가정, 제한 사항 등의 회색 영역을 문서화하는 데 여분의 시간을 소비했습니다. 코딩 만하는 것이 아니라 문제와 그 맥락을 고려하십시오.
HABO

4
@DormoTheNord 질문은 공개적이지만 답변도 공개됩니다. 다른 인터뷰 대상자가 찾을 수 있으면 사용할 수 있습니다. , 그들은 아마 좋아하지 않을 것이다.
이즈 카타

답변:


29

면접관으로서 나는이 접근법에 의해 입증 된 소프트웨어 개발 과정에 대한 지식을 보게되어 기쁘다. 코드 작성과 반대로.

특히, 매우 간단한 문제에 대한 테스트 스위트를 보유하는 것은 좋은 신호입니다 (FizzBuzz 레벨조차도). 후보자들이 문제를 해결하지 못한 솔루션을 제출하는 것을 보았고 간단한 테스트 세트가이를 보여주었습니다. 또한 커밋 기록을 통해 응시자가 솔루션을 얻는 데 사용한 사고 과정에 대한 아이디어를 얻을 수 있습니다.

다른 한편으로, 나는 일부 엔지니어링 프로세스의 초기 단계에서 일부 회사에 의해 사람들이 거부되는 것을 알고 있습니다. 그러나 대부분의 경우 이는 사용 된 프로세스가 아니라 솔루션을 과도하게 엔지니어링했기 때문입니다.


2
회사가 내가하려는 일을 거부 한 경우, 회사가 소프트웨어 개발 방법론을 존중하지 않고 그 회사에서 일하지 않을 것이라는 신호일 것입니다.
DormoTheNord 2016 년

7
(불행히도) 일정의 운이 관련되어 있기 때문에 필연적으로 그렇게 갈 필요는 없습니다. 그 접근법을 좋아하지 않는 한 면접관을 얻을 수도 있습니다. 또는 그날 기분이 좋지 않고이 방법으로 제공되는 추가 데이터를보고 싶지 않을 수도 있습니다. 즉, 일반적으로 원하는 세부 수준을 명확히하는 데 아무런 해가 없습니다. 또한, 한두 가지 명확한 질문을하는 것도 면접관에게도 좋은 신호가 될 수 있습니다.
Scroog1 2018 년

+1-솔루션에서 벗어나지 않는 한 단위 테스트 및 프롬프트없이 다른 작업을보고 싶습니다.
Telastyn

1
기본 github 링크와 lazy / busy 테스트를위한 소스 코드로 직접 링크를 보내면 위험을 감수하기에는 너무 많은 위험을 줄일 수 있습니다.
Dan Neely

15

인터뷰 대상자로서 버전 관리, CI, 단위 테스트 등과 같은 것을 이해 한 사람이 있으면 내가 일반적으로 보는 것에 대한 단계가 될 것입니다.

나에게 가장 중요한 것은 문제가 해결되고 잘 해결된다는 것인데, 후보자가 결과물의 품질을 향상시키는 방법을 이해했다는 사실을 알면 분명히 관심을 끌 것이다.

내가 일반적으로 보는 것은 문제를 이해하지 못했을뿐만 아니라 문제를 해결하는 방법을 이해하지 못하는 사람들입니다. 프로세스에서 사용하는 추가 도구의 수에 관계없이 무시됩니다.


6

시간 제한이 있습니다. 면접관은 이것을 알고 있으므로 (면접관이라면) 그는 당신이 정해진 시간 안에 문제를 해결할뿐만 아니라 금도금을 위해 시간을 남겼다는 것을 곧 알게 될 것입니다. 문제 해결 능력과 엄격하고 근면함에 대한 감사

오버 엔지니어링은 FizzBuzz를 해결하기 위해 BuzzManager와 FizzManager를 배포하기 위해 연결되는 AbstractFactoryManagerAdaptors를 만들 때 나쁜 단어입니다.

당신이하고있는 것은 과실입니다.

즉, "시간을 전혀 추가하지 않는다"고 주장하는 엑스트라에 시간을 사용했기 때문에 시간이 지남에 따라 또는 반 해킹 된 솔루션으로 끝나는 경우, 이는 얼마나 작은 것으로 보이는지에 대한 이해가 매우 부족한 것처럼 보입니다. 할 수있는 일. 이것은 엔지니어에게는 위험한 특성이며 후배들에게는 너무나 흔한 일입니다. 필요한 솔루션 완료 한 후에 만 적절하게 우선 순위를 정하고 여분의 신용 거래를 하십시오 .


어려운 시간 제한은 없지만 과제를 3 시간 이상 괜찮은 프로그래머에게 맡겨서는 안된다는 메모 만 있습니다. 커밋 # 1에서 최종 커밋까지 3 시간 만 보냈는지 확인하기 위해 git 로그를 실제로 확인합니까?
DormoTheNord 2018 년

2
@DormoTheNord 시간 제한이 없으면 요청 된 솔루션에 소비되지 않은 시간이 우선 순위가 낮은 것으로 간주 될 수 있습니다. 불행히도 엔지니어는 모두 독립적 인 사고 자이므로 이러한 일들에 대해 각자의 의견을 가지고 있습니다. 이러한 경우에는 자신이 한 일을 검토하는 사람이 그런 식으로 보는 것이 좋을지 모릅니다. 그것을 큰 혜택으로보기 위해 정렬하십시오. 나는 두 가지 굽힘의 훌륭한 엔지니어를 알고 있습니다. 이러한 경우에는 여러분이 소중히 여기는 것, 그 가치를 인정하는 사람, 그리고 당신이 고맙게 생각하는 사람, 그와 함께 일하고 싶은 사람으로 귀결됩니다.
Jimmy Hoffa 2016 년

이것이 제가 면접에서 싫어하는 점입니다 ... 면접관의 개인적 취향을 기쁘게하는 데 관련된 행운입니다. 어쩌면 그것은 표준화되어야합니다 :)
DormoTheNord

걱정하지 마십시오. 행운은 당신의 경력에 ​​영향을 미칠 것입니다. 당신은 행운을 얻을 때와 나쁜 것을 얻을 때 운이 좋을 필요가 있습니다 :)
Scroog1

1
나는 그 용어가 일반적으로 나쁜 것으로 가정되기 때문에 '금 도금'으로 묘사 할 때주의해야합니다. en.wikipedia.org/wiki/Gold_plating_%28analogy%29
whatsisname

6

고려해야 할 또 다른 견해는 귀하의 접근 방식이 좋지도 않다는 것입니다. 나는 그것을 너무 많이 생각하는 면접관을 상상할 수 있고 더 많은 공학을 사랑하는 면접관을 상상할 수 있습니다.

너무 걱정하지 마십시오. 대신 최선을 다하는 방식으로 문제를 해결하면 나와 동의하는 사람들로부터 구인을받을 수 있습니다. 생산적인 작업 환경을 향한 첫 걸음입니다. 인터뷰는 두 가지 방식으로 진행됩니다. 귀하의 솔루션에 대한 면접관의 답변은 그들에 대해 많은 것을 알려줄 것입니다. 개발 본능과 철학이 잘못되었다고 생각하는 사람들과 협력하고 싶습니까?


3

실제로, 후보자가 git repo를 만들거나 서둘러 makefile을 만들 수 있는지 여부는 아무도 신경 쓰지 않습니다. 왜냐하면 그것이 rote가 배운 것을 회상하기 때문입니다. 인터뷰 문제의 실제 문제 해결 및 디자인 측면에서 보조 기술입니다.

따라서, 후보자가 프로젝트 골격을 만들기 위해 몇 가지 암기 된 명령과 패턴을 역설 할 수있는 사람이 인상적인 소프트웨어 기술을 가지고 있다고 믿는 것처럼 보일 수 있기 때문에 직감은 잠재적으로 나빠 보일 수 있습니다.

솔루션의 테스트 스위트 측면은 좋습니다. 회귀 테스트 스위트로 답변을 제공하면 포인트를 얻을 수 있습니다. 테스트 스위트가 코드에서 두드러진 사례를 연습하면 더욱 그렇습니다. 테스트 스위트는 공식적인 트래핑이 많지 않아도 툴에 의존 할 필요가 없습니다. 당신이 어떻게 든 거기에 하나가 있다는 사실은 인터뷰에 충분합니다. 면접 퀴즈에서 임시 단위 테스트를 구성 할 수 있다면 실제 프로젝트의 도구를 사용하여이를 수행 할 수 있다는 것이 다소 분명합니다.


1

최근에 회사와 전화 인터뷰를했습니다. 그 전화 인터뷰 후, 나는 짧은 프로그래밍 과제 (작은 프로그램; 3 시간 이상 걸리지 않아야 함)를 완료하라는 지시를 받았다.

조심스럽게 진행하겠습니다. 직무에 대한 도전과의 관련성을 평가하고, 고용주로부터의 향후 상환이 귀하의 시간을 3 시간 동안 가치있게 할 것임을 확인하십시오.

나는 이런 유형의 시험에서 가치에 의문을 품고 오히려 과거의 성취에 대해 누군가를 판단 할 것입니다. 미리 정의 된 짧은 작업은 고용주에게 귀하가 할 수있는 일에 대해 아무 것도 알려주지 않습니다. 당신이 할 수없는 것, 그리고 그것은 전화를 통해 몇 가지 질문으로 신속하게 결정될 수 있습니다.

테스트는 그 자리에 있습니다. 테스트에 대해 다음과 같은 질문을하고 이에 따라 응답하십시오.

  1. 시험 박람회에 현재의 경력 수준이 있습니까?
  2. 시험에 명확하게 정의 된 정답이 있습니까?
  3. 면접관은 개인으로서의 잠재력에 관심이 있거나 시험 결과에 더 많은 관심을 보이고 있습니까 (즉, 고용 기관이 끔찍합니다).
  4. 시험은 당신이 즐기는 일의 종류를 나타내거나 모호한 기술 검증 (예 : Java 구문을 알고 있다면 시험)입니까?

과제를 완료하고 코드를 제출하도록 직접 지시 받았습니다.

당신은 당신의 자신의 질문에 대답했습니다.

즉시 Github에 던지고 테스트 스위트를 작성하고 Travis-CI (공용 Github 리포지토리에 대한 무료 연속 통합)를 사용하여 테스트 스위트를 실행하고 CMake를 사용하여 Travis-CI 용 Linux makefile을 빌드 할 계획이었습니다.

아뇨, 그건 그들이 당신에게 요청한 것이 아닙니다.

이렇게하면 Git, CMake, Travis-CI 사용 방법 및 테스트 작성 방법을 이해하고 있음을 보여줄뿐 아니라 Travis-CI 페이지에 연결하여 테스트 결과를 볼 수 있습니다. 나는 그것이 면접관에게 조금 더 편리 할 것이라고 생각했다.

인터뷰 과정에서 너무 일찍 또는 너무 늦게 기술을 시연 할 때주의해야합니다. 인터뷰에서 자신이 좋지 않다고 생각하고 보상을 시도하고 있다면 효과가 없을 것입니다. 반면에 묻지 않을 때 너무 많이하는 것은 열심을 나타냅니다. 이로 인해 고용주는 더 낮은 임금 제안으로 대응할 수 있습니다.

그러나 비교적 간단한 작업을 위해이 모든 작업을 수행하는 것이 나빠 보일까 걱정됩니다.

예, 안 좋아 보입니다. 한 줄의 코드로 문제를 해결하는 것은 완전히 플러시 된 프로젝트보다 훨씬 인상적입니다.

내 경험상 이것은 면접에서이기는 방법이 아니지만, 직업을 잃는 한 가지 방법입니다. 코드 테스트는 품질 관리 문제입니다. 사람들을 고용 할 때 코드 테스트를 사용하는 모든 회사는 이전에 코드 테스트를 사용하지 않았기 때문에 그렇게했습니다. 그들은 인터뷰 과정의 균열을 통해 누군가가해서는 안되는 나쁜 경험을했습니다.

그들은 소스 코드를 가져 와서 사무실로 전달합니다. 사람들은 그것에 대해 언급 할 것이며, 당신이 말하고 싶지 않은 것은 "그는 실수를 했습니까? Git, CMake 및 Travis-CI를 사용하여 시간을 보냈습니다.이 실수를 놓친 바보는 무엇입니까?"입니다.

그게 다야. 졌어요

그들은 당신에게 그것을 가르 칠 수 없기 때문에 코딩 할 수 있다는 것을 알고 싶어합니다. 힘내, CMake 및 Travis-CI를 쉽게 가르 칠 수 있습니다.


2
@JimmyHoffa 전체 답변 또는 테스트에 대한 의견에 동의하지 않습니까? 내 관점을 올바르게 표현하지 못했을 수도 있고 아닐 수도 있습니까? 필자는 필기 시험보다 인간 구성 요소를 더 중요하게 생각합니다. FizzBuzz에 실패한 후보자는 저에게 아무런 도움이되지 않습니다. 이유를 이해하려면 그 사람과 이야기해야합니다. 하지만 숙련 된 직원을 고용하고 싶습니다 (항상). 난 그냥 집에 가서이 테스트를 작성하고 다시 올 생각하지 않습니다. 효과적인 방법입니다. 차라리 FizzBuzz에 질문하고 그들이 작동하는 것을 지켜보고 싶습니다. 이해하니?
Reactgular 2016 년

1
@JimmyHoffa 나는 이것이 고용주에 대한 고용주의 기대치에 달려 있다고 생각합니다. 그 말로 FizzBuzz 테스트에 대해 더 많이 읽을수록 당신 편으로 더 많이 스윙하고 있습니다. 경력 수준에서 합격 할 수없는 프로그래머에게는 문제가 있습니다. 이런 종류의 테스트가 OP와 같은지 확실하지 않습니다. 이 관련 질문을 참조하십시오 : stackoverflow.com/questions/117812/…
Reactgular

간단히 말해서, 나는 힘든 인터뷰 프로세스와 핵심 요청을 훼손하지 않고 그 이상의 것을 추구하는 후보자들의 팬입니다. 당신의 전체 대답은이 두 가지에 대해 반대하는 것 같습니다.
Jimmy Hoffa 2016 년


@JimmyHoffa 저는 고객이 벤더에게 사전 작업 입찰 프로세스의 일환으로 창조적 인 작업이나 테스트를 완료하도록 요청하는 창조적 인 분야에서 자유 로움을 느끼는 태도를 가지고 있다고 생각합니다. 나는 그런 종류의 일을하지 않습니다. 왜냐하면 모든 잠재 고객에게 몇 시간을 보내면 청구 가능한 일을 할 수 없기 때문입니다. OP에게주의를 기울여 진행하라고 지시했을 때 시간 낭비를 막고 자했다. OP는 많은 추가 작업을 수행하는 데 시간을 투자하고 싶었습니다. 유혹이지만 그만한 가치가 있습니까? 어쩌면 OP는 이것을 명확히하지 못했습니다. 단기 계약일 수 있습니다.
Reactgular 2016 년

0

나는 당신의 접근 방식 자체가 좋지도 않다고 생각합니다 . Github과 다른 도구를 사용해도 괜찮은지 면접관에게 물어볼 것입니다. 의견에서 @Izkata가 지적했듯이 솔루션을 공개하고 있습니다.

면접관으로서, 나는 몇 가지 사항을 명확히하려고 노력하는 후보자에게 해가 없다는 것을 알고 있었다. 또한 이해하지 못한 일을 서두르지 않기 때문에 한두 가지 질문을하는 것이 좋은 징조가 될 수 있습니다.

그러나 가장 중요한 것은 문제가 해결되고 잘 해결된다는 것입니다. 그런 점에서 모두 테스트 스위트가 도움이된다는 데 동의합니다. 그러나이를 위해 프로젝트 / 솔루션과 함께 몇 가지 테스트 클래스를 보내야 할 수도 있습니다.

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