RHJPP (./23) :
Meowcate, tu veux tester quoi avec ce questionnaire ? Là, il ne me semble pas qu'il puisse te permettre de vérifier que le candidat connait CakePHP ou qu'il a des compétences dans un autre framework MVC.
Le test de code se fait ensuite sur CakePHP sur un ordi. Ici il s'agissait de voir quelques connaissances de base théoriques et un brin de réflexion pour que tous les candidats soient sur un pied d'égalité (on cherche un dev Cake, mais on accepte tout candidat ayant utilisé un framework PHP. Le second test leur laisse un code tourné et expliqué de façon à ce qu'un connaisseur de MVC avec un peu de logique (et internet) sache compléter l'application avec les questions demandées.
RHJPP (./23) :
Si vous cherchez quelqu'un de confirmé, ce test me semble trop long pour juste voir s'il connait le PHP alors qu'il faudrait plutôt vérifier que vous partagez les mêmes idées (ou que le candidat est prêt à intégrer les vôtres) de conception de code, de procédure de test, etc. Pour tester un candidat, vous pouvez par exemple lui donner de la documentation (maximum 10 pages) à lire avant l'entretien sur votre framework préféré ou sur ce que vous voulez et l'interroger dessus. Pour voir s'il sait coder, un petit programme avec quelques méthodes manquantes à compléter est suffisant. Avec connexion à internet et documentation, dans les mêmes conditions que le travail de tous les jours.
Il s'agit d'un deuxième niveau de sélection (le premier ayant été les CV. Nous réservons un troisième élément plus déterminant si nous en avons au final au coude à coude, nous avons deux candidats où nous avons beaucoup de mal à choisir pour l'heure, et ce ne serait pas du pile ou face.
squale92 (./24) :
6> aucune de tes propositions : PHP fournit password_hash() depuis PHP 5.5
PHP5.5 est encore peu répandu (et je peux parler, on bosse encore en 5.2 : c'est un prestataire indépendant qui nous fournit les serveurs. On discute avec lui pour la dernière version).
Mais du coup, ta proposition est ce que j'aurais le plus conseillé, bcrypt (password_hash en est une version intégré, intégré aussi en CakePHP>2.4 et algo possible en PHP<5.5).
Pour ceux qui ne connaissaient pas, je comptais privilégier sha256, md5 et sha1 sont un peu obsolète avec les
squale92 (./24) :
1> j'ai du mal à voir l'utilité de la question : soit le gars sait ce qu'est l'opérateur ternaire soit il ne sait pas... quoi qu'il en soit, utiliser un ternaire dans ce cas n'est pas "mieux" que de ne pas en utiliser.
Sur les 8 candidats qui sont passés jusqu'à présent, trois savaient ce qu'étaient les ternaires, 2 l'ont écrit correctement. Les autres ont pensé que c'était un triple if/else et ont rajouté donc une condition "égalité".
Un détail, mais intéressant à noter.
squale92 (./24) :
tu vois une autre solution que if (null === $foo) et if (is_null($foo)) ?
Non, mais là encore beaucoup semblent s'être trompé de mes candidats. J'ai eu (même après debriefing pour être sûr qu'ils avaient compris que je voulais un résultat strict à NULL des fois que j'aurais mal été compris) des == null et isset($foo) autant que !isset($foo) (décidez-vous).
squale92 (./24) :
7> la réponse attendue est "n'omettez jamais les break, sauf à mettre un commentaire explicitant que c'était voulu" ?
Toujours sur mes candidats, personne n'a "compris" l'absence de break. Certains ont donné une expression unique, d'autres le default du fait de l'absence des break, certains ont pensé que le switch planterait du coup.
Mais, plus grave à mes yeux : ils ont, pour la plupart, entendu parler du modulo. Là où ça devient inquiétant pour moi est qu'un codeur, c'est un peu matheux. Au moins niveau scolaire, non ? ne pas savoir quel est le reste d'une division... j'ai eu majoritairement du 0 et du 6, dans les deux cas parce que 8/5 = 1.6. Personne n'a répondu 3, pour le coup je suis déçu.
Et au cas où, j'attendais du coup
Slam !Cram...Mam ?Tant pis...squale92 (./24) :
8> tu as en tête le truc de barbare à base de explode + implode ? ou tu penses à quelque chose de plus moderne et plus safe genre DateTime::createFromFormat puis DateTime->format ?
Personnellement quand je ne veux pas me prendre la tête, j'utilise explode quand je sais le résultat. J'ai eu une réponse à explode, une autre avec des substr... au moins ça fonctionne. Il y en a bien un qui a tenté de l'objet (en se plantant, mais l'idée est là), mais la majorité m'ont sorti des date('Y-m-d', $date) sans passer $date au strtotime et sans se soucier de la locale. J'ai même eu 'YYYY-MM-DD' en motif.
Je veux bien que les dates soient l'un des concepts les plus pénibles (pas difficile, pénible) à manipuler quand on fait du code, mais du coup c'est un peu de base que je demande pour l'heure : la conversion d'un affichage de date SQL en un affichage humain/fr.
squale92 (./24) :
10 > $a=4 et $b=3 ? vu que $a est passé par référence ?
Yep, j'ai eu des résultats très variés (en fait toutes les combinaisons de 3 et 4 qu'on peut faire avec $a et $b), dont certaines bonnes réponses.
squale92 (./24) :
11 > il manque un exit() après tes header() de redirection.
Anéfé, du coup ça devrait appeler user.php et non pas admin.php. Mais parce que le if n'est pas bien formé, on n'y arrive pas. Et parce que la ligne in_array manque deux parenthèses fermantes, on n'y arrive pas.
Mais au final, une des réponses possibles qui m'intéressait le plus faute de voir ces bugs dans le code est que le bloc commençant par <html>, une erreur de header déjà envoyé serait signalée, et j'ai eu cette remarque pour certains.