Recherche

Faire passer des entretiens d'embauche : le questionnaire Envoyer
IRL - Réflexions
Écrit par Neamar   
Vendredi, 10 Juin 2011 14:57

Deuxième partie d'une série d'articles sur mon expérience pour la réalisation d'entretien d'embauche.

Après l'entretien, on passait donc au questionnaire.

Il faut d'abord que je le contextualise : je recherchais des développeurs PHP stagiaires pour une application Zend (donc en MVC) utilisant Doctrine. L'application fait déjà plus d'un million de lignes.

Je l'avais fait faire à quelques collègues, qui avaient mis une dizaine de minutes à le réaliser et m'avaient conseillé quelques éclaircissements dans les questions.
Le formulaire contient une vingtaine de questions basiques, décomposées en deux parties : code, et connaissances informatiques.

Soyons franc : pour moi, un score inférieur à 12 indiquait des lacunes critiques pour le poste et pour la programmation en général. J'allais être surpris : 12 est probablement la meilleure note que j'ai eu… les stagiaires ne sont plus ce qu'ils étaient, et trouver des passionés est difficile !

La deuxième question était : fallait-il corriger devant la personne ? C'était l'avantage d'avoir réalisé le formulaire moi-même : je pouvais expliquer aux gens leurs erreurs… oui, mais étaient-ils intéressés ? Mettez-vous à leur place : un entretien d'embauche pendant lequel le recruteur vous mettrait le nez dans vos erreurs… pas très agréable. Finalement, j'ai décidé de laisser le choix : « Voulez-vous faire la correction maintenant ? » De façon intéressante, la plupart des gens disent « oui », au point que je compris rapidement que « non » signifiait « je n'ai pas été capable de répondre à une seule question et je ne sais pas ce que je fous là, j'ai essayé de te gruger à l'oral mais ce questionnaire me démasque ».

Enfin, assez parlé. Je vous mets uniquement les questions ici, et les réponses dans un prochain article. Si vous avez 15 minutes devant vous et un minimum d'expérience en Web, n'hésitez pas à le faire ; vous me direz ce que vous en pensez.

Questionnaire

Ces questions permettent de vous situer vis-à-vis de la programmation et de l'informatique en général. Il est normal de ne pas tout connaître ;).

Écriture et lecture de code

Que fait la requête SQL suivante :

 
SELECT Marque, AVG(Prix)
FROM Produits
GROUP BY Marque
 

Réponse :

En javascript (ou un framework JS que vous préciserez), comment peut-on récupérer un objet par son identifiant (attribut id en HTML) ?

 
/**
 * Récupère un objet par son identifiant
 * 
 * @param string id l'identifiant recherché
 * @return DOMElement l'élément d'identifiant correspondant
 */
function getById(id)
{
   return
}
 

Que fait l'expression CSS suivante ? Pouvez-vous donner un fragment de code HTML sur lequel elle s'appliquerait ?

 
#space .space_list  a:hover{
  background:#777777;
}
 

Réponse :

Pouvez-vous rédiger en PHP (ou autre si inconnu) une fonction prenant un tableau en paramètre et renvoyant la somme des éléments de tableau ?

 
<?php
/**
 * Calcule la somme des valeurs du tableau.
 *
 * @param array $tableau le tableau sur lequel effectuer la somme
 *
 * @return int la somme
 */
function somme_tableau(array $tableau)
{
 
 
 
 
 
 
 
 
 
}
 

Pouvez-vous rédiger en PHP (ou autre si inconnu) une classe modélisant un utilisateur (propriétés et fonctions à votre discrétion) ?

 
<?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Pouvez-vous rédiger en PHP (ou autre si inconnu) un programme affichant tous les nombres de 1 à 50, en remplaçant les multiples de 3 par ping, les multiples de 5 par pong et les multiples de 3 et 5 par pingpong ?

 
<?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Écrivez une expression régulière basique permettant de valider une date de naissance (au format JJ/MM/AAAA)

Regexp :

Que pensez-vous du code suivant ?

 
<?php
$v = $_GET["prenom"];
echo "Bonjour $v !";
 
include('sql_connect.php');
 
$reply = mysql_query("INSERT INTO Visiteurs VALUES('" . $v . "')");
 
include('../../pages/' . $v . '.html');
die();
 

Réponse :

Écrivez en pseudo-algorithme un code calculant de façon récursive la factorielle d'un nombre n.

Pour rappel, factorielle(5) = 5 * 4 * 3 * 2 * 1.

fonction factorielle(n)








Connaissances informatiques

En programmation orientée objet, quelle est la particularité d'une classe abstraite ?

Réponse :

Rapidement, comment représenter des données hiérarchiques dans une base de données ?

