O que posso fazer quando o entrevistador não souber a resposta para sua própria pergunta? [fechadas]

48

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?

bjskishore123
fonte
51
Você deve contatá-los com um exemplo de uma função virtual pura com uma definição, para que eles saibam.
GManNickG
22
A sugestão de GMan é uma excelente ideia. Você provavelmente impressionará o entrevistador que se importou o suficiente com o trabalho para acompanhar se ele acredita em você ou não. E se você ensinar a ele algo da maneira mais não conflituosa possível, isso deve encorajá-lo a pensar melhor em você como desenvolvedor. Ainda é uma decisão difícil, se você quer trabalhar lá ou não, no entanto.
Cody Grey
47
Mas você realmente quer trabalhar para essas pessoas?
29
Um dos meus entrevistadores me fez uma pergunta que envolvia essa expressão 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!
Nawaz
10
Considere que os entrevistadores geralmente não são selecionados por sua habilidade técnica, mas por sua capacidade de avaliar os talentos de comunicação do entrevistado. A habilidade técnica é facilmente mensurada, a capacidade de ser produtivo e se encaixar em uma equipe não é. Parece-me que você teve muitas oportunidades para adaptar sua visão e explicar sua insistência em não fazer isso, mas também não conseguiu. Isso não correu bem.
Hans Passant

Respostas:

82

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.

Edward Strange
fonte
7
Mais precisamente, o processo de entrevista de emprego funciona nos dois sentidos. Enquanto a empresa está me julgando como funcionário, eu estou julgando-os como empregador. Muitos são encontrados querendo.
APENAS MINHA OPINIÃO correta
De fato. Durante minha entrevista por telefone para uma posição há alguns dias, o entrevistador pediu um exemplo de algo que demonstrasse o conhecimento de alguém familiarizado com o idioma que está usando. Uma pergunta sobre isso foi adicionada no último minuto à entrevista pessoal. Conheço esses caras e sei que eles são ótimos desenvolvedores, então acho que quero trabalhar com eles. :)
greyfade
49

Exemplo de uma função virtual pura com uma definição:

// 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
}
GManNickG
fonte
6
Este não é apenas um exemplo de uma função virtual pura com uma definição, mas um exemplo de como ela pode realmente ser útil. +1.
Jrandom_hacker
3
Não sabia que você poderia fazer isso. Legal! = D
gablin
2
Esta é uma maneira de criar um objeto polimórfico básico. Em seguida, você pode usá-lo para transmitir dinamicamente a hierarquia. Útil em algumas circunstâncias, por exemplo, plugins, para verificar se o plug-in é do tipo esperado (com a suposição de que ele definitivamente derivará da sua classe base). A propósito, um destruidor virtual puro DEVE receber uma definição.
precisa saber é o seguinte
Agora, se ainda pudesse ser trivial também, isso seria bom.
Deduplicator
42

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:

É comum pensar que funções virtuais puras não podem ter uma definição. No entanto, tecnicamente falando, um para a função virtual ser pura, ela deve ter =0na declaração. Ainda pode ter uma definição (experimente, compilará!). Obviamente, isso raramente é usado e, na prática, quando a maioria das pessoas diz "virtual puro", isso implica que a definição está ausente.

dbkk
fonte
3
Você basicamente copiou meu comentário 25 minutos. antes de eu escrever! Quão? - +1 e comentário com tema semelhante excluído.
Steve314
3
Esse é outro bom ponto. Certa vez, argumentei minha nota em um teste porque mostrei ao meu professor que o código que escrevi no teste seria compilado. O compilador não mente ... nunca ...
jmort253
3
Este foi exatamente o meu pensamento. Apenas dizendo "sim, pode", sem esclarecimentos, parece claro para mim que o entrevistador pensou que não entendeu a pergunta. Ao expandir a resposta, você deixa claro que: a) você entende a pergunta eb) realmente conhece a resposta. Eu também não acho que o entrevistador esteja errado ao tentar argumentar, também é claramente um mal-entendido bastante comum que as pessoas pensam que funções virtuais puras não podem ter uma definição.
Dean Harding
10
@Steve você recebe viagens no tempo a partir de 500 representantes, deve ter perdido a notificação
Pekka suporta GoFundMonica
Fiz os mesmos anos em uma entrevista em C ++ (para um sistema de alto desempenho) em que expliquei que o uso de um objeto de função pode ter um desempenho melhor do que o uso de um ponteiro de função por causa de inline e expliquei isso a ele. Também citei o livro "Effective C ++". Ele realmente se levantou para checar o livro e disse que não sabia disso e ficou impressionado. É bom explicar sua resposta.
softveda
10

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.

