Computing">
[Go to site: main page, start]

0% ont trouvé ce document utile (0 vote)
6 vues54 pages

Comprendre l'opérateur instanceof en Java

Le document présente des concepts clés de Java, y compris l'opérateur instanceof, l'abstraction, les classes abstraites, les interfaces, et la gestion des exceptions. Il explique également les différences entre abstraction et encapsulation, ainsi que les avantages de l'encapsulation. Enfin, il aborde les packages en Java et la gestion des exceptions, y compris les types d'exceptions et la hiérarchie des classes d'exception.

Transféré par

mohamedhedibenkhoudja
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues54 pages

Comprendre l'opérateur instanceof en Java

Le document présente des concepts clés de Java, y compris l'opérateur instanceof, l'abstraction, les classes abstraites, les interfaces, et la gestion des exceptions. Il explique également les différences entre abstraction et encapsulation, ainsi que les avantages de l'encapsulation. Enfin, il aborde les packages en Java et la gestion des exceptions, y compris les types d'exceptions et la hiérarchie des classes d'exception.

Transféré par

mohamedhedibenkhoudja
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

106) Qu'est-ce que l'opérateur Java instanceOf?

L'instanceof en Java est également appelée opérateur de comparaison de type car elle compare l'instance à type. Il
retourne soit vrai ou faux. Si nous appliquons l'opérateur instanceof à toute variable ayant une valeur null, elle renvoie
false. Prenons l'exemple suivant.

1. class Simple1{
2. public static void main(String args[]){
3. Simple1 s=new Simple1();
4. [Link](s instanceof Simple1);//true
5. }
6. }
Testez-le maintenant

Sortie

true

Un objet de type sous-classe est également un type de classe parent. Par exemple, si Chien étend Animal, l'objet de
Chien peut être référencé par la classe Dog ou Animal.

Questions d'entretiens chez Core Java - OOPs Concepts: Abstraction

107) Qu'est-ce que l'abstraction?


L'abstraction est un processus consistant à masquer les détails de la mise en œuvre et à afficher uniquement les
fonctionnalités de l'utilisateur. Il affiche uniquement les éléments essentiels à l'utilisateur et masque les informations
internes, par exemple, l'envoi de SMS à l'endroit où vous tapez le texte et envoyez le message. Vous ne connaissez pas
le traitement interne relatif à la livraison du message. L'abstraction vous permet de vous concentrer sur ce que fait
l'objet au lieu de savoir comment il le fait. L'abstraction vous permet de vous concentrer sur ce que fait l'objet au lieu
de savoir comment il le fait.

En Java, il y a deux façons de réaliser l'abstraction.

o Abstract Class
o Interface

108) Quelle est la différence entre abstraction et encapsulation?


L'abstraction masque les détails de l'implémentation, tandis que l'encapsulation enveloppe le code et les données dans
une seule unité.

Plus de détails.

109) Quelle est la classe abstraite?


Une classe déclarée abstraite est appelée classe abstraite. Il doit être étendu et sa méthode mise en œuvre. Il ne peut
pas être instancié. Il peut avoir des méthodes abstraites, des méthodes non abstraites, des constructeurs et des
méthodes statiques. Il peut également avoir les méthodes finales qui forceront la sous-classe à ne pas changer le corps
de la méthode. Prenons l'exemple suivant.
1. abstract class Bike{
2. abstract void run();
3. }
4. class Honda4 extends Bike{
5. void run(){[Link]("running safely");}
6. public static void main(String args[]){
7. Bike obj = new Honda4();
8. [Link]();
9. }
10. }
Testez-le maintenant

Sortie

courir en toute sécurité

110) Peut-il y avoir une méthode abstraite sans classe abstraite?


Non, s'il y a une méthode abstraite dans une classe, cette classe doit être abstraite.

111) Le programme suivant est-il écrit correctement? Si oui, quel sera le résultat du
programme?

1. abstract class Calculate


2. {
3. abstract int multiply(int a, int b);
4. }
5.
6. public class Main
7. {
8. public static void main(String[] args)
9. {
10. int result = new Calculate()
11. {
12. @Override
13. int multiply(int a, int b)
14. {
15. return a*b;
16. }
17. }.multiply(12,32);
18. [Link]("result = "+result);
19. }
20. }

Oui, le programme est écrit correctement. La classe Main fournit la définition de la méthode abstraite multiply déclarée
dans la classe abstraite Calculation. Le résultat du programme sera:

Sortie

384

112) Pouvez-vous utiliser les méthodes abstraite et finale avec une méthode?
Non, car nous devons remplacer la méthode abstraite pour fournir son implémentation, alors que nous ne pouvons pas
remplacer la méthode finale.
113) Est-il possible d'instancier la classe abstraite?
Non, la classe abstraite ne peut jamais être instanciée même si elle contient un constructeur et que toutes ses
méthodes sont implémentées.

114) Quelle est l'interface?


L'interface est un plan directeur pour une classe qui a des constantes statiques et des méthodes abstraites. Il peut être
utilisé pour obtenir une abstraction complète et un héritage multiple. C'est un mécanisme pour atteindre
l'abstraction. Il ne peut y avoir que des méthodes abstraites dans l'interface Java, pas un corps de méthode. Il est utilisé
pour obtenir une abstraction et un héritage multiple en Java. En d'autres termes, vous pouvez dire que les interfaces
peuvent avoir des méthodes et des variables abstraites. L'interface Java représente également la relation IS-A. Il ne
peut pas être instancié comme la classe abstraite. Cependant, nous devons l'implémenter pour définir ses
méthodes. Depuis Java 8, nous pouvons avoir les méthodes par défaut, statiques et privées dans une interface.

115) Pouvez-vous déclarer une méthode d'interface statique?


Non, parce que les méthodes d'une interface sont abstraites par défaut et que nous ne pouvons pas utiliser ensemble
statique et abstrait.

116) Est-ce que l'interface peut être finale?


Non, car une interface doit être implémentée par l'autre classe et si elle est finale, elle ne peut être implémentée par
aucune classe.

117) Qu'est-ce qu'une interface de marqueur ( marker interface )?


Une interface de marqueur peut être définie en tant qu'interface qui n'a pas de membre de données ni de fonction de
membre. Par exemple, Serializable, Cloneable sont des interfaces de marqueur. L'interface du marqueur peut être
déclarée comme suit.

1. public interface Serializable{


2. }

118) Quelles sont les différences entre la classe abstraite et l'interface?

Classe abstraite Interface

Une classe abstraite peut avoir un corps de méthode L'interface n'a que des méthodes abstraites.
(méthodes non abstraites).

Une classe abstraite peut avoir des variables d'instance. Une interface ne peut pas avoir de variables
d'instance.
Une classe abstraite peut avoir le constructeur. L'interface ne peut pas avoir le constructeur.

Une classe abstraite peut avoir des méthodes statiques. L'interface ne peut pas avoir de méthodes statiques.

Vous pouvez étendre une classe abstraite. Vous pouvez implémenter plusieurs interfaces.

La classe abstraite peut fournir l'implémentation de L'interface ne peut pas fournir l'implémentation
l'interface . de la classe abstraite .

Le mot clé abstract est utilisé pour déclarer une classe Le mot clé interface est utilisé pour déclarer une
abstraite. interface.

Une classe abstraite peut étendre une autre classe Java Une interface peut uniquement étendre une autre
et implémenter plusieurs interfaces Java. interface Java.

Une classe abstraite peut être étendue en utilisant Une classe d'interface peut être implémentée en
mot - clé extend utilisant des implements de mots clés

Une classe abstraite Java peut avoir des membres de Les membres d'une interface Java sont publics par
classe comme privés, protégés, etc. défaut.

Exemple: Exemple:
classe abstraite publique Shape { interface publique Drawable {
public abstract void draw (); void draw ();
} }

119) Peut-on définir des modificateurs privés et protégés pour les membres dans les
interfaces?
Non, ils sont implicitement publics.

120) Quand une référence d'objet peut-elle être convertie en une référence
d'interface?
Une référence d'objet peut être convertie en une référence d'interface lorsque l'objet implémente l'interface
référencée.

121) Comment faire une classe en lecture seule en Java?


Une classe peut être rendue en lecture seule en rendant tous les champs privés. La classe en lecture seule n'aura que
des méthodes getter qui renverront la propriété privée de la classe à la méthode main. Nous ne pouvons pas modifier
cette propriété car aucune méthode de définition n'est disponible dans la classe. Prenons l'exemple suivant.

1. /A Java class which has only getter methods.


2. public class Student{
3. //private data member
4. private String college="AKG";
5. //getter method for college
6. public String getCollege(){
7. return college;
8. }
9. }
10. }

122) Comment créer une classe en écriture seule en Java?


Une classe peut être rendue en écriture seule en rendant tous les champs privés. La classe en écriture seule aura
uniquement des méthodes de définition qui définissent la valeur transmise de la méthode principale aux champs
privés. Nous ne pouvons pas lire les propriétés de la classe car il n'y a pas de méthode getter dans cette
classe. Prenons l'exemple suivant.

1. //A Java class which has only setter methods.


2. public class Student{
3. //private data member
4. private String college;
5. //getter method for college
6. public void setCollege(String college){
7. [Link]=college;
8. }
9. }
10.

123) Quels sont les avantages de l’encapsulation en Java?


Il existe les avantages suivants de l’encapsulation en Java?

o En fournissant uniquement la méthode setter ou getter, vous pouvez rendre la classe en lecture seule ou en
écriture seule. En d'autres termes, vous pouvez ignorer les méthodes getter ou setter.
o Il vous permet de contrôler les données. Supposons que vous souhaitiez définir la valeur de id, qui ne devrait
être supérieure à 100, vous pouvez écrire la logique dans la méthode setter. Vous pouvez écrire la logique
pour ne pas stocker les nombres négatifs dans les méthodes de définition.
o C'est un moyen de masquer les données en Java car les autres classes ne pourront pas accéder aux données
via les membres de données privées.
o La classe encapsulate est facile à tester. Donc, c'est mieux pour les tests unitaires.
o Les IDE standard fournissent la possibilité de générer les getters et les setters. Il est donc facile et rapide de
créer une classe encapsulée en Java.

Core Java - OOPs Concepts: Questions d’entrevue pour les packages

124) Quel est le package?


Un package est un groupe de types similaires de classes, d'interfaces et de sous-packages. Il fournit une protection
d'accès et supprime les conflits de nommage. Les packages en Java peuvent être classés en deux formes: package
intégré et package défini par l'utilisateur. Il existe de nombreux packages intégrés tels que Java, lang, awt, javax,
swing, net, io, util, sql, etc. Considérez l'exemple suivant pour créer un package en Java.

1. //save as [Link]
2. package mypack;
3. public class Simple{
4. public static void main(String args[]){
5. [Link]("Welcome to package");
6. }
7. }

125) Quels sont les avantages de la définition de packages en Java?


En définissant des packages, nous pouvons éviter les conflits de noms entre les mêmes noms de classe définis dans
différents packages. Les packages permettent également au développeur d'organiser plus efficacement les classes
similaires. Par exemple, on peut clairement comprendre que les classes présentes dans le package [Link] sont utilisées
pour effectuer des opérations liées à io.

126) Comment créer des packages en Java?


Si vous utilisez les IDE de programmation tels qu'Eclipse, NetBeans, MyEclipse, etc., cliquez sur fichier-> nouveau->
projet et eclipse vous demandera de saisir le nom du package. Il créera le package de projet contenant divers
répertoires tels que src, etc. Si vous utilisez un éditeur tel que le bloc-notes pour la programmation java, procédez
comme suit pour créer le package.

o Définissez un package nom_package . Créez la classe avec le nom class_name et enregistrez ce fichier
avec your_class_name.java .

o Maintenant, compilez le fichier en exécutant la commande suivante sur le terminal.


1. javac -d . your_class_name.java

La commande ci-dessus crée le package avec le nom package_name dans le répertoire de travail actuel.

