- Exercice de programmation lié aux bases de données que j’ai reçu chez MemSQL (aujourd’hui SingleStore) en 2013
→ « Dans Memcached, qui est un magasin clé-valeur, ajoutez une commande mult similaire à incr / decr. Je vous donne 1 heure. »
- C’est une excellente question d’entretien technique, car elle répartit très clairement les candidats en trois catégories
- Type 0 : ceux qui sont surpris qu’il faille toucher à du vrai code. En pratique, ils n’arriveraient sans doute jamais jusque-là, mais il ne faut pas les recruter
→ À l’époque, MemSQL était développé en C++11, donc toucher à Memcached, écrit en C, correspondait bien à l’objectif.
- Type 1 : ceux qui voient le problème et disent « La multiplication, c’est une addition répétée, donc on devrait pouvoir réutiliser l’existant ! Mais il faut gérer les verrous, donc… »
→ Ils tournent en rond un bon moment, n’arrivent pas à produire un code fonctionnel et échouent. Eux non plus ne sont pas embauchés
- Type 2 : ceux qui disent « La multiplication, c’est pareil que l’addition, sauf qu’il faut faire
* à l’endroit où on fait + », puis font rapidement un copier-coller pour remplacer + par *
→ Les personnes de ce groupe ont de très fortes chances d’être recrutées
- Les meilleurs candidats… comme il leur reste beaucoup de temps, peuvent peaufiner leur rendu, vérifier la cohérence du formatage, ajouter des tests unitaires et même revoir certaines « décisions de conception »
Conclusion
- J’aime cet exercice de programmation parce que c’est une version réduite de la vraie programmation
- Quand on maintient une grosse base de code, il y a forcément du code qu’on ne comprend pas totalement, ou des idiomes inutiles
- Ce problème est parfait pour un entretien, car il n’y a qu’une seule bonne réponse : remplacer
bool incr par int opcode
- Il existe actuellement deux commandes d’opérations arithmétiques (
incr/decr), et il s’agit de les étendre à trois commandes
- Cet exercice est bien conçu pour écarter les candidats non qualifiés et orienter les candidats qualifiés vers une voie favorable
3 commentaires
Le point clé sera sans doute la rapidité avec laquelle on peut trouver le code correspondant.
Je pense que c’est mieux dans la mesure où il ne s’agit pas de réécrire un programme depuis zéro, mais d’ajouter des fonctionnalités à un code existant (et qui plus est à un projet open source déjà bien connu et largement utilisé).
Comme d’habitude sur HN… la personne qui avait posé la question d’entretien originale est apparue et fait un AMA. https://news.ycombinator.com/item?id=31065143