Top 120 Questions d’Entretien sur Java – Partie 6

Questions d’Entretien sur Java avec des réponses pour la préparation des entretiens d’embauche, des tests en ligne, aux examens et aux certifications. Ces questions et réponses sur Java comprennent divers sujets. Et sont tirés d’un vrai entretien écrit et certaines parties sont en direct. Cette méthode d’apprentissage systématique préparera facilement toute personne pour réussir son entretien sur Java .
 
 

1. Pourquoi la synchronisation est-elle nécessaire?
L’exécution simultanée de différents processus est rendue possible par la synchronisation. Lorsqu’une ressource particulière est partagée entre plusieurs threads, il peut arriver que plusieurs threads aient besoin de la même ressource partagée.

La synchronisation permet de résoudre le problème de synchronisation et la ressource est partagée par un seul thread à la fois. Prenons un exemple pour mieux comprendre. Par exemple, vous avez une URL et vous devez trouver le nombre de demandes qui lui ont été faites. Deux demandes simultanées peuvent rendre le compte incorrect. Exemple:

public class Increment {
       private int i;
       public synchronized int addf() {
               i = i + 1;
               return i;
       }
}

Maintenant, la fonction addf() est rendue synchrone afin que l’accès simultané ne puisse avoir lieu.

 
 

2. Dans le code suivant, quelle est la signification de … ?
public void myMethod(String... variables){
   // code...
}
  • … est une fonctionnalité appelée varargs (variable arguments) qui a été introduite dans le contexte de Java 5.
  • La fonction ayant … dans l’exemple ci-dessus indique qu’elle peut recevoir plusieurs arguments du type String.
 
 

3. Définir System.out.println()
System.out.println() est utilisé pour afficher un message sur la console.

  • System: C’est une classe présente dans le package java.lang.
  • Out: est la variable statique de type PrintStream présente dans la classe System.
  • println(): est la méthode présente dans la classe PrintStream.
 
 

4. Pouvez-vous expliquer le cycle de vie d’un thread Java ?
Le cycle de vie des threads Java est le suivant :

New: Lorsque l’instance du thread est créée et que la méthode start() n’a pas été invoquée, le thread est considéré comme vivant et donc dans l’état NEW.

Runnable: Une fois que la méthode start() est invoquée, avant que la méthode run() ne soit appelée par la JVM, le thread est considéré comme étant dans l’état RUNNABLE (prêt à fonctionner). Cet état peut également être atteint à partir de l’état Waiting ou Sleeping du thread.

Running: Lorsque la méthode run() a été invoquée et que le thread commence son exécution, on dit que le thread est dans un état RUNNING.

Non-Runable (Blocked/Waiting): Lorsque le thread n’est pas capable de s’exécuter malgré le fait qu’il soit actif, on dit que le thread est dans un état NON-RUNNABLE. Idéalement, après un certain temps d’activité, le thread devrait passer à un état exécutable.

TERMINATED / Dead: Une fois que l’exécution de la méthode run() est terminée, on dit que le thread entre dans l’étape TERMINATED et on considère qu’il n’est plus vivant.
 

 
 

5. Est-il possible d’importer deux fois la même classe ou le même package en Java et que se passe-t-il pendant l’exécution ?
Oui. Il est possible d’importer une classe ou un package plus d’une fois, mais cela est redondant car la JVM ne charge en interne le package ou la classe qu’une seule fois.
 
 

6. Si un package a des sous-packages, suffira-t-il d’importer uniquement le package principal? Par exemple, l’importation de com.myPackage.* implique-t-elle également l’importation de com.myPackage.mySubPackage.* ?
NON. L’importation des sous-packages d’un package doit être faite explicitement. L’importation du package parent n’entraîne que l’importation des classes qu’il contient et non du contenu de ses enfants/sous-packages.
 
 

7. Le bloc finally sera-t-il exécuté si le code System.exit(0) est écrit à la fin du bloc try ?
NON. Le contrôle du programme après System.exit(0) est immédiatement perdu et le programme se termine, c’est pourquoi le bloc finally n’est jamais exécuté.
 
 

8. Quel est le résultat du code suivant et pourquoi ?
public class Exemple{
   public static void main(String[] args)
   {
       System.out.println('H' + 'e' + 'l' + 'l' + 'o');
   }
}
« Hello » aurait été le résultat affiché si les lettres avaient été utilisées entre guillemets doubles. Mais dans la question, ce sont utilisées entre guillemets simples, ce qui explique pourquoi la concaténation ne se produirait pas. Les valeurs ASCII correspondantes de chaque caractère seraient additionnées et le résultat de cette somme serait affiché.

Les valeurs ASCII de « H », « e », « l », « l » et « o » sont les suivantes :

  • ‘H’ = 72
  • ‘e’ = 101
  • ‘l’ = 108
  • ‘l’ = 108
  • ‘o’ = 111

72 + 101 + 108 + 108 + 111 = 500. Donc 500 serait affiché.

 
 

9. Quels sont les moyens possibles de rendre un objet éligible au garbage collection (GC) en Java ?
Première solution: Mettre les références de l’objet à null une fois que l’objectif est atteint.

public class Sol1 
{
  public static void main (String [] args)
  {
       String str = "Hello World!";
       // str référençant un objet String - pas encore éligible au GC
       str = null; // maintenant str est éligible pour le GC
   }
}

Deuxième solution: Faire pointer la variable de référence vers un autre objet. De cette manière, l’objet auquel la variable de référence faisait référence auparavant devient éligible au GC.

public class Sol2 
{
 public static void main(String [] args)
 {
     String str1 = "String 1";
     String str2 = "String 2";

     str1 = str2; // maintenant str1 est éligible pour le GC
 }
}
 
 

10. Laquelle des situations suivantes se produit lorsque le processus de « Garbage Collection » se déclenche pendant l’exécution du thread ?

A Le Garbage Collection n’a pas lieu pendant l’exécution du thread.

B Le thread se met en pause pendant l’exécution du processus de Garbage Collection.

C Les deux processus ont lieu simultanément et n’interfèrent pas avec son exécution.

D Rien ne se passe, le thread poursuit son exécution.

B
Le thread se met en pause pendant l’exécution du processus de Garbage Collection.
 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *