FizzBuzz-정말? [닫은]


60

"면접 시험"질문에 관해서는 종종 FizzBuzz의 주제가 등장합니다. 도있다 코딩 호러 그것에 대해 포스트.

이제 이와 같은 사이트를 귀찮게하면 FizzBuzz를 사소한 것보다 쉽게 ​​찾을 수있는 프로그래머의 인구 통계에있을 가능성이 적습니다.

그러나 프로그래머의 99 %가이 문제로 어려움을 겪는다는 것이 사실입니까?

정말?

이것을 뒷받침하는 증거는 무엇입니까?

일부 실제 사례는이 질문에 대답하는 데 매우 도움이됩니다.


57
프로그래머의 99 %가 아니며, 지원자 의 99.5 % (많은 프로그래머가 아님)입니다.
webbiedave

4
나는 인터뷰에서 그것을 얻을 때까지 그것을 믿지 않았다-나는 나중에 직업을 얻었고, 나중에 그것에 대해 CEO와 대화를 나 ted 다. 분명히 99 %가 옳습니다. Oo
Fishtoaster

3
나는 항상 fizzbuzz 질문이 신화라고 생각했을지 모릅니다. 어쩌면 신입생을위한 초보자 일 수도 있지만 어느 날 인터뷰에서 실제로 질문을 받았습니다. 예, 많은 후보자들이 정말로 이것에 문제가 있습니까?
DarenW

2
나는 인터뷰에서 FizzBuzz 테스트를 정기적으로 제공하고 사람들이 실패하게합니다. 한 그래픽 디자이너가 언젠가 그것을 통과했습니다 ..... 조금
놀랐습니다

4
@Rogue Coder-야, 우린 바보가 아니야. 그리고 우리 대부분은 수학에 빠집니다.
Inaimathi

답변:


46

99 %? 아닙니다. 상당한 비율입니까? 예. 사람들을 직접 인터뷰 한 경험에서 나는 이것을 증언 할 수있다. 그것은 당신에게 무의미 해 보일지 모르지만 프로그래밍 분야에는 수년 동안 다소 위조되고 비 입장 직위에 지원 하고이 실패한 사람들이 많이 있습니다.

당신이 그것을 쉽게 해결할 수는 있지만, 당신은 그런 정신적 일을하도록 요청 받았다는 것에 대해 큰 정적을 제시합니다. 팀이된다는 것은 때때로 즐기지 않아도되는 일을해야한다는 것을 의미합니다. 우리가 함께 일하기 전에 방망이에서 벗어난 경우, 내가 요청한 일을하는 것보다 특별한 지위를 주장하는 것이 최선이라고 생각합니다.

나는 당신의 솔루션이 얼마나 우아 해야하는지 신경 쓰지 않지만 화이트 보드에서 찌르는 것을보고 그것을 통해 길을 말하는 것은 당신이 적어도 찌르기를 기꺼이 취하고 있음을 보여줍니다 . 당신이 분개하고 "코드 몽키가 아니라 문제 해결사입니다!" 그러면 못을 쓰러 뜨릴 것입니다.

나는 인터뷰 대상자들에게 시도를 시작하기를 거부했다. 단순히 거절하십시오. 아뇨 하지 않습니다. 한두 가지 더 정중 한 질문을하고 시간을 내 주셔서 감사하고 인터뷰를 마무리합니다.

나는 이것을 관리자와 개발자라고 말합니다.


1
시도를 거부하는 근거는 무엇입니까?
존 홉킨스

3
나는 그들에게 직접 요청하지 않았다. 두 번째 거부 후에 몇 가지 더 질문을 한 다음 인터뷰를 마무리했습니다. 내가 GUESS에 가려고한다면, 그들이 시도하기에는 너무 긴장했거나 (자선 단체 인 경우) 실제로 현장에서 알아낼 수없는 경우 일 것입니다 (내가 더 냉소적이라면).
Todd Williamson

1
인터뷰에서 코딩을 거부하는 사람을 알고 있습니다. 그는 몇 초 동안 인터넷 검색을 할 수있는 모든 것을 기억하기를 거부합니다. 그는 "문제 해결사"입니다.
kirk.burleson 1

4
다시 한 번, 화이트 보드 코딩은 면접관이 당신에게주는 문제입니다. 아마도 해결해야합니까? 인터뷰에서 코드 작성을 거부하는 것은 인터뷰 담당자의 문제 해결을 거부하는 것과 같습니다. 따라서 "문제 해결사"라는 용어와 모순되며 이는 "문제 해결사"와 비슷합니다.
Spoike

@Spoike nope 문제 해결사가 프로그래밍 언어의 구문을 알 필요가 없기 때문에 이제는 그렇게합니까?
Pierre Arlaud

25

