Dois-je donner la réponse à un exercice de codage d'entrevue échoué? [fermé]


14

Nous avons fait échouer une nuance de la question FizzBuzz à un candidat d'entrevue de niveau supérieur 1 2 .
Je veux dire, vraiment, complètement, complètement, a échoué à la question - même pas proche.
J'ai même le coaché jusqu'à penser à utiliser une boucle et que 3et 5étaient vraiment à considérer comme des cas particuliers.

Il l'a fait sauter.

Juste à des fins d'AQ, j'ai posé la même question exacte à trois coéquipiers; leur a donné 5 minutes; puis est revenu pour récupérer leur pseudo-code. Tous ont réussi et n'avaient jamais vu la question auparavant. Deux ont demandé quel était le truc ...

Lors d'un autre exercice logique, le candidat a montré une certaine compréhension de certaines des fonctionnalités disponibles dans le langage qu'il a choisi d'utiliser (C #). Ce n'est donc pas comme s'il n'avait jamais écrit une ligne de code. Mais sa logique puait toujours.

Ma question est de savoir si j'aurais dû lui donner ou non la réponse aux questions de logique.

Il savait qu'il les avait fait exploser et l'a reconnu plus tard dans l'entretien.
D'un autre côté, il n'a jamais demandé la réponse ni ce à quoi je m'attendais.

Je sais que des exercices de codage peuvent être utilisés pour préparer les candidats à l'échec (encore une fois, voir le deuxième lien ci-dessus). Et j'ai vraiment essayé de l'aider à rentrer chez lui en répondant au cœur de la question. Mais c'était un candidat de niveau supérieur et Fizz-Buzz est, franchement, ridiculement facile même après avoir tenu compte de la nervosité des entretiens.

J'avais l'impression que j'aurais dû lui montrer un moyen de résoudre le problème afin qu'il puisse au moins apprendre de l'expérience. Mais encore une fois, il n'a pas demandé.

Quelle est la bonne façon de gérer cette situation?


1 D'accord, ce n'est pas le lien vers la vraie question FizzBuzz, mais c'est une bonne discussion P.SE autour de FizzBuzz et des liens vers ses différents aspects.

2 Pour aider à clarifier, c'est la nuance de Fizz-Buzz que j'ai demandé et c'est du premier problème de Project Euler . Impression de remplacement Fizz | Buzz pour additionner les chiffres et vous avez la même question fondamentale.
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Write a function that finds the sum of all the multiples of 3 or 5 below 1000.

3 Cette question a attiré plus d'attention que ce à quoi je m'attendais et j'apprécie toutes les réponses. Certaines des réponses ultérieures sont vraiment entrées au cœur de ma question, je vais donc permettre à la communauté de réviser et de voter avant d'attribuer «la» réponse.

4 J'ai choisi "la" réponse sur la base des votes de la communauté à ce moment-là. Et je pense que la réponse de Yannis est appropriée pour des entretiens avec de nouveaux développeurs. Je pense que la réponse collective se concentrant sur le fait de ne pas demander la réponse est également parfaite.


34
Coupez-les et continuez votre journée. En ce qui me concerne, l'échec de FizzBuzz au "niveau supérieur" est une perte de temps délibérée et malveillante.
Steven Evers

6
J'ai récemment interviewé pour plusieurs postes dans ma région, et ceux qui exigeaient du code m'ont indiqué qu'ils avaient du mal à trouver des candidats de niveau supérieur qui pourraient passer leurs propres tests "FizzBuzz". Dans tous les cas, ma réaction a été "tu ne peux pas être sérieux". Il y a apparemment beaucoup de programmeurs terribles déguisés en niveau supérieur qui ne sont même pas proches.
Joel Etherton

6
@JoelEtherton - Même chose ici. J'ai poussé pour les écrans de téléphone partout où je vais. Si vous postulez pour être un senior utilisant C # et ne pouvez pas nous faire la différence entre un type de valeur et un type de référence, vous n'obtenez pas un entretien.
Telastyn

3
@ 0A0D, diriger une équipe est un type de compétence différent d'un bon développeur. J'ai aussi vu des chefs d'équipe qui étaient de mauvais développeurs.
Kyralessa

