면접관이 자신의 질문에 대한 답을 모른다면 어떻게해야합니까? [닫은]


48

어제 나는 인터뷰에서 끔찍한 경험을했다.

면접관은 순수한 가상 기능에 대해 물었다. 나는 기본 클래스에서 정의를 가질 수도 있고 정의하지 않을 수도 있지만 파생 클래스는 추상적 클래스가되기를 원하지 않는 한 정의를 제공해야합니다.

그러나 인터뷰어는 "순수한 가상이 정의를 가질 수 있을까요?

다시 그는 "순수?"

나는 '예'라고 말했다. 파생 클래스는 특정 동작을 원하는 경우 해당 함수를 명시 적으로 호출 할 수 있습니다.

그는 나를 보냈다. 그는 순수한 가상 기능이 정의를 가질 수 있다는 사실을 알지 못한다고 확신합니다.

이런 종류의 면담자를 어떻게 다룰 것인가?

두 번째로 물어 본 후에는 정의를 가질 수 없다고 거짓말해야합니까? :)

아니면 나는 내 말을 고수하고 직업 기회를 느슨하게해야합니까?


51
정의가있는 순수한 가상 함수의 예를 통해 그들에게 연락해야합니다.
GManNickG

22
GMan의 제안은 훌륭한 아이디어입니다. 면접관이 당신을 믿든 말든간에 후속 작업을하기에 충분히 신경을 썼다는 점에 감명을 줄 것입니다. 그리고 만약 당신이 그에게 가능한 한 비 대립적인 방식으로 무언가 를 가르치 면 , 그것은 당신이 개발자로서 당신을 더 높게 생각하도록 격려해야합니다. 그러나 당신이 거기서 일하기를 원하는지 아닌지는 여전히 어려운 결정입니다.
코디 그레이

47
그러나 정말로 그러한 사람들을 위해 일하고 싶습니까?

29
면접관 중 한 명이이 표현과 관련된 질문을했습니다 arr[++i] = i. 그리고 내가 이것이 정의되지 않은 행동을 불러 일으켜 시퀀스 포인트 에 대해 이야기 했을 때 , 그는 잠시 말을 할 수 없었으며, 그의 표정과 그의 추가 질문으로 인해 그는 이전에도 이러한 용어를들은 적이 없다고 믿었습니다!
Nawaz

10
면접관은 종종 기술 능력이 아니라 면담 자의 의사 소통 능력을 평가할 수있는 능력으로 선발된다는 점을 고려하십시오. 기술력은 쉽게 측정 할 수 있고, 생산성이 높고 팀에 적합하지 않습니다. 당신은 당신의 견해를 조정 하고 그렇게하지 않았지만 성취하지 않았다는 주장을 설명 할 충분한 기회를 얻었습니다 . 그것은 잘되지 않았다.
Hans Passant

답변:


82

아니, 그리고 당신은 그 특정 총알에 의해 놓친 행운의 별들에게 감사해야합니다. 모든 것을 알지 못한다고 인정하고 다른 사람들로부터 배우기를 거부하는 사람들을 위해 일하는 것은 매우 불쾌한 경험입니다.


7
보다 정확하게는 면접 과정이 두 가지 방식으로 작동합니다. 회사에서 직원으로 판단하는 동안 고용주로 판단하고 있습니다. 많은 사람들이 원하는 것으로 밝혀졌습니다.
저의 올바른 의견

과연. 며칠 전 전화 인터뷰 중에 면접관은 사용중인 언어에 익숙한 사람의 지식을 보여줄 수있는 사례를 요청했습니다. 마지막 순간에 직접 인터뷰에 질문이 추가되었습니다. 나는이 사람들과 그들이 훌륭한 개발자라는 것을 알고 있으므로 그들과 함께 일하고 싶다고 생각합니다. :)
greyfade

49

정의가있는 순수한 가상 함수의 예 :

// object.hpp
struct object
{
    // virtual destructor, to allow use as a public base class,
    // but pure to ensure object itself isn't instantiated
    virtual ~object() = 0; 
};