직업을 신청하는 (그리고 그것을 얻지 못하는) 프로그래머의 99 %가 어려움을 겪을 수 있다고 생각합니다. 그러나 생산적으로 업무를 수행하는 프로그래머의 99 %는 아닙니다.

이것이 현대 구직 과정의 본질입니다. 신청하는 많은 사람들이 자격이 없습니다.

그 코딩 호러 게시물은 오늘날 우리가 컴퓨터 과학을 가르치는 방식에 대해서도 이야기합니다. 과거에는 (특히 MIT) 재귀와 같은 개념을 이해해야하는 Lisp와 같은 것을 배워야했습니다.

요즘 사람들은 Java가 산업에서 널리 사용되기 때문에 Java를 배우고 있으며, 초점은 심도있는 프로그래밍 사고가 아닌 구문으로 옮겨졌습니다. 나는 자바를 싫어하지 않는다. 사실, 나는 이것이 이상적인 최초의 프로그래밍 언어라고 생각합니다. 그러나 나는 강사들이 깊은 프로그래밍 원칙을 가르치는 것을 보지 못했습니다.


11
우리 교육 시스템 (적어도 미국에서는)이 이것의 큰 부분이라고 생각합니다. 소프트웨어 프로그래밍 분야에서 2 년제 학위를 취득하고 명예롭게 졸업했으며 코드를 읽거나 쓸 수없는 사람을 알고 있습니다.
Rachel

8
자바 교육에 대한 논쟁은 약한 것이다. 개념은 대부분의 언어로 가르 칠 수 있습니다 (예를 들어, Java로 쉽게 작성 됨). 나는 가르치는 개념의 가르침이 점점 약해지고 있다는 것에 동의하지 않지만, 나는 그것을 구현 언어에 대해 임의로 비난하지는 않는다.
Steven Evers

1
오, 재귀와 같은 것들이 가르쳐지면 익숙해지지 않습니다. 재귀 함수 (적어도 내가 갔던 곳에서했던 것)를 작성하는 것과 같은 100 행 IF 문을 작성하는 것과 같은 등급을 얻습니다. 서둘러야 100 행 IF 문을 작성하는 것이 더 쉽습니다. 당신이 그것을 켜기 전에 5 분까지 숙제를 건너 뛰었습니다.)
Rachel

1
@ SnOrfus : Java를 비난하지도 않습니다. 나는 Java를 가르치는 것에 반대하는 주장을하지 않았다. 예, Java로 이러한 개념을 가르 칠 수는 있지만 어쨌든 내가 사용한 Java 클래스가 아니라는 것을 알지 못했습니다. 즉, MIT는 매우 간단한 구문을 가지고 있기 때문에 원래의 프로그래밍 클래스로 Scheme을 선택했기 때문에 언어 구문에 중점을 두지 않고도 프로그래밍 개념에 대해 조기에 생각하기 시작합니다.
Robert Harvey

4
지구상에서 누가 "자바를 가르치는"대학에가요. 프로그래밍 언어 학교는 유용하지 않습니다 (Java, C ++, Lisp 등). 그게 미국에있는 것인가요? 어디 내가 CS를 연구 필요에 따라, 당신은 더 많은 이하 (예외가 내 생각, 패러다임 클래스가 될 것입니다) 자신에게 음식물 언어를 가르쳤다. 대학 과정은 수학, CS 이론, 다중 프로그래밍 패러다임, 미적분학 등을 가르쳤습니다.이 과정을 졸업 한 사람은 과정을 통과하기 위해 더 어려운 문제를 해결해야했기 때문에 FizzBuzz를 쉽게 해결할 수 있습니다.
Andres F.

20

나는 이것을 말하기 싫어하지만

프로그래밍 질문에 대답하지 못한 주된 이유는 답변자보다는 질문자의 잘못 때문입니다.

일정한 시간에 실행되는 특정 컬렉션 검색 알고리즘을 만드는 방법에 대한 질문을받은 한 인터뷰를 분명히 기억할 수 있습니다 (컬렉션에있는 항목 수에 관계없이 동일한 조회 수). 나는 포기하기 전에 20 분 동안 울렸다가 넘어졌다. 그때 인터뷰를하는이 천재는 답을 거의 일정하게 유지했지만 여전히 일정하지 않은 것으로 설명했다. "0의 답을 줘"라고 말하고 0.1을 받아들이는 것과 같습니다.

