Question d'entretien pour Développeur Java

Vous avez un service existant sur un pool de deux cents threads qui passe l'essentiel de son temps à attendre des appels en aval. Le feriez-vous passer aux threads virtuels, et comment ?

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

Réponse rapide

Oui, si le travail est bloquant en entrées/sorties plutôt que limité par le CPU. Passez le serveur et les executors de tâches à un executor qui crée un thread virtuel par tâche, puis retirez les hypothèses que l'ancien pool fournissait : ajoutez des limites explicites de concurrence en aval avec des sémaphores ou des pools de connexions, auditez les blocs synchronized et les appels natifs qui peuvent épingler un porteur, et vérifiez l'usage des ThreadLocal. Déployez derrière un drapeau et comparez le débit et la latence de queue.

Pourquoi les recruteurs posent cette question

C'est la version pratique de la question sur les threads virtuels, et elle révèle si vous comprenez ce qu'un pool borné faisait silencieusement pour vous. Le recruteur veut le point sur la limite de concurrence, l'audit du pinning et un déploiement mesuré plutôt qu'une bascule globale. Reconnaître que les services limités par le CPU n'y gagnent rien montre que vous ne prenez pas ça pour une mise à niveau magique.

Comment structurer votre réponse

  • Nuancez la décision : entrées/sorties bloquantes oui, limité par le CPU non.
  • Remplacez l'executor et la configuration des threads du serveur.
  • Rétablissez les limites explicites que l'ancien pool fournissait implicitement.
  • Auditez le pinning et le code chargé en ThreadLocal, puis mesurez.

Exemple de réponse

Exemple parlé, à la première personne

Si les threads sont surtout en attente sur des appels HTTP ou base de données, oui, parce que deux cents threads, c'est aussi deux cents requêtes concurrentes, et tout le reste fait la queue derrière. Le changement en lui-même est petit : faire tourner le serveur web sur des threads virtuels et remplacer les executors de tâches par un executor qui crée un thread virtuel par tâche. Le vrai travail porte sur ce que le pool faisait implicitement. C'était une limite de concurrence, donc une fois qu'elle disparaît je peux d'un coup avoir dix mille requêtes qui tapent une base avec un pool de cinquante connexions, et au lieu d'une file d'attente au pool de threads j'obtiens des expirations au pool de connexions. Donc je remets des limites explicites là où elles ont leur place, en général un sémaphore par dépendance en aval, dimensionné délibérément. Ensuite j'audite le pinning, beaucoup moins problématique sur les versions récentes puisque synchronized n'épingle plus, mais les appels natifs si. Je vérifie aussi que les ThreadLocal ne retiennent rien de volumineux, parce que des caches par thread qui allaient bien sur deux cents threads ne vont plus sur cent mille. Puis j'augmente le trafic derrière un drapeau et je surveille la latence de queue, pas seulement le débit.

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

  • Comment détectez-vous le pinning dans une application en cours d'exécution ?
  • Qu'est-ce qui remplace une ThreadLocal quand vous avez un million de threads ?
  • Comment dimensionneriez-vous le sémaphore pour un service en aval ?

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