o Maintenant, exécutez le fichier de classe en utilisant le nom de fichier de classe absolu, comme suit.

1. java nom_package.nom_classe

127) Comment pouvons-nous accéder à une classe dans une autre classe en Java?
Il existe deux manières d'accéder à une classe d'une autre classe.

o En utilisant le nom complet: Pour accéder à une classe dans un package différent, vous devez utiliser le
nom complet de cette classe ou importer le package contenant cette classe.
o En utilisant le chemin relatif , nous pouvons utiliser le chemin de la classe associée au package contenant
notre classe. Ce peut être le même ou un sous-package.

128) Dois-je importer le package [Link] à tout moment? Pourquoi?


Non. Il est chargé par défaut en interne par la machine virtuelle Java.
129) Puis-je importer le même package / classe deux fois? La machine virtuelle Java
chargera-t-elle le package deux fois au moment de l'exécution?
On peut importer le même package ou la même classe plusieurs fois. Ni le compilateur ni JVM ne s'en
plaint. Cependant, la machine virtuelle Java charge la classe en interne une seule fois, peu importe le nombre
d'importations de la même classe.

130) Qu'est-ce que l'importation statique?


Par importation statique, nous pouvons accéder directement aux membres statiques d'une classe et il n'est pas
possible de la qualifier avec le nom de la classe.

Java: Exception Handling Interview Questions

Il est donné une liste de questions d'entrevue de traitement d'exception avec des réponses. Si vous connaissez une
question d’entretien avec une exception, veuillez la poster dans la section commentaire.

131) Combien de types d'exceptions peuvent se produire dans un programme Java?


Il existe principalement deux types d'exceptions: cochée et non cochée. Ici, une erreur est considérée comme une
exception non contrôlée. Selon Oracle, il existe trois types d'exceptions:

o Exception cochée(checked) : Les exceptions cochées sont celles qui sont vérifiées lors de la compilation. Par
exemple, SQLException, ClassNotFoundException, etc.

o Exception non contrôlée(unchecked) : les exceptions non contrôlées sont celles qui sont gérées au moment
de l'exécution car elles ne peuvent pas être vérifiées au moment de la compilation. Par exemple,
ArithmaticException, NullPointerException, ArrayIndexOutOfBoundsException, etc.

o Erreur(Error): Une erreur entraîne la fermeture du programme car ils ne sont pas récupérables. Par
exemple, OutOfMemoryError, AssertionError, etc.

132) Qu'est-ce que la gestion des exceptions(Exception Handling)?


Le traitement des exceptions est un mécanisme utilisé pour gérer les erreurs d'exécution. Il est principalement utilisé
pour gérer les exceptions vérifiées. La gestion des exceptions maintient le flux normal du programme. Il existe
principalement deux types d'exceptions: cochée et non cochée. Ici, l'erreur est considérée comme une exception non
contrôlée.

133) Expliquez la hiérarchie des classes d’exception Java?


La classe [Link] est la classe racine de la hiérarchie des exceptions Java, héritée de deux sous-classes:
Exception et Error.
1) exception vérifiée
Les classes qui étendent la classe Throwable à l'exception de RuntimeException et Error sont appelées exceptions
vérifiées, par exemple IOException, SQLException, etc. Les exceptions vérifiées sont vérifiées au moment de la
compilation.

2) Exception non contrôlée


Les classes qui étendent une exception RuntimeException sont appelées exceptions non contrôlées, par exemple,
ArithmeticException, NullPointerException, etc. Les exceptions non vérifiées ne sont pas vérifiées au moment de la
compilation.

135) Quelle est la classe de base pour Error et Exception?


La classe Throwable est la classe de base pour Error et Exception.

136) Est-il nécessaire que chaque bloc try doit être suivi d'un bloc catch?
Il n'est pas nécessaire que chaque bloc try soit suivi d'un bloc catch. Il devrait être suivi d'un bloc catch OU d'un bloc
finally. Ainsi, toutes les exceptions susceptibles d'être levées doivent être déclarées dans la clause throws de la
méthode. Prenons l'exemple suivant.

1. public class Main{


2. public static void main(String []args){
3. try{
4. int a = 1;
5. [Link](a/0);
6. }
7. finally
8. {
9. [Link]("rest of the code...");
10. }
11. }
12. }

Sortie:

Exception dans le thread principal [Link]: / by zero


reste du code ...

137) Quel est le résultat du programme Java suivant?

1. public class ExceptionHandlingExample {


2. public static void main(String args[])
3. {
4. try
5. {
6. int a = 1/0;
7. [Link]("a = "+a);
8. }
9. catch(Exception e){[Link](e);}
10. catch(ArithmeticException ex){[Link](ex);}
11. }
12. }

Sortie

[Link]: erreur: exception ArithmeticException a


déjà été interceptée
catch (ArithmeticException ex) {[Link] (ex);}
^
1 erreur

Explication

ArithmaticException est la sous-classe de Exception. Par conséquent, il ne peut pas être utilisé après
Exception. Comme Exception est la classe de base pour toutes les exceptions, elle doit donc être utilisée pour gérer
l’exception. Aucune classe ne peut être utilisée après cela.

138) Qu'est-ce qui est finally block?


Le bloc "finally" est utilisé pour exécuter le code important du programme. Il est exécuté qu'une exception soit gérée
ou non. En d'autres termes, on peut dire que finalement bloc est le bloc qui est toujours exécuté. Enfin, bloc suit essaie
ou attrape bloc. Si vous ne gérez pas l'exception, avant de mettre fin au programme, JVM exécute enfin block (le cas
échéant). Le bloc finally est principalement utilisé pour placer le code de nettoyage tel que la fermeture d'un fichier ou
la fermeture d'une connexion. Ici, il faut savoir que pour chaque bloc try, il peut y avoir zéro ou plusieurs blocs catch,
mais un seul bloc. Le bloc finally ne sera pas exécuté si le programme se termine (soit en appelant [Link] (), soit
en provoquant une erreur fatale entraînant l’abandon du processus).

139) Enfin, le finally block peut-il être utilisé sans catch?


Oui, selon la définition de finally block, il doit être suivi d'un bloc try ou catch, nous pouvons donc utiliser try block au
lieu de catch. P

140) Y a-t-il un cas où finally ne sera pas exécuté?


Enfin, block ne sera pas exécuté si le programme se termine (soit en appelant [Link] (), soit en provoquant une
erreur fatale entraînant l'abandon du processus).

141) Quelle est la différence entre un lancer et un lancer?

Throw throws

1) Le mot-clé throw est utilisé pour lever Le throws mot - clé est utilisé pour déclarer une exception.
explicitement une exception.

2) Les exceptions vérifiées ne peuvent pas être L'exception cochée peut être propagée avec des throws
propagées uniquement par projection.

3) Le mot clé throw est suivi d'une instance. Le mot-clé throws est suivi par la classe.

4) Le mot clé throw est utilisé dans la méthode. Le throws mot - clé est utilisé avec la signature de la méthode.

5) Vous ne pouvez pas lancer plusieurs Vous pouvez déclarer plusieurs exceptions, par exemple,
exceptions. méthode publique void () lève IOException, SQLException.

142) Quel est le résultat du programme Java suivant?

1. public class Main{


2. public static void main(String []args){
3. try
4. {
5. throw 90;
6. }
7. catch(int e){
8. [Link]("Caught the exception "+e);
9. }
10.
11. }
12. }

Sortie

[Link]: error: incompatible types: int cannot be converted to Throwable


throw 90;
^
[Link]: error: unexpected type
catch(int e){
^
required: class
found: int
2 errors

Explication

En Java, les objets throwable ne peuvent être lancés. Si nous essayons de lancer un objet entier, le compilateur
affichera une erreur car nous ne pouvons pas lancer le type de données de base d'un bloc de code.

143) Quel est le résultat du programme Java suivant?

1. class Calculation extends Exception


2. {
3. public Calculation()
4. {
5. [Link]("Calculation class is instantiated");
6. }
7. public void add(int a, int b)
8. {
9. [Link]("The sum is "+(a+b));
10. }
11. }
12. public class Main{
13. public static void main(String []args){
14. try
15. {
16. throw new Calculation();
17. }
18. catch(Calculation c){
19. [Link](10,20);
20. }
21. }
22. }

Sortie

Calculation class is instantiated


The sum is 30

Explication

L'objet de calcul est lancé depuis le bloc try qui est pris dans le bloc catch. La classe add () de Calculation est appelée
avec les valeurs entières 10 et 20 en utilisant l'objet de cette classe. Par conséquent, la somme 30 est
imprimée. L'objet de la classe Main ne peut être levé que dans le cas où le type de l'objet est jetable. Pour ce faire,
nous devons élargir la classe des objets jetables.

144) Une exception peut-elle être renversée?


Oui.

145) La méthode de substitution de sous-classe peut-elle déclarer une exception si


la méthode de la classe parent ne lève pas d'exception?
Oui mais seule unchecked exception non cochée.

146) Qu'est-ce que la propagation des exceptions?


Une exception est d'abord levée du haut de la pile et si elle n'est pas interceptée, elle tombe dans la pile d'appels à la
méthode précédente. Si elle n'est pas interceptée, l'exception redescend à la méthode précédente, et ainsi de suite
jusqu'à ce qu'elles soient pris ou jusqu’à ce qu’ils atteignent le bas de la pile d’appel. Cette procédure s'appelle
propagation d'exception. Par défaut, les exceptions vérifiées ne sont pas propagées.

1. class TestExceptionPropagation1{
2. void m(){
3. int data=50/0;
4. }
5. void n(){
6. m();
7. }
8. void p(){
9. try{
10. n();
11. }catch(Exception e){[Link]("exception handled");}
12. }
13. public static void main(String args[]){
14. TestExceptionPropagation1 obj=new TestExceptionPropagation1();
15. obj.p();
16. [Link]("normal flow...");
17. }
18. }

Sortie:

exception handled
normal flow...

147) Quel est le résultat du programme Java suivant?

1. public class Main


2. {
3. void a()
4. {
5. try{
6. [Link]("a(): Main called");
7. b();
8. }catch(Exception e)
9. {
10. [Link]("Exception is caught");
11. }
12. }
13. void b() throws Exception
14. {
15. try{
16. [Link]("b(): Main called");
17. c();
18. }catch(Exception e){
19. throw new Exception();
20. }
21. finally
22. {
23. [Link]("finally block is called");
24. }
25. }
26. void c() throws Exception
27. {
28. throw new Exception();
29. }
30.
31. public static void main (String args[])
32. {
33. Main m = new Main();
34. m.a();
35. }
36. }

Sortie

a(): Main called


b(): Main called
finally block is called
Exception is caught

Explication

Dans la méthode principale, on appelle a () de Main, qui imprime un message et appelle b (). La méthode b () affiche un
message puis appelle c (). La méthode c () lève une exception qui est gérée par le bloc catch de la méthode
b. Cependant, il propage cette exception en utilisant throw Exception () à gérer par la méthode a (). Comme nous le
savons, le bloc final est toujours exécuté, c'est pourquoi le bloc final de la méthode b () est d'abord exécuté et affiche
un message. Enfin, l'exception est gérée par le bloc catch de la méthode a ().

148) Quel est le résultat du programme Java suivant?


1. public class Calculation
2. {
3. int a;
4. public Calculation(int a)
5. {
6. this.a = a;
7. }
8. public int add()
9. {
10. a = a+10;
11. try
12. {
13. a = a+10;
14. try
15. {
16. a = a*10;
17. throw new Exception();
18. }catch(Exception e){
19. a = a - 10;
20. }
21. }catch(Exception e)
22. {
23. a = a - 10;
24. }
25. return a;
26. }
27.
28. public static void main (String args[])
29. {
30. Calculation c = new Calculation(10);
31. int result = [Link]();
32. [Link]("result = "+result);
33. }
34. }

Sortie

result = 290

Explication