4
@ JoelEtherton, ne sois pas surpris. Je pensais que "199 candidats sur 200 ne peuvent pas coder" n'était qu'une hyperbole jusqu'à ce que je commence à aider à sélectionner et à interviewer les candidats. Des années d'expérience (présumée) n'ont tout simplement pas d'importance. Les titres d'emploi n'ont pas d'importance. La plupart des candidats sont en effet incroyablement juniors, qu'ils le sachent ou non.
Anthony Pegram

Réponses:


15

La plupart de mes entretiens ont été avec des étudiants à la recherche d'un stage, et le plus souvent ils ont raté des exercices simples (?). Je voulais un moyen facile et convivial de communiquer leurs erreurs, et ce que j'ai trouvé était assez simple: j'ai résolu les exercices moi-même et leur ai montré mes solutions après avoir fini avec les leurs.

J'ai eu quelques discussions extrêmement intéressantes et révélatrices avec des candidats qui ont commencé par comparer nos différentes approches pour résoudre le même problème. Après un certain temps, j'ai même anticipé certaines erreurs, juste en vérifiant à quelle école le candidat fréquentait (certains "professeurs" sont ... des crétins). Et bien, dans les rares cas où un candidat n'a pu trouver de solution, je lui en avais déjà donné une pour la prochaine fois.


Logique; Je cherchais un nouvel emploi récemment, et j'ai constaté que la plupart des enquêteurs faisaient la même chose lorsque je donnais des réponses erronées (ou légèrement «décalées») à leurs questions. C'est une très bonne pratique. Surtout parce qu'elle ouvre le candidat (moi par exemple) et rend l'entretien lui-même plus engageant des deux côtés. Mais bien sûr, nous discutions de modèles, RAII et multithreading en C ++. La question est que dites-vous à une personne qui ne peut pas résoudre les fizzbuzz?
Chani

11
@RitwikG Honnêtement, si le candidat interviewe pour un poste de programmation et ne peut pas faire face aux fizzbuzz, je vais probablement ... rire (hé, je n'ai jamais dit que j'étais un bon intervieweur;). Cela dit, il y a quelques mois, j'ai perdu environ deux jours à lutter contre ce qui s'est avéré être un OBOE extrêmement trivial dans mon code. Nous avons tous nos moments de repos, et je ne me concentrerais pas vraiment sur le candidat qui gâche un exercice, je passerais probablement au suivant rapidement. S'ils échouaient également à la prochaine, je les remercierais probablement pour leur temps et continuerais.
yannis

