“RAII 관용구 설명”은 좋은 C ++ 스크리닝 질문입니까? [닫은]


13

내가 함께 일하는 회사에서 누군가에게 잠재적 인 고객에게 보낼 때 전화가 완전히 부끄러워지지 않도록 후보 전화 선별 검사를 요청했습니다.

C ++ 개발자 역할을 담당하는 사람들이 상당히 많았습니다. 나는 C ++에서 많은 시간을 소비하지는 않지만 언어로 사소하고 사소한 프로젝트를 수행했습니다. "RAII 관용구 설명"은 대부분의 심각한 C ++ 개발자가 반 자고있을 때 대답 할 수있는 멋진 소프트볼 질문이 될 것이며 경험에 대한 더 흥미로운 질문으로 넘어갈 수있을 것이라고 생각했습니다. 그러나 C ++ 경험이 10 년 이상인 사람들은 "자원 획득이 초기화"라는 약어를 확장하더라도이 용어를 인식하지 못합니다. 한 후보는 Windows 개발에서이 기술을 적용하는 것이 항상 실용적이지 않다고 생각하기까지했지만 이상한 생각이라고 생각했지만 그 선을지지 할 수있는 몇 가지 예를 볼 수있었습니다.).

내가 능력을 판단 할만큼 충분히 잘 알고있는 C ++ 개발자 몇조차도 용어를 인식하지 못한다고 말했지만 기술 요약을 읽었을 때 "오, 그래, 그 이름을 알지 못했습니다. 그런 것들을 당신 이해야 할 일이라고 생각했습니다 . " Stroustrup의 두 번째 책에서 나온 용어를 기억합니다. 비록 그 당시에는 큰 영향이 없었습니다.

"RAII 관용구를 설명해 주시겠습니까?" 공정한 심사 질문? 모든 유능한 C ++ 개발자가 그것을 이해할 것으로 기대하는 것이 합리적입니까? 내가 생각하는 것보다 더 난해한 용어인가? 응시자가 용어를 모르는 경우 RAII가 작동하도록하는 관행을 적어도 내재화했는지 여부를 알아볼 수있는 후속 질문이 있습니까? 응시자에게 답변에 대한 위도를 제공하고 응시자가 C ++ 개발에 대한 이해를 입증하는 데 도움이되는 더 나은 대안 "초급"질문이 있습니까?

추가 편집 : 명확히하기 위해, 나는 사람들이 유행어와 두문자어를 모르기 때문에 실격시키는 면접관이 아닙니다. 그러나 숙련 된 C ++ 프로그래머가 리소스 관리에 대한 모범 사례를 내재화했다고 기대하는 것이 합리적이라고 생각합니다. 또한 응시자가 디자인, 문제 해결 등에 대한 더 흥미로운 질문으로 넘어 가기 전에 자신이 전문 지식을 주장하는 기술에 대한 일부 "기본"을 이해하고 있는지 확인하는 것이 중요하다고 생각합니다. "단순한"질문을하기 전에 C ++에서 우수 자원 관리 관행에 대한 후보자의 기본 이해를 판단하는 데 사용할 수있는 짧은 전화 심사에 사용하기에 적합한 개방형 질문을합니다.


3
"몇몇 C ++ 개발자들조차도 자신의 역량을 판단 할만큼 충분히 잘 알고 있습니다." 괜찮아. "그래서,"RAII 관용구를 나에게 설명해 줄 수 있니? "공정한 심사 질문입니까?" 왜 물어? 당신은 그것에 대해 알고 사람들을 찾을 수 없습니다. 당신이 아직 모른다는 것을 더 알아야 할 것이 있습니까? 아마도 당신은 (이미 답을 알고 있기 때문에)이 주제를 경시하고 흥미로울 수있는 "더 나은 대안"초보적인 질문이 있습니까? "에 집중해야합니다. 그것을 제외하고는 견딜 수없는 견해입니다.
S.Lott

9
숙어 변경, 좋은 연습은하지 않습니다. 특정 관용구에 대해 묻는 대신 단순히 "누수되지 않도록 클래스를 디자인 할 때 어떤 단계를 수행합니까?"
Blrfl

샘플 크기가 작고 더 이상 C ++ 커뮤니티에 적극적으로 참여하고 있지는 않지만 공평합니다. 그래서 저는 커뮤니티가 요즘 필수 지식을 무엇으로 간주하는지 모릅니다. 본질적으로 구문의 기초를 넘어 실제 C ++ 지식을 판단하는 데 사용할 수있는 질문 레퍼토리를 확장하는 방법을 찾으려고 노력하고 있습니다.
JasonTrue

2
당신의 문제는 내가 기대 한 것이 아닙니다. RAII가 무엇인지 아는 사람을 찾고 채용을 받았고 나중에는 여전히 코딩에 열심이 있다는 것을 알게 될 것입니다.
Kevin

1
@ JasonTrue : 피즈 버즈 질문은 문자열 반전과 같은 실제 프로그래밍 질문이라고 생각합니다. 어쨌든 나는 그것이 좋은 질문이라고 생각합니다. 인터뷰 대상자가 가장 흥미 롭거나 중요하다고 생각하는 c ++-0x의 기능을 묻는 것도 고려할 수 있습니다. 조금 더 힘들지만 좋은 대답을 얻으면 아마 좋은 일을 의미 할 것입니다. 그리고 빈 응시가 생기면 항상 '부스트 라이브러리가 가장 중요하고 흥미로운 것'이라는 질문으로 돌아갈 수 있습니다.
Kevin

답변:


24

당신은 당신이 경험에서 잘 알고있는 C ++ 개발자들이 그 약어 나 완전한 표현에 익숙하지 않다는 것을 알게되었습니다. 그것만으로도 질문이 전화 통화 중 선별 질문으로 적합하지 않다는 것을 나타내는 것 같습니다.

