Ayer tuve una experiencia terrible en una entrevista.
El entrevistador me preguntó acerca de la función virtual pura. Dije: Puede o no tener definición en la clase base, pero las clases derivadas deben proporcionar definición a menos que también quieran ser una clase abstracta.
Pero el entrevistador siguió preguntando que "¿¡¿Puede virtual puro tener definición !!! ???" ... Dije que sí.
Nuevamente dijo "¿Puro?"
Dije si. Está permitido, las clases derivadas pueden llamar explícitamente a esa función si quieren ese comportamiento en particular.
El me envió afuera. Estoy seguro de que no sabe el hecho de que la función virtual pura puede tener definición.
¿Cómo lidiar con este tipo de entrevistadores?
Después de preguntar la segunda vez, ¿debo mentir que no puede tener definición? :)
¿O debería apegarme a mis palabras y perder la oportunidad de trabajo?
arr[++i] = i
. Y cuando dije que esto invoca un comportamiento indefinido y le conté sobre los puntos de secuencia , se quedó sin palabras por un momento, y luego su expresión facial y sus preguntas adicionales me hicieron creer que nunca antes había escuchado estos términos.Respuestas:
No. Y deberías agradecer a tus estrellas de la suerte que te extrañó esa bala en particular. Trabajar para personas que se niegan a admitir que podrían no saberlo todo, y se niegan a aprender de los demás, es una experiencia MUY desagradable.
fuente
Ejemplo de una función virtual pura con una definición:
fuente
El problema en cuestión no es la corrección técnica, sino las habilidades sociales / de comunicación. Mantente firme, pero reconoce el punto de vista del entrevistador y permítele salvar la cara.
Una vez que pueda ver lo que estaba pescando (¿"puro?" Es una buena pista), una buena respuesta puede ser:
fuente
Podría haber explicado cómo declarar una función virtual pura que tiene una implementación.
De hecho, desearía que lo hicieras aquí porque tampoco estoy familiarizado con cómo hacerlo.
fuente
Muchas veces, cuando entrevisto a un candidato, estoy buscando ver cómo la persona maneja la incertidumbre o enfrenta la confrontación. La próxima vez que esté entrevistando, sea sensible a esto e intente responder constructivamente a la pregunta o explicar su posición. Eso puede ser más importante que la respuesta correcta.
fuente
He estado en entrevistas donde sabía más que mi entrevistador. Sin embargo, querían que alguien desempeñara un papel y no tenían a nadie (por supuesto) que pudiera entrevistar a ese nivel.
En su caso, ¿siente que fue ignorancia ciega o malentendido genuino? Quizás un correo electrónico de seguimiento con ejemplos y referencias: vea cómo reaccionan antes de decidir.
Me inclino por la "ignorancia ciega" aunque en función de su pregunta y me mantendría bien claro ...
fuente
En una situación como esta, propondría escribir una clase simple con una función virtual con un cuerpo y ver si se compila. Por lo menos, propondría googlear el tema.
Si el entrevistador acepta el desafío, admite la derrota y no parece que esté a punto de estrangularte después de eso, entonces debes estar en buena forma. De lo contrario, esta probablemente no sea la persona con la que desea trabajar.
fuente
Estoy totalmente en desacuerdo con la idea de que debas renunciar a una empresa porque el tipo que te está entrevistando no sabe la respuesta a su pregunta. Incluso cuando trabajas, vas a conocer personas obstinadas incluso cuando están equivocadas. Es una buena habilidad maniobrar a las personas hacia la respuesta correcta.
En mi caso, el entrevistador preguntó cómo calcular la varianza de muchos números en muchas máquinas. Comencé diciendo que la varianza es la media de los cuadrados menos el cuadrado de las medias. Él intervino, "no, es
E[(x - mu)²]
".Le dije: "Sí, tienes razón. Pero tu fórmula es la misma que la mía. Vamos a deducirlo juntos". Y luego lo derivamos juntos.
En su situación cuando reconoce que el entrevistador es incrédulo, necesita cambiar su enfoque. Dígale que es una característica poco conocida (esto es para que parezca menos sabelotodo) y, si lo desea, le enviará un programa de ejemplo o una referencia a un libro de C ++ después de la entrevista (esto es para que la entrevista pueda avanzar con gracia).
Intenta imaginar las cosas desde su perspectiva. Va a entrevistar a personas algún día y a veces se equivocará. ¿Cómo le gustaría que un candidato brillante respondiera a esa pregunta?
fuente
Creo que deberías haber trasladado la entrevista del escritorio a una computadora con un compilador. Eso habría resuelto el problema.
fuente
EDITAR: aparentemente estoy totalmente equivocado, vea los comentarios debajo de esta respuesta. Dejando la respuesta aquí con fines educativos.
Lamentablemente, estás equivocado. Una función virtual puede tener una definición; una función virtual pura puede no serlo. La falta de definición es lo que lo hace puro.
fuente
Sabes que lo que respondiste es correcto. En mi opinión, hizo un buen trabajo al atenerse a su respuesta ya que tenía razón. ¡¡¡No hay necesidad de mentir porque si no hoy, algún otro entrevistador aprenderá sobre las funciones virtuales puras !!!! .. Él también podría estar probándote para comprobar qué tan firme eres en tus decisiones. ¿Eres la persona que se deja llevar fácilmente? No hay necesidad de perder la esperanza, ya que sabes lo correcto
fuente