짧은 인터뷰에서 누군가 인터뷰 할 때 다음 기준을 충족시키지 못하는 질문을하는 경우가 너무 많다는 것입니다.

  1. 그들은 가능한 모든 정답을 알고 있습니다.
  2. 그들은 정답이 정확한지 알고 있습니다.
  3. 그들은 실제로 답을주지 않고 충분한 정보를 제공하는 방법을 알고 있습니다.
  4. "문제 해결"질문은 공개되지 않은 사실에 대한 지식에 의존하지 않습니다 (이것이 제가 본 가장 큰 문제입니다).
  5. 답을 찾지 않아도 답변을 작성하는 데 1 분도 걸리지 않습니다. 코드를 입력하는 데 5 분이 걸리면 인터뷰의 구두 부분에 맞추는 것보다 더 많은 문제 해결이 필요합니다.
  6. 질문은 단순히 "한 번만 겪었거나 학교에서받은 문제이므로 지금 당장 문제를 해결하는 방법을 알아야합니다 "이상의 것입니다. 나는 당신이 그것에 응답하는 데 2 ​​분 이상이 걸렸을 것입니다. 왜 후보에게 같은 예의를 제공하지 않습니까?

진지하게 (1), 사람들에게 인터뷰에서 구두로 코드를 작성하도록 요구하는 것은 어리석은 일이라고 생각합니다.

진심으로 (2), 사람들에게 코드 작성을 요구하지 않고 인터뷰하는 것도 바보라고 생각합니다.

진지하게 (3), 당신은 그들에게 "숙제"를 주거나, 그들에게 코드 샘플을 가져 오도록 요청하거나, 그들에게 작업을 위해 랩톱과 몇 가지 질문과 조용한 사무실을 제공해야합니다. 그런 다음 그들이 일하는 동안 혼자 내버려 두십시오. 나는 일반적으로 후자의 접근 방식을 사용하여 외부 도움 (치트)을 얻는 능력을 제한하고 시간 상자를 사용할 수 있습니다.


면접관과 해결책이 왜 일정하지 않은지 설명했습니까? 내가 면접관이고 간결하고 악의가 없으면 내가 틀렸다고 설득한다면 나는 그 자리에서 널 고용 할 것이다.
Nemi

1
@Nemi-그렇습니다. 문제의 사람은 고용 권한을 가진 사람이 아니었지만 그 직책에 제안을 받았습니다.
MIA

8
int? result; for (int i = 0; i < int.MaxValue; i++) { T item = (i < array.Length) ? array[i] : someDummyItem; if (item == whatWereLookingFor) result = i; } return result;
구성자

잘못하면 수정하지만 해시 테이블은 올바르게 수행되고 충돌이 없다고 가정하면 액세스 시간이 일정하다고 생각합니다. 따라서 일정한 시간에 해시 함수를 사용한 검색이 가능해야합니다.
Trylks

해시는 충돌이 발생할 수 있습니다. 그렇기 때문에 보통 상각 된 일정 시간으로 표시됩니다.
Rig

10

FizzBuzz에서 검색하기 만하면됩니다. 그것에 블로그 포스트의 거대한 물결이있었습니다. 일반적으로 블로거는 "[일부 언어로 작성하라고 사람들에게 말했고 다음과 같은 실수가 있습니다."라고 말하면서 몇 가지 함정을 열거했습니다. 재미는 사람들이 "[다른 언어]에서는 사소한 것입니다."라고 말하는 주석에서 시작됩니다. 다음 주석은 그 첫 번째 버그에서 항상 버그를 찾습니다. 아주 좋은 개발자들이 어떤 언어로든 처음에는 제대로 이해하지 못하는 것 같습니다. 일부 오류 :

  • 나는 1에서 100을 요구했고 당신은 1에서 99 또는 0에서 99를 했어
  • fizz 및 / 또는 버즈와 함께 숫자를 인쇄할지 여부
  • "fizzbuzz"와 "fizz-buzz"에 대한 의견 불일치
  • 한 번 할 때 두 번 비교하는 것처럼 놓친 최적화
  • 아주 더 많이

제가 채용 할 때, 사람들에게 저를 위해 화이트 보드에 코드를 작성해달라고 요청합니다. 복잡한 곳 근처 (아무것도 복잡하지 않다고 생각합니다) 근처에는 아무 것도없고 많은 후보자들이 완전히 실패했습니다. 나는 vb 스타일의 If, Then, End If를 작성하지만 중괄호도 (안전하다고 생각할 수 있음) 작성하거나 C #을 작성하고 (먼저 C #?를 요구하지만) 어디서나 세미콜론이 하나도없는 것을 의미합니다. 논리 오류로 시작하지 마십시오!


