En ce qui concerne les questions du "test d'interview", le sujet de FizzBuzz est souvent abordé. Il y a aussi un post de Coding Horror à ce sujet.
Maintenant, si vous vous donnez la peine de lire des sites comme celui-ci, vous êtes probablement moins susceptible de faire partie de la démographie des programmeurs qui trouveraient FizzBuzz tout sauf trivial.
Mais est-il vraiment vrai que 99% des programmeurs auront des difficultés avec cela?
Vraiment?
Quelles sont les preuves pour sauvegarder cela?
Quelques exemples concrets seraient très utiles pour répondre à cette question.
Réponses:
99%? Non. Un pourcentage significatif? Oui. De par ma propre expérience d’interviewer des personnes, je peux témoigner de celle-ci. Cela peut sembler insignifiant pour vous, mais beaucoup de personnes dans le domaine de la programmation ont plus ou moins truqué leur chemin depuis des années et postulent à des postes de niveau débutant et échouent à celui-ci.
Même si vous POUVEZ le résoudre facilement, mais vous me donnez une énorme statique sur le fait d'être invité à faire une tâche aussi subalterne comptera pour vous. Faire partie d'une équipe signifie parfois que vous devez faire des choses qui ne vous plaisent pas, mais qui sont nécessaires. Si, dès le départ, nous avons même commencé à travailler ensemble, vous pensez qu'il serait préférable d'essayer d'affirmer votre statut particulier d'être au-dessus de ce que je vous ai demandé de faire, alors cela agira comme une marque contre vous.
Je ne me soucie pas nécessairement de l’élégance de votre solution (même si ce serait bien), mais vous voir poignarder sur un tableau blanc et vous frayer un chemin à travers elle m’indique que vous êtes au moins disposé à le faire. . Si vous vous indignez et dites quelque chose du genre "je suis un résolveur de problèmes, pas un singe codé!" alors vous serez renversé une cheville.
Les personnes interrogées ont tout simplement refusé de commencer à le tenter. Tout simplement refuser. Non, euh. Je ne le ferai pas. Je pose une ou deux autres questions polies, je les remercie de leur temps et clore l'entretien.
Je dis cela en tant que gestionnaire et en tant que développeur.
la source
Je pense que 99% des programmeurs qui postulent à un emploi (et ne l'obtiennent pas) risquent d'avoir du mal à le trouver. Mais pas 99% des programmeurs qui occupent un emploi de manière productive.
C'est la nature de notre processus moderne de recherche d'emploi. Beaucoup de personnes qui postulent ne sont pas qualifiées.
Cet article de Coding Horror parle également de la façon dont nous enseignons l'informatique aujourd'hui. Dans le passé (en particulier au MIT), vous deviez apprendre des choses comme Lisp, ce qui vous oblige à comprendre des concepts tels que la récursivité.
De nos jours, Java est enseigné aux utilisateurs car son utilisation est largement répandue dans l’industrie. L’accent a été mis sur la syntaxe plutôt que sur la réflexion en profondeur sur la programmation. Je n'aime pas Java; En fait, je pense que c'est un premier langage de programmation idéal. Mais je n'ai pas vu mes instructeurs enseigner des principes de programmation profonds avec cela.
la source
Je déteste dire ça mais
La principale raison pour laquelle j'ai constaté que les questions relatives à la programmation ne répondaient pas, était la faute du demandeur plutôt que du répondeur.
Je me souviens très bien d'une interview dans laquelle on me demandait comment créer un algorithme de recherche de collection particulier qui s'exécutait à temps constant (même nombre de recherches quel que soit le nombre d'éléments de la collection). J'ai tâté et ai bafouillé pendant 20 minutes avant d'abandonner. C’est alors que ce génie de l’interview a démontré que sa réponse fonctionnait presque toujours, mais pas toujours. Un peu comme dire "Donnez-moi une réponse de zéro", puis accepter 0,1.
En résumé, j’ai vu trop de cas dans lesquels une personne interrogée pose une question qui ne répond pas aux critères suivants:
Sérieusement (1), je pense que demander aux gens d'écrire du code dans la partie verbale d'une interview est stupide.
Sérieusement (2), je pense qu'interroger des personnes sans leur demander d'écrire du code est également stupide.
Sérieusement (3), vous devriez soit leur donner des "devoirs", leur demander de leur apporter des échantillons de code, soit leur donner un ordinateur portable et quelques questions et un bureau silencieux pour travailler dessus. Puis laissez-les seuls pendant qu'ils travaillent dessus. J'adopte généralement cette dernière approche car cela limite leur capacité à obtenir de l'aide extérieure (triche) et je peux chronométrer cela.
la source
int? result; for (int i = 0; i < int.MaxValue; i++) { T item = (i < array.Length) ? array[i] : someDummyItem; if (item == whatWereLookingFor) result = i; } return result;
- temps constant :)Tout ce que vous devez faire est de rechercher sur FizzBuzz. Il y avait une énorme vague de billets de blog à ce sujet. De manière générale, le blogueur a déclaré: "J'ai dit aux gens de l'écrire dans [une langue] et voici le genre d'erreurs qu'ils ont commises:", puis une liste de pièges à éviter. Le plaisir commence dans les commentaires où les gens disent "ah! C'est trivial dans [une autre langue], tout ce que vous avez à écrire est ceci:" suivi d'un code. Le commentaire suivant trouve invariablement des bugs dans le premier. On dirait que de très bons développeurs ne réussissent pas du premier coup, dans aucune langue. Certaines des erreurs:
Lorsque je recrute, je demande aux gens de coder au tableau blanc pour moi, rien de plus compliqué (je sais, vous ne pensez pas que ce soit compliqué) et de nombreux candidats échouent complètement. Je veux dire comme écrire vb-style If, Then, End If, mais mettre aussi des accolades (juste pour être sûr) ou écrire C # (et demander d'abord, C #?) Mais ne pas avoir un point-virgule nulle part. Ne me lancez pas sur des erreurs de logique!
la source
J'ai lu l'article de Coding Horror que vous avez mentionné, et mon opinion est que Jeff a raison ... mais quand a-t-il été interviewé pour la dernière fois?
Lorsque vous êtes interviewé, vous êtes généralement très stressé et vous devez souvent répondre à des questions théoriques (pas d'intellisence, pas de google, pas de resharper, ... uniquement votre mémoire troublée par le stress). C'est la même chose dans les tests. Le stress ne vous aide pas.
J'ai remarqué que le seul moyen de savoir si un poste convient à un poste est de travailler avec lui pendant un certain temps ... Prenez juste les 10 dernières personnes que vous avez embauchées sur 100 (peut-être plus), à quel point était-ce vraiment un bon louer???
Un employeur devrait embaucher un solutionneur de problèmes, pas un singe à code connaissant les modulos.
Vous ne pouvez pas tester "tous les candidats pendant un certain temps", vous devez donc les interviewer. C'est pourquoi je concentre mes questions sur cette question (résolution de problèmes) et vérifie les références antérieures.
Mon opinion est que le FizzBuzz est dangereux pour l'entreprise qui recherche des développeurs pour soutenir sa croissance.
la source
On m'a récemment demandé d'interviewer plus de 50 programmeurs pour un poste de direction où ils travailleraient principalement avec PHP.
J'ai jeté le problème de fizzbuzz à l'examen de dépistage, principalement pour m'amuser et parce que je voulais dix bonnes questions et n'en ai que neuf. À l'époque, mon intention était de montrer aux gens que nous pouvons nous amuser aussi, même en répondant à des questions d'entrevue.
80% des candidats ont résolu le problème, mais n'ont pas utilisé l'opérateur de module.
15% des demandeurs n'ont pas pu résoudre le problème.
5% des demandeurs ont résolu le problème en utilisant l'opérateur de module.
Bien que mon échantillon soit assez limité (50 candidats d'un pays), je peux vous dire que:
95% d'entre eux avaient un baccalauréat ou plus dans un programme de CS (les universités d'ici rivalisent pour essayer de rendre le son de CS plus spectaculaire).
J'ai été vraiment surpris. Eh bien, effrayé… mais étonné. Je ne pensais pas que je me rapprocherais de reproduire les résultats, car le problème est devenu si populaire. Cela montre que 5% de mes candidats ne sont peut-être pas des super programmeurs, mais au moins ils lisent des blogs sur la programmation.
la source
x - (x/y)*y
?Lors de ma dernière ronde d'embauche, j'avais 3 travailleurs de la construction avec 0; je répète zéro; la formation en programmation ou l'expérience acquise pour postuler à un poste de développeur de logiciels. * Donc, c'est le fond du canon. Si vous supposez une répartition normale des compétences, vous pouvez voir comment le niveau de compétence moyen sera assez faible et même «au-dessus de la moyenne» (parmi les candidats) sera toujours relativement mauvais.
Maintenant, si vous ne faites que bafouiller les candidats qui possédaient ce qui semblait être une capacité de programmation, vous constaterez que vous avez maintenant:
De plus, certaines questions "fizzbuzz" que j'ai vues sont spécifiques à un domaine. Vous pouvez progressivement développer un langage / framework x pendant plusieurs années (et donc z ans d'expérience avec x) sans en rencontrer certaines parties (les développeurs de bibliothèques ne connaissent pas grand chose au sujet du développement de composants d'interface utilisateur, par exemple).
De même, de nombreux développeurs effectuent actuellement des opérations de maintenance, de sorte que leurs compétences en architecture / conception peuvent être faibles dans certains domaines.
Maintenant, je ne suis pas sûr que 99% soit exact, mais IME est quand même assez élevé. Au moins dans la gamme de 80%.
* Non, nous n'avons pas appelé ni même regardé ces applications.
la source
Oui vraiment. Probablement pas 99% mais quand même assez élevé. J'avais l'habitude d'interviewer des étudiants en informatique pour des stages et des embauches à temps plein. J'interviewais environ 25 étudiants dans un collège. On nous a dit de ne pas poser les mêmes questions, car les étudiants ont parlé. J'ai vite compris que cela importait peu, car je n'aurais que 3 ou 4 étudiants sur 25 qui pourraient répondre à ma première question. "Ecrire strcmp"
Je leur ai demandé d'écrire une fonction pour comparer deux chaînes. Peut-être utiliser la fonction pour trier les mots d'un dictionnaire. Vous seriez surpris du nombre d’élèves qui n’ont pas compris comment comparer deux mots, encore moins savoir comment écrire la fonction. Et certains de ces étudiants ont affirmé avoir obtenu tous les A en CSc.
Le problème, c'est que la programmation est TRÈS DIFFICILE. Beaucoup de gens aiment penser qu'ils savent programmer, mais ils ne le savent pas.
la source
Quelques idées:
Je ne m'opposerais pas à quelqu'un si leur programme contenait des bugs mais ils avaient clairement la bonne idée. Le débogage fait partie de la programmation.
Je trouve dommage que tant de personnes postulent des emplois qu’elles ne savent pas qu’elles ne peuvent pas faire. Cela me semble être un problème d’économie.
Il est vraiment facile de poser de mauvaises questions aux gens, où la seule réponse "correcte" est celle que l'intervieweur donnerait.
la source
Ce test couvre très bien plusieurs choses que je veux savoir sur un programmeur que je pourrais engager:
Pour élaborer sur le dernier point, il existe d'innombrables solutions au fizz-buzz. Allez-vous pour la lisibilité? La vitesse? Brièveté? Essayez-vous de finir d'écrire le programme rapidement? Comment un programmeur s'attaque à ce problème simple est très révélateur. Si un programmeur ne peut pas choisir une solution et aller jusqu'au bout, qu'est-ce que cela vous dit sur la façon dont cette personne va exécuter une tâche réelle?
la source
Malheureusement, beaucoup de personnes avec un CV impressionnant semblent manquer de compétences de base en programmation. J'ai vu de nombreux cas où les personnes qui inscrivent C et C ++ sur leur curriculum vitae ne pouvaient pas répondre aux questions de base sur les pointeurs.
la source
J'espère que FizzBuzz m'aidera à éviter deux types de personnes.
Dans les deux cas, je ne me soucie pas vraiment d'une implémentation parfaite. Le test que vous devez faire avec les personnes qui postulent à des emplois de développeur est qu’elles peuvent programmer.
Cela dit, je ne m'embarrasserai probablement pas de ce critère pour plusieurs raisons maintenant. Tout d'abord, c'est très bien connu et l'un ou l'autre des groupes ci-dessus serait rapide à essayer. Deuxièmement, je préférerais utiliser les questions de l'écran de Steve Yegge pour filtrer les non-programmeurs avant de les ramener. Si quelqu'un reconnaissait ces questions, il supposerait qu'il avait lu le blog de Steve Yegge qui me suggèrerait qu'ils étaient dans le top 1% des développeurs qui prennent leur métier au sérieux et qui méritent assurément une entrevue. De même, si quelqu'un avait un bon représentant ici ou sur SO, je serais enclin à l'interviewer.
la source
Il est difficile de croire que les développeurs ne peuvent pas coder FizzBuzz tant que vous ne voyez pas les «neuf à quatre» qui copient et collent leur travail ensemble et essayez de ne pas écrire de code. Je ne pouvais pas le croire quand j'ai entendu l'un de nos développeurs expérimentés enseigner à un développeur C #, avec 3 ans "d'expérience", comment utiliser un dictionnaire. Des interfaces? Modèles de conception? stdout? YAGNI? Mon chef n'avait jamais entendu parler de YAGNI! C'est incroyable ce que ces gens ne savent pas.
Je le crois maintenant. Je pense aussi qu'il y a trop de développeurs qui en font assez.
la source
Je pense que la raison pour laquelle cette question est si populaire est qu’il existe plus d’une façon de répondre à cette question et que le choix du candidat peut vous donner une idée de la manière dont il code. Quelques exemples intéressants peuvent être vus ici si vous avez 10K rep sur Stack Overflow.
En ce qui concerne les statistiques à 99%, vérifiez d'où provient ce nombre. C'est probablement biaisé. Si le programme est basé sur des programmeurs débutants interviewés pour leur premier emploi, alors oui, je le vois bien, surtout si la majorité de leurs candidats sortent tout droit de l'université. Je peux en fait penser à quelqu'un qui écrirait probablement une condition de 100 si condition comme solution à ce problème.
la source
Je trouve que la déclaration selon laquelle 99% des programmeurs sont incapables de programmer ou de résoudre un simple test de codage est très exagérée. Dans le cas du test FizzBuzz, vous avez déjà rencontré ce problème et pouvez le résoudre facilement avec l'opérateur modulo ou vous ne l'avez pas encore rencontré et aurez de la difficulté à le résoudre. Il ne dit rien à l'interviewer sur vos compétences en programmation.
Je pense que le problème avec de nombreux programmeurs laissant apparemment une mauvaise impression lors d’une interview tient à la nature des méthodes d’interview techniques. Les intervieweurs attendent des candidats qu'ils mémorisent et reproduisent instantanément la syntaxe de la langue, les détails et la complexité informatique des structures de données, des architectures matérielles, des modèles de conception, etc. Le domaine de l'informatique et du génie logiciel est vaste. Il est impossible et insensible d'essayer de tout mémoriser.
Dans le monde réel, il est essentiel de pouvoir comprendre le problème de programmation / conception qui vous est assigné et de savoir où trouver des informations (votre IDE, vos pages de manuel, vos livres, Google, etc.) pour résoudre votre problème. C'est quelque chose que les enquêteurs ne testent jamais.
la source
Je suis encore un programmeur relativement peu expérimenté (je code depuis environ 2 ans et depuis quelque 2 ans, je sais utiliser une capacité professionnelle comme responsabilité secondaire pour environ 2 ans auparavant), utilisez donc suffisamment de grains de sel.
J'ai quelques expériences de premier écran de codeurs pour un projet de grande entreprise (nous savions un peu que le projet était condamné, mais bon, ils voulaient tout de même payer). En tant que seul programmeur de la société à recruter, on m'a confié la tâche de réviser les CV et de sélectionner les candidats.
Ce fut un projet gouvernemental donc il
peut - êtren'a probablement pas attirer les candidats les plus talentueux, mais je n'a pas reçu une demande de toute personne ayant un compte github que le code effectivement avait montré, ni personne qui avait un portefeuille, donc je FizzBuzz ( littéralement le problème exact) en guise de premier abord pour quiconque semblait pouvoir programmer.Je l'ai précédé d'une pseudo-excuse indiquant que je savais que c'était stupide mais que je voulais juste voir un code fonctionnel, et s'ils le voulaient, ils pourraient envoyer un autre exemple de valeur égale ou supérieure ou vraiment n'importe quoi, mais ce fizzbuzz suffirait.
Le résultat: je n’ai pas reçu une réponse qui soit en fait correcte, ce qui est ahurissant compte tenu du volume de réponses sur Internet. Personne n'a même pris la peine de plagier. Nous devions simplement embaucher des personnes qui avaient déjà travaillé sur les précédentes échecs du projet.
Après le choc initial de l'exercice et la déception suscitée par la passation de marchés logiciels / logiciels gouvernementaux, je me sentais beaucoup mieux à propos de mes propres compétences, de petites victoires?
Edit: Par pas correct, je ne veux pas dire une erreur inattendue (c’est-à-dire que j’ai demandé 100, et non pas 99) ou un autre bogue innocent qui est une solution facile. Je veux dire non fonctionnel, soit ne fonctionnera pas / compilera / etc, soit montrera clairement que le problème n’est tout simplement pas lu et compris, une partie importante du logiciel retire l’application et aucun n’envoie un autre code à la place.
la source