1
@YannisRizos C'est probablement une bonne approche; il y a toujours une chance que la personne ne réussisse pas bien dans les situations d'entrevue, ou qu'elle ait en quelque sorte évité l'opération modulo dans son travail (bien que cela n'augure rien de bon pour le moins). D'après mon expérience, un nombre important de candidats sont perplexes lorsqu'on leur demande d'écrire une boucle simple (dans la langue de leur choix), même pour des postes de niveau supérieur. Maintenant que je trouve tout à fait impossible à justifier.
Daniel B

C'est aussi un bon aperçu du processus. Le candidat était naturellement nerveux et j'étais plus que disposé à accorder une certaine allocation pour cela. Quand il a finalement commencé à parler à travers sa tentative de solution, elle était juste alambiquée et a créé des conditions aux limites qu'il a manquées.

15

Donner la réponse

J'allais dire que si le candidat n'était pas assez intéressé pour demander, je ne perdrais pas mon souffle, mais la réponse @Yannis_Rizos est bien meilleure.

Les entrevues sont assez rapides. Je sais que je regarde souvent les choses pendant des jours après une entrevue.

Les personnes qui ne peuvent pas coder FizzBuzz Classic

J'imagine qu'un gros point d'achoppement est de connaître l'opérateur%. On pourrait espérer que quelqu'un pourrait penser à comparer (myInt / 3) == (myDouble / 3.0)mais peut-être avec le stress d'une interview ... Pourtant, FizzBuzz Classic force une approche par force brute, le plaçant dans la catégorie des problèmes d'algorithme les plus faciles à résoudre. À titre indicatif, avez-vous essayé de demander aux gens de simplement coder "Fizz" pour un demi-crédit et peut-être d'ajouter "Buzz" plus tard comme amélioration?

Je pense que la réponse ultime à votre question est qu'il est vraiment très difficile de trouver de bons candidats.

Questions d'entretiens en général

J'ai souvent trouvé plus facile et plus productif de demander aux candidats de décrire le dernier projet de programmation qui les passionnait. J'ai eu 100% de succès avec cette question, ce qui signifie que les personnes qui parlaient avec animation d'un projet de programmation et pouvaient répondre à des questions techniques à ce sujet étaient de belles recrues et celles qui ne pouvaient pas, ne l'étaient pas. Cela a les effets secondaires agréables de mettre le candidat à l'aise et d'encourager une discussion ouverte. Avec cette question, le candidat vous dira en effet à quoi ils conviennent le mieux.

Peut-être qu'à un algorithme de réflexion, des questions sont également nécessaires, mais je les ai abandonnées au profit de la question "projet préféré".

Sum (Son) de FizzBuzz

Votre question d'entretien n'est pas équivalente à FizzBuzz:

Si nous listons tous les nombres naturels inférieurs à 10 qui sont des multiples de 3 ou 5, nous obtenons 3, 5, 6 et 9. La somme de ces multiples est 23. Écrivez une fonction qui trouve la somme de tous les multiples de 3 ou 5 en dessous de 1000.

Lorsque FizzBuzz Classic vous oblige à passer par n itérations (pour imprimer chaque numéro ou Fizz / Buzz), votre problème peut être fait en n / 5 + n / 3 + n / 15 itérations, ou même pas d'itérations - une correction directe- le calcul des points est possible. Le programme suivant compare ces trois méthodes:

public static void main(String[] args) {
  long n = Long.valueOf(args[0]).longValue();
  long sum = 0;
  long ms = System.currentTimeMillis();
  // Brute force method  Performance: cn
  for (long i = 1; i <= n; i++) {
    if ((i % 3) == 0) { sum += i;
    } else if ((i % 5) == 0) { sum += i; }
  }
  System.out.print("Brute force sum:    " + sum);
  System.out.println(" time: " + (System.currentTimeMillis() - ms));
  ms = System.currentTimeMillis();

  // Second solution: iterate through only numbers we are
  // interested in.  Performance: c * (n/3 + n/5 + n/15)
  // We counted multiples of 15 twice, so subtract one of them
  sum = countSum(n, 3) + countSum(n, 5) - countSum(n, 15);
  System.out.print("Only multiples sum: " + sum);
  System.out.println(" time: " + (System.currentTimeMillis() - ms));
  ms = System.currentTimeMillis();

  // Third solution: Use high school algebra.  Performance: c
  sum = sumSeries(n, 3) + sumSeries(n, 5) - sumSeries(n, 15);
  System.out.print("Sum of series:      " + sum);
  System.out.println(" time: " + (System.currentTimeMillis() - ms));
}

// Iteravely sum all multiples of skip
private static long countSum(long n, long skip) {
  long skipTotal = skip;
  long grandTotal = 0;
  while (skipTotal <= n) {
    grandTotal += skipTotal; skipTotal += skip;
  }
  return grandTotal;
}

// Thanks to @Caleb for pointing this out!  High school algebra
// tells us that the sum of a series is: (n * (a1 + an)) / 2
// where a1 is the first term and an is the nth term.  E.g. The
// sum of a series of 3 is: (n/3 * (3 + n - (n % 3))) / 2
// Since we are thinking about performance here, we'll shift
// right one instead of dividing by 2 for style points.  ;-D
private static long sumSeries(long n, long skip) {
  return (n/skip * (skip + n - (n % skip))) >> 1;
}

Sortie (somme de FizzBuzz <1000):

$JDK_HOME/bin/java FizzBuzzNot 999
Brute force sum:    233168 time: 0
Only multiples sum: 233168 time: 0
Sum of series:      233168 time: 0

Avec un n plus grand pour la comparaison des performances:

$JDK_HOME/bin/java FizzBuzzNot 1000000000
Brute force sum:    233333334166666668 time: 4744
Only multiples sum: 233333334166666668 time: 818
Sum of series:      233333334166666668 time: 0

Note à ceux qui ont voté contre ce sujet hors sujet

Le point de présenter une solution à cette question est de montrer que bien que la solution de force brute à Sum of FizzBuzz soit similaire à FizzBuzz Classic, de meilleures solutions au problème Sum sont disponibles, ce qui en fait un problème fondamentalement différent. La somme de FizzBuzz est extrêmement difficile si vous ne vous souvenez pas de la formule appropriée pour la somme d'une série, ou si vous ne réalisez pas qu'elle s'applique lorsque vous progressez de 3 ou 5.

Si vous dérivez la formule pour la somme d'une série en divisant la série en deux, en inversant une moitié et en les associant, vous obtenez (n + 1) (n / 2) qui peut vous emmener sur un chemin vraiment désordonné en ce qui concerne la division entière et les restes tronqués. La version (n (a1 + an)) / 2 de cette formule est absolument critique pour une réponse simple pour toutes les valeurs de n.


3
Cela peut être calculé directement (Ruby): t = { |i| (i * (i+1)) / 2 }; fizzbuzz = { |n| 3 * t((n-1)/3) + 5 * t((n-1)/5) }
kevin cline


1
@ GlenH7 Ouais, j'ai supprimé mon commentaire parce que c'était buzzkill. Glen mérite des accessoires pour son analyse, même si elle ne répond pas du tout à la question: D (D'ailleurs, j'ai totalement codé et essayé ma propre solution il y a quelques instants)
Andres F.

2
Vous recherchez une somme d'une série, étant donné que cette série est de modulo = 0, la formule n / 2 * (m + nm) peut être utilisée. Où m = le nombre modulo et n = nombre d'éléments dans la série (aka étage (x / m). Après cela, c'est facile, S (3) + S (5) - S (3 * 5) [de sorte que certains nombres ne vous comptez pas deux fois.]
jmoreno

3
L'une des raisons pour lesquelles vous rencontrez peut-être un problème est que vous comptez deux nombres deux fois (ceux divisibles par 15). Pour un exemple de programme, voir ideone.com/clone/oNWrhJ
jmoreno

8

J'avais l'impression que j'aurais dû lui montrer un moyen de résoudre le problème afin qu'il puisse au moins apprendre de l'expérience. Mais encore une fois, il n'a pas demandé. Quelle est la bonne façon de gérer cette situation?

Peu m'importe le niveau de l'interview, ni même vraiment si c'est une question de niveau "FizzBuzz" ou une question avancée. Si vous demandez à un candidat de résoudre une question, et il ne le peut pas, mais ne vous embêtez même pas à vous demander la bonne réponse, alors il ne vaut pas votre temps. Comment diable pourriez-vous être si paresseux intellectuellement?!?

Et même si vous puez totalement en tant que programmeur et que vous essayez simplement de vous frayer un chemin vers un emploi, pourquoi ne seriez-vous pas au moins assez pragmatique pour obtenir la bonne réponse maintenant, afin de la connaître pour la prochaine entrevue?

Donc non, vous ne devez pas «donner» la réponse, mais vous devez vous attendre à ce que le candidat insiste pour entendre la bonne réponse après son échec. S'ils ne le font pas, c'est un énorme drapeau rouge dans mon livre.

Si quelqu'un a fait exploser FizzBuzz dans une interview de niveau junior parce qu'il ne se souvenait pas de l'opérateur de module et ne pouvait tout simplement pas se résoudre à passer sans lui, mais il s'est ensuite passionné pour le refaire une fois que vous avez expliqué la bonne réponse, ou au moins parler avec le bon code avec vous, c'est presque aussi bien que d'y répondre correctement.


1
Pourquoi? Vous pouvez simplement Google la réponse plus tard. FizzBuzz est assez populaire. Je serais honnêtement inquiet si quelqu'un ne connaissait pas la division du module.
Brian

Je lui aurais donné le crédit d'avoir essayé de trouver quelque chose au lieu de l'opérateur de module, mais il n'est même pas arrivé à ce point. Je pense que vous avez raison de vous concentrer sur son incapacité à demander la réponse. Votre observation est conforme à certains des autres défis qui ont surgi au cours de l'entretien.

Je me fais vraiment une opinion de FizzBuzz ... mais c'est la bonne réponse. Si le candidat ne demande pas la réponse, ne la lui donnez pas.
James P. Wright

@ JamesP.Wright - Je suis d'accord dans une certaine mesure, et en entrant dans l'interview, j'étais un peu gêné de l'utiliser comme principale question de codage. C'était censé être ridiculement facile, et je l'ai même précédé d'un avertissement pour ne pas trop lire la question. J'ai eu un suivi qui était également censé être facile, puis j'ai eu un troisième qui lui permettrait de démontrer des compétences de développement / conception de plus haut niveau. Nous ne sommes jamais arrivés à la troisième question ....

1
@ 0A0D, les "mathématiques" impliquées dans FizzBuzz vérifient simplement si une variable donnée est divisible par 3 et / ou par 5. Ce niveau de mathématiques est présent dans pratiquement toutes les applications que vous écrivez. Même les "développeurs d'entreprise" comme moi qui mettent en œuvre le même type de projets à plusieurs reprises utilisent ce niveau de mathématiques. GlenH7, je ne suis même pas sûr si l'utilisation de la récursivité dans FizzBuzz m'impressionnerait ou me ferait peur ... Cela semble certainement une exagération dangereuse.
Graham

4

J'ai tapé fizzbuzz au téléphone avec l'intervieweur lors d'un pré-écran. C'est quelque chose que, même si tout le monde n'a pas entendu parler, vous devriez être en mesure de bricoler ensemble après un semestre de cours, mais certainement après avoir acquis le statut de "senior".

Il n'y a vraiment aucun rétablissement à ne pas pouvoir faire cela. C'est l'une de ces nuisances nécessaires dont vous avez besoin pour vous éloigner au cas où.

Je dirais qu'il est logique de fournir un pré-écran afin que vous ne perdiez pas le temps de tout le monde à les amener sur place pour une interview.


Pour notre pré-écran, nous avions demandé un exemple de code, qui était fourni. Ce code avait des fonctionnalités de langage C # intermédiaires à avancées, donc je m'attendais vraiment à ce qu'il passe à travers les questions de logique en seulement une minute ou deux.

7
Lorsque l'exemple de code fourni ne correspond pas aux connaissances démontrées lors d'une interview, mon cerveau se méfie immédiatement de l'exemple de code.
Graham

@Graham: Embauchez-le en tant que temporaire pour 6 mois ..
Brian

@ 0A0D Malheureusement, je n'ai jamais travaillé dans un endroit qui permettait ce genre de flexibilité. Si le poste annoncé était un concert à temps plein, c'est TOUT ce que nous pourrions offrir à la personne.
Graham

3
Il n'y a pas de clôture dans ce scénario. Si son "exemple de code" démontre une solide connaissance et qu'il ne peut pas coder des fizzbuzz, sortez l'exemple et demandez-lui les détails. S'il ne peut pas le sauvegarder, alors il est temps pour ma ligne préférée "nous avons encore des candidats à revoir, nous vous répondrons."
Michael Brown

4

Je l'ai même accompagné jusqu'à penser à utiliser une boucle et que 3 et 5 valaient vraiment la peine d'être considérés comme des cas spéciaux.

Il serait intéressant de savoir ce que vous pensez que la réponse "correcte" à votre question FizzBuzz est. D'où je suis assis, un bon (en C) écrit à la lettre de votre question est:

int f(void) {
    // sum the multiples of 3 and of 5 and subtract multiples of 15 so we don't count them twice
    return ((1000/3)/2)*(999+3) + ((1000/5)/2)*(995+5) - ((1000/15)/2)*(990+15);
}

Un meilleur pourrait être:

Pourquoi diable écririez-vous un programme pour le faire alors que vous pouvez le calculer directement?

Le fait est qu'il y a plus d'une façon d'écorcher un chat, et le fait que le candidat en question n'a pas immédiatement commencé à écrire des forboucles et des modopérateurs ne signifie pas qu'il est stupide. Si vous voulez savoir ce que le candidat sait, discutez du problème - découvrez ce qu'il pense. S'il est coincé ou confus, découvrez où et pourquoi. Il pourrait vous conduire à une approche que vous n'avez jamais envisagée.

Ma question est de savoir si j'aurais dû lui donner ou non la réponse aux questions de logique.

En tant qu'enquêteur, ce n'est pas à vous de donner une leçon au candidat . S'ils ne savent vraiment pas comment écrire du code, il n'est absolument pas nécessaire de les embarrasser en s'attardant sur ce qu'ils ne savent pas. S'ils sont suffisamment intéressés pour demander, n'hésitez pas à partager. Sinon, terminez l'entrevue, remerciez-les de leur temps et passez au candidat suivant.


+1 pour la réponse solide dans votre dernier paragraphe. Et vous soulevez un bon point en ce que j'aurais dû dire "une" réponse au lieu de "la" réponse. Il existe plusieurs façons de résoudre ce problème particulier. Quant à discuss the problem, cet élément est venu avec d'autres questions lors de l'entrevue. Malheureusement, le candidat a été ... moins que disposé à répondre. Je n'ai pas ajouté cet aspect à la question d'origine, car j'essayais vraiment de respecter les lignes directrices de P.SE pour une "bonne subjectivité".

1
"ce n'est pas à vous de donner une leçon au candidat" - je ne suis pas d'accord. Un bon programmeur apprend toujours. S'ils répondent à votre leçon en étant reconnaissants d'avoir appris de nouvelles choses, c'est un signe qu'ils sont un bon programmeur. S'ils ignorent votre leçon, ils sont probablement un programmeur de merde.
nbv4

Si j'étais votre intervieweur et que vous me donniez ce genre de réponse, je vous dirigerais vers un district scolaire qui a besoin de professeurs d'algèbre. FizzBuzz consiste à démontrer une connaissance de base de la programmation afin que l'intervieweur puisse passer à des questions qui vous différencieront d'autres programmeurs fondamentalement décents. Vos réponses sont intelligentes, mais elles n'établissent pas que vous comprenez le bouclage, l'arithmétique modulaire, etc., laissant l'interview avancer soit en supposant que les personnes qui connaissent l'algèbre connaissent également la programmation (mal), ou simplement vous serrer la main et passer (plus probable).
user1172763

@ user1172763 C'est le point - contrairement à FizzBuzz, la question d'entrevue du PO peut être répondue avec un seul calcul. C'est donc un mauvais choix si le point est de voir si le candidat peut écrire une boucle. Vous ne pouvez pas vous attendre à ce qu'un candidat choisisse une solution plus lente et beaucoup plus verbeuse en supposant que vous posez la question pour une raison spécifique (et non expliquée). En effet, l'intervieweur pourrait facilement être une question «piège» pour voir si le candidat remarque que la boucle est complètement inutile. La lecture de votre esprit n'est pas la responsabilité du candidat.
Caleb

2

Votre «problème» est que vous êtes un humain empathique, il est donc difficile de regarder quelqu'un lutter avec un problème dont vous connaissez la réponse (c'est également un problème si vous exécutez des études d'utilisabilité). Du point de vue des fonctions d'intervieweur, vous n'êtes en aucune façon obligé d'enseigner à la personne interrogée comment programmer ou résoudre un problème, ou la solution à un problème que vous posez.

Lorsque vous coachez une personne interrogée, ce n'est pas pour qu'elle obtienne la bonne réponse. C'est pour que vous puissiez voir s'ils ne peuvent vraiment pas résoudre le problème ou s'ils se sont juste accrochés à une ou deux erreurs ou malentendus.

Donc, si vous voulez donner à la personne interrogée la solution après coup, vous le faites uniquement pour vous. En général, je préfère utiliser ce temps pour permettre à l'interviewé de tenter un autre problème. Mais un programmeur "senior" qui ne peut pas répondre à FizzBuzz est probablement hors de la liste. Si vous décidez de donner des solutions, assurez-vous de ne pas vous tromper en pensant que l'entretien s'est mieux déroulé que si vous pensiez, "il ne pouvait pas résoudre le problème, mais quand je l'ai expliqué, il l'a bien compris", alors vous êtes sur un chemin dangereux).

Et oui, j'ai été un interviewé qui était au-dessus de sa tête et ne pouvait même pas faire la première tentative pour résoudre un problème d'entrevue. Cela signifiait simplement que je devais en apprendre beaucoup plus pour pouvoir travailler dans ce domaine.


2

Obtenir la bonne réponse n'est pas la partie importante de ce test. Ce que vous mesurez, c'est l'approche de quelqu'un à la résolution de problèmes, la façon dont il aborde la question, tout ce qui est créatif ou intéressant en cours de route; ce genre de choses. Même s'ils obtiennent la mauvaise réponse, ils peuvent toujours être viables selon ces critères.

OK, ne pas savoir que l'opérateur de mod est inexcusable, et d'après les mesures que j'ai fournies, ce candidat semble toujours être une radiation, mais je ne pense pas que donner la bonne réponse à ce candidat sera de toute avantage.

Cela revient à votre opinion personnelle d'ici. Souhaitez-vous donner un retour sur l'entretien afin d'aider le candidat à mieux réussir lors des futurs entretiens (et pour que les futurs enquêteurs n'aient pas à subir ce que vous venez de traverser)? Si c'est le cas, formulez vos commentaires dans les termes que je viens de décrire ci-dessus: dites-leur que ce n'est pas seulement la bonne réponse, mais comment ils travaillent pour arriver à la réponse est un facteur critique.


+1 pour le commentaire de how they work to arrive at the answer is a critical factor. Alors que je m'attendais à ce qu'un opérateur de module soit utilisé, c'est uniquement parce que c'est comme ça que je l' aurais résolu. J'étais très ouvert à voir toute autre approche qui a résolu le problème sans créer d'erreurs flagrantes de conditions aux limites (voir mes divers commentaires sur l'approche avec récursivité ...).

