Question d'entretien pour Développeur Java

Comment profilez-vous un service Java en production sans le mettre hors ligne ?

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

Réponse rapide

Utilisez Flight Recorder, intégré à la JVM et conçu pour de l'enregistrement continu à faible surcoût. Démarrez-le avec jcmd sur un processus en cours, capturez une fenêtre, et ouvrez l'enregistrement dans Mission Control pour voir les méthodes chaudes, l'allocation par site, la contention de verrous, le ramasse-miettes et les taux d'exceptions. Pour des flame graphs mêlant frames natives et Java, un profileur asynchrone est le compagnon habituel, et les dumps de tas restent l'outil des fuites.

Pourquoi les recruteurs posent cette question

Le recruteur vérifie si vous savez enquêter sur un système vivant avec de vrais outils plutôt qu'ajouter des logs de chronométrage et redéployer. Savoir que Flight Recorder est fourni et sûr en production, et que les vues intéressantes sont l'allocation et la contention de verrous plutôt que le seul CPU, fait la différence. Cela ouvre aussi la discussion sur un profilage honnête, puisqu'un benchmark sur un JIT chaud n'est pas la production.

Comment structurer votre réponse

  • Nommez l'outil intégré et dites pourquoi il est sûr en production.
  • Décrivez comment vous démarrez un enregistrement sur un processus en cours.
  • Dites quelles vues vous regardez et dans quel ordre.
  • Ajoutez les outils complémentaires pour les fuites et les flame graphs.

Exemple de réponse

Exemple parlé, à la première personne

Flight Recorder d'abord, parce qu'il est livré avec la JVM et que le profil par défaut a un surcoût assez faible pour rester actif. Je m'attache avec jcmd sur le processus en cours, j'enregistre quelques minutes qui incluent le comportement lent, je fais un dump et je l'ouvre dans Mission Control. L'ordre dans lequel je regarde dépend du symptôme. Pour le CPU je vais aux méthodes chaudes, mais pour la latence j'apprends en général plus de l'allocation par site d'appel, parce qu'une allocation excessive pilote les pauses de collecte, et de la contention de verrous, où un bloc synchronized sur un chemin chaud saute aux yeux tout de suite. Le ramasse-miettes et les taux d'exceptions sont sur le même enregistrement, donc je peux corréler au lieu de deviner. Si je veux un flame graph qui montre les frames natives à côté de Java, j'utilise un profileur asynchrone, qui évite aussi le biais de safepoint des anciens profileurs par échantillonnage. Pour les fuites mémoire l'outil, c'est un dump de tas et un arbre de dominateurs, puisqu'un profil me montre l'allocation, pas la rétention. Et je compare toujours à un enregistrement de référence pris sur une période saine, parce qu'un profil seul n'a aucune notion de normal.

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

  • Quel surcoût ajoute le profil par défaut de Flight Recorder ?
  • Qu'est-ce que le biais de safepoint, et pourquoi compte-t-il pour les profileurs ?
  • Comment profileriez-vous un problème de démarrage plutôt qu'un régime établi ?

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