Top 120 Questions d’Entretien sur Java – Partie 4

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. Déterminez la sortie du programme java et expliquez pourquoi?
public class Exemple
{
	public static void main(String[] args) {
	    final int a;
	    a = 5;
	    int b = a+5;
	    a = b+5;
	    System.out.println(a + " " + b);
	}
}
Le code ci-dessus génère une erreur de compilation à la ligne 7 : [error : variable ‘a’ might have already been initialized]. C’est parce que la variable ‘a’ est une variable finale. Et les variables finales ne peuvent être initialisées qu’une seule fois, ce qui a déjà été fait à la ligne 5.
 
 

2. Quand pouvez-vous utiliser le mot-clé « super »?
Le mot-clé « super » est utilisé pour accéder aux champs cachés et aux méthodes ou attributs surchargés de la classe mère.
Voici les cas dans lesquels ce mot-clé peut être utilisé :

  • Accéder aux membres de données de la classe mère lorsque les membres de la classe et de ses sous-classes sont les mêmes.
  • Pour appeler le constructeur par défaut et paramétré de la classe mère à l’intérieur de la classe fils.
  • Accéder aux méthodes de la classe mère lorsque les classes fils les ont surchargées.
Java super
 
 

3. À part la sécurité, quelles sont les raisons de rendre les String immuables en Java?
String est rendue immuable pour les raisons suivantes :

  • Multithreading: La sécurité des threads concernant les objets String est un aspect important en Java. Aucune synchronisation externe n’est nécessaire si les objets String sont immuables. Ainsi, un code plus propre peut être écrit pour partager les objets String entre différents threads. Le processus complexe de la concurrence est facilité par cette méthode.
  • Collections: Dans le cas de Hashtables et HashMaps, les clés sont des objets String. Si les objets String ne sont pas immuables, ils peuvent être modifiés pendant leur présence dans les HashMaps. Par conséquent, la récupération des données souhaitées n’est pas possible. De nombreux risques sont liés à de tels changements d’état. Par conséquent, il est tout à fait sûr de rendre les String immuables.
 
 

4. Qu’est-ce qu’une classe Singleton en Java? Et comment implémenter une classe Singleton?
Les classes singleton sont des classes dont les objets ne sont créés qu’une seule fois. Et les membres de la classe ne sont accessibles qu’avec cet objet.
Le pattern Singleton
 
 

5. Comment différencier un String, un StringBuffer et un StringBuilder ?
  • Zone de stockage : Dans string, le pool String sert de zone de stockage. Pour StringBuilder et StringBuffer, la mémoire du tas sert de zone de stockage.
  • Mutabilité : String est immuable, alors que StringBuilder et StringBuffer sont mutables.
  • Efficacité : Il est assez lent de travailler avec un String. Cependant, le StringBuilder est le plus rapide pour effectuer des opérations. La vitesse d’un StringBuffer est supérieure à celle d’une String et inférieure à celle d’un StringBuilder. (Par exemple, l’ajout d’un caractère est plus rapide dans StringBuilder et très lent dans String car une nouvelle mémoire est nécessaire pour la nouvelle String avec le caractère ajouté).
  • Thread-safe : Dans le cas d’un environnement threadé, StringBuilder et StringBuffer sont utilisés alors qu’un String n’est pas utilisé. Cependant, StringBuilder convient à un environnement avec un seul thread, et StringBuffer convient à plusieurs threads.
Différence entre StringBuilder et StringBuffer
 
 

6. Quelle est la différence entre les interfaces et les classes abstraites?
  • Disponibilité des méthodes: Seules les méthodes abstraites sont disponibles dans les interfaces, alors que les méthodes non abstraites peuvent être présentes avec les méthodes abstraites dans les classes abstraites.
  • Types de variables: Les variables statiques et finales ne peuvent être déclarées que dans le cas des interfaces, alors que les classes abstraites peuvent également avoir des variables non statiques et non finales.
  • Héritage: Les interfaces facilitent les héritages multiples, alors que les classes abstraites ne le font pas.
  • Mise en œuvre: Grâce à une classe abstraite, l’implémentation d’une interface est facilement possible. Cependant, l’inverse n’est pas vrai;

Exemple de classe abstraite:

public abstract class Car {
   public abstract void speed();
   public abstract void stop();
}

Exemple d’une interface:

public interface Car {
   void speed();
   void stop();
}
Différence entre une interface et une classe abstraite en Java
 
 

7. A quoi sert l’interface Comparator en Java ?
Prenons l’exemple d’un ArrayList d’employés comme (id, nom, age), etc. Maintenant, si nous voulons trier cette liste d’employés sur la base des noms des employés. Alors il n’est pas possible de trier en utilisant la méthode « Collections.sort() ». Nous devons fournir quelque chose à la fonction « sort() » en fonction des valeurs que nous devons trier. Dans ce cas, on utilise l’interface Comparator.

Comparator est l’interface en Java qui contient la méthode compare. En surchargeant la méthode compare, nous pouvons définir sur quelle base nous devons comparer les valeurs.
Différence entre l'interface Comparable et Comparator

 
 

8. Quelle est la différence entre les mots-clés « throw » et « throws » en Java ?
Le mot clé ‘throw’ est utilisé pour lancer manuellement l’exception à la méthode appelante.

Et le mot-clé « throws » est utilisé dans la définition de la fonction pour informer la méthode appelante que cette méthode lance l’exception. Donc, si vous appelez, vous devez gérer l’exception.
Différence entre Throw et Throws

 
 

9. Déterminez la sortie du programme java ci-dessous et justifiez votre réponse.
class Main {
    public static void main(String args[]) {
        B b = new B(10);
    }
}

class A{
    A(){
        System.out.println(" Constructeur 1 de A ");
    }
}

class B extends A{
    B(){
        System.out.println(" Constructeur 1 de B ");
    }
    B(int x){
        this();
        super();
        System.out.println(" Constructeur 2 de B ");
    }
}
Le code ci-dessus va générer une erreur de compilation. C’est parce que super() est utilisé pour appeler le constructeur de la classe mère. Mais il y a une condition que super() doit être la première déclaration dans le bloc. Maintenant, dans ce cas, si nous remplaçons this() par super(), il y aura également une erreur de compilation. Parce que this() doit aussi être la première déclaration dans le bloc. Donc, en conclusion, nous pouvons dire que nous ne pouvons pas utiliser les mots-clés this() et super() dans le même bloc.
Introduction java
 
 

10. Java utilise « passage par valeur » ou « passage par référence » ?
Je vous recommande de lire cette discussion.
 

Laisser un commentaire

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