Une entreprise avec laquelle je travaille m'a demandé de faire des filtrages de candidats pour m'assurer qu'ils ne sont pas complètement gênés lors de l'envoi de quelqu'un à un client potentiel.
Il s'avère qu'un bon nombre de personnes étaient placées pour un rôle de développeur C ++. Je ne passe pas beaucoup de temps en C ++, mais j'ai fait quelques projets triviaux et non triviaux dans le langage. J'ai pensé que "Expliquer l'idiome RAII" serait une belle question de softball à laquelle les développeurs C ++ les plus sérieux pourraient répondre pendant qu'ils étaient à moitié endormis, et me permettrait de passer à des questions plus intéressantes sur l'expérience. Mais il s'avère que les personnes qui ont plus de 10 ans d'expérience en C ++ ne reconnaissent pas le terme, même si j'élargis l'acronyme à «L'acquisition de ressources est l'initialisation». Un candidat est même allé jusqu'à dire qu'il estimait qu'il n'était pas toujours pratique d'appliquer la technique au développement de Windows, ce que je pensais être un sentiment étrange, mais je pouvais voir quelques exemples qui soutiennent sans doute cette ligne de pensée.).
Même quelques développeurs C ++ que je connais assez bien pour juger de leur compétence ont dit qu'ils ne reconnaissaient pas le terme, mais à la lecture d'un résumé de la technique, ils ont dit "Oh, oui, je ne savais pas que j'avais un nom. pensé à ces choses comme quelque chose que vous avez juste à faire . " Je me souviens du terme de la deuxième édition du livre de Stroustrup, même si le plein impact n'a pas pénétré à l'époque.
Alors, est "Pouvez-vous m'expliquer l'idiome RAII?" une bonne question de sélection? Est-il raisonnable de s'attendre à ce que tous les développeurs C ++ compétents le comprennent? Le terme est-il plus ésotérique que je ne le pense? En supposant qu'un candidat ne connaît pas le terme, y a-t-il des questions de suivi qui pourraient m'aider à déterminer s'il a au moins internalisé les pratiques qui font fonctionner le RAII? Existe-t-il de meilleures questions «sarcleuses» alternatives qui donnent au candidat une certaine latitude pour répondre et l'aident à démontrer sa compréhension du développement C ++?
Modification à ajouter : Pour clarifier, je ne suis pas le genre d'intervieweur qui disqualifie les gens parce qu'ils ne connaissent pas les mots à la mode et les acronymes. Cependant, je pense qu'il est raisonnable de s'attendre à ce qu'un programmeur C ++ expérimenté ait internalisé les bonnes pratiques de gestion des ressources. Je pense également qu'il est important de vérifier qu'un candidat comprend certaines "bases" de la technologie dans laquelle il revendique son expertise avant de passer à des questions plus intéressantes sur la conception, la résolution de problèmes, etc. Je pense que ce que je recherche est un bon moyen pour poser une question ouverte, utilisable dans une courte projection téléphonique, que je peux utiliser pour juger la compréhension de base d'un candidat des bonnes pratiques de gestion des ressources en C ++, avant de poser des questions "dures".
Réponses:
Vous semblez avoir constaté que les développeurs C ++ que vous connaissez par expérience sont compétents ne connaissent pas cet acronyme ou même l'expression complète. Cela seul semble indiquer que la question ne convient pas comme question de sélection lors d'un appel téléphonique.
D'un autre côté, vous pourriez arriver au même point par un moyen plus détourné en posant un scénario. Quelque chose comme: "Vous implémentez une classe Log qui va écrire des informations de journalisation dans un fichier. De toute évidence, vous aurez besoin d'avoir une variable membre qui est un descripteur de fichier (std :: FILE *). Où allouez-vous et libérez-vous ce fichier manipuler?" Si le candidat commence à parler de la création d'une méthode open () et close () plutôt que d'allouer le descripteur de fichier dans le constructeur et de désallouer le descripteur dans le destructeur, vous pouvez poursuivre en demandant des choses comme le comportement de leur classe si le le code appelant a soulevé des exceptions, etc.
la source
Je ne pense pas que ce soit une question pratique telle qu'elle est proposée. Je pense que vous trouverez que beaucoup de développeurs tomberont dans le camp "oh, ouais, je ne savais pas qui avait un nom". Je vous suggère de tester les candidats sur le concept et non sur le nom du concept. Donnez-leur un exemple de code et demandez-lui pourquoi il est incomplet ou demandez-leur de démontrer qu'ils connaissent le concept.
la source
Je pense que c'est une question valable. Bien que je ne sache pas à quel point le terme RAII est populaire (dans mon équipe, nous utilisons tout le temps le terme RAII), mais le concept de gestion des ressources est important, surtout si vous voulez également une sécurité d'exception et une sécurité multi-thread. .
la source
Eh bien, je sais que lorsque je veux savoir si quelqu'un est compétent, la première chose que je fais est de vérifier sa connaissance des acronymes. Une fois que c'est établi, je m'assure qu'ils connaissent les noms d'autres technologies que je trouve cool. S'ils sont toujours là après cela, alors je leur demande une liste de leurs couleurs préférées.
Je ne supporte pas ce genre de chose. Je veux dire, à la fin de mon entretien, ce sont des sirènes et des cloches d'avertissement. Je ne veux pas travailler dans un endroit où il importe vraiment que je connaisse des mnémoniques bizarres que mon patron pense être "fondamentaux". Je ne peux pas être dérangé d'apprendre les noms des gens avec qui je traite depuis des années, alors je ne perds pas de temps en cerveau avec de jolis acronymes qui décrivent les meilleures pratiques.
Regardez mon code. Demandez-moi comment je ferais les choses. Je gribouillerai des conneries sur un tableau blanc jusqu'à ce que les vaches rentrent à la maison. Je vais vous coder une application. Ne me donnez pas de questions triviales. Trivia est toujours aléatoire, et ce n'est jamais fondamental.
la source
Si votre but est d'éliminer rapidement le total des incompétents, essayez quelque chose comme ceci:
Test FizzBuzz
Ensuite, vous pouvez laisser les concepts et les pratiques C ++ à ceux qui sont le mieux placés pour évaluer l'expertise C ++.
la source
C'est une question valable, mais pas pour le dépistage. Je l'ai utilisé comme une question écrite, à discuter lors de l'entretien. Vous pouvez obtenir de nombreuses informations sur les schémas de pensée avec un préavis. En tant que question de sélection, ce n'est qu'un piège désagréable.
la source