Que puis-je faire si l'intervieweur ne connaît pas la réponse à sa propre question? [fermé]


48

Hier, j'ai eu une expérience terrible lors d'une interview.

L'intervieweur m'a posé des questions sur la fonction virtuelle pure. J'ai dit, il peut ou peut ne pas avoir de définition dans la classe de base, mais les classes dérivées devraient fournir la définition à moins qu'elles ne souhaitent également être une classe abstraite.

Mais l'intervieweur a continué à demander que "le virtuel pur peut-il avoir la définition !!! ???" ... j'ai dit oui.

Encore une fois il a dit "pur?"

J'ai dit oui. Il est permis aux classes dérivées d'appeler explicitement cette fonction si elles souhaitent ce comportement particulier.

Il m'a envoyé dehors. Je suis sûr qu'il ne sait pas que la fonction virtuelle pure peut avoir une définition.

Comment traiter avec ce genre d'intervieweurs?

Après avoir demandé la deuxième fois, devrais-je mentir qu'il ne peut pas avoir de définition? :)

Ou je devrais m'en tenir à mes mots et perdre l'occasion de l'emploi?


51
Vous devriez les contacter avec un exemple de fonction virtuelle pure avec une définition, afin qu'ils le sachent.
GManNickG

22
La suggestion de GMan est une excellente idée. Vous allez probablement faire comprendre à l'intervieweur que vous étiez suffisamment intéressé par le travail pour qu'il vous suive ou non. Et si vous lui apprenez quelque chose d'une manière aussi non conflictuelle que possible, cela ne devrait que l'encourager à penser plus fortement à vous en tant que développeur. Reste une décision difficile à prendre, que vous souhaitiez y travailler ou non.
Cody Grey le

47
Mais voulez-vous vraiment travailler pour de telles personnes?

29
Un de mes intervieweurs m'avait posé une question qui impliquait cette expression arr[++i] = i. Et quand je l' ai dit invoque -comportement non défini et lui ai parlé de points de séquence , il était sans voix pendant un moment, puis expression de son visage et ses autres questions me fait croire qu'il n'a même jamais entendu ces termes avant!
Nawaz

10
Considérez que les intervieweurs sont souvent choisis non pas pour leurs compétences techniques, mais pour leur capacité à évaluer les talents de communication de la personne interrogée. Les compétences techniques sont faciles à évaluer, la capacité à être productif et à s'intégrer dans une équipe ne l'est pas. Il me semble que vous avez de nombreuses occasions d’adapter votre point de vue et d’expliquer votre volonté de ne pas le faire, mais de ne le faire pas non plus. Cela ne s'est pas bien passé.
Hans Passant le

Réponses:


82

Et vous devriez remercier vos étoiles chanceuses d'avoir perdu cette balle. Travailler pour des personnes qui refusent d’admettre qu’elles ne savent peut-être pas tout et d’apprendre des autres est une expérience TRÈS désagréable.


7
Plus précisément, le processus d'entretien d'embauche fonctionne dans les deux sens. Alors que l'entreprise me juge en tant qu'employé, je le juge en tant qu'employeur. Beaucoup sont trouvés en manque.
JUSTE MON AVIS correct

En effet. Lors de mon entretien téléphonique pour un poste il y a quelques jours, l'intervieweur m'a demandé un exemple montrant quelque chose qui démontrerait la connaissance d'une personne connaissant la langue utilisée. Une question à ce sujet a été ajoutée à la dernière minute à l'interview en personne. Je connais ces gars et je sais qu'ils sont d'excellents développeurs, alors je pense que je veux travailler avec eux. :)
Greyfade

49

Exemple de fonction virtuelle pure avec une définition:

// 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
Ce n'est pas simplement un exemple de fonction virtuelle pure avec une définition, mais un exemple de son utilité réelle. +1
j_random_hacker

3
Je ne savais pas que tu pouvais faire ça. Cool! = D
gablin

2
C'est un moyen de créer un objet polymorphe de base. Vous pouvez ensuite l'utiliser pour dynamiser_la diffusion dans la hiérarchie. Utile dans certaines circonstances, par exemple des plugins, pour vérifier que le plugin est du type attendu (avec l'hypothèse qu'il dérivera définitivement de votre classe de base). En passant, un destructeur virtuel pur DOIT recevoir une définition.
CashCow

Maintenant, si seulement cela pouvait encore être trivial aussi, ce serait bien.
Déduplicateur

42

L'enjeu n'est pas l'exactitude technique, mais les compétences sociales / de communication. Restez ferme, mais reconnaissez le point de vue de l'intervieweur et permettez-lui de sauver la face.

Une fois que vous pouvez voir pour quoi il pêchait ("pur?" Est un bon indice), une bonne réponse peut être:

On pense généralement que les fonctions virtuelles pures ne peuvent pas avoir de définition. Cependant, techniquement parlant, pour que la fonction virtuelle soit pure, elle doit en avoir =0dans la déclaration. Il peut toujours avoir une définition (essayez-le, il va compiler!). Bien sûr, cela est rarement utilisé et, dans la pratique, lorsque la plupart des gens parlent de "pur virtuel", ils impliquent que la définition est absente.


3
Vous avez essentiellement copié mon commentaire 25 minutes. avant que je l'écrive! Comment? - +1 et commentaire sur le même thème supprimé.
Steve314

3
C'est un autre bon point. Une fois, j’ai contesté ma note à un test parce que j’avais montré à mon professeur que le code que j’avais écrit lors du test serait compilé. Le compilateur ne ment pas ... jamais ...
jmort253

3
C'était exactement ce que je pensais. En disant simplement "oui, c'est possible", sans précision, il me semble évident que l'intervieweur pensait ne pas comprendre la question. En développant la réponse, vous indiquez clairement a) que vous comprenez la question et b) que vous connaissez la réponse. Je ne pense pas que l'intervieweur ait nécessairement eu tort d'essayer d'insister, il est clair qu'il s'agit d'un malentendu assez courant selon lequel les gens pensent que les fonctions virtuelles pures ne peuvent pas avoir de définition.
Dean Harding

10
@Steve vous obtenez un voyage dans le temps à partir de 500 représentants, vous devez avoir raté la notification
Pekka prend en charge GoFundMonica le

J'ai fait la même chose quelques années auparavant lors d'une interview en C ++ (pour un système haute performance) où je lui ai expliqué que l'utilisation d'un objet de fonction peut avoir de meilleures performances que l'utilisation d'un pointeur de fonction à cause de l'inline et expliqué à lui. J'ai également cité le livre "Effective C ++". En fait, il s'est levé pour consulter le livre et a dit qu'il ne le savait pas et qu'il était impressionné. C'est bien d'expliquer ta réponse.
Softveda

10

Vous auriez pu expliquer comment déclarer une fonction virtuelle pure ayant une implémentation.

En fait, j'aimerais que vous veniez ici parce que je ne sais pas comment faire cela non plus.


5
Vous venez de déclarer la fonction virtuelle pure puis de fournir une implémentation. C'est une pratique assez rare de le faire, mais dans "Effective C ++, 3e édition", Scott Meyers décrit quelques scénarios dans lesquels cela est utile. En particulier, comme la fonction est virtuelle, la classe dans laquelle elle est déclarée est abstraite, mais comme elle a une implémentation, elle donne aux sous-classes une implémentation par défaut qu’elles peuvent explicitement choisir d’utiliser si elles le souhaitent.

1
Eh bien, cela n'explique pas COMMENT c'est fait. Si quelqu'un est intéressé, consultez en.wikipedia.org/wiki/… . En tout cas, je pense toujours qu'expliquer comment faire aurait été la meilleure réponse.

1
+1 - et j'appuie votre deuxième ligne. Pire encore, à moins que je ne sois exceptionnellement "mal à l'aise", j'aurais pris le parti de l'intervieweur. Le problème est que vous ne pouvez que deviner vos croyances dans une certaine mesure, sinon vous finissez par ne rien savoir.
Steve314

1
@ Steve314: Hé, je trouve que plus je vieillis, plus je suis prêt à me tromper. Il y a toujours quelqu'un qui en sait plus que moi. :-)

@Jonathon - oui, mais sans une indication précise à 100% de ma confiance à l'égard de toutes mes opinions, comment savoir quelles questions poser? Et être ouvert à se tromper, cela signifie-t-il que je devrais toujours supposer que les autres ont raison et que je me trompe? Nous pouvons tous être parfois confiants, mais nous avons tort, mais cela signifie-t-il que nous ne devrions jamais affirmer notre confiance? Et si mon niveau de confiance ne me permet pas de savoir si je reste fidèle à mon arme jusqu'à ce que je voie des preuves solides, que devrait-il?
Steve314

6

Souvent, lorsque j'interviewe un candidat, je cherche à voir comment cette personne gère l'incertitude ou gère la confrontation. La prochaine fois que vous interviewez, soyez sensible à cela et essayez de répondre de manière constructive à la question ou d'expliquer votre position. Cela peut être plus important que la bonne réponse.


C'est une excellente réponse.
Neil G

+1: C'est comme ça que j'interviewe. Je me soucie plus de la façon dont nous interagissons et échangeons des pensées plus que de ce qui est juste ou non. Elaborez votre position et / ou expliquez le raisonnement derrière cela et vous montrez que non seulement vous êtes compétent, mais vous êtes aussi un "joueur d'équipe".
Mummey

Un autre +1: Je pense qu'il est important d'embaucher des personnes qui peuvent bien se disputer . Si un nouvel employé ne peut pas défendre ses idées, il n'ira pas loin dans une équipe avec d'autres personnes résolues!
Zan Lynx

5