2
@Jeff 대부분의 개발자는 먼저 컴파일하지 않는 것을 작성합니다. 좋은 것은 간단한 구문 오류를 살펴보고 수정합니다. 양호하거나 차분한 ok 프로그래머는 함수를 작성하지만 함수를 호출하는 코드는 작성하지 않았고, 최적화되지 않은 것을 작성하거나, 별다른 문제를 겪지 않고, 구문 오류를 놓치거나 구문 오류를 놓칠 수 있습니다. 끔찍한 프로그래머는 거의 컴파일 할 수없는 코드를 작성하고, 완전히 잘못된 것 등을 수행합니다. 예를 들어 99 또는 100 또는 101 (ish)로 반복하는 대신 문제가 있기 때문에 3 또는 5로 반복합니다. 전혀 코드. 당신이 그것을 볼 때까지 당신은 정말로 그것을 믿을 수 없습니다.
Kate Gregory

7
{ "If {} If {} 그렇다면 {} EndIf"가 완전히 실패한 것으로 판단되는 경우} {귀하의 인터뷰 스타일에 결함이 있거나 사소한 이유로 후보자를 기각 할 수있어서 놀랍게도 행운입니다} EndIf
Sparr

7
저는 적어도 12 개 이상의 언어로 매달 프로그래밍합니다. 컴퓨터 앞에 앉히고 한 달 동안 만지지 않은 컴퓨터에서 일하라고 요청하면 처음 5 분 동안 실수를 할 것입니다. 일반적으로 실수를 지적합니다. 컴파일러 또는 인터프리터에 의해 출력됩니다.
Sparr

2
@ 스파 르-물론. 따라서 화이트 보드에서 살펴 보라고하면, 아마도 그것을 발견하고 "죄송합니다-나는 많은 언어를 사용합니다"라고 말할 것입니다. 그렇지 않으면 "어떤 언어로 썼습니까?"라고 말할 것입니다. 그리고 당신은 할 것입니다. 속임수 질문이나 함정이 아닙니다. 어떤 사람들은 실제로 코드를 작성하지 않았으며 자신이 가지고 있다고 주장합니다. 이것이 이런 질문의 요점입니다.
Kate Gregory

