Vous avez dit que vous interviewiez pour des postes de stagiaire dans la question, donc c'est de ce point de vue, pour les développeurs à temps plein, la barre sera un peu plus élevée.
Lorsque vous interviewez des stagiaires, vous devez vous rappeler qu'ils peuvent ne pas avoir terminé leurs études et qu'ils peuvent également être entrés au collège sans aucune formation préalable en programmation et en informatique. En tant que tel, vous devez adapter les attentes à ce que vous pouvez raisonnablement attendre de quelqu'un et au degré de prestige de la position (c'est-à-dire que Google peut échapper aux attentes qu'une entreprise dont les gens n'ont pas entendues peuvent).
En parcourant les questions que vous avez présentées, je les considérerais probablement comme suit dans une interview:
1) Écrivez une fonction qui renvoie vrai si les côtés du triangle (tous les entiers) a, b et c peuvent représenter un triangle rectangle.
Application de base de la géométrie avec un codage simple, la plupart des étudiants devraient pouvoir le faire sans trop de difficultés. Tout au plus, un rappel du théorème de Pythagore pourrait être nécessaire s'ils montrent un peu de stress en raison d'une interview. Cela pourrait presque être considéré comme un problème de "renforcement de l'ego" dans la mesure où cela peut aider à calmer certaines personnes si elles sont très nerveuses avant l'entretien.
2) FizzBuzz
Encore une fois, une autre application de certaines instructions de contrôle de base. Les étudiants qui n'ont pas été exposés à l'opérateur de module, ou qui ne l'ont pas beaucoup utilisé, peuvent avoir besoin de s'en souvenir, mais ne devraient pas rencontrer de problèmes réels pour résoudre le problème.
3) Calculer le Nième élément de Fibonacci en utilisant la récursivité (s'ils ne savaient pas ce qu'était Fibonacci, je leur écrirais même la définition F (n) = F (n-1) + F (n-2); F (1 ) = 1; F (0) = 1).
Cela a tendance à être un problème assez courant, de sorte que la plupart des étudiants (sinon tous) le verront à un moment donné avant l'obtention du diplôme. Le hic est qu'il apparaît généralement lorsque la récursivité est présentée aux étudiants car elle se prête bien ou une solution récursive ou basée sur une boucle qui peut ensuite être comparée afin que les étudiants de différentes écoles puissent la voir à différents moments en fonction de la séquence des cours. En pratique, si quelqu'un ne pouvait pas trouver le récursif, je demanderais une alternative en utilisant des boucles et s'il ne pouvait pas le faire, je serais plus préoccupé par sa capacité potentielle.
4) Implémentez la structure List pour l'entier et écrivez la fonction pour l'inverser.
Cette question pourrait en fait être un peu trop ouverte car elle est écrite, donc ce pourrait aussi être une bonne question pour voir comment le candidat cherche des informations supplémentaires (par exemple, si des fonctions de suppression doivent être incluses, une conversion en tableaux, etc.), mais étant donné un bien énoncé de problème défini («Mettre en œuvre une structure de liste de base pour les entiers qui permet d'ajouter des nombres à la fin ou à un index arbitraire, de les supprimer et d'inclure une fonction pour renvoyer une copie inversée de la liste»), les élèves devraient être en mesure de résoudre le problème tant que les listes sont une structure commune présentée soit dans un premier cours sur les structures de données, soit dans un premier cours d'informatique de base.
En ce qui concerne les candidats, s'ils éprouvent des difficultés, assurez-vous qu'ils sont détendus et accordez-leur un peu de clémence car ils pourraient simplement avoir une anxiété de performance car cela pourrait être leur premier véritable entretien. Des conseils sur la résolution des problèmes pourraient être nécessaires, surtout dans le cas des troisième et quatrième problèmes, par opposition aux deux premiers.
Également, structurez le processus général d'entretien de manière à ce que des points de "sortie gracieuse" soient intégrés. Par exemple, vous pourriez avoir le programme suivant:
- Rencontrer et saluer, procédures d'entrevue.
- Entretien avec le (s) programmeur (s) du personnel, questions de base sur le contexte.
- Présentation du quiz de programmation.
- Pause
- Retour de pause, licenciement de certains candidats qui ne conviennent pas.
- Entretien prolongé avec le (s) programmeur (s) du personnel.
- Entretien avec les ressources humaines (si nécessaire).
- Emballer.
Ce flux d'entrevues a tendance à bien fonctionner si vous voulez être en mesure de licencier les candidats tôt car ils savent dès le début qu'ils pourraient être licenciés après la pause. La courte entrevue avant le quiz signifie également qu'ils ne se présentent pas seulement pour passer le test, ce qui leur permet de s'entraîner à l'entretien et peut également leur permettre de décider qu'ils ne conviennent pas. Si d'autres programmeurs observent le quiz ou aident le candidat pendant celui-ci, cela leur donne également une chance de réussir / échouer le candidat pendant une courte pause.
En tout temps, lorsque vous interviewez pour un stage et que les candidats sont des étudiants, vous devez vous rappeler qu'ils sont toujours étudiants et peuvent ne pas avoir beaucoup de pratique avec les entretiens (conduisant à une éventuelle anxiété de performance) et peuvent également ne pas avoir atteint le point dans leurs études pour même être en mesure de répondre aux questions, ce qui signifie que ce pourrait être une bonne idée de les envoyer sur leur chemin avec une copie de la «solution (s) idéale (s)» aux problèmes qui leur sont également posés.