J'ai eu des entretiens où j'en savais plus que mon intervieweur. Cependant, ils voulaient quelqu'un pour remplir un rôle et n'avaient personne (bien sûr) qui pourrait interviewer à ce niveau.

Dans votre cas, estimez-vous qu’il s’agissait d’une ignorance aveugle ou d’un véritable malentendu? Peut-être un email de suivi avec des exemples et des références: voyez comment ils réagissent avant de décider.

J'ai tendance à «l'ignorance aveugle» bien que basé sur votre question et resterais bien clair…


L'intervieweur n'a posé que cette question et m'a envoyé. Je ne peux pas les contacter car je n'ai pas d'identifiant email.
bjskishore123

@ bjskishore123: via agence? Cependant, je resterais loin si c'était ça ...
gbn

oui, via des consultations.
bjskishore123

+1 C'est une expérience commune. Une seule fois, j'ai eu un entretien avec quelqu'un qui en savait assez pour vérifier correctement mes compétences.
Orbling le

3

Dans une situation comme celle-ci, je proposerais d'écrire une classe simple avec une fonction virtuelle avec un corps et de voir si elle compile. À tout le moins, je proposerais de google le sujet.

Si l'interviewer relève le défi, admet sa défaite et ne donne pas l'impression qu'il est sur le point de vous étrangler après cela, alors vous devriez être en forme. Sinon, ce n'est probablement pas la personne avec laquelle vous voulez travailler.


3

Je suis totalement en désaccord avec l'idée selon laquelle vous devriez abandonner une entreprise parce que le type qui vous interroge ne connaît pas la réponse à sa question. Même lorsque vous travaillez, vous allez rencontrer des gens qui sont obstinés même quand ils se trompent. C'est une bonne habileté de diriger les gens vers la bonne réponse.

Dans mon cas, l'intervieweur a demandé comment calculer la variance d'un grand nombre de nombres sur de nombreuses machines. J'ai commencé par dire que la variance est la moyenne des carrés moins le carré des moyennes. Il intervint, "non, c'est E[(x - mu)²]."

J'ai dit: "Oui, tu as raison. Mais ta formule est la même que la mienne. Trouvons-la ensemble." Et puis nous l'avons dérivé ensemble.

Dans votre situation, lorsque vous reconnaissez que l'intervieweur est incrédule, vous devez modifier votre approche. Dites-lui que c'est une fonctionnalité rarement connue (c'est pour que vous sonniez comme si vous ne le savez pas tout) et s'il le souhaite, vous lui enverrez un exemple de programme ou une référence à un livre C ++ après l'interview (c'est pour que l’entretien puisse avancer avec élégance.)

Essayez d'imaginer les choses de son point de vue. Vous allez interroger des gens un jour et parfois vous aurez tort. Comment voudriez-vous qu'un candidat brillant réponde à une telle question?


La moyenne est E [(x - mu) ²] bien que vous vouliez probablement dire cela. Vous pouvez donc évaluer que E [x² - 2xmu + mu²] = E [x²] - E [2xmu - 2mu²] - E [mu²] E [(x-mu)] est toujours égal à 0 et E [mu²] = mu² comme mu est une constante donc prouvée.
CashCow

2

Je pense que vous auriez dû déplacer l'interview du bureau vers un ordinateur avec un compilateur. Cela aurait résolu le problème.


1

EDIT: apparemment je me trompe complètement, voir les commentaires ci-dessous cette réponse. Laissant la réponse ici à des fins éducatives.

Malheureusement, vous vous trompez. Une fonction virtuelle peut avoir une définition. une fonction virtuelle pure ne peut pas. Le manque de définition est ce qui le rend pur.


8
Non désolé. Il a raison.
GManNickG

1
BZZT !!! Faux! Le = 0 est ce qui le rend pur. De telles fonctions peuvent avoir des définitions.
Edward Strange

4
hein, couleur moi surpris. Je n'ai jamais su cela.
Philip Potter

3
Wikipedia explique que "Bien que les méthodes virtuelles pures n'aient généralement pas d'implémentation dans la classe qui les déclare, les méthodes pures virtuelles en C ++ sont autorisées à contenir une implémentation dans leur classe déclarante. " Ainsi, même s’il est inhabituel ou atypique qu’une fonction virtuelle pure définisse sa mise en oeuvre, cela est possible.
Cody Grey

1

Vous savez que tout ce que vous avez répondu est juste. À mon avis, vous avez fait du bon travail en restant fidèle à votre réponse puisque vous aviez raison. Il n'est pas nécessaire de mentir, car si ce n'est pas aujourd'hui, un intervieweur en apprendra plus sur les fonctions virtuelles pures !!!! .. Il pourrait également vous tester pour vérifier votre fermeté dans vos décisions? Êtes-vous la personne qui s'emballe facilement? Il n'y a pas besoin de perdre espoir, car vous savez que votre droit

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.