2
그러나 나는 그 질문이 그다지 좋지 않다고 생각합니다. 이 주석 스레드가 시작되기 5 분 전에 VB가 코드 블록 주위에 중괄호가 필요한지 여부를 알 수 없었습니다. 나는 당신에게 If / Then / EndIf가 VB [.Net]처럼 보인다고 말할 수있었습니다. 그리고 VB로 코드를 작성합니다 ... 약 3 개월마다 2 시간 (rentacoder.com 작업, 절대 실제 VB 작업을 수행하지 않습니다.
Sparr

10

나는 당신이 언급 한 Coding Horror 기사를 읽었으며, 제 의견은 Jeff가 옳다는 것입니다 ...하지만 그가 마지막으로 인터뷰 한 시간은 언제입니까?

인터뷰를 할 때는 대개 스트레스를 많이받으며, 이론적 인 질문에 답해야합니다 (지식, 구글, 선명하지 않음, 스트레스로 인해 어려움을 겪는 기억 만). 테스트에서도 마찬가지입니다. 스트레스는 도움이되지 않습니다.

누군가가 어떤 직책에 적합한 지 알 수있는 유일한 방법은 잠시 동안 그와 함께 일하는 것입니다 ... 100 명 중 마지막 10 명 (어쩌면 더 많음)을 고용하십시오. 고용하다???

고용주는 모듈러스에 대해 알고있는 코드 원숭이가 아니라 문제 해결사를 고용해야합니다.

"한동안 모든 지원자"를 테스트 할 수 없으므로 인터뷰를해야합니다. 그렇기 때문에 질문에 문제를 집중시키고 (문제 해결) 과거 참조 확인을 수행합니다.

제 생각에는 FizzBuzz는 개발자가 성장을 유지하기를 원하는 회사에게는 위험합니다.


28
여기서 IMHO의 문제는 FizzBuzz가 스트레스가 많은 상황에서도 대답 할 수 없다면 자신을 "프로그래머"라고 부를 때 사람들이 당신의 얼굴에 웃을 수있는 낮은 질문이라는 것입니다. "버블 정렬 구현"과 같이 약간 더 복잡한 것이면 이러한 변명과 우려는 정당화되지만 FizzBuzz에는 적합하지 않습니다.
dsimcha

23
모르는 사람 필터링 : Fizzbuzz는가 무엇에 좋은 것은 사람들의에서 뭔가를 . 그리고 무언가를 아는 것만으로는 충분하지 않을 수 있습니다. 그것은 고용 결정 테스트가 아니라 "면접에서 내 시간을 낭비하고 있습니까"테스트입니다. 일부 고용 관리자는 피즈 버즈를 너무 멀리 가져 가서 업무를 수행하려고합니다.
Steven Evers

31
내 장점은, 모듈로는 난해한 연산자가 아닙니다. 전문 개발자라고 부르려면 모든 개발자가 경험해야하는 핵심 작업입니다. 어쨌든 누군가 누군가 FizzBuzz를 작성할 수 있다고해서 반드시 고용한다는 의미는 아닙니다. 이 사람이 작업을 완료하는 데 필요한 제어 흐름의 레이아웃을 시도 할 수 있는지 여부를 확인하기위한 빠른 시작 입니다.
webbiedave

12
FizzBuzz는 매우 마음에 들기 때문에 단순히 유용하다고 생각합니다. for 루프, 두 개의 if 문, modulo 및 print가 필요합니다. 의미있는 프로그래밍 경험이있는 사람은 거의 생각하지 않고 그것을 능가 할 수 있어야합니다. 누군가가 인터뷰에서 어려움을 겪으면 완벽하게 유효한 리트머스 테스트라고 생각합니다.
Adam Crossland

11
@ snorfus : "다른 사람의 문제"에 출원. 귀중한 시간과 돈을 낭비하고 프로그래밍에 대한 적성이없는 누군가의 결과를 기다리는 것보다 사회적 불안감을 무너 뜨리는 좋은 개발자 한 명이 오히려 그리워합니다. 다른 사람을 감당할 수 없습니까? 치료사를 참조하십시오.
Aaronaught

10

저는 최근에 50 명 이상의 프로그래머와 인터뷰를하면서 주로 PHP와 함께 일할 고위직을 맡았습니다.

스크리닝 시험에서 피즈 버즈 문제를 일으켰습니다. 대부분 자신을 즐겁게하고 10 개의 좋은 질문을 원했고 9 개만 있었기 때문입니다. 저의 의도는 당시 사람들에게 인터뷰 질문에도 재미있게 놀 수 있다는 것을 보여주었습니다.

지원자 중 80 %가 문제를 해결했지만 계수 연산자를 사용하지 않았습니다.

지원자의 15 %가 문제를 해결할 수 없습니다.

출원인의 5 %가 모듈러스 연산자를 사용하여 문제를 해결했습니다.

샘플링이 상당히 제한되어 있지만 (한 국가의 지원자 50 명) 다음과 같이 말할 수 있습니다.

그 중 95 %가 CS 커리큘럼에서 BS 이상을 지니고 있습니다 (여기의 대학들은 CS 사운드를 더욱 화려하게 만들어 경쟁합니다).

나는 정말로 놀랐다. 글쎄, .. 두려워하지만 놀랐습니다. 나는 문제가 너무 대중화 되었기 때문에 결과를 재현하는 것에 가까이 접근하지 않았다고 생각했다. 이것은 저의 지원자 중 5 %가 수퍼 프로그래머가 아닐 수도 있지만 적어도 프로그래밍 관련 블로그를 읽는다는 것을 보여줍니다.


나는 modmod 한 연산자를 사용하는 것이 가장 분명하다고 생각했을 것입니다. 문제를 성공적으로 해결 한 사람들의 95 %가 다른 것을 사용했다고 놀랐습니다. 아마도 그들은 새로운 졸업생이었고 수학은 그랬을까요?
jmoreno

나는 어떤 클래스에서도 모듈러스 연산자를 배우지 못했습니다. 인턴십을하지 않았거나 오픈 소스 프로젝트에 기여하는 데 시간을 투자했다면 업계에 들어 오기 전까지는 배우지 않았을 것입니다. 또한, 나는 컴퓨터 과학 수업 중 하나에서 삼항 연산자가 너무 혼란스럽고 읽기가 어렵 기 때문에 나쁜 코딩 연습이라고 배웠습니다.
Robert Fraser

나머지 연산자 대신 무엇을 사용 했습니까? x - (x/y)*y?
코드 InChaos

9

마지막 채용 과정에서 나는 0을 가진 3 명의 건설 노동자를 가졌습니다. 저는 제로를 반복합니다. 프로그래밍 교육이나 경험은 소프트웨어 개발자 직책에 적용됩니다. * 그래서 그것은 배럴의 바닥입니다. 기술의 정규 분포를 가정하면 평균 기술 수준이 얼마나 낮을 지, 심지어 '평균 이상'(응모자 중)이 여전히 상대적으로 나빠지는 것을 알 수 있습니다.

이제 프로그래밍 능력이있는 것으로 보이는 지원자 만 fizzbuzzing하고 있다면 다음과 같은 것을 알 수 있습니다.

  1. 거짓말 쟁이
  2. 유행어 애호가 (. NET에 대한 기사를 한 번 읽었습니다)
  3. 나쁜 실제 프로그래머
  4. 기술을 사용하여 프로젝트를 완료했지만 그것에 대해 배우지 않은 사람들 (이를 식별하기위한 idisposable에 대한 fizzbuzz 질문 참조)

또한 내가 본 일부 '피즈 버즈'질문은 도메인별로 다릅니다. 언어 / 프레임 워크 x를 사용하여 몇 년 동안 (그래서 z는 x를 사용한 경험) 점진적으로 개발할 수 있으며 특정 부분 (예 : UI 구성 요소 개발에 대해 잘 모르는 라이브러리 개발자)을 경험하지 않아도됩니다.

마찬가지로, 많은 개발자들이 요즘 유지 관리 개발을 수행하므로 일부 영역에서는 아키텍처 / 디자인 기술이 약할 수 있습니다.

99 %가 정확한지 확실하지 않지만 IME는 여전히 꽤 높습니다. 적어도 80 % 범위에 있습니다.

* 아니요, 우리는 이러한 응용 프로그램에 전화를 걸거나 다시 보지도 않았습니다.


3
우리는 비슷한 상황을 겪었지만 고객과의 계약에 따라 4 명의 풀 타임 개발자가 프로젝트에 배정되었다고 말하고 프로젝트가 기본적으로 완료되었으므로 시트 락 매달려있는 사람은 고객의 달러에 대한 프로그래밍을 배우게되었습니다. 계약에 남은 주.
Tangurena

또한 일부 정부 급여 프로그램 / 실업 보험이 실업 급여를받는 사람이 일주일에 특정 수의 일자리에 지원해야 할 때 그러한 일이 발생하는 것을 보았습니다. 해당 프로그램에 수령인이 실제로 자격이있는 직무에 적용해야하는 명목상의 요구 사항이 있더라도 자격이있는 직무를 평가하고 해당 특정 "직업 신청"요구 사항을 시행하기위한 리소스는 매우 제한적입니다. .
Daniel Martin

8

네 진짜로 요. 아마도 99 %는 아니지만 여전히 꽤 높습니다. 나는 인턴쉽과 풀 타임 채용을 위해 컴퓨터 과학 학생들을 인터뷰했습니다. 한 대학에서 약 25 명의 학생들을 인터뷰했습니다. 우리는 학생들이 이야기했기 때문에 같은 질문을하지 말라고 들었습니다. 첫 번째 질문에 대답 할 수있는 25 명 중 3 명 또는 4 명의 학생 만 구할 수 있기 때문에 나는 그것이 중요하지 않다는 것을 빨리 알게되었습니다. "strcmp 쓰기"

두 문자열을 비교하는 함수를 작성하도록 요청했습니다. 함수를 사용하여 사전에 대한 단어를 정렬 할 수 있습니다. 함수를 작성하는 방법은 물론 두 단어를 비교하는 방법을 이해하지 못한 학생들의 수에 놀랄 것입니다. 이 학생들 중 일부는 CSc에서 A를 모두 받았다고 주장했습니다.

문제는 프로그래밍이 매우 어렵다는 것입니다. 많은 사람들이 프로그래밍 방법을 알고 있다고 생각하지만 그렇지 않습니다.


3
학년 인플레이션은 모두를 위해 시간을 낭비하고 낭비합니다!
DarenW

8

몇 가지 생각 :

  • 그들의 프로그램에 버그가 있지만 분명히 올바른 아이디어를 가지고 있다면 누군가를 상대하지 않을 것입니다. 디버깅은 프로그래밍의 일부입니다.

  • 많은 사람들이 자신이 할 수없는 일을 신청하는 것이 슬픈 일이라고 생각합니다. 경제에 문제가있는 것 같습니다.

  • 사람들에게 나쁜 질문을하는 것은 정말 쉽습니다. 여기서 "올바른"대답은 면접관이 대답하는 것입니다.


2
두 번째 요점에 대해 ... 다음 번 진로를 고민하고, 다양한 산업을 연구하고, 구직을하는 데 많은 시간을 보냈지 만, 여러 가지 일에서 내 자신의 역량 수준을 평가하는 것은 큰 어려움이었습니다. 분명히 이것은 (거의) 모든 사람에게 크고 큰 문제입니다.
DarenW

@DarenW : 당신은 내 동정심을 가지고 있습니다. 나는 당신이 무엇을 좋아 하고 거기에서 일 하는지를 아는 것이 중요하다고 생각합니다 . 개인적으로 저는 항상 학교를 좋아했고 엔지니어링에 대한 관심을 의심하지 않았습니다. 내 sibs는 그들이하는 일을 거의 모두 확신합니다. 하나는 아니고 힘들다는 것을 쉽게 알 수 있습니다. 귀하의 홈페이지는 과학과 예술의 교차점에 대한 관심을 나타냅니다. 어떤 사람들은 젊음에 나쁜 경험을했으며, 지금은 모든 에너지를 소모 할 수 있습니다.
Mike Dunlavey

7

이 테스트는 내가 고용 할 수있는 프로그래머에 대해 알고 싶은 몇 가지 사항을 아주 잘 다룹니다.

  1. 당신은 전혀 프로그래밍 할 수 있습니까?
  2. 모든 사람이 할 수있는 것은 아니기 때문에 처음부터 프로그램을 작성할 수 있습니까?
  3. 당신은하지 않고 문제를 해결할 수 이상 을 -thinking.

마지막 요점을 자세히 설명하기 위해, 피즈 버즈에 대한 수많은 솔루션이 있습니다. 가독성을 원하십니까? 속도? 짧음? 프로그램 작성을 빨리 끝내려고합니까? 프로그래머가이 간단한 문제를 어떻게 공격하는지는 매우 분명합니다. 프로그래머가 솔루션을 선택하여 끝까지 볼 수 없다면이 사람이 실제 작업을 수행하는 방법에 대해 무엇을 알려줍니까?


6

불행히도 인상적인 이력서를 가진 많은 사람들은 기본적인 프로그래밍 기술이 부족한 것 같습니다. 이력서에 C와 C ++를 나열한 사람들이 포인터에 대한 기본적인 질문에 대답 할 수없는 경우가 많이있었습니다.


3

FizzBuzz가 피하는 데 도움이되기를 희망하는 두 가지 유형의 사람들이 있습니다.

  1. 프로그래밍 지식이 없거나 프로그래밍 관련 지식이없는 기회. 일반적으로 CV에서이를 인식 할 수 있지만 항상 그런 것은 아니며 간단한 프로그래밍 작업을 제공하는 것이 프로그래머가 아님을 명확히하는 좋은 방법입니다.
  2. 프로그래밍 과정이나 학위를 수료했지만 실제로 프로그래밍 방법을 모르는 Java School 대학원생. 이 사람들은 이론에 대해 이야기 할 수 있기 때문에 걸러 내기가 더 어려울 수 있지만 실용적인 기술은 없습니다. 간단한 문제를 해결하고 솔루션과 솔루션에 대한 설명을 요청하는 것은 Petra Java와 Paula Bean의 차이점을 보는 매우 좋은 방법입니다.

어느 경우이든, 나는 완벽한 구현에 대해 정말로 신경 쓰지 않습니다. 개발자 작업을 신청하는 사람들과 함께해야 할 테스트는 그들이 전혀 프로그래밍 할 수 있다는 것입니다.

즉, 나는 현재 몇 가지 이유로 특정 테스트를 방해하지 않을 것입니다. 처음에는 매우 잘 알려져 있으며 위의 그룹 중 하나가 빨리 시도해 볼 수 있습니다. 둘째, 나는 프로그래머가 아닌 사람들을 데려 오기 전에 스티브 Yegge의 전화 화면 질문 을 사용하여 프로그래머가 아닌 사람들을 선별 하는 것을 선호합니다 . 직업을 진지하게 받아들이고 인터뷰를 보증하는 개발자의 상위 1 %. 마찬가지로 누군가가 여기 또는 너무 좋은 담당자를 가지고 있다면 나는 그들을 인터뷰하는 경향이 있습니다.


A) "좋다"는 얼마나 좋은가요? B) 당신은 고용하고 있습니까? :)
Sparr

