Un ramasse-miettes trouve les objets encore atteignables depuis les racines comme la pile et les globales, et récupère tout le reste. La plupart des collecteurs modernes sont générationnels, bâtis sur l'observation que la plupart des objets meurent jeunes, donc ils collectent souvent une petite pouponnière et rarement l'ancienne génération. Ça devient un problème quand les temps de pause mangent votre budget de latence, quand l'allocation dépasse la collecte, ou quand vous fuyez en gardant des références oubliées.
Pourquoi les recruteurs posent cette question
Les runtimes managés cachent la mémoire jusqu'au jour où ils ne la cachent plus, et le recruteur veut savoir si vous savez gérer ce jour-là. Il vérifie que vous comprenez l'atteignabilité plutôt que le folklore du comptage de références, que vous savez que la collecte générationnelle est la raison pour laquelle l'allocation courte est peu coûteuse, et que vous savez nommer les symptômes de pression sur le GC : temps de pause qui montent, occupation du tas qui grimpe après chaque collecte, débit qui chute sous charge.
Comment structurer votre réponse
- Expliquez l'atteignabilité depuis les racines, pas les compteurs de références.
- Décrivez la collecte générationnelle et pourquoi l'hypothèse tient.
- Nommez les modes d'échec : pauses, taux d'allocation, fuites.
- Dites comment vous le diagnostiqueriez avec de vrais outils.
Exemple de réponse
Le modèle mental, c'est l'atteignabilité. Le collecteur part des racines, la pile, les registres et les globales, parcourt tout ce qui est atteignable, et tout ce qu'il n'a jamais atteint est un déchet. La plupart des collecteurs sont générationnels parce que l'immense majorité des objets meurent presque immédiatement, donc on balaie souvent un petit espace jeune et on touche rarement l'espace ancien. C'est pour ça qu'allouer un objet à courte vie est presque gratuit, et qu'un cache à longue vie est la chose coûteuse. Ça devient un problème de trois façons. Les pauses, si une collecte stop the world tombe dans votre budget de p99. Le taux d'allocation, où vous produisez des déchets plus vite que le collecteur ne les récupère et le débit s'écroule. Et les fuites, qui dans un runtime managé veulent toujours dire que quelque chose tient encore une référence, en général une map statique ou un écouteur que personne n'a retiré. Quand j'ai chassé ça, je commence par les logs de GC et je regarde l'occupation du tas après chaque collecte. Si cette ligne monte sur plusieurs heures, c'est une fuite, et là c'est un dump de tas pour trouver qui la retient.
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
- Quelle est la différence entre une fuite et une simple forte consommation mémoire ?
- Comment réduiriez-vous l'allocation dans un chemin critique ?
- Quand règleriez-vous la taille du tas plutôt que le code ?
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