inline object::~object()
{
    // empty implementation
}

6
이것은 정의가있는 순수한 가상 함수의 예일뿐 아니라 실제로 유용한 방법의 예입니다. +1.
j_random_hacker

3
그렇게 할 줄 몰랐어요. 시원한! = D
gablin

2
이것은 기본 다형성 객체를 만드는 방법입니다. 그런 다음이를 사용하여 계층을 dynamic_cast 할 수 있습니다. 플러그인과 같은 일부 환경에서 플러그인이 예상 유형인지 확인하는 데 유용합니다 (확실히 기본 클래스에서 파생된다는 가정하에). 그건 그렇고 순수한 가상 소멸자는 반드시 정의를 받아야합니다.
CashCow

이제도 여전히 사소 할 수 있다면 좋을 것입니다.
중복 제거기

42

당면한 문제는 기술적 정확성이 아니라 사회적 / 커뮤니케이션 기술입니다. 견고하지만 면접관의 견해를 인정하고 얼굴을 구할 수 있도록하십시오.

그가 무엇을 낚시하고 있는지 알 수 있다면 ( "순수?"는 좋은 단서입니다), 좋은 대답은 다음과 같습니다.

순수한 가상 함수는 정의를 가질 수 없다고 일반적으로 생각 됩니다. 그러나 기술적으로 말하면 가상 함수가 순수 =0하려면 선언에 있어야합니다 . 여전히 정의를 가질 수 있습니다 (시도해보십시오!). 물론 이것은 거의 사용되지 않으며 실제로 대부분의 사람들이 "순수 가상"이라고 말하면 정의가 없음을 의미합니다.


3
당신은 기본적으로 내 의견을 25 분 복사했습니다. 내가 쓰기 전에! 어떻게? -+1 및 유사한 주제의 댓글이 삭제되었습니다.
Steve314

3
또 다른 좋은 지적입니다. 나는 교수님에게 내가 시험에 쓴 코드가 컴파일 될 것이라고 교수에게 보여주기 때문에 시험에서 내 성적을 주장했다. 컴파일러는 이제까지 ... 거짓말을하지 않습니다 ...
jmort253

3
이것은 나의 생각이었다. 설명없이 "그렇습니다"라고 말하면 면접관이 질문을 이해하지 못했다고 생각한 것이 분명해 보입니다. 답을 넓히면 a) 질문을 이해하고 b) 실제로 답을 알 수 있습니다. 나는 인터뷰자가 그 요점을 누르려고해서 반드시 틀렸다고 생각하지 않는다. 사람들이 순수한 가상 함수 가 정의를 가질 수 없다고 생각하는 것은 매우 일반적인 오해이다 .
Dean Harding

10
@Steve 당신은 500 명의 담당자부터 시간 여행을한다, 당신은 통지를 놓쳤다
Pekka는 GoFundMonica를 지원한다

나는 몇 년 전에 C ++ 인터뷰 (고성능 시스템의 경우)에서 함수 객체를 사용하는 것이 인라인 때문에 함수 포인터를 사용하는 것보다 더 나은 성능을 가질 수 있다고 설명하고 그에게 설명했습니다. 나는 또한 "Effective C ++"라는 책을 인용했다. 그는 실제로 책을 확인하기 위해 일어 났고 이것을 몰랐고 감동했습니다. 답을 설명하는 것이 좋습니다.
softveda

10

구현 된 순수한 가상 함수를 선언하는 방법을 설명 할 수 있습니다.

사실, 나는 그 일을하는 방법에 익숙하지 않기 때문에 당신이 여기 있기를 바랍니다.


5
순수 가상 함수를 선언 한 다음 구현을 제공하면됩니다. 이를 수행하는 것은 매우 드문 일이지만 "Effective C ++, 3rd Edition"에서 Scott Meyers는 유용한 몇 가지 시나리오를 설명합니다. 특히, 함수는 순수 가상이기 때문에 선언 된 클래스는 추상이지만 구현이 있기 때문에 서브 클래스에 기본 구현을 제공하여 원하는 경우 명시 적으로 사용하도록 선택할 수 있습니다.