La variable d'instance a de la classe Calculation est initialisée à 10 à l'aide du constructeur de la classe appelé lors de
l'instanciation de la classe. La méthode add est appelée et renvoie un résultat de valeur entière. Dans la méthode add
(), a est incrémenté de 10 pour être égal à 20. Ensuite, dans le premier bloc d’essai, 10 est à nouveau incrémenté de
10 pour être égal à 30. Dans le deuxième bloc d’essai, a est multiplié par 10 pour être égal à 300. try block lève
l'exception qui est interceptée par le bloc catch associé à ce bloc try. Le bloc catch modifie à nouveau la valeur de a en
la décrémentant de 10 pour en faire 290. Ainsi, la méthode add () renvoie 290 qui est affectée au résultat. Cependant,
le bloc catch associé au bloc try le plus à l'extérieur ne sera jamais exécuté car il n'y a pas d'exception pouvant être
gérée par ce bloc catch.

Questions d'entretiens chez Java: String Handling

Une liste de questions d’entretien avec des réponses courtes et précises est donnée. Si vous connaissez une question
d’entretien avec le traitement des chaînes, merci de la poster dans la section commentaires.
149) Qu'est-ce que le pool de chaînes ( String pool)?
Le pool de chaînes est l'espace réservé dans la mémoire de pile pouvant être utilisé pour stocker les chaînes. Le
principal avantage de l'utilisation du pool String est que nous créons un littéral de chaîne. la machine virtuelle Java
vérifie d'abord le "pool de constantes de chaînes". Si la chaîne existe déjà dans le pool, une référence à l'instance en
pool est renvoyée. Si la chaîne n'existe pas dans le pool, une nouvelle instance de chaîne est créée et placée dans le
pool. Par conséquent, il enregistre la mémoire en évitant la duplication.

150) Quel est le sens du mot immutable concernant String?


La simple signification de immutable est non modifiable . En Java, String est immutable, c'est-à-dire qu'une fois que
l'objet string a été créé, sa valeur ne peut plus être modifiée. Considérez l'exemple suivant pour une meilleure
compréhension.

1. classe Testimmutablestring {
2. public static void main (String args []) {
3. String s = "Sachin" ;
4. [Link] ( "Tendulkar" ); // la méthode concat () ajoute la chaîne à la fin
5. [Link] (s); // imprimera Sachin car les chaînes sont des objets immuables
6. }
7. }

Sortie:

Sachin

151) Pourquoi les objets sont-ils immuables(immutable) en Java?


Parce que Java utilise le concept de littéral chaîne. Supposons qu'il y a cinq variables de référence, toutes se rapportant
à un objet "sachin". Si une variable de référence change la valeur de l'objet, elle sera affectée par toutes les variables
de référence. C'est pourquoi les objets string sont immuables en Java.

152) De combien de façons pouvons-nous créer l'objet chaîne?

1) String literal

Le littéral Java est créé à l'aide de guillemets doubles. Par exemple:

1. String s = "bienvenue" ;

Chaque fois que vous créez un littéral de chaîne, la machine virtuelle Java vérifie d'abord le "pool de chaînes
constant". Si la chaîne existe déjà dans le pool, une référence à l'instance en pool est renvoyée. Si la chaîne n'existe
pas dans le pool, une nouvelle instance de chaîne est créée et placée dans le pool. Les objets de chaîne sont stockés
dans une zone de mémoire spéciale appelée pool de constantes de chaîne. Par exemple:

1. String s1 = "Bienvenue" ;
2. String s2 = "Bienvenue" ; // Il ne crée pas une nouvelle instance

2) Par nouveau mot clé


1. String s = new String ( "Bienvenue" ); // crée deux objets et une variable de référence

Dans ce cas, la machine virtuelle Java crée un nouvel objet chaîne dans la mémoire heap normale (sans pool) et le
littéral "Welcome" est placé dans le pool de chaînes constantes. La variable s fera référence à l'objet dans un tas (non-
pool).

153) Combien d'objets seront créés dans le code suivant?

1. String s1 = "Bienvenue" ;
2. String s2 = "Bienvenue" ;
3. String s3 = "Bienvenue" ;

Un seul objet sera créé à l'aide du code ci-dessus car les chaînes en Java sont immuables.

154) Pourquoi Java utilise-t-il le concept du littéral chaîne(String literal)?


Pour rendre Java plus efficace en termes de mémoire (car aucun nouvel objet n'est créé s'il existe déjà dans le pool de
constantes de chaînes).

155) Combien d'objets seront créés dans le code suivant?

1. String s = new String ( "Bienvenue" );

Deux objets, l'un dans le pool de constantes de chaîne et l'autre dans le non-pool (tas).

156) Quel est le résultat du programme Java suivant?

1. public class Test


2.
3. public static void main (String args[])
4. {
5. String a = new String("Sharma is a good player");
6. String b = "Sharma is a good player";
7. if(a == b)
8. {
9. [Link]("a == b");
10. }
11. if([Link](b))
12. {
13. [Link]("a equals b");
14. }
15. }

Sortie

a equals b

Explication

L'opérateur == vérifie également si les références des deux objets de chaîne sont égales ou non. Bien que les deux
chaînes contiennent le même contenu, leurs références ne sont pas égales car elles sont créées de différentes façons
(constructeur et littéral de chaîne). Par conséquent, a == b est inégal. D'autre part, la méthode equal () vérifie toujours
le contenu. Etant donné que leur contenu est égal, un égal est alors imprimé.
157) Quel est le résultat du programme Java suivant?

1. public class Test


2. {
3. public static void main (String args[])
4. {
5. String s1 = "Sharma is a good player";
6. String s2 = new String("Sharma is a good player");
7. s2 = [Link]();
8. [Link](s1 ==s2);
9. }
10. }

Sortie

True

Explication

La méthode intern renvoie la référence à l'objet String du pool de chaînes. Dans ce cas, s1 est créé à l'aide de chaînes
littérales alors que s2 est créé à l'aide du pool String. Cependant, s2 est remplacé par la référence de s1 et
l'opérateur == renvoie true.

158) Quelles sont les différences entre String et StringBuffer?


Les différences entre String et StringBuffer sont indiquées dans le tableau ci-dessous.

Non String StringBuffer


.

1) La classe String est immuable. La classe StringBuffer est modifiable.

2) La chaîne est lente et consomme plus de mémoire lorsque Le StringBuffer est rapide et utilise
vous concattez trop de chaînes, car elle crée chaque fois une moins de mémoire lorsque vous
nouvelle instance. concaténez des chaînes.

3) La classe String remplace la méthode equals () de la classe La classe StringBuffer ne remplace pas
Object. Vous pouvez donc comparer le contenu de deux la méthode equals () de la classe Object.
chaînes avec la méthode equals ().

159) Quelles sont les différences entre StringBuffer et StringBuilder?


Les différences entre StringBuffer et StringBuilder sont indiquées ci-dessous.

Non StringBuffer StringBuilder


.

1) StringBuffer est synchronisé , c.-à-d. Qu'il StringBuilder n'est pas synchronisé , c'est -à- dire
est thread-safe. Cela signifie que deux threads ne qu'il n'est pas [Link] signifie que deux
peuvent pas appeler les méthodes de StringBuffer threads peuvent appeler les méthodes de
simultanément. StringBuilder simultanément.

2) StringBuffer est moins efficace que StringBuilder. StringBuilder est plus efficace que StringBuffer.

160) Comment pouvons-nous créer une classe immuable(immutable) en Java?


Nous pouvons créer une classe immuable en définissant une classe finale ayant tous ses membres comme
final. Prenons l'exemple suivant.

1. public final class Employee{


2. final String pancardNumber;
3.
4. public Employee(String pancardNumber){
5. [Link]=pancardNumber;
6. }
7.
8. public String getPancardNumber(){
9. return pancardNumber;
10. }
11.
12. }

161) Quel est le but de la méthode toString () en Java?


La méthode toString () renvoie la représentation sous forme de string d'un objet. Si vous imprimez un objet, le
compilateur java appelle en interne la méthode toString () sur l'objet. Par conséquent, le remplacement de la méthode
toString () renvoie la sortie souhaitée. Il peut s'agir de l'état d'un objet, etc., en fonction de votre implémentation. En
redéfinissant la méthode toString () de la classe Object, nous pouvons renvoyer les valeurs de l'objet, de sorte que nous
n'avons pas besoin d'écrire beaucoup de code. Prenons l'exemple suivant.

1. class Student{
2. int rollno;
3. String name;
4. String city;
5.
6. Student(int rollno, String name, String city){
7. [Link]=rollno;
8. [Link]=name;
9. [Link]=city;
10. }
11.
12. public String toString(){//overriding the toString() method
13. return rollno+" "+name+" "+city;
14. }
15. public static void main(String args[]){
16. Student s1=new Student(101,"Raj","lucknow");
17. Student s2=new Student(102,"Vijay","ghaziabad");
18.
19. [Link](s1);//compiler writes here [Link]()
20. [Link](s2);//compiler writes here [Link]()
21. }
22. }

Sortie:
101 Raj lucknow
102 Vijay Ghaziabad

162) Pourquoi CharArray () est préféré à String pour stocker le mot de passe?
La chaîne reste dans le pool de chaînes jusqu'à ce que les déchets soient collectés. Si nous stockons le mot de passe
dans une chaîne, celle-ci reste en mémoire pendant une période plus longue, et toute personne disposant de la
mémoire mémoire peut extraire le mot de passe sous forme de texte en clair. Par ailleurs, l’utilisation de CharArray
nous permet de le mettre à blanc chaque fois que nous en avons terminé avec le mot de passe. Cela évite la menace à
la sécurité avec la chaîne en nous permettant de contrôler la mémoire.

163) Écrire un programme Java pour compter le nombre de mots présents dans une
chaîne?
Programme:

1. public class Test


2. {
3. public static void main (String args[])
4. {
5. String s = "Sharma is a good player and he is so punctual";
6. String words[] = [Link](" ");
7. [Link]("The Number of words present in the string are : "+[Link]);
8. }
9. }

Sortie

Le nombre de mots présents dans la chaîne est: 10

164) Nommez quelques classes présentes dans le packageage [Link] .


Les classes et interfaces suivantes sont présentes dans le package [Link].

o MatchResult Interface
o Matcher class
o Pattern class
o PatternSyntaxException class

165) En quoi les métacaractères sont-ils différents des caractères ordinaires?


Les métacaractères ont une signification particulière pour le moteur des expressions régulières. Les métacaractères
sont ^, $,., *, +, Etc. Le moteur des expressions régulières ne les considère pas comme des caractères normaux. Pour
permettre au moteur d'expression régulière de traiter les métacaractères comme des caractères ordinaires, nous
devons échapper les métacaractères avec la barre oblique inverse.
166) Écrivez une expression régulière pour valider un mot de passe. Un mot de
passe doit commencer par un alphabet et être suivi de caractères
alphanumériques. Sa longueur doit être comprise entre 8 et 20.
L’expression régulière pour les critères ci-dessus sera: ^ [a-zA-Z] [a-zA-Z0-9] {8,19} où ^ représente le début de la
regex, [a-zA-Z] représente le premier caractère doit être un alphabet, [a-zA-Z0-9] représente le caractère
alphanumérique, {8,19} indique que la longueur du mot de passe doit être comprise entre 8 et 20.

167) Quel est le résultat du programme Java suivant?

1. import [Link].*;
2. class RegexExample2{
3. public static void main(String args[]){
4. [Link]([Link](".s", "as")); //line 4
5. [Link]([Link](".s", "mk")); //line 5
6. [Link]([Link](".s", "mst")); //line 6
7. [Link]([Link](".s", "amms")); //line 7
8. [Link]([Link]("..s", "mas")); //line 8
9. }}

Sortie

true
false
false
false
true

Explication

la ligne 4 est vraie puisque le deuxième caractère de la chaîne est s, la ligne 5 est fausse car le deuxième caractère
n'est pas s, la ligne 6 est fausse car il y a plus de 3 caractères dans la chaîne, la ligne 7 est faux, il y en a plus de 2
caractères dans la chaîne et contenant plus de 2 caractères également, la ligne 8 est vraie puisque le troisième
caractère de la chaîne est s.

