25 points par xguru 2022-04-19 | 3 commentaires | Partager sur WhatsApp
  • 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

 
minhoryang 2022-04-20

Le point clé sera sans doute la rapidité avec laquelle on peut trouver le code correspondant.

 
hongminhee 2022-04-19

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é).

 
xguru 2022-04-19

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