1
글쎄, 그것이 어떻게 끝났는지는 설명하지 못한다. 관심이 있으신 분은 en.wikipedia.org/wiki/…를 확인하십시오 . 어쨌든, 나는 여전히 최선의 대응이 될 방법을 설명하는 것으로 생각합니다.

1
+1-두 번째 줄입니다. 더 나쁜 것은 내가 예외적으로 "때때로 잘못한"기분이 아니라면 면접관과 면담했을 것이다. 문제는 당신이 단지 당신의 믿음을 어느 정도 추측 할 수 있다는 것입니다.
Steve314

1
@ Steve314 : Heh, 나는 나이가 들수록 내가 틀리기 쉽다는 것을 알게된다. 나보다 더 많은 것을 알고있는 사람이 항상 있습니다. :-)

@Jonathon-그렇습니다. 그러나 모든 다양한 의견에 대해 얼마나 자신감이 있는지 100 % 정확하게 표시하지 않으면 어떤 질문을해야하는지 어떻게 알 수 있습니까? 그리고 잘못되기 위해 열린다는 것은 항상 다른 사람들이 옳고 내가 틀렸다고 생각해야한다는 것을 의미합니까? 우리는 때때로 자신이 있지만 잘못을 확신 할 수 있지만, 결코 자신의 확신을 표명해서는 안됩니까? 강력한 증거를 볼 때까지 내 신뢰 수준이 총을 고수하는지 여부에 대한 내 가이드가되지 않으면 어떻게해야합니까?
Steve314

6

후보를 인터뷰 할 때 여러 번, 그 사람이 불확실성을 처리하거나 대립을 다루는 방법을 찾고 있습니다. 다음에 인터뷰 할 때는 이에 민감하게 반응하고 건설적으로 질문에 대답하거나 자신의 입장을 설명하십시오. 정답보다 더 중요 할 수 있습니다.


이것은 좋은 대답입니다.
Neil G

+1 : 이것이 제가 인터뷰하는 방법입니다. 나는 우리가 옳고 그 르지 않은 것보다 더 상호 작용하고 생각을 교환하는 방법에 더 관심이 있습니다. 당신의 입장을 정교하게하고 /하거나 그 이유를 설명하고 당신은 유능 할뿐만 아니라 당신도 "팀 선수"임을 증명합니다.
mummey

또 다른 +1 : 나는 논쟁을 잘 할 수있는 사람들을 고용하는 것이 중요하다고 생각합니다 . 신입 사원이 자신의 아이디어를 견딜 수 없다면 다른 강한 의지가있는 사람들과 팀을 이루지 못할 것입니다!
Zan Lynx

5

나는 내 면접관보다 더 많은 것을 알고있는 면접에있었습니다. 그러나 그들은 누군가가 역할을 수행하기를 원했고 그 수준에서 면담 할 수있는 사람은 아무도 없었습니다.

귀하의 경우, 그것이 맹목적인 무지 또는 진정한 오해라고 생각하십니까? 아마도 예제와 참조가 담긴 후속 이메일 : 결정하기 전에 어떻게 반응하는지보십시오.

귀하의 질문에 따라 "맹인 무지"에 대한 경향이 있으며 명확하게 유지됩니다 ...


면접관은이 질문 만하고 나에게 보냈다. 이메일 ID가 없어 연락 할 수 없습니다.
bjskishore123

@ bjskishore123 : 대행사를 통해? 그러나, 만약 그렇다면… 멀리있을 것입니다
gbn

예, 상담을 통해.
bjskishore123

+1 일반적인 경험입니다. 나는 한 번만 내 기술을 제대로 점검 할 수있는 사람과 인터뷰를 가졌습니다.
Orbling

3

이와 같은 상황에서는 본문이있는 가상 함수가있는 간단한 클래스를 작성하고 컴파일되는지 확인하는 것이 좋습니다. 적어도 나는 주제를 구글에 제안 할 것이다.

