Question d'entretien pour Développeur full stack

Comment décidez-vous des index dont une table a besoin ?

Ce que le recruteur cherche à évaluer, comment structurer votre réponse et un exemple parlé à adapter.

Réponse rapide

Partez des requêtes, pas de la table. Regardez ce qui apparaît dans WHERE, JOIN et ORDER BY, puis construisez un index composite avec les colonnes d'égalité en premier et la colonne de plage ou de tri en dernier. Confirmez avec EXPLAIN ANALYZE qu'un index scan a remplacé un scan séquentiel. Chaque index coûte du débit en écriture et du stockage, donc supprimez ceux qui ne servent pas et évitez d'indexer seule une colonne à faible cardinalité.

Pourquoi les recruteurs posent cette question

L'indexation est la compétence base de données au plus fort effet de levier pour un développeur full stack, et elle est facile à simuler jusqu'à ce qu'on vous interroge sur l'ordre des colonnes. Le recruteur veut savoir si vous lisez les plans de requête, si vous comprenez qu'un index est une taxe sur l'écriture et pas de la vitesse gratuite, et si vous remarqueriez qu'ajouter un index par colonne est une erreur courante et coûteuse.

Comment structurer votre réponse

  • Dites que les index suivent les motifs de requête, pas le schéma.
  • Expliquez l'ordre des colonnes dans un index composite.
  • Décrivez comment vous vérifiez avec le plan de requête.
  • Nommez le côté coût : écritures, stockage, index inutilisés.

Exemple de réponse

Exemple parlé, à la première personne

Je travaille à rebours depuis le journal des requêtes lentes plutôt que de deviner au moment de la conception. Prenez une requête qui filtre sur tenant id et status et qui trie par created at. Le bon index là, c'est tenant id, status, created at dans cet ordre, parce que les prédicats d'égalité passent en premier et que la colonne de tri va en dernier pour que l'index puisse aussi satisfaire l'ordre. Mettez created at en premier et l'index est quasiment inutile pour cette requête. Ensuite je lance vraiment EXPLAIN ANALYZE et je vérifie que le plan a changé et que les estimations de lignes sont sensées, parce que le planificateur ignorera un index s'il pense qu'il va matcher la majeure partie de la table de toute façon. Côté coût, j'ai vu une table à forte écriture avec onze index où les inserts étaient le goulot, et en supprimer quatre inutilisés a à peu près doublé le débit d'ingestion. Dans Postgres, je regarde pg_stat_user_indexes pour repérer les index à zéro scan avant de proposer de supprimer quoi que ce soit, et je les crée en mode concurrent sur une table en production.

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 marche

Questions de relance à prévoir

  • Qu'est-ce qu'un index couvrant et quand aide-t-il ?
  • Pourquoi le planificateur pourrait-il ignorer un index que vous venez d'ajouter ?
  • Quand utiliseriez-vous plutôt un index partiel ?

Autres questions pour Développeur full stack

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

Répétez les questions difficiles avant qu'on vous les pose

Entraînez-vous avec un copilote en direct, puis présentez-vous prêt. Un Session Pass à $29 vous accompagne pendant l'entretien, sans abonnement et sans engagement.

Obtenir GhostPilot