Ontem tive uma experiência terrível em uma entrevista.
O entrevistador me perguntou sobre a função virtual pura. Eu disse: Pode ou não ter definição na classe base, mas as classes derivadas devem fornecer definição, a menos que também desejem ser classe abstrata.
Mas o entrevistador continuou perguntando que "o virtual puro pode ter definição !!! ???" ... eu disse que sim.
Mais uma vez ele disse "Puro?"
Eu disse sim. É permitido que as classes derivadas possam chamar explicitamente essa função se quiserem esse comportamento específico.
Ele me enviou. Estou certo de que ele não sabe o fato de que a função virtual pura pode ter definição.
Como lidar com esse tipo de entrevistadores?
Depois de perguntar pela segunda vez, devo mentir que ele não pode ter definição? :)
Ou devo seguir minhas palavras e perder a oportunidade de emprego?
arr[++i] = i
. E quando eu disse que isso invoca um comportamento indefinido e contei a ele sobre pontos de sequência , ele ficou sem palavras por um momento, e então sua expressão facial e outras perguntas me fizeram acreditar que ele nunca havia ouvido esses termos antes!Respostas:
Não. E você deveria agradecer às suas estrelas da sorte que você perdeu essa bala em particular. Trabalhar para pessoas que se recusam a admitir que talvez não saibam tudo e se recusam a aprender com os outros é uma experiência MUITO desagradável.
fonte
Exemplo de uma função virtual pura com uma definição:
fonte
O problema em questão não é a correção técnica, mas as habilidades sociais / de comunicação. Permaneça firme, mas reconheça o ponto de vista do entrevistador e permita que ele salve a cara.
Depois de ver o que ele estava pescando ("puro?" É uma boa pista), uma boa resposta pode ser:
fonte
Você poderia ter explicado como declarar uma função virtual pura que possui uma implementação.
Na verdade, eu gostaria que você estivesse aqui, porque também não estou familiarizado com isso.
fonte
Muitas vezes, quando entrevisto um candidato, estou procurando ver como a pessoa lida com a incerteza ou lida com o confronto. Da próxima vez que entrevistar, seja sensível a isso e tente responder construtivamente à pergunta ou explicar sua posição. Isso pode ser mais importante que a resposta correta.
fonte
Estive em entrevistas em que sabia mais do que meu entrevistador. No entanto, eles queriam que alguém preenchesse uma função e não tinham ninguém (é claro) que pudesse entrevistar nesse nível.
No seu caso, você acha que foi ignorância cega ou genuíno mal-entendido? Talvez um email de acompanhamento com exemplos e referências: veja como eles reagem antes de decidir.
Eu tendem a "ignorância cega", embora com base em sua pergunta e fique bem claro ...
fonte
Em uma situação como essa, eu proporia escrever uma classe simples com uma função virtual com um corpo e ver se ela é compilada. No mínimo, eu proporia ao Google o tópico.
Se o entrevistador aceitar o desafio, admitir a derrota e não parecer que está prestes a estrangulá-lo depois disso, você deve estar em boa forma. Caso contrário, essa provavelmente não é a pessoa com quem você deseja trabalhar.
fonte
Discordo totalmente da ideia de que você deveria desistir de uma empresa porque o cara que o entrevistou não sabe a resposta para a pergunta dele. Mesmo quando estiver trabalhando, você encontrará pessoas obstinadas, mesmo quando erradas. É uma boa habilidade manobrar as pessoas para a resposta certa.
No meu caso, o entrevistador perguntou como calcular a variação de muitos números em muitas máquinas. Comecei dizendo que a variação é a média dos quadrados menos o quadrado das médias. Ele interrompeu: "não, é
E[(x - mu)²]
".Eu disse: "Sim, você está certo. Mas sua fórmula é a mesma que a minha. Vamos derivar isso juntos". E então nós derivamos juntos.
Na sua situação, quando você reconhece que o entrevistador é incrédulo, você precisa mudar sua abordagem. Diga a ele que esse é um recurso raramente conhecido (isso faz com que você pareça menos do que tudo sabe) e se ele quiser, você enviará a ele um programa de exemplo ou uma referência a um livro em C ++ após a entrevista (isso é para que a entrevista possa avançar normalmente.)
Tente imaginar as coisas da perspectiva dele. Você vai entrevistar pessoas um dia e às vezes estará errado. Como você gostaria que um candidato brilhante respondesse a essa pergunta?
fonte
Eu acho que você deveria ter transferido a entrevista da mesa para um computador com um compilador. Isso teria resolvido o problema.
fonte
EDIT: aparentemente, estou totalmente errado, veja os comentários abaixo desta resposta. Deixando a resposta aqui para fins educacionais.
Infelizmente, você está enganado. Uma função virtual pode ter uma definição; uma função virtual pura talvez não. A falta de definição é o que a torna pura.
fonte
Você sabe que o que você respondeu está certo. Na minha opinião, você fez um bom trabalho aderindo à sua resposta desde que estava certo. Não há necessidade de mentir porque, se não hoje, algum outro entrevistador aprenderá sobre funções virtuais puras !!!! .. Ele pode estar testando você também para verificar como você está firme em suas decisões? Você é a pessoa que se empolga com facilidade? Não há necessidade de perder a esperança, pois você sabe que está certo
fonte