Par exemple, un arbre de catégories : une catégorie principale qui peut avoir un ou plusieurs enfants, qui peuvent eux-même avoir un ou plusieurs enfants, etc.
Réponse :

Quand peut-on dire d'un graphe qu'il admet un parcours hamiltonien ?

Réponse :

Comment quitte-t-on l'éditeur de texte vi ?

Réponse :

Comment ouvrir une console sous Windows et afficher son adresse IP (sur Internet et/ou sur la box) ?

Réponse :

Quelle est la complexité (en notation grand O) d'un algorithme affichant tous les nombres de 1 à n, en remplaçant les multiples de 3 par ping, les multiples de 5 par pong et les multiples de 3 et 5 par pingpong ? (cf. questions code)

Réponse :

Quelle entreprise possède Youtube ?

Réponse :

En MVC, qui effectue les requêtes SQL permettant de récupérer un objet dont une des propriétés devra être affichée ?

Réponse :

Quel nombre suit F en hexadécimal ?

Réponse :

$\sum_{i=0}^{\infty} \frac{1}{i^2} = ?$

Réponse :

Bonus

You're the captain of a pirate ship and your crew gets to vote on how the gold is divided up. If fewer than half of the pirates agree with you, you die. How do you recommend apportioning the gold in such a way that you get a good share of the booty, but still survive ?

Code

Et comme je suis sympa, je vous mets le code du formulaire sur ce gist.
Mise à jour le Mercredi, 15 Juin 2011 12:45
 

Ajouter votre commentaire

Votre nom:
Votre site web:
Sujet:
Commentaire (vous pouvez utiliser de balises HTML ici):
  Code de vérification. Lettres minuscules seulement et sans espace.
Code de vérification:
Commentaires (3)
1Samedi, 11 Juin 2011 11:39
Peck
$\sum_{i=0}^{\infty} \frac{1}{i^2} = ?$ : je ne connais pas le langage, mais tu commence à 1/0 -> infini

la complexité d'un algorithme affichant tous les nombres de 1 à 50 : De 1 a 50 ou de 1 à n ?
Réponse de l'administrateur :
Lundi, 13 Juin 2011 16:33
Neamar
Exact pour la complexité, la question aurait gagnée à être "jusqu'à n".

Pour les maths, c'est du LaTeX. Et j'attendais la réponse "division par zéro" :) (ou pi²/6 pour ceux qui shuntaient le terme initial)
2Mardi, 14 Juin 2011 16:28
Nanocom
Pas sympa les regexp, je connais pas bien la syntaxe mais ça m'empêche pas de pouvoir en écrire des compliquées si je veux, en me replongeant dedans... Du coup j'ai pas pu répondre.

Tu devrais clarifier la question "Pouvez-vous rédiger en PHP (ou autre si inconnu) une classe de type utilisateur (propriétés et fonctions à votre discrétion) ? " car je vois pas ce que tu veux exactement.

Je note que l'INSA t'as clairement influencé dans l'élaboration de ce questionnaire, comme quoi :)

Pareil, la question "Comment quitte-t-on l'éditeur de texte vi ?" => Aucune idée, et c'est pas pour autant que je sais pas coder ni me servir de linux.

Pareil pour $\sum_{i=0}^{\infty} \frac{1}{i^2} = ?$ c'est du latex ? J'en sais rien et ça m'est pas utile pour développer. Si tu veux juste la réponse, dis-le explicitement (vers quelle valeur tend la somme de 0 à l'infini de 1/i²).

En tout cas, dans l'ensemble, ça sent carrément le genre de question "est-ce que t'es assez geek pour travailler avec moi ?" (ce qui n'est pas forcément une critique hein).

C'est mes réactions à chaud, sans avoir lu les réponses.
Réponse de l'administrateur :
Mercredi, 15 Juin 2011 12:41
Neamar
Pour les REGEXP, c'est quand même souvent utile, et là il s'agit d'opérateurs dont on sert tout le temps. Je partais pas dans les backreference ou parenthèses non capturantes non plus !

Pour la classe Utilisateur, effectivement, "modéliser" irait mieux.

Pour l'INSA... ah bon ? En quoi ?

Concernant vi, si tu ne sais pas quitter, c'est quand même la preuve que tu n'as jamais fait de dev sur un serveur. Après si tu me parlais d'emacs ou de nano... pourquoi pas, mais savoir faire le minimum en console est critique pour du web.

Pour le LaTeX, je veux voir si le gars sera capable de rédiger un compte rendu de R&D ou un dossier de documentation proprement ; la question mathématique n'est qu'une excuse car là je suis d'accord que savoir résoudre une série est inutile pour du dev.
3Mercredi, 15 Juin 2011 16:06
Nanocom
J'utilise effectivement nano pour administrer un serveur, je pense pas que ça soit les mêmes raccourcis que sur vi, si ?