Jonathan Wood
fonte
5
Você apenas declara a função virtual pura e fornece uma implementação. É uma prática bastante incomum fazer isso, mas em "C ++ eficaz, 3ª edição", Scott Meyers descreve alguns cenários em que é útil. Em particular, como a função é virtual pura, a classe na qual é declarada é abstrata, mas, como possui uma implementação, fornece às subclasses uma implementação padrão que eles podem escolher explicitamente usar, se quiserem.
11
Bem, isso não explica como é feito. Se alguém estiver interessado, acesse en.wikipedia.org/wiki/… . De qualquer forma, ainda acho que explicar como fazê-lo teria sido a melhor resposta.
11
+1 - e eu apóio sua segunda linha. Pior, a menos que eu estivesse com um humor excepcionalmente "mas às vezes errado", eu teria ficado do lado do entrevistador. O problema é que você pode apenas adivinhar suas crenças até certo ponto, ou então acaba efetivamente sem saber nada.
Steve314
11
@ Steve314: Heh, acho que quanto mais velho fico, mais aberto a estar errado. Sempre há alguém que sabe mais do que eu. :-)
@ Jonathon - sim, mas sem uma indicação 100% precisa de como devo estar confiante em relação a todas as minhas opiniões, como sei quais questionar? E estar aberto a estar errado, isso significa que eu sempre deveria assumir que outras pessoas estão certas e eu estou errado? Ocasionalmente, todos podemos estar confiantes e errados, mas isso significa que nunca devemos afirmar nossa confiança? E se meu nível de confiança não deveria ser meu guia para saber se eu continuo com minhas armas até ver fortes evidências, o que deveria?
Steve314
6

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
Esta é uma ótima resposta.
Neil G
+1: é assim que eu entrevisto. Eu me preocupo mais com a maneira como interagimos e trocamos pensamentos mais do que o que é certo e o que não é. Elabore sua posição e / ou explique o raciocínio por trás dela e demonstre que não apenas você é competente, mas também é um "participante da equipe".
Mummey
Outro ponto +1: acho importante contratar pessoas que possam argumentar bem . Se um novo contratado não puder defender suas idéias, ele não ficará longe de uma equipe com outras pessoas de força de vontade!
Zan Lynx
5

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 ...

gbn
fonte
O entrevistador fez apenas esta pergunta e me enviou. Não consigo entrar em contato com eles, pois não tenho identificação de email.
bjskishore123
@ bjskishore123: via agência? No entanto, eu ficaria longe se fosse isso ...
gbn
sim, via consultoria.
bjskishore123
+1 É uma experiência comum. Só tive uma entrevista com alguém que sabia o suficiente para verificar minhas habilidades corretamente.
Orbling
3

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.

Dima
fonte
3

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?

Neil G
fonte
A média é E [(x - mu) ²], embora você provavelmente quis dizer isso. Então você pode avaliar que para E [x² - 2xmu + mu²] = E [x²] - E [2xmu - 2mu²] - E [mu²] E [(x-mu)] é sempre 0 e E [mu²] = mu² como mu é uma constante assim comprovada.
precisa saber é o seguinte
2

Eu acho que você deveria ter transferido a entrevista da mesa para um computador com um compilador. Isso teria resolvido o problema.

Stefano Borini
fonte
1

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.

Philip Potter
fonte
8
Não desculpe. Ele tem razão.
GManNickG
11
BZZT !!! Errado! O = 0 é o que o torna puro. Tais funções podem ter definições.
Edward Strange
4
huh, me surpreenda. Eu nunca soube disso.
Philip Potter
3
A Wikipedia explica que "Embora os métodos virtuais puros normalmente não tenham implementação na classe que os declara, é permitido que os métodos virtuais puros em C ++ contenham uma implementação em sua classe declarante, fornecendo fallback ou comportamento padrão que uma classe derivada pode delegar, se apropriado. " Portanto, mesmo que seja incomum ou atípico para uma função virtual pura definir sua implementação, é possível.
Cody Grey
1

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