Questions d'entretiens chez Core Java: Nested classes and Interfaces

168) Quels sont les avantages des classes internes Java ( inner classes)?
Il existe deux types d’avantages des classes internes Java.

o Les classes imbriquées représentent un type spécial de relation, c'est-à-dire qu'elles peuvent accéder à tous
les membres (membres de données et méthodes) de la classe externe, y compris privé.
o Les classes imbriquées sont utilisées pour développer un code plus lisible et maintenable, car il regroupe
logiquement les classes et les interfaces dans un seul endroit.
o Optimisation du code: Cela nécessite moins de code pour écrire.

169) Qu'est-ce qu'une classe imbriquée(nested class)?


La classe imbriquée peut être définie comme la classe définie dans une autre classe ou interface. Nous utilisons la
classe imbriquée pour regrouper logiquement les interfaces et les classes à un endroit unique, de manière à ce qu’elle
soit plus lisible et plus facile à gérer. Une classe imbriquée peut accéder à tous les membres de données de la classe
externe, y compris les membres de données privés et les méthodes. La syntaxe de la classe imbriquée est définie ci-
dessous.

1. classe Java_Outer_class {
2. //code
3. classe Java_Nested_class {
4. //code
5. }
6. }
7.

Il existe deux types de classes imbriquées, une classe imbriquée statique et une classe imbriquée non statique. La
classe imbriquée non statique peut également être appelée classe interne.

170) Quels sont les inconvénients de l’utilisation des classes internes?


L'utilisation des classes internes présente les principaux inconvénients suivants:

o Les classes internes augmentent le nombre total de classes utilisées par le développeur, ce qui augmente la
charge de travail de la machine virtuelle Java, car elle doit effectuer certaines opérations de routine pour les
classes supplémentaires, ce qui entraîne des performances plus lentes.
o Les IDE fournissent moins de support aux classes internes que les classes de niveau supérieur et agacent
donc les développeurs tout en travaillant avec des classes internes.

171) Quels sont les types de classes internes (classe imbriquée non statique) utilisés
en Java?
Il existe principalement trois types de classes internes utilisées en Java.

Type Description

Membre Inner Class Une classe créée dans la classe et en dehors de la méthode.

Classe intérieure Une classe créée pour implémenter une interface ou une classe d'extension. Son nom est
anonyme décidé par le compilateur java.

Classe intérieure Une classe créée dans la méthode.


locale

172) Y a-t-il une différence entre les classes imbriquées et les classes
internes(nested classes and inner classes)?
Oui, les classes internes sont des classes imbriquées non statiques. En d'autres termes, nous pouvons dire que les
classes internes font partie des classes imbriquées.

173) Peut-on accéder à la variable locale non finale, à l'intérieur de la classe interne
locale?
Non, la variable locale doit être constante si vous souhaitez y accéder dans la classe interne locale.

174) Combien de fichiers de classe sont créés lors de la compilation de OuterClass


dans le programme suivant?

1. public class Person {


2. String name, age, address;
3. class Employee{
4. float salary=10000;
5. }
6. class BusinessMen{
7. final String gstin="£4433drt3$";
8. }
9. public static void main (String args[])
10. {
11. Person p = new Person();
12. }
13. }

Trois fichiers de classe seront créés, nommés [Link], Person $ [Link] et Person $ [Link].

175) Que sont les classes internes anonymes?


Les classes internes anonymes sont les classes qui sont automatiquement déclarées et instanciées dans une
expression. Nous ne pouvons pas leur appliquer différents modificateurs d'accès. La classe anonyme ne peut pas être
statique et ne peut définir aucun champ, méthode ou classe statique. En d'autres termes, on peut dire que c'est une
classe sans nom et ne peut avoir qu'un seul objet créé par sa définition. Prenons l'exemple suivant.

1. abstract class Person{


2. abstract void eat();
3. }
4. class TestAnonymousInner{
5. public static void main(String args[]){
6. Person p=new Person(){
7. void eat(){[Link]("nice fruits");}
8. };
9. [Link]();
10. }
11. }
Testez-le maintenant

Sortie:

nice fruits

Prenons l'exemple suivant pour le fonctionnement de la classe anonyme à l'aide de l'interface.

1. interface Eatable{
2. void eat();
3. }
4. class TestAnnonymousInner1{
5. public static void main(String args[]){
6. Eatable e=new Eatable(){
7. public void eat(){[Link]("nice fruits");}
8. };
9. [Link]();
10. }
11. }
}
Testez-le maintenant

Sortie:

nice fruits

176) Quelle est l'interface imbriquée?


Une interface déclarée à l'intérieur de l'interface ou de la classe est appelée interface imbriquée. C'est statique par
défaut. Les interfaces imbriquées permettent de regrouper les interfaces associées afin de faciliter leur
maintenance. L'interface externe ou la classe doit faire référence à l'interface imbriquée. On ne peut pas y accéder
directement. L'interface imbriquée doit être publique si elle est déclarée à l'intérieur de l'interface, mais elle peut avoir
n'importe quel modificateur d'accès si elle est déclarée dans la classe. La syntaxe de l'interface imbriquée est donnée
comme suit.

1. interface nom_interface {
2. ...
3. interface nested_interface_name {
4. ...
5. }
6. }
7.

177) Une classe peut-elle avoir une interface?


Oui, une interface peut être définie dans la classe. Cela s'appelle une interface imbriquée.

178) Une interface peut-elle avoir un cours?


Oui, ils sont statiques implicitement.

Questions d'entretiens chez Garbage Collection

179) Qu'est-ce que la collecte des ordures ( Garbage collection )?


La récupération de place est un processus de récupération des objets d'exécution non utilisés. Il est effectué pour la
gestion de la mémoire. En d'autres termes, nous pouvons dire que c'est le processus de suppression des objets
inutilisés de la mémoire pour libérer de l'espace et le rendre disponible pour Java Virtual Machine. En raison de la
récupération de place, Java donne 0 en sortie à une variable dont la valeur n'est pas définie, c'est-à-dire que la variable
a été définie mais non initialisée. Pour cela, nous utilisions la fonction free () en langage C et delete () en C ++. En Java,
cela se fait automatiquement. Ainsi, Java fournit une meilleure gestion de la mémoire.

180) Qu'est-ce que gc ()?


La méthode gc () est utilisée pour appeler le ramasse-miettes pour le traitement de nettoyage. Cette méthode se
trouve dans les classes System et Runtime. Cette fonction permet explicitement à la machine virtuelle Java de libérer
l’espace occupé par les objets inutilisés afin de pouvoir l’utiliser ou le réutiliser. Prenons l'exemple suivant pour mieux
comprendre comment la méthode gc () appelle le garbage collector.

1. public class TestGarbage1{


2. public void finalize(){[Link]("object is garbage collected");}
3. public static void main(String args[]){
4. TestGarbage1 s1=new TestGarbage1();
5. TestGarbage1 s2=new TestGarbage1();
6. s1=null;
7. s2=null;
8. [Link]();
9. }
10. }
Testez-le maintenant
object is garbage collected
object is garbage collected

181) Comment le garbage collection est-il contrôlé?


Le ramassage des ordures est géré par JVM. Cette opération est effectuée lorsqu'il n'y a pas assez d'espace dans la
mémoire et que celle-ci est faible. Nous pouvons appeler de manière externe [Link] () pour la récupération de
place. Cependant, cela dépend de la JVM de le faire ou non.

182) Comment un objet peut-il être non référencé?


Il y a plusieurs façons:

o En annulant la référence
o En assignant une référence à une autre
o Par objet anonyme, etc.

1) En annulant une référence:

1. Employee e=new Employee();


2. e=null;

2) En assignant une référence à une autre:

1. Employee e1=new Employee();


2. Employee e2=new Employee();
3. e1=e2; // maintenant le premier objet référencé par e1 est disponible pour le garbage collection

3) Par objet anonyme:


new Employee();

183) Quel est le but de la méthode finalize ()?


La méthode finalize () est invoquée juste avant la récupération de l’objet. Il est utilisé pour effectuer le traitement de
nettoyage. Le garbage collector de JVM ne collecte que les objets créés par un nouveau mot clé. Par conséquent, si
vous avez créé un objet sans aucun nouveau, vous pouvez utiliser la méthode finalize pour effectuer le traitement de
nettoyage (destruction des objets restants). Le traitement de nettoyage est le processus permettant de libérer toutes
les ressources, le réseau qui était utilisé auparavant et dont vous n'avez plus besoin. Il est essentiel de se rappeler que
ce n'est pas un mot clé réservé, la méthode finalize est présente dans la classe d'objet, elle est donc disponible dans
toutes les classes, car la classe d'objet est la superclasse de chaque classe en java. Ici, il faut noter que ni la finalisation
ni le ramassage des ordures n’est garanti. Prenons l'exemple suivant.

1. public class FinalizeTest {


2. int j=12;
3. void add()
4. {
5. j=j+12;
6. [Link]("J="+j);
7. }
8. public void finalize()
9. {
10. [Link]("Object is garbage collected");
11. }
12. public static void main(String[] args) {
13. new FinalizeTest().add();
14. [Link]();
15. new FinalizeTest().add();
16. }
17. }
18.

184) Peut-on référencer à nouveau un objet non référencé?


Oui,

185) Quel type de thread est le thread Garbage collector?


Fil de démon.( daemon thread)

186) Quelle est la différence entre finale, finally et finalize?

Non Final finally finalize


.

1) Final est utilisé pour appliquer des restrictions sur finally, utilisé pour placer Finalize est utilisé pour
la classe, la méthode et la variable. La classe du code important, il effectuer le nettoyage
finale ne peut pas être héritée, la méthode finale sera exécuté qu’une juste avant qu'un objet
ne peut pas être remplacée et la valeur de la exception soit gérée ou ne soit nettoyé.
variable finale ne peut pas être modifiée. non.

2) Final est un mot clé. finnaly est un bloc. Finalize est une
méthode.
187) Quel est le but de la classe Runtime?
La classe Java Runtime est utilisée pour interagir avec un environnement d'exécution Java. La classe Java Runtime
fournit des méthodes pour exécuter un processus, appeler GC, obtenir de la mémoire totale et libre, etc. Il n'y a qu'une
seule instance de la classe [Link] disponible pour une seule application java. La méthode
[Link] () renvoie l'instance singleton de la classe Runtime.

188) Comment allez-vous appeler un processus externe en Java?


Par la méthode [Link] (). Exec (?). Prenons l'exemple suivant.

1. public class Runtime1{


2. public static void main(String args[])throws Exception{
3. [Link]().exec("notepad");//will open a new notepad
4. }
5. }

I/O Interview Questions

189) Donne la hiérarchie des classes InputStream et OutputStream.


Hiérarchie OutputStream

Hiérarchie InputStream

190) Que comprenez-vous par flux IO?


Le flux est une séquence de données qui circule de la source à la destination. Il est composé d'octets. En Java, trois flux
sont créés automatiquement pour nous.

o [Link]: flux de sortie standard


o [Link]: flux d'entrée standard
o [Link]: flux d'erreur standard

191) Quelle est la différence entre la hiérarchie des classes Reader / Writer et la
hiérarchie des classes InputStream / OutputStream?
La hiérarchie de la classe Reader / Writer est orientée caractères et la hiérarchie de la classe InputStream /
OutputStream est orientée octets. Les classes ByteStream sont utilisées pour effectuer des entrées-sorties sur 8 octets,
tandis que les classes CharacterStream sont utilisées pour effectuer les entrées / sorties pour le système Unicode 16
bits. Il existe de nombreuses classes dans la hiérarchie de classes ByteStream, mais les classes les plus fréquemment
utilisées sont FileInputStream et FileOutputStream. FileReader et FileWriter sont les classes les plus fréquemment
utilisées dans la hiérarchie des classes CharacterStream.