2

J'avais l'impression que j'aurais dû lui montrer un moyen de résoudre le problème afin qu'il puisse au moins apprendre de l'expérience. Mais encore une fois, il n'a pas demandé. Quelle est la bonne façon de gérer cette situation?

À mon avis, il n'y a aucune situation à gérer. En supposant que vous avez rejeté sa candidature, le manque d'intérêt (apparent) du candidat n'est pas quelque chose dont vous devez vous préoccuper.

En effet, même s'il l' a demandé, vous ne lui devez pas d'explication. Et si vous en avez parlé à vos collaborateurs RH, ils pourraient vous conseiller de ne pas poursuivre les discussions avec le candidat pour des raisons juridiques.


Il convient également de noter que le problème FizzBuzz a différentes «meilleures» réponses selon la façon dont vous le demandez. Si vous demandez la solution "la plus simple" et la solution "la plus efficace", les meilleures réponses sont radicalement différentes. Et cela peut colorer injustement votre jugement ... si vous n'êtes pas clair dans la façon dont vous avez posé la question. (D'un autre côté, un bon candidat / expérimenté aurait la clairvoyance de clarifier cela avant de commencer à coder ...)


2

Pour répondre à votre question, non je ne donnerais pas la réponse. Si la personne veut être un meilleur ingénieur logiciel, elle trouvera la réponse. Si vous leur donnez une réponse, vous leur volez cette opportunité.

La question la plus pertinente est quand pouvez-vous vous appeler un développeur senior? Cela varie selon les organisations et les pays. Par exemple, une entreprise avec laquelle j'ai travaillé considérait des ingénieurs logiciels avec 5 ans d'expérience en tant qu'aînés. Aucun accent n'a été mis sur la qualité de l'expérience, mais uniquement sur la durée.

Jusqu'à ce que nous arrivions à une norme qui catégorisera tous les ingénieurs logiciels, quelle que soit leur langue, il nous appartient de décider du niveau de leurs compétences. Et nous continuerons d'entendre des «ingénieurs principaux» échouer au test de compétences le plus rudimentaire.

Il y a la question semaines a été demandé « Quand devez - vous vous appeler un développeur principal » . J'ai également écrit un article de blog sur le sujet.


Souhaitez-vous bien vouloir réviser le lien de votre blog?
André

@ André lien mis à jour.
Chuck Conway
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.