3

개발자가 작업을 함께 복사하여 붙여넣고 코드를 작성하지 않으려 고 노력하는 "9에서 열까지"를 볼 때까지 개발자가 FizzBuzz를 코딩 할 수 없다고 믿기가 어렵습니다. 수석 개발자 중 한 명이 3 년 동안 "경험"을 갖고 C # 개발자에게 사전을 사용하는 방법을 가르치는 것을 들었을 때 나는 그것을 믿을 수 없었습니다. 인터페이스? 디자인 패턴? 스타우트? 야니? 내 리드는 YAGNI에 대해 들어 본 적이 없습니다! 이 사람들이 모르는 것이 놀랍습니다.

나는 지금 그것을 믿는다. 또한 너무 많은 개발자가 충분하다고 생각합니다.


3

왜 그렇게 인기있는 질문인지에 대한 답은 한 가지 이상의 답변 방법이 있기 때문이며, 응시자가 선택한 방법에 따라 코딩 방법에 대한 통찰력을 줄 수 있습니다. Stack Overflow에 10K 담당자가있는 경우 여기에서 훌륭한 예를 볼 수 있습니다 .

99 % 통계에 대해서는 해당 숫자의 출처를 확인하십시오. 아마 편향되어있을 것입니다. 첫 번째 직업을 위해 인터뷰하는 초급 프로그래머를 기반으로한다면, 특히 대다수의 후보자가 대학에서 곧 나올 경우 가능하다는 것을 알 수 있습니다. 나는 실제로 100 문 조건을 그 문제에 대한 해결책으로 쓸 것이라고 생각할 수 있습니다.