192) Quelles sont les classes les plus super pour tous les flux(streams)?
Toutes les classes de flux (stream class) peuvent être divisées en deux types de classes: les classes ByteStream et les
classes CharacterStream. Les classes ByteStream sont ensuite divisées en classes InputStream et OutputStream. Les
classes CharacterStream sont également divisées en classes Reader et Writer. Les classes SuperMost pour toutes les
classes InputStream sont [Link] et pour toutes les classes de flux de sortie est [Link]. De
même, pour toutes les classes de lecteurs, la classe la plus avancée est [Link], et pour toutes les classes
d'écrivains, il s'agit de [Link].

193) Que sont les FileInputStream et FileOutputStream?


Java FileOutputStream est un flux de sortie utilisé pour écrire des données dans un fichier. Si vous avez des valeurs
primitives à écrire dans un fichier, utilisez la classe FileOutputStream. Vous pouvez écrire des données orientées octet
ou caractères par le biais de la classe FileOutputStream. Toutefois, pour les données orientées caractères, il est
préférable d’utiliser FileWriter que FileOutputStream. Prenons l'exemple suivant d'écriture d'un octet dans un fichier.

1. import [Link];
2. public class FileOutputStreamExample {
3. public static void main(String args[]){
4. try{
5. FileOutputStream fout=new FileOutputStream("D:\\[Link]");
6. [Link](65);
7. [Link]();
8. [Link]("success...");
9. }catch(Exception e){[Link](e);}
10. }
11. }

La classe Java FileInputStream obtient les octets d'entrée d'un fichier. Il est utilisé pour la lecture de données
orientées octets (flux d'octets bruts) telles que des données image, audio, vidéo, etc. Vous pouvez également lire des
données de flux de caractères. Cependant, pour lire des flux de caractères, il est recommandé d'utiliser la classe
FileReader. Considérez l'exemple suivant pour lire des octets à partir d'un fichier.

1. import [Link];
2. public class DataStreamExample {
3. public static void main(String args[]){
4. try{
5. FileInputStream fin=new FileInputStream("D:\\[Link]");
6. int i=[Link]();
7. [Link]((char)i);
8.
9. [Link]();
10. }catch(Exception e){[Link](e);}
11. }
12. }
13.

194) Quel est le but d'utiliser les classes BufferedInputStream et


BufferedOutputStream?
La classe Java BufferedOutputStream est utilisée pour mettre en mémoire tampon un flux de sortie. Il utilise en interne
un tampon pour stocker les données. Cela ajoute plus d'efficacité que d'écrire des données directement dans un
flux. Donc, cela rend la performance rapide. Considérant que, la classe Java BufferedInputStream est utilisée pour lire
des informations à partir du flux. Il utilise en interne le mécanisme de tampon pour accélérer les performances.

195) Comment définir les autorisations sur un fichier en Java?


En Java, la classe FilePermission permet de modifier les autorisations définies sur un fichier. La classe Java
FilePermission contient l'autorisation liée à un répertoire ou à un fichier. Toutes les autorisations sont liées au
chemin. Le chemin peut être de deux types:

o D: \\ IO \\ -: Cela indique que l'autorisation est associée à tous les sous-répertoires et fichiers de manière
récursive.
o D: \\ IO \\ *: Cela indique que l'autorisation est associée à tous les répertoires et fichiers de ce répertoire, à
l'exception des sous-répertoires.

Voyons un exemple simple dans lequel l'autorisation d'un chemin de répertoire est accordée avec une autorisation de
lecture et un fichier de ce répertoire est accordé pour une autorisation d'écriture.

1. package [Link];
2. import [Link].*;
3. import [Link];
4. public class FilePermissionExample{
5. public static void main(String[] args) throws IOException {
6. String srg = "D:\\IO Package\\[Link]";
7. FilePermission file1 = new FilePermission("D:\\IO Package\\-", "read");
8. PermissionCollection permission = [Link]();
9. [Link](file1);
10. FilePermission file2 = new FilePermission(srg, "write");
11. [Link](file2);
12. if([Link](new FilePermission(srg, "read,write"))) {
13. [Link]("Read, Write permission is granted for the path "+srg );
14. }else {
15. [Link]("No Read, Write permission is granted for the path "+srg); }
16. }
17. }

Sortie

Read, Write permission is granted for the path D:\IO Package\[Link]

196) Que sont les FilterStreams?


Les classes FilterStream sont utilisées pour ajouter des fonctionnalités supplémentaires aux autres classes de
flux. Les classes FilterStream agissent comme une interface qui lit les données d'un flux, les filtre et transmet les
données filtrées à l'appelant. Les classes FilterStream fournissent des fonctionnalités supplémentaires telles que l’ajout
de numéros de ligne au fichier de destination, etc.

197) Qu'est-ce qu'un filtre I / O?


Un filtre d'E / S est un objet qui lit dans un flux et écrit dans un autre, modifiant généralement les données d'une
manière ou d'une autre, au fur et à mesure qu'elles sont transmises d'un flux à un autre. De nombreuses classes de
filtrage permettent à un utilisateur de créer une chaîne à l'aide de plusieurs flux d'entrée. Il génère un effet combiné
sur plusieurs filtres.

198) En Java, combien de façons de prendre une entrée de la console?


En Java, il existe trois façons d’utiliser les informations de la console.
o Utilisation de la classe BufferedReader: nous pouvons prendre des entrées de la console en encapsulant
[Link] dans un InputStreamReader et en le passant dans BufferedReader. Il fournit une lecture efficace
lorsque l'entrée est mise en mémoire tampon. Prenons l'exemple suivant.

1. import [Link];
2. import [Link];
3. import [Link];
4. public class Person
5. {
6. public static void main(String[] args) throws IOException
7. {
8. [Link]("Enter the name of the person");
9. BufferedReader reader = new BufferedReader(new InputStreamReader([Link]));
10. String name = [Link]();
11. [Link](name);
12. }
13. }
o Utilisation de la classe Scanner: la classe Java Scanner divise l’entrée en jetons à l’aide d’un délimiteur
qui est un espace par défaut. Il fournit de nombreuses méthodes pour lire et analyser diverses valeurs
primitives. La classe Java Scanner est largement utilisée pour analyser le texte de types chaîne et primitifs à
l'aide d'une expression régulière. La classe Java Scanner étend la classe Object et implémente les interfaces
Iterator et Closeable. Prenons l'exemple suivant.

1. import [Link].*;
2. public class ScannerClassExample2 {
3. public static void main(String args[]){
4. String str = "Hello/This is JavaTpoint/My name is Abhishek.";
5. //Create scanner with the specified String Object
6. Scanner scanner = new Scanner(str);
7. [Link]("Boolean Result: "+[Link]());
8. //Change the delimiter of this scanner
9. [Link]("/");
10. //Printing the tokenized Strings
11. [Link]("---Tokenizes String---");
12. while([Link]()){
13. [Link]([Link]());
14. }
15. //Display the new delimiter
16. [Link]("Delimiter used: " +[Link]());
17. [Link]();
18. }
19. }
o Utilisation de la classe Console: La classe Java Console est utilisée pour obtenir des entrées de la
console. Il fournit des méthodes pour lire des textes et des mots de passe. Si vous lisez le mot de passe à
l'aide de la classe Console, il ne sera pas affiché à l'utilisateur. La classe [Link] est attachée à la
console système en interne. La classe Console est introduite depuis la version 1.5. Prenons l'exemple suivant.
o
o import [Link];
o class ReadStringTest{
o public static void main(String args[]){
o Console c=[Link]();
o [Link]("Enter your name: ");
o String n=[Link]();
o [Link]("Welcome "+n);
o }
o }
Serialization Interview Questions

199) Qu'est-ce que la sérialisation?


La sérialisation en Java est un mécanisme permettant d'écrire l'état d'un objet dans un flux d'octets. Il est
principalement utilisé dans les technologies Hibernate, RMI, JPA, EJB et JMS. Il est principalement utilisé pour parcourir
l'état d'un objet sur le réseau (appelé marshaling). Une interface sérialisable est utilisée pour effectuer la
sérialisation. Il est utile lorsque vous souhaitez enregistrer l'état d'un programme sur un stockage tel que le
fichier. Ultérieurement, le contenu de ce fichier peut être restauré à l'aide de la désérialisation. Il est également
nécessaire d'implémenter RMI (Remote Method Invocation). À l'aide de RMI, il est possible d'appeler la méthode d'un
objet Java d'une machine à une autre.

200) Comment pouvez-vous rendre une classe sérialisable en Java?


Une classe peut devenir sérialisable en implémentant l'interface Serializable.

201) Comment éviter la sérialisation dans une classe enfant si la classe de base
implémente l'interface Serializable?
Il est très difficile d'empêcher la sérialisation de la classe enfant si la classe de base est destinée à implémenter
l'interface Serializable. Cependant, nous ne pouvons pas le faire directement, mais la sérialisation peut être évitée en
implémentant les méthodes writeObject () ou readObject () dans la sous-classe et en lançant NotSerializableException à
partir de ces méthodes. Prenons l'exemple suivant.

1. import [Link];
2. import [Link];
3. import [Link];
4. import [Link];
5. import [Link];
6. import [Link];
7. import [Link];
8. class Person implements Serializable
9. {
10. String name = " ";
11. public Person(String name)
12. {
13. [Link] = name;
14. }
15. }
16. class Employee extends Person
17. {
18. float salary;
19. public Employee(String name, float salary)
20. {
21. super(name);
22. [Link] = salary;
23. }
24. private void writeObject(ObjectOutputStream out) throws IOException
25. {
26. throw new NotSerializableException();
27. }
28. private void readObject(ObjectInputStream in) throws IOException
29. {
30. throw new NotSerializableException();
31. }
32.
33. }
34. public class Test
35. {
36. public static void main(String[] args)
37. throws Exception
38. {
39. Employee emp = new Employee("Sharma", 10000);
40.
41. [Link]("name = " + [Link]);
42. [Link]("salary = " + [Link]);
43.
44. FileOutputStream fos = new FileOutputStream("[Link]");
45. ObjectOutputStream oos = new ObjectOutputStream(fos);
46.
47. [Link](emp);
48.
49. [Link]();
50. [Link]();
51.
52. [Link]("Object has been serialized");
53.
54. FileInputStream f = new FileInputStream("[Link]");
55. ObjectInputStream o = new ObjectInputStream(f);
56.
57. Employee emp1 = (Employee)[Link]();
58.
59. [Link]();
60. [Link]();
61.
62. [Link]("Object has been deserialized");
63.
64. [Link]("name = " + [Link]);
65. [Link]("salary = " + [Link]);
66. }
67. }

202) Un objet sérialisé peut-il être transféré via le réseau?


Oui, nous pouvons transférer un objet sérialisé via le réseau, car l'objet sérialisé est stocké dans la mémoire sous forme
d'octets et peut être transmis sur le réseau. Nous pouvons également écrire l'objet sérialisé sur le disque ou la base de
données.

203) Qu'est-ce que la désérialisation?


La désérialisation est le processus de reconstruction de l'objet à partir de l'état sérialisé. C'est l'opération inverse de la
sérialisation. ObjectInputStream désérialise les objets et les données primitives écrites à l'aide d'un
ObjectOutputStream.

1. import [Link].*;
2. class Depersist{
3. public static void main(String args[])throws Exception{
4.
5. ObjectInputStream in=new ObjectInputStream(new FileInputStream("[Link]"));
6. Student s=(Student)[Link]();
7. [Link]([Link]+" "+[Link]);
8.
9. [Link]();
10. }
11. }
211 ravi

204) Quel est le mot clé transient ?


Si vous définissez un membre de données comme transitoire, il ne sera pas sérialisé. En déterminant le mot clé
transitoire, il n'est pas nécessaire que la valeur de la variable persiste lorsqu'elle est restaurée. Plus de détails.

205) Qu'est-ce qui est externalizable?


L'interface Externalizable est utilisée pour écrire l'état d'un objet dans un flux d'octets dans un format compressé. Ce
n'est pas une interface de marqueur.

