Question d'entretien pour Développeur Java

Comment choisissez-vous un ramasse-miettes, et que savez-vous de ZGC ?

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

Réponse rapide

G1 est celui par défaut et convient à la plupart des services : par régions, générationnel, avec une cible de pause configurable de l'ordre de la dizaine de millisecondes. ZGC est le choix quand le temps de pause domine, puisqu'il fait presque tout en concurrence et garde les pauses sous la milliseconde même sur de très grands tas ; il est générationnel par défaut depuis Java 23. Parallel GC reste gagnant en débit brut pour les traitements par lots où les pauses n'ont pas d'importance.

Pourquoi les recruteurs posent cette question

Le recruteur veut savoir si vous savez raisonner sur un compromis latence contre débit plutôt que recopier des options trouvées sur un blog. Nommer les valeurs par défaut actuelles montre que vos connaissances sont fraîches. Cela ouvre aussi la question plus importante de savoir si vous toucheriez au collecteur, puisque la plupart des problèmes de ramasse-miettes sont en réalité des problèmes de taux d'allocation ou de dimensionnement du tas dans l'application.

Comment structurer votre réponse

  • Posez le sujet comme un compromis entre latence, débit et empreinte mémoire.
  • Donnez la valeur par défaut et les cas où on peut la laisser tranquille.
  • Dites quand ZGC vaut son coût, et quel est ce coût.
  • Insistez sur la mesure avant de toucher la moindre option.

Exemple de réponse

Exemple parlé, à la première personne

Je commence par ne rien toucher, parce que G1 avec un tas correctement dimensionné gère la plupart des services, et il équilibre déjà le débit face à un objectif de pause que vous pouvez fixer. Je regarde les logs du ramasse-miettes avant quoi que ce soit : taux d'allocation, distribution des pauses, quantité promue, et si le tas n'est tout simplement pas trop petit. La plupart du temps, ce qui ressemble à un problème de collecteur est une application qui alloue beaucoup trop, ou un tas dimensionné si serré qu'il collecte en permanence. Si les pauses pilotent vraiment ma latence de queue, par exemple un service de trading ou d'enchères avec un grand tas, je passe à ZGC, qui fait le marquage et la relocation en concurrence avec des barrières de chargement et garde les pauses bien sous la milliseconde. Il est générationnel depuis Java 23, ce qui a corrigé la pénalité de débit qui faisait fuir les gens. Le compromis, c'est un surcoût en CPU et en mémoire pour ces barrières. Pour un traitement par lots de nuit, je fais l'inverse et j'utilise Parallel, puisqu'une pause de deux secondes n'a aucune importance et que c'est le débit brut que je veux.

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

  • Que regarderiez-vous en premier dans un log de ramasse-miettes ?
  • Qu'est-ce qu'une allocation humongous dans G1, et pourquoi fait-elle mal ?
  • Comment la taille du tas influe-t-elle sur les temps de pause et la fréquence des collectes ?

Autres questions pour Développeur Java

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