Tests Fizz Buzz de recrutement en programmation (et réflexions associées)
Les examples de code proposés à côté sont en java, mais ce n'est pas le plus important
Une liste de nombres à afficher :
Quelques variantes possibles dans cet énoncé pour voir les concepts de programmation connus par la personne passant le test.
L'intérêt est que le candidat explique la démarche (et montre également comment il a comprit l'énoncé). Attention aux énoncés mal formulés ! (ici, ni exhaustif ni représentatif ; faire tester en aveugle si besoin).
Ouvert à d'autres idées sur le même principe, de la même façon que http://99-bottles-of-beer.net/ http://99-bottles-of-beer.net/
La principale idée du CyberFizzBuzz est de tester les compétences d'un développeur en faisant du code ET de la revue de code lors d'un entretien en temps limité.
Sur une machine composée de 'slots' contenant des pièces : à partir d'un montant donné en entrée, faire le décompte de la monnaie rendue en partant des pièces de montants les plus élevés.
Contrainte : interface ISlot ayant seulement les méthodes suivantes : int coinValue(); int coinCount(); boolean isEmpty();
Une variante de l'exercice précédent, on instancie ici des transactions, avec une Interface contrainte par les méthodes suivantes : void reservedCount(int); boolean commit(); boolean rollback();
L'idée étant que ces méthodes de l'interface lèvent une exception (TransactionException) si le montant réservé est incorrect (négatif), ou si la transaction a déjà été appliquée (commit / rollback).
Question "Par quoi remplacer un switch dans du code ?" (pour diverse raisons : assurer maintenabilité, lisibilité...), en l'occurence le Design Pattern / Patron de Conception 'Command' ('Strategy' peut fonctionner aussi). La réponse consiste plus dans la façon de faire que dans la dénomination.
Dans le même ordre d'idée que le CyberFizzBuzz : l'objectif est ici de mesurer la réflexion et éventuellement de connaître la rapidité de résolution de l'exercice, mais surtout de voir le degré de connaissance du langage de programmation par la personne qui passe le test.
Dans cet exercice, il faut analyser des données de températures (positives et négatives), afin de trouver la plus proche de zéro dans un tableau de valeurs.
Si le tableau est vide, on renvoie 0. (NOTE : le tableau existe toujours / le tableau n'est jamais 'null'. ).
Si deux valeurs on la même valeur absolue, on renvoie la valeur positive.
Dans un contexte java, il s'agit de compléter la méthode suivante :
static double closestToZero(double[] ts) {
// TODO completion here !!
}
L'objectif est de réorganiser des piles de boites avec un bras mécanique, dans une fabrique, et de faire des piles de hauteur égales. Toutes les boites sont sur un certains nombre de piles. Il faut obtenir un nombre égal de boites sur les piles, sinon les boites en excès doivent être empilées de gauche à droite.
La méthode à implémenter va recevoir régulièrement le status actuel du bras robotique (sa position), le nombre de boites dans chaque pile (un tableau) et si le bras tient une boite.
Cette méthode doit retourner une commande par tout parmi les suivantes, jusqu'à ce que les boites soient correctement pisitionnées (au lieux en moins de 200 executions) :
static String solve(int clawPos, int[] boxes, boolean boxInClaw) {
// TODO completion here !!
return "";
}
NOTE sur les notions attendues ici : énumération, ...
Cas de tests :
On soumet un ensemble de cartes définissant des dommages appliqués à un monstre, chaque carte a un coût en 'mana' et définit un type d'effet, des dommages ou des multiplicateurs.
Comme pour les autres exercices, l'objectif n'est pas de donner une solution, mais d'expliquer la démarche.
Élements attendus de la part du candidat qui fait l'exercice (idéalement en direct et en un temps limité) :
Cyber FizzBuzz : réflexion sur la sélection de candidats dans le domaine de la SSI
Entrée en langue française / French entry Catégorie: Conférence Auteurs: Éric Jaeger, Olivier Levillain et Christian Lixi
Date: 23 mai 2018
Pour le recrutement, il est utile de disposer de questions standards permettant d'apprécier rapidement l'aptitude des candidats à appréhender divers sujets et approches. Nous présentons dans cet article le processus de sélection des candidats à une formation technique en SSI -- des questions parfois éloignées du coeur du sujet, mais dont nous justifions la pertinence.
Présenté lors de la conférence RESSI à Nancy, France le 23 mai 2018