Choisissez une table de hachage quand vous n'avez besoin que de recherches, insertions et suppressions par clé, et que vous voulez du temps constant en moyenne. Choisissez un arbre équilibré quand vous avez besoin d'ordre : parcours d'intervalles, clé la plus proche, ou itération dans l'ordre trié, le tout en temps logarithmique. Les arbres offrent aussi un pire cas prévisible, alors qu'une table de hachage peut se dégrader fortement avec un mauvais hachage ou se bloquer sur un redimensionnement au mauvais moment.
Pourquoi les recruteurs posent cette question
C'est un indicateur de votre façon de choisir vos structures de données délibérément ou d'attraper un dictionnaire par réflexe. Le recruteur veut vous entendre relier le motif d'accès à la structure, savoir que la performance d'une table de hachage est une moyenne et non une garantie, et reconnaître quand l'ordre, les requêtes par intervalle ou une latence pire cas bornée font de l'arbre le bon choix.
Comment structurer votre réponse
- Énoncez les opérations pour lesquelles chaque structure est réellement bonne.
- Reliez le choix au motif d'accès de la question.
- Mentionnez le comportement pire cas, pas seulement la moyenne.
- Donnez un exemple où vous êtes passé de l'une à l'autre.
Exemple de réponse
Mon choix par défaut est une table de hachage, parce que la plupart du temps je fais des recherches ponctuelles par id et que le temps constant en moyenne est difficile à battre. Dès que le besoin implique de l'ordre, en revanche, je change. Tout ce qui ressemble à donne-moi tous les événements entre deux horodatages, ou trouve la clé suivante après celle-ci, est une requête par intervalle, et une table de hachage ne peut pas la traiter sans tout parcourir. Ça appelle un arbre, ou en pratique une structure triée avec recherche dichotomique. Je pense aussi à la traîne. Les recherches par hachage sont constantes en moyenne, mais une mauvaise fonction de hachage ou un rehachage peut faire un pic, et dans un budget de latence ça compte pour moi. Sur un classement que j'ai construit, on a commencé avec un dictionnaire utilisateur vers score et il fallait trier tout ça à chaque lecture. Une fois passés à un sorted set dans Redis, les lectures sont devenues logarithmiques et l'endpoint a arrêté de tomber aux heures de pointe. Mêmes données, motif d'accès différent, structure différente.
Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.
Voir comment ça marcheQuestions de relance à prévoir
- Que se passe-t-il pour une table de hachage quand beaucoup de clés entrent en collision ?
- Comment implémenteriez-vous un cache least recently used ?
- Quand un trie convient-il mieux que l'une ou l'autre ?
Autres questions pour Ingénieur logiciel
Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.
Prédire mes questions