Comment puis-je tester les compétences PHP dans une interview? [fermé]

58

Mon entreprise a besoin d'embaucher un développeur PHP, mais personne ne possède de connaissances en PHP dans mon entreprise et nous avons des difficultés à tester les compétences en PHP. S'il s'agissait d'un développeur C / Java, je lui demanderais de rédiger une mise en œuvre rapide de Game of Life, mais PHP est un langage complètement différent.

J'ai vu ce test avec intérêt:

http://vladalexa.com/scripts/php/test/test_php_skill.html

Quelqu'un d'autre a plus de suggestions?

Mascarpone
la source
3
Test intéressant, ne couvre pas l'injection SQL bien que je couvrirais certainement. Je suppose que ce test est un bon moyen de tester leur capacité à déterminer leur connaissance de la manière dont PHP traite les variables et pas grand-chose d'autre.
Ben Brocka
6
Quoi que vous fassiez, ne posez pas de questions concernant l'orthographe des noms de fonctions standard. Nommer une fonction PHP est tellement incohérent.
Chris C
1
Double possible de programmers.stackexchange.com/questions/46274/…
Adam Lear
16
Je m'inquiéterais moins de leurs côtelettes PHP et plus encore s'ils pouvaient programmer, travailler avec l'équipe, comprendre la sécurité Web, etc.
Peter Loron
12
Si personne de votre entreprise ne connaît bien PHP, le meilleur moyen pour vous est de faire appel à un service de test des compétences. http://tests4geeks.com/test/php-mysql - J'aime celui-ci. Et puis, si le résultat est bon, vous pouvez lui demander d'écrire du code PHP. Par exemple, il y a des étudiants et des sujets dans la base de données. Demandez-lui d'écrire le formulaire HTML, dans lequel le directeur édite les repères du tableau (les étudiants sont dans la colonne de gauche, les sujets dans la rangée du haut, les repères à l'intersection).
Joseph

Réponses:

71

Code

  • Demander au candidat d'écrire le code
  • Demander au candidat de lire le code

Si vous demandez au candidat d'écrire du code, assurez-vous que:

  • Le code est non trivial mais petit
  • Vous autorisez l'accès au manuel et à Internet

Si vous demandez au candidat de lire le code, assurez-vous que:

  • Le code a quelques erreurs triviales
  • Le code a des erreurs non triviales
  • Le code fonctionne bien, mais il peut être facilement optimisé

Vous pouvez utiliser trois codes différents ou plus, commencez par le plus simple et avancez au suivant si vous voyez que le candidat s'en sort facilement. Ajoutez de la récursion pour pimenter les choses.

Ressources

Demandez une liste détaillée des ressources PHP utilisées par le candidat. Livres, blogs, forums, magazines, etc. C'est ainsi que mes employeurs actuels ont découvert StackOverflow .

Si le candidat mentionne StackOverflow ou des programmeurs, vous ne devez PAS demander ou essayer de connaître son nom d'utilisateur. S'ils voulaient faire connaître leur réputation, ils auraient inclus un lien vers Carrières 2.0 dans leur CV.

Cadres

Tous les développeurs PHP doivent connaître les frameworks PHP les plus populaires:

et parler couramment au moins l'un d'entre eux. Vous pouvez avoir quelques exemples de code prêts pour chacun et demander au candidat de les lire et de les expliquer, après vous avoir indiqué lequel de ceux-ci sont les plus familiers.

Débogage et profilage

J'ai toujours pensé que les développeurs PHP manquaient de compétences en débogage et en profilage (peut-être uniquement les développeurs PHP avec lesquels j'ai travaillé). Si, au cours de la discussion, vous découvrez que le candidat utilise activement xdebug , ne vous embêtez pas avec le reste de l'entretien et engagez-le simplement. ;)

Assainissement des entrées

C'est important. Vous pouvez commencer par discuter de la raison pour laquelle c'est important, puis demander les méthodes les plus courantes pour y parvenir. Cette discussion vous aidera sur ce qu'il faut demander.

Quelques astuces:

Snafus PHP

Vous pouvez trouver beaucoup de snafus PHP dans cette excellente discussion . Si vous vous entretenez pour un poste de cadre supérieur, vous devez absolument vous renseigner sur certains d'entre eux. Quelques exemples:

Traitement par PHP des valeurs numériques en chaînes:

"01a4" != "001a4" // true
"01e4" == "001e4" // also true

Code PHP valide :

System.out.print("hello");

En PHP, une chaîne vaut autant qu'un pointeur de fonction:

$x = "foo";
function foo(){ echo "wtf"; }
$x(); # "wtf"   

Tests unitaires

Ai-je besoin d'en dire plus?

Conclusion

Un bon développeur PHP doit combiner une variété de compétences et de talents:

  • Une bonne compréhension de HTTP
  • Une bonne compréhension de la configuration d'Apache (même si vous utilisez un serveur Web différent dans votre entreprise)
  • Au moins une compréhension de base de JavaScript
  • Une grande compréhension de HTML / CSS