면접관이 도전을 받아들이고 패배를 인정하고 그 후에 그가 당신을 교살하려고하는 것처럼 보이지 않는다면, 당신은 좋은 모습을 보여야합니다. 그렇지 않으면, 아마도 당신 이 일하고 싶은 사람이 아닐 것 입니다.


3

인터뷰하는 사람이 자신의 질문에 대한 답을 모르기 때문에 회사를 포기해야한다는 생각에 전적으로 동의하지 않습니다. 일을 할 때에도 잘못 될 때도 고집이있는 사람들을 만나게됩니다. 사람들을 정답으로 조종하는 것은 좋은 기술입니다.

필자의 경우 면접관은 많은 기계에서 많은 수의 분산을 계산하는 방법을 물었습니다. 나는 분산이 제곱의 평균에서 평균의 제곱을 뺀 것이라고 말하면서 시작했습니다. 그는 "아니요 E[(x - mu)²]."

"그렇습니다. 네 말이 맞아요.하지만 당신의 공식은 내 것과 같습니다. 함께 파생시켜 봅시다." 그리고 우리는 그것을 함께 파생 시켰습니다.

면접관이 엄청나다는 것을 알고있는 상황에서는 접근 방식을 바꿔야합니다. 그에게 거의 알려지지 않은 기능이라고 말하십시오 (이것은 당신이 알지 못하는 것처럼 들리게하는 것입니다). 그가 원한다면 인터뷰 후 예제 프로그램이나 C ++ 책에 대한 참조를 보내 게됩니다 (이것은 인터뷰가 순조롭게 진행될 수 있도록)

그의 관점에서 사물을 상상해보십시오. 당신은 언젠가 사람들을 인터뷰 할 것이고 때로는 틀릴 수도 있습니다. 빛나는 질문에 어떻게 이런 질문에 대답 하시겠습니까?


아마도 의미는 있지만 평균은 E [(x-mu) ²]입니다. 따라서 E [x²-2xmu + mu²] = E [x²]-E [2xmu-2mu²]-E [mu²] E [(x-mu)]는 항상 0이고 E [mu²] = mu² 인 것으로 평가할 수 있습니다. mu는 이렇게 입증 된 상수입니다.
CashCow

2

인터뷰를 책상에서 컴파일러가있는 컴퓨터로 옮겨야한다고 생각합니다. 문제가 해결되었을 것입니다.


1

편집 : 분명히 나는 ​​완전히 틀렸다.이 답변 아래의 의견을 참조하십시오. 교육 목적으로 여기에 답을 남겨 두십시오.

슬프게도, 당신은 착각합니다. 가상 함수 정의를 가질 수있다; 순수 가상 함수를하지 않을 수 있습니다. 정의의 부족은 그것을 순수하게 만듭니다.


8
아니야, 미안. 그가 맞아.
GManNickG

1
BZZT !!! 잘못된! = 0은 순수하게 만드는 것입니다. 이러한 기능에는 정의가있을 수 있습니다.
Edward Strange

4
허, 나를 놀라게 해주세요. 나는 이것을 전혀 몰랐다.
Philip Potter

3
위키피디아 는 "순수 가상 메소드는 일반적으로이를 선언하는 클래스에 구현이 없지만 C ++의 순수 가상 메소드는 선언 클래스에 구현을 포함하여 파생 클래스가 적절한 경우 위임 할 수있는 대체 또는 기본 동작을 제공 할 수있다"고 설명합니다. " 따라서 순수한 가상 함수가 구현을 정의하는 것은 이례적이지 않거나 비정형 적이지만 가능합니다.
코디 그레이

1

당신은 당신이 대답 한 것이 옳다는 것을 알고 있습니다. 제 생각에는 당신이 옳았 기 때문에 당신의 대답을 고수함으로써 좋은 일을했습니다. 오늘이 아니라면 다른 면접관이 순수한 가상 기능에 대해 배울 것이기 때문에 거짓말을 할 필요가 없습니다! 당신은 쉽게 쫓겨 난 사람입니까? 당신이 옳은 것을 알고 있기 때문에 희망을 잃을 필요가 없습니다

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