3
나는 99 %가 모든 통계의 87 %가 그 자리에서 이루어 졌다는 진술의 진실 (재귀 적 진실)을 가리킨다 고 생각한다.
Adam Crossland

1
@Adam Crossland : 통계에 관한 통계의 100 %도 그 자리에서 이루어집니다.
Macha

그럼에도 불구하고 누군가 대학에서 피즈 버즈를 풀 수 없다는 것이 끔찍한 것 같습니다. 그들이 그렇게 할 수 없다면 어떻게 할 수 있습니까?
Morgan Herlocker

2
@ironcode 나는 fizzbuzz를 이해할 수조차없는 누군가와 학교에 갔다. 그들은 명예롭게 졸업했다.
Rachel

2

프로그래머의 99 %가 프로그래밍 할 수 없거나 간단한 코딩 테스트를 과장하여 해결할 수 없다는 진술을 발견했습니다. FizzBuzz 테스트의 경우, 이전에이 문제가 발생하여 모듈로 연산자로 쉽게 해결할 수 있거나 이전에 발생하지 않았으며 어려움을 겪을 수 있습니다. 면접관에게 프로그래밍 기술에 대해 아무 것도 알려주지 않습니다.

인터뷰에서 많은 프로그래머들에게 문제가 된 것은 분명히 기술 면접 방법의 본질에 있다고 생각합니다. 면접관은 지원자가 언어 구조, 세부 사항 및 데이터 구조, 하드웨어 아키텍처, 디자인 패턴 등의 계산 복잡성을 암기하고 즉시 재현 할 수 있기를 기대합니다. 컴퓨터 과학 / 소프트웨어 공학 분야는 광대합니다. 모든 것을 암기하는 것은 불가능하고 무의미합니다.

실제 세계에서 핵심은 사용자에게 할당 된 프로그래밍 / 디자인 문제를 이해하고 문제 해결 방법 (IDE, 맨 페이지, 서적, Google 등)을 찾을 수있는 위치를 아는 것입니다. 그러나 이것은 면접관이 테스트하지 않은 것입니다.


14
FizzBuzz가 얼마나 쉬운 지 아십니까? 당신은 그것을 만날 필요가 없습니다. 어려움을 겪고 있다면 경력 변화를 고려하십시오.
John Smith

그러나 나누기를 사용하면 모듈로없이 해결할 수 있습니다. % 대신 /를 사용하는 올바른 솔루션이 효과적입니다. 그래서 그들은 매우 기본적인 수학과 매우 기본적인 프로그래밍을 이해해야합니다.
Almo

0

나는 여전히 비교적 주니어 프로그래머입니다 (약 2 년 동안 돈을 위해 코딩하고 약 2 년 전에 부수적으로 전문적인 능력으로 코딩했습니다). 그래서 충분한 양의 소금을 사용하십시오.

대기업 프로젝트의 코더에 대한 첫 번째 화면을 사용한 경험이 있습니다 (프로젝트가 끝났다는 것을 알고 있지만 어쨌든 지불하고 싶었습니다). 회사에서 채용을하는 유일한 프로그래머로서 이력서를 검토하고 지원자를 심사하는 임무를 받았습니다.

이것은 정부 프로젝트를위한 것이므로 아마도 가장 재능있는 지원자를 모으지 않았을 수도 있지만 실제로 코드가 표시된 github 계정을 가진 사람이나 포트폴리오를 가진 사람으로부터 하나의 응용 프로그램을받지 못했기 때문에 fizzbuzz ( 문자 그대로 정확한 문제)) 프로그램을 작성할 수있는 것처럼 보이는 사람에게 첫 번째 단계입니다.

나는 그것이 어리 석다는 것을 알았지 만 작동 코드를보고 싶었다는 의사 사과로 머리말을 썼다.

결과 : 나는 실제로 정확한 하나의 응답을 얻지 못했습니다. 인터넷의 답변 양을 고려하면 눈에 띄는 것입니다. 아무도 표절을 귀찮게하지 않았습니다. 우리는 이전에 실패했던 프로젝트의 이전 반복 작업을 한 사람들을 고용해야했습니다.

정부 소프트웨어 / 계약이 어떻게 조여 졌는가에 대한 운동의 초기 충격과 실망 후, 나는 내 자신의 기술에 대해 훨씬 더 나은 느낌을 얻었습니까?

편집 : 정확하지 않다는 것은 하나 이상의 오류 (즉, 99가 아닌 100을 통해 요청) 또는 쉬운 고침 인 다른 무고한 버그를 의미하지 않습니다. 나는 작동하지 않거나, 실행 / 컴파일 / 등을하지 않거나 문제가 읽히지 않고 이해되지 않았 음을 분명히 보여 주었으며, 중요한 부분은 응용 프로그램을 철회했으며 다른 코드를 보내지 않았습니다.

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