La liste se rallonge de plus en plus. Assurez-vous d’adapter l’entretien aux besoins spécifiques de l’emploi, vous ne voulez pas embaucher un bon développeur, mais un bon développeur qui est excellent dans ce que vous devez immédiatement faire.

Yannis
la source
22
Bonne réponse dans l'ensemble, mais je ne suis pas d'accord sur les aspects "cadres" et "performances de base". Que vous connaissiez un certain framework ou non, cela ne dit pas grand-chose de vos qualités en tant que programmeur. En ce qui concerne les performances: si vous optimisez à ce niveau, vous ne devriez probablement pas utiliser PHP en premier lieu. Je fais des choix parmi les alternatives que vous citez des dizaines de fois chaque jour, mais toujours sur la base de la lisibilité et de la fonctionnalité, et non de la performance. La réponse correcte à ces questions de performance est "peu importe la plupart du temps".
tdammers
1
@YannisRizos: Bien que l'intégration au sein d'une équipe soit plus facile, vous supposez que l'entreprise du PO utilise l'un de ces frameworks populaires, mais si elle ne le savait pas, alors aucun de ces frameworks ne prouverait rien. Peut-être avez-vous voulu dire que cette partie permettait de tester sa capacité à travailler avec un cadre plutôt qu'avec ces cadres? (Point au cas où: dans l'entreprise pour laquelle je travaille, nous utilisons un framework développé en interne)
Purefan
2
@Petah Cela n'a aucun sens, surtout au stade de l'entretien et j'éviterais de travailler dans une entreprise qui demande aux gens de révéler des informations de ce type lors de l'entretien. Tout le raisonnement "cacher quelque chose" est pervers, à mon humble avis, mon employeur ne se soucie pas de savoir comment je passe mon temps libre, et c'est à peu près tout. Si je souhaite publier moi-même mon compte de programmeur, c'est une autre histoire ...
yannis
1
@Petah J'espère sincèrement que les futurs employeurs n'essaieront pas de connaître ma personnalité par le biais de mes activités de programmation (qui voudraient passer de 25% à 35% de leur temps avec un nazi maléfique;)
yannis
1
Pas d'accord avec le cadre. La bonne pratique moderne consiste à utiliser les composants applicables des frameworks utilisant le composeur dont vous avez besoin plutôt que d'utiliser un framework complet. En fait, on peut dire la même chose maintenant dans le monde JS.
John Hunt
44

Le test que vous avez lié est intéressant et la réponse de Yannis Rizos est excellente, mais je pense que ce qui est également important est la suivante:

Si vous avez besoin d'un bon développeur, ne cherchez pas un développeur PHP. Recherchez un bon développeur connaissant PHP. Cela signifie que, au moins la moitié de l'interview, vous devriez poser des questions qui n'ont pas grand-chose à voir avec la syntaxe ou les fonctions de PHP.

Demandez-lui ce qu’est MVC, AJAX, comment fonctionne HTTP, REST, SQL, des structures de données, des performances de base (comment mesurer, améliorer), des bases de test, des bases de sécurité (XSS, XSRF, les injections, comment vous vous défendez), connaissances de base en programmation, appliquées à des domaines PHP typiques - Web, réseaux, transformations de données, etc.

S'il le sait bien, demandez-lui d'écrire un code simple, choisissez une tâche facile qui ne devrait pas prendre beaucoup de temps - par exemple, trouver des mots avec la plupart des voyelles dans une rangée du texte, inverser chaque mot du texte ou en multiplier deux. matrices. Vous pouvez également lui demander de mettre en œuvre le Game of Life en PHP, si vous le souhaitez :)

S'il réussit cela, alors vous pouvez passer à des questions PHP plus délicates, mais n'y mettez pas trop de poids. Il peut en lire l'essentiel dans le manuel, et ce qu'il ne sait pas lire, il l'apprendra rapidement s'il est bon. PHP est construit pour être simple, donc s'il est un bon programmeur et qu'il a quelques connaissances pratiques de PHP, il sera probablement en mesure de le rattraper. S'il sait comment programmer en général, apprendre à programmer en PHP est plus facile que l'inverse - connaître la minutie de la syntaxe PHP n'a pas d'importance si vous ne comprenez pas à quoi servent les tests unitaires ni comment se débarrasser des problèmes XSS.

StasM
la source
13

Bien que la réponse de Yannis Rizos soit bonne - je sais que je ne réussirais pas ce test et que je pourrais l'utiliser comme ressource pour déterminer les points à améliorer pour améliorer mes performances en PHP, je pense qu'il serait utile de trouver une programmation. mon pote qui connaît PHP pour participer au processus d’entretien. Toutes les questions de la réponse précédente sont bonnes, mais sans connaissances du domaine, il sera difficile d'évaluer la qualité des réponses.

Cela dit, selon vos besoins, comme d'autres l'ont dit, la facilité de programmation générale et l'adaptation de l'équipe sont probablement plus importantes que les connaissances spécifiques à une langue.

cori
la source
5
+1 pour I think it would be worth your while to find a programming buddy who knows PHP to sit in on the interview process., bonne suggestion.
Yannis