반면에 시나리오를 제시하면 더 원형 교차로를 통해 동일한 지점에 도달 할 수 있습니다. "파일에 로깅 정보를 쓰는 Log 클래스를 구현하고 있습니다. 파일 핸들 인 멤버 변수 (std :: FILE *)가 있어야합니다.이 파일을 어디에 할당하고 해제해야합니까? 핸들?" 후보자가 생성자에 파일 핸들을 할당하고 소멸자에 핸들을 할당하는 대신 open () 및 close () 메서드를 만드는 것에 대해 이야기하기 시작하면 클래스가 어떻게 작동하는지에 대한 질문을 통해 후속 작업을 수행 할 수 있습니다 호출 코드 예외 발생 등


훌륭한 제안. 나는이 접근법을 좋아한다.
JasonTrue

전화 인터뷰에서 너무 많은 시간이 걸립니다.
HelloWorld

15

나는 그것이 제안 된대로 실용적인 질문이라고 생각하지 않습니다. 많은 개발자들이 "오, 그래, 그 이름을 가진 사람은 몰랐다"라는 캠프에 빠질 것입니다. 개념의 이름이 아니라 개념에 대한 후보자를 테스트하는 것이 좋습니다. 그들에게 코드 예제를 제공하고 왜 불완전한 지 물어 보거나 그들이 개념을 알고 있음을 보여 주도록 요청하십시오.


3

나는 유효한 질문이라고 생각합니다. RAII 용어가 얼마나 인기가 있는지는 모르지만 (팀에서는 항상 RAII라는 용어를 사용합니다) 예외 처리 및 다중 스레드 안전을 원할 경우 특히 자원 처리 개념이 중요합니다. .


3

글쎄, 누군가 유능한 사람인지 알고 싶을 때 가장 먼저하는 것은 약어에 대한 지식을 확인하는 것입니다. 그것이 확립되면, 나는 그들이 시원하다고 생각하는 다른 기술의 이름을 알고 있는지 확인합니다. 그 후에도 여전히 거기에 있으면 좋아하는 색상 목록을 요청합니다.

나는 이런 종류의 것을 참을 수 없습니다. 인터뷰가 끝났을 때 이것은 사이렌과 경고의 종입니다. 상사가 "기초적"이라고 생각하는 기괴한 니모닉을 실제로 알고있는 곳에서 일하고 싶지 않습니다. 몇 년 동안 다뤄 온 사람들의 이름을 배우는 데 귀찮게 할 수 없으므로 모범 사례를 설명하는 귀여운 약어로 뇌 공간을 낭비하지 않아야합니다.

내 코드를 봐 내가 어떻게하는지 물어봐 젖소들이 집에 올 때까지 화이트 보드에 쓰레기를 뿌릴 것입니다. 앱을 코딩하겠습니다. 헛소리 퀴즈 질문을하지 마십시오. 상식은 항상 맞거나 그리워하며 결코 기본이 아닙니다.


선별 심사에서 많은 난해한 지식 질문을하는 경향은 없지만, 누군가가 완전히 무능하지 않은지 확인하기 위해 약간의 실사가 필요합니다. 따라서 후보자가 자신의 배경을 과시하면서 일부 수준의 지식을 확인할 수있는 개방형 질문을 찾고 있습니다. 누군가가 이력서에서 기술 X를 알고 있다고 말하면 "일부"지식이 필요합니다. 내 질문은 더 이상의 대화를위한 유용한 게이트웨이 인 C ++ 프로그래머에 대해 어떤 지식을 기대해야합니까?
JasonTrue 2016 년

4
@ Jason : 글쎄, 아마 몇 달 동안 RAII 약어를 기억할 수있을 것입니다. 몇 년 동안 C ++을 다루지 않았지만이 임시 지식이 유능한가요? 불쾌한 사소한 일입니다. 그들이 자물쇠를 어떻게 다루는 지 물어보고, 이상한 약어가 아닌 실제 지식을 이해하도록하십시오.
Satanicpuppy 2016 년

1
@ Jason : 동의합니다. 나는 기본이 이러한 종류의 퀴즈를 포함한다는 것에 동의하지 않습니다. 바보는 그것을 알고 전문가는 모른다. 선택 과정을 기술과 관련이없는 것을 기반으로하고 있습니다.
Satanicpuppy 2016 년

5
RAII가 무엇인지 아는 것이 필수적인 지식은 아닙니다. 그러나 자동으로 패턴에 도달하는 것입니다.
btilly

2
RAII는 우수한 C ++의 기본 개념이며이 용어는 20 년 이상 사용되었습니다. 나는 그것을 사소한 것으로 기각하는 것이 다소 불공평하다고 생각합니다. 이 용어를 모르는 훌륭한 C ++ 개발자가있을 수 있지만, 저에게는 기술을 연구하지 않는 사람의 냄새가납니다.
Kaz Dragon

1

전체 무능한 사람들을 빨리 찾아내는 것이 목적이라면 다음과 같이 해보십시오.

FizzBuzz 테스트

그런 다음 C ++ 개념과 실습을 더 나은 위치에두고 C ++ 전문 지식을 평가할 수 있습니다.


1
이 질문을 자주 사용하고 받았으며 위의 설명에서 위의 내용을 언급했지만 25 분 동안 전화 대화를하는 것이 어색하다는 것을 알았습니다.
JasonTrue

0

유효한 질문이지만 심사를위한 것은 아닙니다. 나는 그것을 인터뷰에서 논의하기 위해 서면 질문으로 사용했습니다. 사전 통지를 통해 사고 패턴에 대해 많은 통찰력을 얻을 수 있습니다. 선별 질문으로 그것은 단지 불쾌한 함정입니다.

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