206) Quelle est la différence entre une interface sérialisable et une interface
extensible?

Non Sérialisable Externalisable


.

1) L’interface Serializable n’a pas de méthode, L'interface Externalizable contient n'est pas une interface
c’est-à-dire une interface marqueur. de marqueur, elle contient deux méthodes, à savoir
writeExternal () et readExternal ().

2) Il est utilisé pour "marquer" les classes Java L’interface Externalizable permet au programmeur de
afin que les objets de ces classes puissent contrôler la logique de sérialisation.
obtenir certaines capacités.

3) Il est facile à mettre en œuvre mais présente Il est utilisé pour effectuer la sérialisation et entraîne
un coût de performance supérieur. souvent de meilleures performances.

4) Aucun constructeur de classe n'est appelé en Nous devons appeler un constructeur public par défaut
sérialisation. lors de l'utilisation de cette interface.
.

Networking Interview Questions

207) Donnez une brève description de la programmation de socket Java?


La programmation Java Socket est utilisée pour la communication entre les applications exécutées sur différents JRE. La
programmation Java Socket peut être orientée connexion ou sans connexion. Les classes Socket et ServerSocket sont
utilisées pour la programmation de socket orientée connexion et les classes DatagramSocket et DatagramPacket sont
utilisées pour la programmation de socket sans connexion. Le client en programmation de socket doit connaître deux
informations:

o Adresse IP du serveur
o port number

208) Qu'est-ce que Socket?


Un socket est simplement un terminal pour les communications entre les machines. Il fournit le mécanisme de
connexion permettant de connecter les deux ordinateurs via TCP. La classe Socket peut être utilisée pour créer un
socket.

209) Quelles sont les étapes à suivre lorsque deux ordinateurs se connectent via
TCP?
Les étapes suivantes sont effectuées lorsque deux ordinateurs se connectent via TCP.

o L'objet ServerSocket est instancié par le serveur qui indique le numéro de port sur lequel la connexion sera
établie.
o Après l’instanciation de l’objet ServerSocket, le serveur appelle la méthode accept () de la classe
ServerSocket, ce qui fait attendre le serveur jusqu’à ce que le client tente de se connecter au serveur sur le
port donné.
o Pendant ce temps, le serveur est en attente, un socket est créé par le client en instanciant la classe
Socket. Le constructeur de la classe socket accepte le numéro de port et le nom du serveur.
o Le constructeur de la classe Socket tente de se connecter au serveur avec le nom spécifié. Si la connexion est
établie, le client disposera d'un objet socket pouvant communiquer avec le serveur.
o La méthode accept () appelée par le serveur renvoie une référence au nouveau socket sur le serveur
connecté au serveur.

210) Écrire un programme en Java pour établir une connexion entre le client et le
serveur?

211) Comment convertir une adresse IP numérique telle que [Link] en un


nom d’hôte tel que [Link]?
Par [Link] ("[Link]"). GetHostName () où [Link] est l'adresse IP. Prenons l'exemple
suivant.

1. import [Link].*;
2. import [Link].*;
3. public class InetDemo{
4. public static void main(String[] args){
5. try{
6. InetAddress ip=[Link]("[Link]");
7.
8. [Link]("Host Name: "+[Link]());
9. }catch(Exception e){[Link](e);}
10. }
11. }
12.

Reflection Interview Questions

212) Quel est le reflection?


La réflexion est le processus d'examen ou de modification du comportement d'exécution d'une classe à l'exécution. La
classe [Link] fournit diverses méthodes pouvant être utilisées pour obtenir des métadonnées, examiner et
modifier le comportement d'exécution d'une classe. Les packages [Link] et [Link] fournissent des classes
pour la réflexion java. Il est utilisé dans:

o IDE (Integrated Development Environment), e.g., Eclipse, MyEclipse, NetBeans.


o Débogueur
o Outils de test, etc.

213) Quel est le but d'utiliser la classe [Link]?


La classe [Link] effectue principalement deux tâches:

o Fournit des méthodes pour obtenir les métadonnées d'une classe au moment de l'exécution.
o Fournit des méthodes pour examiner et modifier le comportement d'exécution d'une classe.

214) Quels sont les moyens d'instancier la classe?


Il y a trois façons d'instancier la classe.

o Méthode forName () de la classe Classe: La méthode forName () permet de charger la classe de manière
dynamique. Il retourne l'instance de classe classe. Il devrait être utilisé si vous connaissez le nom complet de
la classe. Cela ne peut pas être utilisé pour les types primitifs.

o Méthode getClass () de la classe Object: Renvoie l'instance de la classe Class. Il devrait être utilisé si
vous connaissez le type. De plus, il peut être utilisé avec des primitives.

o La syntaxe .class: Si un type est disponible mais qu'il n'y a pas d'instance, il est possible d'obtenir une
classe en ajoutant ".class" au nom du type. Il peut également être utilisé pour le type de données primitif.
215) Quel est le résultat du programme Java suivant?

1. class Simple{
2. public Simple()
3. {
4. [Link]("Constructor of Simple class is invoked");
5. }
6. void message(){[Link]("Hello Java");}
7. }
8.
9. class Test1{
10. public static void main(String args[]){
11. try{
12. Class c=[Link]("Simple");
13. Simple s=(Simple)[Link]();
14. [Link]();
15. }catch(Exception e){[Link](e);}
16. }
17. }

Sortie

Le constructeur de la classe Simple est invoqué


Bonjour Java

Explication

La méthode newInstance () de la classe Class est utilisée pour appeler le constructeur à l'exécution. Dans ce
programme, l'instance de la classe Simple est créée.

216) Quel est le but de l'utilisation de javap?


La commande javap désassemble un fichier de classe. La commande javap affiche des informations sur les champs, les
constructeurs et les méthodes présents dans un fichier de classe.

Syntaxe

javap nom_classe_classe

217) Pouvez-vous accéder à la méthode privée de l’extérieur de la classe?


Oui, en modifiant le comportement d'exécution d'une classe si celle-ci n'est pas sécurisée.

Questions d'entrevue diverses

218) Que sont les classes de wrapper?


Les classes wrapper sont des classes permettant d'accéder aux types primitifs en tant qu'objets. En d'autres termes,
nous pouvons dire que les classes wrapper sont des classes Java intégrées permettant la conversion d'objets en
primitives et de primitives en objets. Le processus de conversion des primitives en objets s'appelle la sélection
automatique, et le processus de conversion des objets en primitives est appelé le déballage. Il y a huit classes de
wrapper présentes dans le package [Link] .

Primitive Type Wrapper class

boolean Boolean

char Character

byte Byte

short Short

int Integer

long Long

float Float

double Double

219) Qu'est-ce que l'autoboxing et le unboxing? Quand se produit-il?


La substitution automatique est le processus de conversion du type de données primitif en objet de classe wrapper
correspondant, par exemple int en Integer. Unboxing est le processus de conversion d'un objet de classe wrapper en
type de données primitif. Par exemple, entier à int. Le déballage et l'autoboxing se produisent automatiquement en
Java. Cependant, nous pouvons en convertir un en externe en utilisant des méthodes telles que valueOf () ou xxxValue
().

Cela peut se produire lorsqu'un objet de classe wrapper est attendu et qu'un type de données primitif est fourni, ou
inversement.

o Ajout de types primitifs dans Collection, comme ArrayList en Java.


o Créer une instance de classes paramétrées, par exemple ThreadLocal qui attend Type.
o Java convertit automatiquement primitive en objet à chaque fois que nécessaire et qu'un autre est fourni dans
l'appel de méthode.
o Lorsqu'un type primitif est affecté à un type d'objet.

220) Quel est le résultat du programme Java ci-dessous?

1. public class Test1


2. {
3. public static void main(String[] args) {
4. Integer i = new Integer(201);
5. Integer j = new Integer(201);
6. if(i == j)
7. {
8. [Link]("hello");
9. }
10. else
11. {
12. [Link]("bye");
13. }
14. }
15. }

Sortie

bye

Explication

La classe Integer met en cache les valeurs entières comprises entre -127 et 127. Par conséquent, les objets Integer ne
peuvent être créés que dans la plage -128 à 127. L'opérateur == ne fonctionnera pas pour les valeurs supérieures à
127; ainsi bye est imprimé.

221) Qu'est-ce que le clonage d'objet?


Le clonage d'objet est un moyen de créer une copie exacte d'un objet. La méthode clone () de la classe Object permet
de cloner un objet. L'interface [Link] doit être implémentée par la classe dont nous voulons créer le clone
d'objet. Si nous n'implémentons pas l'interface Cloneable, la méthode clone () génère une exception
CloneNotSupportedException. La méthode clone () est définie dans la classe Object. La syntaxe de la méthode clone ()
est la suivante:

Objet protégé clone () lève une exception CloneNotSupportedException

222) Quels sont les avantages et les inconvénients du clonage d'objet?


Avantage du clonage d'objet

o Vous n'avez pas besoin d'écrire des codes longs et répétitifs. Utilisez simplement une classe abstraite avec
une méthode clone () longue de 4 ou 5 lignes.
o C’est le moyen le plus simple et le plus efficace de copier des objets, surtout si nous l’appliquons à un projet
déjà développé ou ancien. Il suffit de définir une classe parent, d’implémenter Cloneable dans celle-ci, de
fournir la définition de la méthode clone () et la tâche sera effectuée.
o Clone () est le moyen le plus rapide de copier le tableau.

Inconvénient du clonage d'objet

o Pour utiliser la méthode [Link] (), nous devons modifier de nombreuses syntaxes dans notre code,
telles que l'implémentation d'une interface Cloneable, la définition de la méthode clone (), la gestion de
CloneNotSupportedException et enfin l'appel de [Link] (), etc.
o Nous devons implémenter l'interface Cloneable alors qu'elle ne contient aucune méthode. Nous devons
l'utiliser pour indiquer à la machine virtuelle Java que nous pouvons effectuer un clone () sur notre objet.
o [Link] () est protégé, nous devons donc fournir notre propre clone () et appeler indirectement
[Link] () à partir de celui-ci.
o [Link] () n'appelle pas de constructeur, nous n'avons donc aucun contrôle sur la construction de l'objet.
o Si vous souhaitez écrire une méthode de clonage dans une classe enfant, toutes ses superclasses doivent
définir la méthode clone () ou en hériter d'une autre classe parente. Sinon, la chaîne [Link] () échouera.
o [Link] () ne prend en charge que la copie superficielle, mais nous aurons besoin de la remplacer si un
clonage en profondeur est nécessaire.

223) Qu'est-ce qu'une méthode native?


Une méthode native est une méthode implémentée dans un langage autre que Java. Les méthodes indigènes sont
parfois aussi appelées méthodes étrangères.

224) Quel est le but du mot clé strictfp?


Le mot clé Java strictfp garantit que vous obtiendrez le même résultat sur toutes les plateformes si vous effectuez des
opérations dans la variable à virgule flottante. La précision peut varier d'une plate-forme à l'autre. C'est pourquoi le
langage de programmation Java a fourni le mot clé strictfp afin que vous obteniez le même résultat sur toutes les
plates-formes. Vous avez donc maintenant un meilleur contrôle de l’arithmétique en virgule flottante.

225) Quel est le but de la classe System?


La classe System a pour objectif de fournir un accès aux ressources système telles que les entrées et les sorties
standard. Il ne peut pas être instancié. Les installations fournies par la classe System sont indiquées ci-dessous.

o Entrée standard
o Flux de sortie d'erreur
o Sortie standard
o méthode utilitaire pour copier la partie d'un tableau
o utilitaires pour charger des fichiers et des bibliothèques

Il existe les trois champs de la classe Java System, c’est-à-dire, static printstream err, entrée statique dans et flux de
sortie standard.

226) Qu'est-ce qui vous vient à l'esprit lorsque quelqu'un mentionne une copie
superficielle en Java?
Clonage d'objets.

227) Qu'est-ce qu'une classe singleton?


