Si vous pouviez poser une question à un programmeur C ++ pour mesurer ses compétences en C ++, quelle serait-elle?
Je pense que la meilleure question est la suivante: pouvez-vous appeler "supprimer ceci"; à l'intérieur d'une fonction membre? (J'ai mis cela sous forme de lien afin que vous puissiez y réfléchir en premier, puis allez à la meilleure question d'entrevue C ++ - jamais! Pour voir la bonne réponse.)
Je ne pose pas cette question parce que je m'attends à ce que la plupart des gens connaissent la réponse. S'ils le faisaient, ce ne serait pas une question aussi utile. Je demande s'ils peuvent trouver leur chemin vers la bonne réponse et comment ils le font.
La meilleure question d'entrevue C ++ serait un problème de programmation, pas une question de quiz.
la source
CString
-tchar*
-ilstd::string
,,, etc .; renvoient-ils une nouvelle chaîne ou inversent-ils en place; font-ils une boucle manuelle sur les caractères ou appellent-ils une fonction de bibliothèque? Et bien sûr, s'ils ne peuvent pas faire quelque chose de simple comme inverser une chaîne, cela vous en dit beaucoup aussi! Il y a aussi beaucoup de questions de suivi, comme ça marche avec Unicode, ça marche avec UTF-8, etc.Je leur demanderais ce qu'ils aiment à propos de C ++ 0x. À partir de cela, je pouvais les «scinder» en divers stéréotypes:
Il y a de fortes chances que certains de ces seaux soient parfaits pour vous et que certains soient "merci d'être venus". En tant que question qui vous permet d'obtenir rapidement beaucoup d'informations, c'est mon gagnant.
la source
Je suis quelque peu perplexe quant à la raison pour laquelle "pouvez-vous supprimer cela?" est considérée comme une question intéressante. Quiconque a écrit du code COM en C ++ sait que la toute première chose que vous apprenez le premier jour de la programmation COM de base est de savoir comment utiliser "supprimer ceci" correctement. Je suppose qu'il pourrait être utile de déterminer si, par exemple, quelqu'un ment sur son curriculum vitae au sujet d'avoir écrit des programmes COM, mais en tant que question générale C ++, si quelqu'un ne peut pas y répondre immédiatement, alors il ne va pas être un bon choix pour mon équipe.
Quoi qu'il en soit, si votre objectif est de poser une question qui mesure les compétences C ++, alors choisir une question n'est pas la bonne solution. Retourne le. La bonne question à poser est:
Ce n'est pas la question qui vous donne la réponse que vous souhaitez. Tout le monde dit "huit" malgré tout. La question qui vous donne la réponse que vous souhaitez est:
Et boum , maintenant vous les avez. Si le candidat pense que "quelque chose à voir avec la récursivité" ou "quand utiliser un destructeur virtuel" est le genre de chose avec laquelle un sept a du mal, alors vous savez qu'il en sait un peu plus sur la récursivité ou les destructeurs ou quoi que ce soit , et que leurs connaissances ne vont pas beaucoup plus loin que cela.
Cela devrait vous donner un bien meilleur étalonnage que de poser une question triviale. Si vous deviez me forcer à poser une bonne question unique sur un fait concernant le C ++, je demanderais probablement quelque chose comme "comment concevriez-vous l'analyseur sémantique et le générateur de code pour la partie d'un compilateur C ++ qui traite des méthodes virtuelles appelé dans un destructeur de classe de base? " Vous devriez poser des questions qui ont à voir avec des choses réelles sur lesquelles vous travaillez et sur lesquelles le candidat est susceptible de travailler. C'est un problème sur lequel j'ai dû travailler une fois, et je pense que cela donnerait un assez bon aperçu de la façon dont une personne conçoit des analyseurs sémantiques et des générateurs de code, ainsi que sa connaissance du C ++.
la source
Juste pour le plaisir, j'ai eu des programmeurs C ++ titubant avec ce petit bébé:
Pourquoi cela se déroule-t-il dans une boucle infinie (et oui, il est tapé correctement)?
C'est étonnant de voir combien de personnes ont trébuché. Bien sûr, je ne peux plus l'utiliser après son apparition sur Stack Overflow . Marmonner ... marmonner ...
(Pour obtenir la bonne réponse, lisez les aveux et lisez certainement les commentaires)
Question bonus ajoutée
Il y a le FizzBuzz classique de tous les temps (comme présenté dans le désormais célèbre article Coding Horror ). Je ne l'ai jamais utilisé dans une interview moi-même, mais après l'avoir jeté autour de l'équipe de développement un déjeuner, les résultats étaient ... euh ... étonnamment précis.
Confession
J'ai été rattrapé par la réponse standard "x ++ renvoie la valeur d'origine". Cependant, la bonne réponse est que le comportement n'est pas défini en raison de points de séquence. Personne n'a jamais mentionné de points de séquence dans toutes les fois où j'ai utilisé ceci jusqu'à ce que je le poste ici.
J'ai été éduqué et je tiens à remercier sincèrement tous ceux qui ont pris le temps de commenter.
la source
La première chose à poser est une simple question sur les pointeurs. J'ai été étonné de voir combien de personnes qui prétendent connaître le C ++ ou, pire encore, le C, sont incapables d'y répondre. Ensuite, je poserais une question simple sur les fonctions virtuelles. Cette combinaison vous indique très rapidement si la personne connaît ou non le C ++.
la source
Cela dépend beaucoup du type de C ++ écrit dans votre entreprise. (Quand j'ai dû embaucher des programmeurs C ++, je n'ai jamais posé de questions
delete
, car je leur ai demandé des techniques pour éviter d'avoir à écriredelete
complètement.)Idéalement, vous souhaitez embaucher des personnes qui écrivent du code au-dessus du niveau de ce que votre équipe écrit actuellement, mais pas trop haut au-dessus, sauf si vous souhaitez combiner cela avec la formation de l'équipe pour l'amener à un niveau supérieur.
la source
la source
Je crois que je leur demanderais ce qu’ils savent d’autre, ou plus probablement je leur poserais une question dans quelque chose de très différent.
Beaucoup trop de codeurs C ++ qui ont peu d'expérience des autres langages. Une expérience étroite est généralement restrictive.
la source
La meilleure question pour un grand développeur C ++ est "Dites-moi les raisons pour lesquelles nous ne devrions PAS utiliser C ++?"
la source
Je ne pense pas qu'il y ait une meilleure question C ++. C ++ est un langage tellement volumineux, et avec C ++ 0X il a grandi, que vous pouvez être fort dans un certain sous-domaine du langage et pas peu sur une autre partie du langage. Une question ponctuelle n'exercera que la connaissance de quelqu'un d'une petite partie de la langue et risque de négliger sa connaissance d'autres aspects de la langue.
la source
Il y a un tas sur StackOverflow. J'en partagerai quelques-uns:
/programming/2428404/tricky-interview-question-for-c
/programming/50447/favorite-c-interview-question
/programming/4269838/interview-question
/programming/2532102/can-a-pointer-ever-point-to-itself
/programming/3055141/interview-question-about-virtual-functions-in-c
la source
Ma question préférée à poser est simple:
a) Avez-vous commencé avec C, puis basculé vers C ++?
b) Si oui, quelles ont été les premières choses que vous avez apprises à faire différemment?
Cette réponse me donne généralement une idée de la façon dont le programmeur aborde le C ++ et sa compréhension de la POO et du C ++ en général.
il n'y a pas de bonne ou de mauvaise réponse ici, mais c'est généralement un excellent moyen de savoir d'où vient le candidat.
la source
Je présenterais en fait à la personne un peu de code d'un autre langage de programmation qui était orienté objet et de préférence pas sur la liste des langages qu'elle connaît. Le code doit représenter une tâche simple effectuée dans cette langue.
Le but de cela ne serait pas de déterminer leur connaissance du C ++ mais de savoir dans quelle mesure ils comprennent la programmation. Lorsque vous comprenez les concepts de base de la programmation, vous pouvez résoudre des problèmes.
la source
Comment implémentez-vous les fonctions virtuelles en C ++, expliquez un scénario réel.
la source
Pour le moment, je dirais: "Comment feriez-vous pour implémenter un constructeur de déplacement pour un conteneur?"
Ma justification est que, parce que les constructeurs de mouvements sont une caractéristique de la norme suivante et non de la norme actuelle, la réponse du candidat indiquera si le développeur en question poursuit activement ses connaissances de son langage ou s'il s'en tient simplement aux astuces qu'il connaît.
la source
Je pense que je demande leur opinion de la conception, disons,
std::string
. Je voudrais aussi leur demander s'ils ont utilisé d' autres modèles (par exemple, MFC / ATLCString
,wxString
etc.) et en supposant qu'ils ont, demandez - leur de comparer et contraster les dessins.Les chaînes sont assez largement utilisées pour que presque toute personne ayant une réelle expérience de C ++ ait utilisé au moins un ou deux des éléments ci-dessus. Presque toutes les conceptions incarnent certains compromis entre la pureté théorique et l'utilisation pratique. Certains peuvent très bien fonctionner, mais seulement s'ils sont utilisés exactement comme prévu, tandis que d'autres échangent une plus grande polyvalence pour une maladresse possible. En bref, presque tous ceux qui ont une expérience réelle devraient être en mesure d'exprimer des opinions significatives sur leurs conceptions et ces opinions devraient vous en dire assez sur la façon dont ils pensent, comment ils conçoivent le code, la mesure dans laquelle ils apprécient le pragmatisme par rapport à la pureté théorique, etc.
la source