La classe Singleton est la classe qui ne peut pas être instanciée plus d'une fois. Pour faire un singleton de classe, nous
rendons son constructeur privé ou utilisons la méthode statique getInstance. Prenons l'exemple suivant.

1. class Singleton{
2. private static Singleton single_instance = null;
3. int i;
4. private Singleton ()
5. {
6. i=90;
7. }
8. public static Singleton getInstance()
9. {
10. if(single_instance == null)
11. {
12. single_instance = new Singleton();
13. }
14. return single_instance;
15. }
16. }
17. public class Main
18. {
19. public static void main (String args[])
20. {
21. Singleton first = [Link]();
22. [Link]("First instance integer value:"+first.i);
23. first.i=first.i+90;
24. Singleton second = [Link]();
25. [Link]("Second instance integer value:"+second.i);
26. }
27. }

228) Ecrivez un programme Java qui affiche toutes les valeurs données en ligne de
commande.
Programme

1. class A{
2. public static void main(String args[]){
3.
4. for(int i=0;i<[Link];i++)
5. [Link](args[i]);
6.
7. }
8. }
1. compile by > javac [Link]
2. run by > java A sonoo jaiswal 1 3 abc

Sortie

sonoo
Jaiswal
1
3
abc

229) Quels conteneurs utilisent une présentation de bordure comme présentation par
défaut?
Les classes Window, Frame et Dialog utilisent une présentation de bordure comme présentation par défaut.
230) Quels conteneurs utilisent un FlowLayout comme modèle par défaut?
Les classes Panel et Applet utilisent FlowLayout comme présentation par défaut.

231) Que sont les composants incomparables?


Le composant léger de Swing s'appelle des composants incomparables. Spring a ses bibliothèques et n'utilise donc pas
les ressources du système d'exploitation. Il comporte donc des composants légers.

232) existe-t-il une différence entre une barre de défilement et un volet de


défilement? (Scrollbar and a ScrollPane)
La barre de défilement est un composant alors que le volet de défilement est un conteneur. Un ScrollPane gère ses
événements et effectue son défilement.

233) Qu'est-ce qu'un composant léger?


Les composants légers sont ceux qui ne vont pas avec l'appel natif pour obtenir les unités graphiques. Ils partagent les
unités graphiques de leurs composants parents pour les rendre. Par exemple, les composants Swing et les composants
JavaFX.

234) Qu'est-ce qu'un composant lourd?


Les éléments portables fournis par le système d'exploitation sont appelés composants lourds. AWT est limité aux
classes graphiques fournies par le système d'exploitation et, par conséquent, il n'implémente que le sous-ensemble
minimal d'éléments d'écran pris en charge par toutes les plateformes. Les outils de découverte d'interface utilisateur
dépendants du système d'exploitation sont appelés composants lourds.

235) Qu'est-ce qu'une applet?


Une applet est un petit programme java qui s'exécute dans le navigateur et génère un contenu dynamique. Il est
intégré à la page Web et s'exécute côté client. Il est sécurisé et prend moins de temps de réponse. Il peut être exécuté
par des navigateurs fonctionnant sous de nombreuses plateformes, notamment Linux, Windows, Mac OS, etc. Toutefois,
les plug-ins sont nécessaires sur le navigateur client pour exécuter l'applet. L'image suivante montre l'architecture
d'Applet.

Lorsqu'une applet est créée, les méthodes suivantes sont appelées dans l'ordre.

o init()
o start()
o paint()

Lorsqu'une applet est détruite, les fonctions suivantes sont appelées dans l'ordre.
o stop()
o destroy(

236) Pouvez-vous écrire une classe Java qui pourrait être utilisée à la fois comme
une applet et une application?
Oui. Ajoutez une méthode main () à l'applet.

Internationalization Interview Questions

237) Qu'est-ce que Locale?


Un objet Locale représente une région géographique, politique ou culturelle spécifique. Cet objet peut être utilisé pour
obtenir les informations spécifiques aux paramètres régionaux, telles que le nom du pays, la langue, la variante, etc.

1. import [Link].*;
2. public class LocaleExample {
3. public static void main(String[] args) {
4. Locale locale=[Link]();
5. //Locale locale=new Locale("fr","fr");//for the specific locale
6.
7. [Link]([Link]());
8. [Link]([Link]());
9. [Link]([Link]());
10. [Link](locale.getISO3Country());
11. [Link](locale.getISO3Language());
12. [Link]([Link]());
13. [Link]([Link]());
14.
15. }
16. }

Sortie:

États Unis
Anglais
États Unis Anglais)
USA
eng
en
NOUS

238) Comment allez-vous charger une locale spécifique?


Par la méthode [Link] (?).
Java Bean Interview Questions

239) Qu'est-ce qu'un JavaBean?


JavaBean est un composant logiciel réutilisable écrit dans le langage de programmation Java, conçu pour être manipulé
visuellement par un environnement de développement logiciel, tel que JBuilder ou VisualAge for Java. t. Un JavaBean
encapsule de nombreux objets dans un seul objet afin que nous puissions accéder à cet objet depuis plusieurs
endroits. De plus, il facilite la maintenance. Prenons l'exemple suivant pour créer une classe JavaBean.

1. //[Link]
2. package mypack;
3. public class Employee implements [Link]{
4. private int id;
5. private String name;
6. public Employee(){}
7. public void setId(int id){[Link]=id;}
8. public int getId(){return id;}
9. public void setName(String name){[Link]=name;}
10. public String getName(){return name;}
11. }

240) Quel est le but d'utiliser le bean Java?


Selon le livre blanc Java, il s'agit d'un composant logiciel réutilisable. Un bean encapsule de nombreux objets dans un
seul objet afin que nous puissions accéder à cet objet depuis plusieurs endroits. De plus, il facilite la maintenance.

241) Que comprenez-vous par propriété persistante du bean?


La propriété de persistance du bean Java entre en vigueur lorsque les propriétés, les champs et les informations d'état
sont enregistrés ou extraits du stockage.

RMI Interview Questions

242) Qu'est-ce que RMI?


Le RMI (Remote Method Invocation) est une API qui fournit un mécanisme pour créer l'application distribuée en java. Le
RMI permet à un objet d'appeler des méthodes sur un objet exécuté dans une autre machine virtuelle Java. Le RMI
fournit une communication à distance entre les applications utilisant deux objets stub et squelette.

243) Quel est le but du moignon(stub) et du squelette(skeleton)?


Stub
Le stub est un objet, agit comme une passerelle pour le côté client. Toutes les demandes sortantes y sont
acheminées. Il réside côté client et représente l'objet distant. Lorsque l'appelant appelle la méthode sur l'objet stub, il
effectue les tâches suivantes:

o Il établit une connexion avec une machine virtuelle distante (JVM).


o Il écrit et transmet (ordonne) les paramètres à la machine virtuelle distante (JVM).
o Il attend le résultat.
o Il lit (unmarshals) la valeur de retour ou l'exception.
o Enfin, il renvoie la valeur à l'appelant.

Skeleton

Le squelette est un objet, joue le rôle de passerelle pour l’objet côté serveur. Toutes les demandes entrantes y sont
acheminées. Lorsque le squelette reçoit la demande entrante, il effectue les tâches suivantes:

o Il lit le paramètre pour la méthode distante.


o Il appelle la méthode sur l'objet distant réel.
o Il écrit et transmet (marshals) le résultat à l'appelant.

244) Quelles sont les étapes à suivre pour écrire des programmes basés sur RMI?
Il existe 6 étapes pour écrire des programmes basés sur RMI.

o Créez l'interface distante.


o Fournir la mise en œuvre de l'interface distante.
o Compilez la classe d'implémentation et créez les objets stub et squelette à l'aide de l'outil rmic.
o Démarrez le service de registre à l'aide de l'outil rmiregistry.
o Créez et démarrez l'application distante.
o Créez et démarrez l'application cliente.

245) Quelle est l'utilisation du tunnel HTTP dans RMI?


Le tunneling HTTP peut être défini comme la méthode qui n'a besoin d'aucune configuration pour fonctionner dans
l'environnement de pare-feu. Il gère les connexions HTTP via les serveurs proxy. Cependant, il n'autorise pas les
connexions TCP sortantes.

246) Qu'est-ce que JRMP?


JRMP (Java Remote Method Protocol) peut être défini en tant que protocole basé sur un flux, spécifique à Java, qui
recherche et fait référence aux objets distants. Le client et le serveur doivent utiliser des objets Java. C'est un protocole
filaire qui s'exécute sous RMI et sur TCP / IP.

247) Les applications basées sur RMI et CORBA peuvent-elles interagir?


Oui, ils peuvent. RMI est disponible avec IIOP comme protocole de transport à la place de JRMP.
Core Java: Data Structure interview questions

248) Comment effectuer le tri à bulles en Java?


Considérez le programme suivant pour effectuer le tri à bulles en Java.

1. public class BubbleSort {


2. public static void main(String[] args) {
3. int[] a = {10, 9, 7, 101, 23, 44, 12, 78, 34, 23};
4. for(int i=0;i<10;i++)
5. {
6. for (int j=0;j<10;j++)
7. {
8. if(a[i]<a[j])
9. {
10. int temp = a[i];
11. a[i]=a[j];
12. a[j] = temp;
13. }
14. }
15. }
16. [Link]("Printing Sorted List ...");
17. for(int i=0;i<10;i++)
18. {
19. [Link](a[i]);
20. }
21. }
22. }

Sortie:

Impression de la liste triée. . .


7
9
10
12
23
34
34
44
78
101

249) Comment effectuer une recherche binaire en Java?


Considérez le programme suivant pour effectuer la recherche binaire en Java.

1. import [Link].*;
2. public class BinarySearch {
3. public static void main(String[] args) {
4. int[] arr = {16, 19, 20, 23, 45, 56, 78, 90, 96, 100};
5. int item, location = -1;
6. [Link]("Enter the item which you want to search");
7. Scanner sc = new Scanner([Link]);
8. item = [Link]();
9. location = binarySearch(arr,0,9,item);
10. if(location != -1)
11. [Link]("the location of the item is "+location);
12. else
13. [Link]("Item not found");
14. }
15. public static int binarySearch(int[] a, int beg, int end, int item)
16. {
17. int mid;
18. if(end >= beg)
19. {
20. mid = (beg + end)/2;
21. if(a[mid] == item)
22. {
23. return mid+1;
24. }
25. else if(a[mid] < item)
26. {
27. return binarySearch(a,mid+1,end,item);
28. }
29. else
30. {
31. return binarySearch(a,beg,mid-1,item);
32. }
33. }
34. return -1;
35. }

Sortie:

Entrez l'élément que vous souhaitez rechercher


45
l'emplacement de l'article est 5

250) Comment effectuer un tri de sélection en Java?


Considérez le programme suivant pour effectuer un tri de sélection en Java.

1. public class SelectionSort {


2. public static void main(String[] args) {
3. int[] a = {10, 9, 7, 101, 23, 44, 12, 78, 34, 23};
4. int i,j,k,pos,temp;
5. for(i=0;i<10;i++)
6. {
7. pos = smallest(a,10,i);
8. temp = a[i];
9. a[i]=a[pos];
10. a[pos] = temp;
11. }
12. [Link]("\nprinting sorted elements...\n");
13. for(i=0;i<10;i++)
14. {
15. [Link](a[i]);
16. }
17. }
18. public static int smallest(int a[], int n, int i)
19. {
20. int small,pos,j;
21. small = a[i];
22. pos = i;
23. for(j=i+1;j<10;j++)
24. {
25. if(a[j]<small)
26. {
27. small = a[j];
28. pos=j;
29. }
30. }
31. return pos;
32. }
33. }

Output:

printing sorted elements...


7
9
10
12
23
23
34
44
78
101
101

251) Comment effectuer une recherche linéaire en Java?


Considérez le programme suivant pour effectuer une recherche linéaire en Java.

1. import [Link];
2.
3. public class Leniear_Search {
4. public static void main(String[] args) {
5. int[] arr = {10, 23, 15, 8, 4, 3, 25, 30, 34, 2, 19};
6. int item,flag=0;
7. Scanner sc = new Scanner([Link]);
8. [Link]("Enter Item ?");
9. item = [Link]();
10. for(int i = 0; i<10; i++)
11. {
12. if(arr[i]==item)
13. {
14. flag = i+1;
15. break;
16. }
17. else
18. flag = 0;
19. }
20. if(flag != 0)
21. {
22. [Link]("Item found at location" + flag);
23. }
24. else
25. [Link]("Item not found");
26.
27. }
28. }

Sortie:

Enter Item ?
23
Item found at location 2
Enter Item ?
22
Item not found

252) Comment effectuer un tri par fusion en Java?


Considérez le programme suivant pour effectuer un tri par fusion en Java.

1. public class MyMergeSort


2. {
3. void merge(int arr[], int beg, int mid, int end)
4. {
5.
6. int l = mid - beg + 1;
7. int r = end - mid;
8.
9. intLeftArray[] = new int [l];
10. intRightArray[] = new int [r];
11.
12. for (int i=0; i<l; ++i)
13. LeftArray[i] = arr[beg + i];
14.
15. for (int j=0; j<r; ++j)
16. RightArray[j] = arr[mid + 1+ j];
17.
18.
19. int i = 0, j = 0;
20. int k = beg;
21. while (i<l&&j<r)
22. {
23. if (LeftArray[i] <= RightArray[j])
24. {
25. arr[k] = LeftArray[i];
26. i++;
27. }
28. else
29. {
30. arr[k] = RightArray[j];
31. j++;
32. }
33. k++;
34. }
35. while (i<l)
36. {
37. arr[k] = LeftArray[i];
38. i++;
39. k++;
40. }
41.
42. while (j<r)
43. {
44. arr[k] = RightArray[j];
45. j++;
46. k++;
47. }
48. }
49.
50. void sort(int arr[], int beg, int end)
51. {
52. if (beg<end)
53. {
54. int mid = (beg+end)/2;
55. sort(arr, beg, mid);
56. sort(arr , mid+1, end);
57. merge(arr, beg, mid, end);
58. }
59. }
60. public static void main(String args[])
61. {
62. intarr[] = {90,23,101,45,65,23,67,89,34,23};
63. MyMergeSort ob = new MyMergeSort();
64. [Link](arr, 0, [Link]-1);
65.
66. [Link]("\nSorted array");
67. for(int i =0; i<[Link];i++)
68. {
69. [Link](arr[i]+"");
70. }
71. }
72. }

Sortie:

Tableau trié
23
23
23
34
45
65
67
89
90
101

253) Comment effectuer un tri rapide en Java?


Considérez le programme suivant pour effectuer un tri rapide en Java.

1. public class QuickSort {


2. public static void main(String[] args) {
3. int i;
4. int[] arr={90,23,101,45,65,23,67,89,34,23};
5. quickSort(arr, 0, 9);
6. [Link]("\n The sorted array is: \n");
7. for(i=0;i<10;i++)
8. [Link](arr[i]);
9. }
10. public static int partition(int a[], int beg, int end)
11. {
12.
13. int left, right, temp, loc, flag;
14. loc = left = beg;
15. right = end;
16. flag = 0;
17. while(flag != 1)
18. {
19. while((a[loc] <= a[right]) && (loc!=right))
20. right--;
21. if(loc==right)
22. flag =1;
23. elseif(a[loc]>a[right])
24. {
25. temp = a[loc];
26. a[loc] = a[right];
27. a[right] = temp;
28. loc = right;
29. }
30. if(flag!=1)
31. {
32. while((a[loc] >= a[left]) && (loc!=left))
33. left++;
34. if(loc==left)
35. flag =1;
36. elseif(a[loc] <a[left])
37. {
38. temp = a[loc];
39. a[loc] = a[left];
40. a[left] = temp;
41. loc = left;
42. }
43. }
44. }
45. returnloc;
46. }
47. static void quickSort(int a[], int beg, int end)
48. {
49.
50. int loc;
51. if(beg<end)
52. {
53. loc = partition(a, beg, end);
54. quickSort(a, beg, loc-1);
55. quickSort(a, loc+1, end);
56. }
57. }
58. }

Sortie:
Le tableau trié est:
23
23
23
34
45
65
67
89
90
101

254) Ecrivez un programme en Java pour créer une liste doublement chaînée
contenant n nœuds.
Considérez le programme suivant pour créer une liste à double liaison contenant n nœuds.

1. public class CountList {


2.
3. //Represent a node of the doubly linked list
4.
5. class Node{
6. int data;
7. Node previous;
8. Node next;
9.
10. public Node(int data) {
11. [Link] = data;
12. }
13. }
14.
15. //Represent the head and tail of the doubly linked list
16. Node head, tail = null;
17.
18. //addNode() will add a node to the list
19. public void addNode(int data) {
20. //Create a new node
21. Node newNode = new Node(data);
22.
23. //If list is empty
24. if(head == null) {
25. //Both head and tail will point to newNode
26. head = tail = newNode;
27. //head's previous will point to null
28. [Link] = null;
29. //tail's next will point to null, as it is the last node of the list
30. [Link] = null;
31. }
32. else {
33. //newNode will be added after tail such that tail's next will point to newNode
34. [Link] = newNode;
35. //newNode's previous will point to tail
36. [Link] = tail;
37. //newNode will become new tail
38. tail = newNode;
39. //As it is last node, tail's next will point to null
40. [Link] = null;
41. }
42. }
43.
44. //countNodes() will count the nodes present in the list
45. public int countNodes() {
46. int counter = 0;
47. //Node current will point to head
48. Node current = head;
49.
50. while(current != null) {
51. //Increment the counter by 1 for each node
52. counter++;
53. current = [Link];
54. }
55. return counter;
56. }
57.
58. //display() will print out the elements of the list
59. public void display() {
60. //Node current will point to head
61. Node current = head;
62. if(head == null) {
63. [Link]("List is empty");
64. return;
65. }
66. [Link]("Nodes of doubly linked list: ");
67. while(current != null) {
68. //Prints each node by incrementing the pointer.
69.
70. [Link]([Link] + " ");
71. current = [Link];
72. }
73. }
74.
75. public static void main(String[] args) {
76.
77. CountList dList = new CountList();
78. //Add nodes to the list
79. [Link](1);
80. [Link](2);
81. [Link](3);
82. [Link](4);
83. [Link](5);
84.
85. //Displays the nodes present in the list
86. [Link]();
87.
88. //Counts the nodes present in the given list
89. [Link]("\nCount of nodes present in the list: " + [Link]());
90. }
91. }
1. Sortie:
Nœuds de la liste doublement chaînée:
1 2 3 4 5
Nombre de nœuds présents dans la liste: 5
255) Write a program in Java to find the maximum and minimum value node from a
circular linked list.
Consider the following program.

1. public class MinMax {


2. //Represents the node of list.
3. public class Node{
4. int data;
5. Node next;
6. public Node(int data) {
7. [Link] = data;
8. }
9. }
10.
11. //Declaring head and tail pointer as null.
12. public Node head = null;
13. public Node tail = null;
14.
15. //This function will add the new node at the end of the list.
16. public void add(int data){
17. //Create new node
18. Node newNode = new Node(data);
19. //Checks if the list is empty.
20. if(head == null) {
21. //If list is empty, both head and tail would point to new node.
22. head = newNode;
23. tail = newNode;
24. [Link] = head;
25. }
26. else {
27. //tail will point to new node.
28. [Link] = newNode;
29. //New node will become new tail.
30. tail = newNode;
31. //Since, it is circular linked list tail will points to head.
32. [Link] = head;
33. }
34. }
35.
36. //Finds out the minimum value node in the list
37. public void minNode() {
38. Node current = head;
39. //Initializing min to initial node data
40. int min = [Link];
41. if(head == null) {
42. [Link]("List is empty");
43. }
44. else {
45. do{
46. //If current node's data is smaller than min
47. //Then replace value of min with current node's data
48. if(min > [Link]) {
49. min = [Link];
50. }
51. current= [Link];
52. }while(current != head);
53.
54. [Link]("Minimum value node in the list: "+ min);
55. }
56. }
57.
58. //Finds out the maximum value node in the list
59. public void maxNode() {
60. Node current = head;
61. //Initializing max to initial node data
62. int max = [Link];
63. if(head == null) {
64. [Link]("List is empty");
65. }
66. else {
67. do{
68. //If current node's data is greater than max
69. //Then replace value of max with current node's data
70. if(max < [Link]) {
71. max = [Link];
72. }
73. current= [Link];
74. }while(current != head);
75.
76. [Link]("Maximum value node in the list: "+ max);
77. }
78. }
79.
80. public static void main(String[] args) {
81. MinMax cl = new MinMax();
82. //Adds data to the list
83. [Link](5);
84. [Link](20);
85. [Link](10);
86. [Link](1);
87. //Prints the minimum value node in the list
88. [Link]();
89. //Prints the maximum value node in the list
90. [Link]();
91. }
92. }

Output:

Minimum value node in the list: 1


Maximum value node in the list: 20

256) Write a program in Java to calculate the difference between the sum of the odd
level and even level nodes of a Binary Tree.
Consider the following program.

1. import [Link];
2. import [Link];
3.
4. public class DiffOddEven {
5.
6. //Represent a node of binary tree
7. public static class Node{
8. int data;
9. Node left;
10. Node right;
11.
12. public Node(int data){
13. //Assign data to the new node, set left and right children to null
14. [Link] = data;
15. [Link] = null;
16. [Link] = null;
17. }
18. }
19.
20. //Represent the root of binary tree
21. public Node root;
22.
23. public DiffOddEven(){
24. root = null;
25. }
26.
27. //difference() will calculate the difference between sum of odd and even levels of binary tree
28. public int difference() {
29. int oddLevel = 0, evenLevel = 0, diffOddEven = 0;
30.
31. //Variable nodesInLevel keep tracks of number of nodes in each level
32. int nodesInLevel = 0;
33.
34. //Variable currentLevel keep track of level in binary tree
35. int currentLevel = 0;
36.
37. //Queue will be used to keep track of nodes of tree level-wise
38. Queue<Node> queue = new LinkedList<Node>();
39.
40. //Check if root is null
41. if(root == null) {
42. [Link]("Tree is empty");
43. return 0;
44. }
45. else {
46. //Add root node to queue as it represents the first level
47. [Link](root);
48. currentLevel++;
49.
50. while([Link]() != 0) {
51.
52. //Variable nodesInLevel will hold the size of queue i.e. number of elements in queue
53. nodesInLevel = [Link]();
54.
55. while(nodesInLevel > 0) {
56. Node current = [Link]();
57.
58. //Checks if currentLevel is even or not.
59. if(currentLevel % 2 == 0)
60. //If level is even, add nodes's to variable evenLevel
61. evenLevel += [Link];
62. else
63. //If level is odd, add nodes's to variable oddLevel
64. oddLevel += [Link];
65.
66. //Adds left child to queue
67. if([Link] != null)
68. [Link]([Link]);
69. //Adds right child to queue
70. if([Link] != null)
71. [Link]([Link]);
72. nodesInLevel--;
73. }
74. currentLevel++;
75. }
76. //Calculates difference between oddLevel and evenLevel
77. diffOddEven = [Link](oddLevel - evenLevel);
78. }
79. return diffOddEven;
80. }
81.
82. public static void main (String[] args) {
83.
84. DiffOddEven bt = new DiffOddEven();
85. //Add nodes to the binary tree
86. [Link] = new Node(1);
87. [Link] = new Node(2);
88. [Link] = new Node(3);
89. [Link] = new Node(4);
90. [Link] = new Node(5);
91. [Link] = new Node(6);
92.
93. //Display the difference between sum of odd level and even level nodes
94. [Link]("Difference between sum of odd level and even level nodes: " + [Link]());
95. }
96. }

Output:

Difference between sum of odd level and even level nodes: 11

Vous aimerez peut-être aussi