Télécharger le PDF
Nous avons compilé les questions et réponses d'entretien Java les plus fréquemment posées qui vous aideront à vous préparer aux questions d'entretien Java de base qu'un intervieweur pourrait vous poser lors de votre entretien. Dans cette liste de questions d'entretien Java de base, nous avons couvert toutes les questions d'entretien de base et avancées Java Core couramment posées avec des réponses détaillées pour vous aider à terminer l'entretien d'embauche.
La liste suivante contient 100 questions d'entretien Core Java importantes pour les novices ainsi que des questions d'entretien Java et des réponses pour les programmeurs expérimentés pour les aider à se préparer à l'entrevue. Ce guide détaillé des questions d'entretien pour la programmation Java vous aidera à résoudre facilement votre entretien d'embauche.
Questions et réponses d'entrevue Core Java pour les novices et expérimentés
Q1. Quelle est la différence entre une classe intérieure et une sous-classe?
Réponse: Une classe interne est une classe imbriquée dans une autre classe. Une classe Inner a des droits d'accès pour la classe qui l'imbrique et elle peut accéder à toutes les variables et méthodes définies dans la classe externe.
Une sous-classe est une classe qui hérite d'une autre classe appelée super classe. La sous-classe peut accéder à toutes les méthodes et champs publics et protégés de sa super classe.
Q2. Quels sont les différents spécificateurs d'accès pour les classes Java?
Réponse: En Java, les spécificateurs d'accès sont les mots-clés utilisés avant un nom de classe qui définit la portée d'accès. Les types de spécificateurs d'accès pour les classes sont:
1. Public: Classe, Méthode, Champ est accessible de n'importe où.
2. Protégé: Méthode, Field est accessible depuis la même classe à laquelle ils appartiennent ou depuis les sous-classes, et depuis la classe du même package, mais pas de l'extérieur.
3. Par défaut: Méthode, Champ, classe ne sont accessibles qu'à partir du même package et non depuis l'extérieur de son package natif.
4. Privé: Méthode, le champ est accessible à partir de la même classe à laquelle ils appartiennent.
Q3. À quoi servent les méthodes statiques et les variables statiques?
Réponse: Lorsqu'il est nécessaire de partager une méthode ou une variable entre plusieurs objets d'une classe au lieu de créer des copies séparées pour chaque objet, nous utilisons un mot-clé static pour rendre une méthode ou une variable partagée pour tous les objets.
Q4. Qu'est-ce que l'encapsulation des données et quelle est sa signification?
Réponse: L'encapsulation est un concept de la programmation orientée objet pour combiner des propriétés et des méthodes dans une seule unité.
L'encapsulation aide les programmeurs à suivre une approche modulaire pour le développement de logiciels, car chaque objet a son propre ensemble de méthodes et de variables et remplit ses fonctions indépendamment des autres objets. L'encapsulation sert également à cacher les données.
Q5. Qu'est-ce qu'une classe singleton? Donnez un exemple pratique de son utilisation.
Une classe singleton en java ne peut avoir qu'une seule instance et donc toutes ses méthodes et variables appartiennent à une seule instance. Le concept de classe Singleton est utile dans les situations où il est nécessaire de limiter le nombre d'objets pour une classe.
Le meilleur exemple de scénario d'utilisation de singleton est lorsqu'il y a une limite d'avoir une seule connexion à une base de données en raison de certaines limitations de pilote ou en raison de problèmes de licence.
Q6. Que sont les boucles en Java? Quels sont les trois types de boucles?
Ans: Le bouclage est utilisé dans la programmation pour exécuter une instruction ou un bloc d'instructions à plusieurs reprises. Il existe trois types de boucles en Java:
1) Pour les boucles
Les boucles For sont utilisées en java pour exécuter des instructions à plusieurs reprises un certain nombre de fois. Les boucles For sont utilisées lorsque le programmeur connaît le nombre d'exécutions des instructions.
2) Boucles While
La boucle While est utilisée lorsque certaines instructions doivent être exécutées à plusieurs reprises jusqu'à ce qu'une condition soit remplie. Dans les boucles while, la condition est vérifiée avant l'exécution des instructions.
3) Faire des boucles
La boucle Do While est la même que la boucle While avec la seule différence que la condition est vérifiée après l'exécution du bloc d'instructions. Par conséquent, en cas de boucle do while, les instructions sont exécutées au moins une fois.
Q7: Qu'est-ce qu'une boucle infinie? Comment la boucle infinie est-elle déclarée?
Réponse: Une boucle infinie s'exécute sans aucune condition et s'exécute indéfiniment. Une boucle infinie peut être interrompue en définissant une logique de rupture dans le corps des blocs d'instructions.
La boucle infinie est déclarée comme suit:
for (;;){// Statements to execute// Add any loop breaking logic}
Q8. Quelle est la différence entre l'instruction continue et break?
Ans: break et continue sont deux mots clés importants utilisés dans les boucles. Lorsqu'un mot-clé break est utilisé dans une boucle, la boucle est interrompue instantanément tandis que lorsque le mot-clé continue est utilisé, l'itération actuelle est interrompue et la boucle continue avec l'itération suivante.
Dans l'exemple ci-dessous, la boucle est interrompue lorsque le compteur atteint 4.
for (counter = 0; counter & lt; 10; counter++)system.out.println(counter);if (counter == 4) {break;}}
Dans l'exemple ci-dessous, lorsque le compteur atteint 4, la boucle passe à l'itération suivante et toutes les instructions après le mot-clé continue sont ignorées pour l'itération actuelle.
for (counter = 0; counter < 10; counter++)system.out.println(counter);if (counter == 4) {continue;}system.out.println("This will not get printed when counter is 4");}
Q9. Quelle est la différence entre les variables doubles et flottantes en Java?
Réponse: En java, float prend 4 octets en mémoire tandis que Double prend 8 octets en mémoire. Float est un nombre décimal à virgule flottante simple précision tandis que Double est un nombre décimal double précision.
Q10. Qu'est-ce que le mot-clé final en Java? Donne un exemple.
Réponse: En java, une constante est déclarée à l'aide du mot-clé Final. La valeur ne peut être attribuée qu'une seule fois et après l'affectation, la valeur d'une constante ne peut pas être modifiée.
Dans l'exemple ci-dessous, une constante avec le nom const_val est déclarée et attribuée avalue:
Finale privée int const_val = 100
Lorsqu'une méthode est déclarée comme finale, elle ne peut PAS être remplacée par les sous-classes. Cette méthode est plus rapide que toute autre méthode, car elles sont résolues au moment respecté.
Lorsqu'une classe est déclarée comme finale, elle ne peut pas être sous-classée. Exemple String, Integer et autres classes wrapper.
Q11. Qu'est-ce que l'opérateur ternaire? Donne un exemple.
Réponse: L'opérateur ternaire, également appelé opérateur conditionnel, est utilisé pour décider quelle valeur attribuer à une variable en fonction d'une évaluation de valeur booléenne. C'est noté?
Dans l'exemple ci-dessous, si le rang est 1, la valeur "Terminé" est attribuée à l'état "En attente".
public class conditionTest {public static void main(String args[]) {String status;int rank = 3;status = (rank == 1) ? "Done" : "Pending";System.out.println(status);}}
Q12: Comment générer des nombres aléatoires en Java?
Ans:
- En utilisant Math.random (), vous pouvez générer des nombres aléatoires dans la plage supérieure ou égale à 0,1 et inférieure à 1,0
- Utilisation de la classe Random dans le package java.util
Q13. Quel est le cas de commutateur par défaut? Donnez l'exemple.
Ans: Dans une instruction switch, le cas par défaut est exécuté lorsqu'aucune autre condition de switch ne correspond. Le cas par défaut est un cas facultatif. Il ne peut être déclaré qu'une fois que tous les autres cas de commutation ont été codés.
Dans l'exemple ci-dessous, lorsque le score n'est pas 1 ou 2, la casse par défaut est utilisée.
public class switchExample {int score = 4;public static void main(String args[]) {switch (score) {case 1:system.out.println("Score is 1");break;case 2:system.out.println("Score is 2");break;default:system.out.println("Default Case");}}}
Q14. Quelle est la classe de base en Java à partir de laquelle toutes les classes sont dérivées?
Ans: java.lang.object
Q15. La méthode main () en Java peut-elle renvoyer des données?
Réponse: En java, la méthode main () ne peut pas retourner de données et, par conséquent, elle est toujours déclarée avec un type de retour void.
Q16. Que sont les packages Java? Quelle est la signification des paquets?
Réponse: En Java, package est une collection de classes et d'interfaces qui sont regroupées car elles sont liées les unes aux autres. L'utilisation de packages aide les développeurs à modulariser le code et à regrouper le code pour une réutilisation appropriée. Une fois que le code a été empaqueté dans des packages, il peut être importé dans d'autres classes et utilisé.
Q17. Pouvons-nous déclarer une classe comme abstraite sans avoir de méthode abstraite?
Réponse: Oui, nous pouvons créer une classe abstraite en utilisant un mot-clé abstrait avant le nom de la classe même si elle n'a pas de méthode abstraite. Cependant, si une classe a ne serait-ce qu'une seule méthode abstraite, elle doit être déclarée comme abstraite sinon elle donnera une erreur.
Q18. Quelle est la différence entre une classe abstraite et une interface en Java?
Réponse: La principale différence entre une classe abstraite et une interface est qu'une interface ne peut posséder qu'une déclaration de méthodes statiques publiques sans implémentation concrète, tandis qu'une classe abstraite peut avoir des membres avec n'importe quel spécificateur d'accès (public, privé, etc.) avec ou sans implémentation concrète.
Une autre différence clé dans l'utilisation des classes abstraites et des interfaces est qu'une classe qui implémente une interface doit implémenter toutes les méthodes de l'interface tandis qu'une classe qui hérite d'une classe abstraite ne nécessite pas l'implémentation de toutes les méthodes de sa super classe.
Une classe peut implémenter plusieurs interfaces mais elle ne peut étendre qu'une seule classe abstraite.
Q19. Quelles sont les implications des interfaces sur les performances par rapport aux classes abstraites?
Réponse: Les interfaces sont plus lentes en performances par rapport aux classes abstraites car des indirections supplémentaires sont nécessaires pour les interfaces. Un autre facteur clé que les développeurs doivent prendre en compte est que toute classe ne peut étendre qu'une seule classe abstraite tandis qu'une classe peut implémenter plusieurs interfaces.
L'utilisation d'interfaces impose également un fardeau supplémentaire aux développeurs car chaque fois qu'une interface est implémentée dans une classe; le développeur est obligé d'implémenter chaque méthode d'interface.
Q20. L'importation d'un package importe-t-elle également ses sous-packages dans Java?
Réponse: En java, lorsqu'un package est importé, ses sous-packages ne sont pas importés et le développeur doit les importer séparément si nécessaire.
Par exemple, si un développeur importe un package university. *, Toutes les classes du package nommé university sont chargées mais aucune classe du sous-package n'est chargée. Pour charger les classes à partir de son sous-package (par exemple, département), le développeur doit l'importer explicitement comme suit:
Importer un département universitaire. *
Q21. Pouvons-nous déclarer la méthode principale de notre classe comme privée?
Réponse: En java, la méthode principale doit être publique statique pour exécuter correctement toute application. Si la méthode principale est déclarée comme privée, le développeur n'obtiendra aucune erreur de compilation, cependant, elle ne sera pas exécutée et donnera une erreur d'exécution.
Q22. Comment pouvons-nous passer un argument à une fonction par référence au lieu de passer par valeur?
Réponse: En java, nous pouvons passer un argument à une fonction uniquement par valeur et non par référence.
Q23. Comment un objet est-il sérialisé en java?
Réponse: En java, pour convertir un objet en flux d'octets par sérialisation, une interface avec le nom Serializable est implémentée par la classe. Tous les objets d'une classe implémentant une interface sérialisable sont sérialisés et leur état est enregistré dans un flux d'octets.
Q24. Quand devrions-nous utiliser la sérialisation?
Réponse: La sérialisation est utilisée lorsque des données doivent être transmises sur le réseau. À l'aide de la sérialisation, l'état de l'objet est enregistré et converti en flux d'octets. Le flux d'octets est transféré sur le réseau et l'objet est recréé à destination.
Q25. Est-il obligatoire qu'un bloc Try soit suivi d'un Catch Block en Java pour la gestion des exceptions?
Réponse: Le bloc Try doit être suivi soit du bloc Catch, soit du bloc Final ou des deux. Toute exception levée à partir du bloc try doit être soit interceptée dans le bloc catch, soit toutes les tâches spécifiques à effectuer avant que l'abandon de code ne soit placé dans le bloc Enfin.
Q26. Existe-t-il un moyen de sauter le bloc d'exception Enfin, même si une exception se produit dans le bloc d'exception?
Réponse: Si une exception est déclenchée dans le bloc Try, le contrôle passe au bloc catch s'il existe autrement pour finalement bloquer. Enfin, le bloc est toujours exécuté lorsqu'une exception se produit et le seul moyen d'éviter l'exécution de toute instruction dans le bloc finally est d'abandonner le code de force en écrivant la ligne de code suivante à la fin du bloc try:
System.exit(0);
Q27. Quand le constructeur d'une classe est invoqué?
Ans: Le constructeur d'une classe est appelé chaque fois qu'un objet est créé avec un nouveau mot-clé.
Par exemple, dans la classe suivante, deux objets sont créés à l'aide du nouveau mot-clé et, par conséquent, le constructeur est appelé deux fois.
public class const_example {const_example() {system.out.println("Inside constructor");}public static void main(String args[]) {const_example c1 = new const_example();const_example c2 = new const_example();}}
Q28. Une classe peut-elle avoir plusieurs constructeurs?
Réponse: Oui, une classe peut avoir plusieurs constructeurs avec des paramètres différents. Le constructeur utilisé pour la création d'objets dépend des arguments passés lors de la création des objets.
Q29. Pouvons-nous remplacer les méthodes statiques d'une classe?
Réponse: Nous ne pouvons pas remplacer les méthodes statiques. Les méthodes statiques appartiennent à une classe et non à des objets individuels et sont résolues au moment de la compilation (pas au moment de l'exécution) .Même si nous essayons de remplacer la méthode statique, nous n'obtiendrons pas d'erreur de complitaion, ni l'impact du remplacement lors de l'exécution du code.
Q30. Dans l'exemple ci-dessous, quelle sera la sortie?
public class superclass {public void displayResult() {system.out.println("Printing from superclass");}}public class subclass extends superclass {public void displayResult() {system.out.println("Displaying from subClass");super.displayResult();}public static void main(String args[]) {subclass obj = new subclass();obj.displayResult();}}
Ans : La sortie sera:
Affichage à partir de la sous-classe
Affichage depuis une superclasse
Q31. String est-il un type de données en Java?
Ans: String n'est pas un type de données primitif en java. Lorsqu'une chaîne est créée en java, c'est en fait un objet de la classe Java.Lang.String qui est créé. Après la création de cet objet chaîne, toutes les méthodes intégrées de la classe String peuvent être utilisées sur l'objet chaîne.
Q32. Dans l'exemple ci-dessous, combien d'objets chaîne sont créés?
String s1="I am Java Expert";String s2="I am C Expert";String s3="I am Java Expert";
Réponse: Dans l'exemple ci-dessus, deux objets de la classe Java.Lang.String sont créés. s1 et s3 sont des références au même objet.
Q33. Pourquoi les chaînes en Java sont appelées immuables?
Réponse: En java, les objets chaîne sont appelés immuables car une fois qu'une valeur a été affectée à une chaîne, elle ne peut pas être modifiée et si elle est modifiée, un nouvel objet est créé.
Dans l'exemple ci-dessous, la référence str fait référence à un objet de chaîne ayant la valeur «Valeur un».
String str="Value One";
Lorsqu'une nouvelle valeur lui est affectée, un nouvel objet String est créé et la référence est déplacée vers le nouvel objet.
str="New Value";
Q34. Quelle est la différence entre un tableau et un vecteur?
Réponse: Un tableau regroupe des données du même type primitif et est de nature statique, tandis que les vecteurs sont de nature dynamique et peuvent contenir des données de différents types de données.
Q35. Qu'est-ce que le multi-threading?
Réponse: Le multi threading est un concept de programmation pour exécuter plusieurs tâches de manière simultanée dans un seul programme. Les threads partagent la même pile de processus et s'exécutent en parallèle. Il aide à améliorer les performances de tout programme.
Q36. Pourquoi l'interface exécutable est-elle utilisée en Java?
Réponse: L'interface exécutable est utilisée en java pour implémenter des applications multithreads. L'interface Java.Lang.Runnable est implémentée par une classe pour prendre en charge le multi-threading.
Q37. Quelles sont les deux façons d'implémenter le multi-threading en Java?
Réponse: Les applications multithreads peuvent être développées en Java en utilisant l'une des deux méthodologies suivantes:
1. En utilisant l'interface Java.Lang.Runnable. Les classes implémentent cette interface pour activer le multi-threading. Il existe une méthode Run () dans cette interface qui est implémentée.
2. En écrivant une classe qui étend la classe Java.Lang.Thread.
Q38. Lorsque de nombreux changements sont nécessaires dans les données, lequel doit être utilisé de préférence? String ou StringBuffer?
Réponse: Étant donné que StringBuffers est de nature dynamique et que nous pouvons changer les valeurs des objets StringBuffer contrairement à String qui est immuable, c'est toujours un bon choix d'utiliser StringBuffer lorsque les données sont trop modifiées. Si nous utilisons String dans un tel cas, pour chaque changement de données, un nouvel objet String sera créé, ce qui représentera une surcharge supplémentaire.
Q39. Quel est le but de l'utilisation de Break dans chaque cas de Switch Statement?
Ans: Break est utilisé après chaque cas (sauf le dernier) dans un commutateur afin que le code se casse après le cas valide et ne circule pas dans les cas en cours également.
Si break n'est pas utilisé après chaque cas, tous les cas après le cas valide sont également exécutés, ce qui entraîne des résultats erronés.
Q40. Comment le garbage collection est-il effectué en Java?
Réponse: En java, lorsqu'un objet n'est plus référencé, le garbage collection a lieu et l'objet est détruit automatiquement. Pour le garbage collection automatique, java appelle la méthode System.gc () ou la méthode Runtime.gc ().
Q41. Comment pouvons-nous exécuter n'importe quel code avant même la méthode principale?
Réponse: Si nous voulons exécuter des instructions avant même la création d'objets au moment du chargement de la classe, nous pouvons utiliser un bloc de code statique dans la classe. Toutes les instructions à l'intérieur de ce bloc de code statique seront exécutées une fois au moment du chargement de la classe avant même la création des objets dans la méthode main.
Q42. Une classe peut-elle être à la fois une super classe et une sous-classe? Donnez l'exemple.
Réponse: Si une hiérarchie d'héritage est utilisée, une classe peut être une super-classe pour une autre classe et une sous-classe pour une autre en même temps.
Dans l'exemple ci-dessous, la classe continent est une sous-classe de classe mondiale et c'est une super classe de classe country.
public class world {… .}public class continenet extends world {… }public class country extends continent {… .}
Q43. Comment les objets d'une classe sont créés si aucun constructeur n'est défini dans la classe?
Réponse: Même si aucun constructeur explicite n'est défini dans une classe java, les objets sont créés avec succès car un constructeur par défaut est implicitement utilisé pour la création d'objets. Ce constructeur n'a pas de paramètres.
Q44. Dans le multi-threading, comment pouvons-nous nous assurer qu'une ressource n'est pas utilisée par plusieurs threads simultanément?
Réponse: Dans le multi-threading, l'accès aux ressources qui sont partagées entre plusieurs threads peut être contrôlé en utilisant le concept de synchronisation. En utilisant le mot-clé synchronized, nous pouvons nous assurer qu'un seul thread peut utiliser une ressource partagée à la fois et que d'autres ne peuvent obtenir le contrôle de la ressource qu'une fois qu'elle est devenue libre de l'autre qui l'utilise.
Q45. Peut-on appeler le constructeur d'une classe plus d'une fois pour un objet?
Ans: Le constructeur est appelé automatiquement lorsque nous créons un objet en utilisant un nouveau mot-clé. Il n'est appelé qu'une seule fois pour un objet au moment de la création de l'objet et, par conséquent, nous ne pouvons pas invoquer à nouveau le constructeur pour un objet après sa création.
Q46. Il existe deux classes nommées classA et classB. Les deux classes sont dans le même package. Un membre privé de classA est-il accessible par un objet de classB?
Réponse: Les membres privés d'une classe ne sont pas accessibles en dehors de la portée de cette classe et toute autre classe, même dans le même package, ne peut pas y accéder.
Q47. Pouvons-nous avoir deux méthodes dans une classe avec le même nom?
Réponse: Nous pouvons définir deux méthodes dans une classe avec le même nom mais avec un nombre / type de paramètres différent. La méthode à invoquer dépendra des paramètres passés.
Par exemple, dans la classe ci-dessous, nous avons deux méthodes d'impression avec le même nom mais des paramètres différents. En fonction des paramètres, celui qui convient sera appelé:
public class methodExample {public void print() {system.out.println("Print method without parameters.");}public void print(String name) {system.out.println("Print method with parameter");}public static void main(String args[]) {methodExample obj1 = new methodExample();obj1.print();obj1.print("xx");}}
Q48. Comment pouvons-nous faire une copie d'un objet java?
Réponse: Nous pouvons utiliser le concept de clonage pour créer une copie d'un objet. En utilisant le clone, nous créons des copies avec l'état réel d'un objet.
Clone () est une méthode d'interface clonable et par conséquent, l'interface clonable doit être implémentée pour faire des copies d'objets.
Q49. Quel est l'avantage d'utiliser l'héritage?
Réponse: Le principal avantage de l'utilisation de l'héritage est la réutilisabilité du code car l'héritage permet aux sous-classes de réutiliser le code de sa super classe. Le polymorphisme (extensibilité) est un autre grand avantage qui permet d'introduire de nouvelles fonctionnalités sans affecter les classes dérivées existantes.
Q50. Quel est le spécificateur d'accès par défaut pour les variables et les méthodes d'une classe?
Réponse: Le spécificateur d'accès par défaut pour les variables et la méthode est protégé par le package, c'est-à-dire que les variables et la classe sont disponibles pour toute autre classe mais dans le même package, pas en dehors du package.
Q51. Donnez un exemple d'utilisation des pointeurs dans la classe Java.
Ans: Il n'y a pas de pointeurs en Java. Nous ne pouvons donc pas utiliser le concept de pointeurs en Java.
Q52. Comment pouvons-nous restreindre l'héritage d'une classe afin qu'aucune classe ne puisse en être héritée?
Réponse: Si nous voulons qu'une classe ne soit plus étendue par aucune classe, nous pouvons utiliser le mot-clé Final avec le nom de la classe.
Dans l'exemple suivant, la classe Stone est finale et ne peut pas être étendue
public Final Class Stone {// Class methods and Variables}
Q53. Quelle est la portée d'accès du spécificateur d'accès protégé?
Réponse: Lorsqu'une méthode ou une variable est déclarée avec le spécificateur d'accès protégé, elle devient accessible dans la même classe, toute autre classe du même package ainsi qu'une sous-classe.
Modificateur |
Classer |
Paquet |
Sous-classe |
Monde |
Publique |
Oui |
Oui |
Oui |
Oui |
protégé |
Oui |
Oui |
Oui |
N |
pas de modificateur |
Oui |
Oui |
N |
N |
privé |
Oui |
N |
N |
N |
Q54. Quelle est la différence entre Stack et Queue?
Ans: Stack et Queue sont tous deux utilisés comme espace réservé pour une collection de données. La principale différence entre une pile et une file d'attente est que la pile est basée sur le principe du dernier entré, premier sorti (LIFO) tandis qu'une file d'attente est basée sur le principe FIFO (premier entré, premier sorti).
Q55. En java, comment interdire la sérialisation des variables?
Réponse: Si nous voulons que certaines variables d'une classe ne soient pas sérialisées, nous pouvons utiliser le mot-clé transitoire lors de leur déclaration. Par exemple, la variable trans_var ci-dessous est une variable transitoire et ne peut pas être sérialisée:
public class transientExample {private transient trans_var;// rest of the code}
Q56. Comment pouvons-nous utiliser des types de données primitifs comme objets?
Ans: Les types de données primitifs comme int peuvent être traités comme des objets par l'utilisation de leurs classes wrapper respectives. Par exemple, Integer est une classe wrapper pour le type de données primitif int. Nous pouvons appliquer différentes méthodes à une classe wrapper, comme n'importe quel autre objet.
Q57. Quels types d'exceptions sont interceptés au moment de la compilation?
Réponse: Les exceptions vérifiées peuvent être détectées au moment de la compilation du programme. Les exceptions vérifiées doivent être gérées à l'aide du bloc try catch dans le code afin de réussir à compiler le code.
Q58. Décrivez les différents états d'un thread.
Réponse: Un thread en Java peut être dans l'un des états suivants:
- Prêt: lorsqu'un thread est créé, il est à l'état Prêt.
- En cours d'exécution: un thread en cours d'exécution est en cours d'exécution.
- En attente: un thread en attente d'un autre thread pour libérer certaines ressources est en attente.
- Dead: un thread qui est mort après l'exécution est à l'état mort.
Q59. Pouvons-nous utiliser un constructeur par défaut d'une classe même si un constructeur explicite est défini?
Réponse: Java fournit un constructeur sans argument par défaut si aucun constructeur explicite n'est défini dans une classe Java. Mais si un constructeur explicite a été défini, le constructeur par défaut ne peut pas être appelé et le développeur ne peut utiliser que les constructeurs définis dans la classe.
Q60. Pouvons-nous remplacer une méthode en utilisant le même nom de méthode et des arguments mais des types de retour différents?
Réponse: La condition de base de la substitution de méthode est que le nom de la méthode, les arguments ainsi que le type de retour doivent être exactement les mêmes que ceux de la méthode remplacée. Par conséquent, l'utilisation d'un type de retour différent ne remplace pas une méthode.
Q61.Quelle sera la sortie du morceau de code suivant?
public class operatorExample {public static void main(String args[]) {int x = 4;system.out.println(x++);}}
Réponse: Dans ce cas, l'opérateur postfix ++ est utilisé, qui renvoie d'abord la valeur, puis incrémente. Par conséquent, sa sortie sera 4.
Q61. Une personne dit qu'elle a compilé une classe java avec succès sans même avoir une méthode principale en elle? Est-il possible?
Ans: la méthode principale est un point d'entrée de la classe Java et est cependant requise pour l'exécution du programme; une classe est compilée avec succès même si elle n'a pas de méthode principale. Il ne peut pas être exécuté cependant.
Q62. Pouvons-nous appeler une méthode non statique depuis l'intérieur d'une méthode statique?
Réponse: Les méthodes non statiques appartiennent aux objets d'une classe et ont une portée au niveau de l'objet et afin d'appeler les méthodes non statiques à partir d'un bloc statique (comme à partir d'une méthode principale statique), un objet de la classe doit être créé première. Ensuite, en utilisant la référence d'objet, ces méthodes peuvent être appelées.
Q63. Quelles sont les deux variables d'environnement à définir pour exécuter des programmes Java?
Réponse: les programmes Java ne peuvent être exécutés sur une machine qu'une fois que deux variables d'environnement ont été correctement définies:
- Variable PATH
- Variable CLASSPATH
Q64. Les variables peuvent-elles être utilisées en Java sans initialisation?
Réponse: En Java, si une variable est utilisée dans un code sans initialisation préalable par une valeur valide, le programme ne compile pas et donne une erreur car aucune valeur par défaut n'est affectée aux variables en Java.
Q65. Une classe en Java peut-elle être héritée de plusieurs classes?
Réponse: En Java, une classe peut être dérivée d'une seule classe et non de plusieurs classes. Les héritages multiples ne sont pas pris en charge par Java.
Q66. Un constructeur peut-il avoir un nom différent d'un nom de classe en Java?
Réponse: Le constructeur en Java doit avoir le même nom que le nom de la classe et si le nom est différent, il n'agit pas comme un constructeur et le compilateur le considère comme une méthode normale.
Q67. Quel sera le résultat de Round (3.7) et Ceil (3.7)?
Réponse: Round (3.7) renvoie 4 et Ceil (3.7) renvoie 4.
Q68: Pouvons-nous utiliser goto en Java pour accéder à une ligne particulière?
Réponse: En Java, il n'y a pas de mot-clé goto et java ne prend pas en charge cette fonction d'accès à une ligne étiquetée particulière.
Q69. Un fil mort peut-il être redémarré?
Réponse: En java, un thread qui est à l'état mort ne peut pas être redémarré. Il n'y a aucun moyen de redémarrer un thread mort.
Q70. La déclaration de classe suivante est-elle correcte?
Ans:
public abstract final class testClass {// Class methods and variables}
Réponse: La déclaration de classe ci-dessus est incorrecte car une classe abstraite ne peut pas être déclarée comme finale.
Q71. Le JDK est-il requis sur chaque machine pour exécuter un programme Java?
Réponse: JDK est un kit de développement de Java et n'est requis que pour le développement et pour exécuter un programme Java sur une machine, JDK n'est pas requis. Seul JRE est requis.
Q72. Quelle est la différence entre la comparaison effectuée par la méthode equals et l'opérateur ==?
Réponse: En Java, la méthode equals () est utilisée pour comparer le contenu de deux objets chaîne et renvoie true si les deux ont la même valeur tandis que l'opérateur == compare les références de deux objets chaîne.
Dans l'exemple suivant, equals () renvoie true car les deux objets chaîne ont les mêmes valeurs. Cependant, l'opérateur == renvoie false car les deux objets chaîne font référence à des objets différents:
public class equalsTest {public static void main(String args[]) {String str1 = new String("Hello World");String str2 = new String("Hello World");if (str1.equals(str2)){ // this condition is trueSystem.out.println("str1 and str2 are equal in terms of values");}if (str1 == str2) {//This condition is trueSystem.out.println("Both strings are referencing same object");} else{// This condition is NOT trueSystem.out.println("Both strings are referencing different objects");}}}
Q73. Est-il possible de définir une méthode dans la classe Java mais de fournir son implémentation dans le code d'un autre langage comme C?
Ans: Oui, nous pouvons le faire en utilisant des méthodes natives. Dans le cas d'un développement basé sur des méthodes natives, nous définissons des méthodes statiques publiques dans notre classe Java sans son implémentation, puis l'implémentation est effectuée dans un autre langage comme C séparément.
Q74. Comment les destructeurs sont-ils définis en Java?
Réponse: En Java, aucun destructeur n'est défini dans la classe car il n'est pas nécessaire de le faire. Java a son propre mécanisme de garbage collection qui effectue le travail automatiquement en détruisant les objets lorsqu'ils ne sont plus référencés.
Q75. Une variable peut-elle être locale et statique à la fois?
Réponse: Non, une variable ne peut pas être à la fois statique et locale. Définir une variable locale comme statique donne une erreur de compilation.
Q76. Pouvons-nous avoir des méthodes statiques dans une interface?
Réponse: Les méthodes statiques ne peuvent être remplacées dans aucune classe alors que toutes les méthodes d'une interface sont abstraites par défaut et sont supposées être implémentées dans les classes implémentant l'interface. Cela n'a donc aucun sens d'avoir des méthodes statiques dans une interface en Java.
Q77. Dans une classe implémentant une interface, peut-on changer la valeur de n'importe quelle variable définie dans l'interface?
Réponse: Non, nous ne pouvons pas changer la valeur d'une variable d'une interface dans la classe d'implémentation car toutes les variables définies dans l'interface sont par défaut publiques, statiques et finales et les variables finales sont comme des constantes qui ne peuvent pas être modifiées ultérieurement.
Q78. Est-il correct de dire qu'en raison de la fonctionnalité de ramasse-miettes de Java, un programme java ne manque jamais de mémoire?
Réponse: Même si le garbage collection automatique est fourni par Java, cela ne garantit pas qu'un programme Java ne manquera pas de mémoire car il est possible que la création d'objets Java soit effectuée à un rythme plus rapide que le garbage collection résultant en remplissage de toutes les ressources mémoire disponibles.
Ainsi, le garbage collection aide à réduire les chances qu'un programme manque de mémoire, mais cela ne garantit pas cela.
Q79. Pouvons-nous avoir un autre type de retour que void pour la méthode principale?
Réponse: Non, la méthode principale de la classe Java ne peut avoir que le type de retour void pour que le programme soit exécuté avec succès.
Néanmoins, si vous devez absolument renvoyer une valeur à à la fin de la méthode main, vous pouvez utiliser System.exit (int status)
Q80. Je veux atteindre et utiliser un objet une fois qu'il a été ramassé. Comment c'est possible?
Réponse: Une fois qu'un objet a été détruit par le garbage collector, il n'existe plus sur le tas et il n'est plus accessible. Il n'y a aucun moyen de le référencer à nouveau.
Q81. Dans la programmation de threads Java, quelle méthode est une implémentation incontournable pour tous les threads?
Ans: Run () est une méthode d'interface Runnable qui doit être implémentée par tous les threads.
Q82. Je veux contrôler les connexions de base de données dans mon programme et je veux qu'un seul thread puisse établir une connexion à la base de données à la fois. Comment puis-je implémenter cette logique?
Ans: Cela peut être implémenté en utilisant le concept de synchronisation. Le code lié à la base de données peut être placé dans une méthode qui utilise le mot-clé synchronisé afin qu'un seul thread puisse y accéder à la fois.
Q83. Comment une exception peut-elle être levée manuellement par un programmeur?
Ans: Afin de lever manuellement une exception dans un bloc de code, le mot clé throw est utilisé. Ensuite, cette exception est interceptée et gérée dans le bloc catch.
public void topMethod() {try {excMethod();} catch (ManualException e) {}}public void excMethod {String name = null;if (name == null) {throw (new ManualException("Exception thrown manually ");}}
Q84. Je veux que ma classe soit développée de telle manière qu'aucune autre classe (même dérivée) ne puisse créer ses objets. Comment puis-je le faire?
Réponse: Si nous déclarons le constructeur d'une classe comme privé, il ne sera accessible à aucune autre classe et par conséquent, aucune autre classe ne pourra l'instancier et la formation de son objet sera limitée à elle-même.
Q85. Comment les objets sont-ils stockés dans Java?
Réponse: En java, chaque objet une fois créé obtient un espace mémoire à partir d'un tas. Lorsqu'un objet est détruit par un garbage collector, l'espace qui lui est alloué à partir du tas est réalloué au tas et devient disponible pour tous les nouveaux objets.
Q86. Comment trouver la taille réelle d'un objet sur le tas?
Réponse: En java, il n'y a aucun moyen de connaître la taille exacte d'un objet sur le tas.
Q87. Laquelle des classes suivantes aura plus de mémoire allouée?
Classe A: trois méthodes, quatre variables, aucun objet
Classe B: cinq méthodes, trois variables, aucun objet
Réponse: La mémoire n'est pas allouée avant la création des objets. Étant donné que pour les deux classes, il n'y a aucun objet créé, donc aucune mémoire n'est allouée sur le tas pour aucune classe.
Q88. Que se passe-t-il si une exception n'est pas gérée dans un programme?
Réponse: Si une exception n'est pas gérée dans un programme utilisant des blocs try catch, le programme est abandonné et aucune instruction ne s'exécute après l'instruction qui a provoqué la levée d'exceptions.
Q89. J'ai plusieurs constructeurs définis dans une classe. Est-il possible d'appeler un constructeur à partir du corps d'un autre constructeur?
Réponse: Si une classe a plusieurs constructeurs, il est possible d'appeler un constructeur à partir du corps d'un autre en utilisant this () .
Q90. Qu'entend-on par classe anonyme?
Réponse: Une classe anonyme est une classe définie sans aucun nom dans une seule ligne de code en utilisant un nouveau mot-clé.
Par exemple, dans le code ci-dessous, nous avons défini une classe anonyme dans une ligne de code:
public java.util.Enumeration testMethod(){return new java.util.Enumeration(){@Overridepublic boolean hasMoreElements(){// TODO Auto-generated method stubreturn false;}@Overridepublic Object nextElement(){// TODO Auto-generated method stubreturn null;}}
Q91. Existe-t-il un moyen d'augmenter la taille d'un tableau après sa déclaration?
Réponse: Les tableaux sont statiques et une fois que nous avons spécifié sa taille, nous ne pouvons pas la modifier. Si nous voulons utiliser de telles collections où nous pouvons exiger un changement de taille (aucun élément), nous devrions préférer le vecteur au tableau.
Q92. Si une application contient plusieurs classes, est-il acceptable d'avoir une méthode principale dans plusieurs classes?
Réponse: S'il y a une méthode principale dans plus d'une classe dans une application java, cela ne posera aucun problème car le point d'entrée pour toute application sera une classe spécifique et le code démarrera à partir de la méthode principale de cette classe particulière uniquement.
Q93. Je souhaite conserver les données des objets pour une utilisation ultérieure. Quelle est la meilleure approche pour y parvenir?
Réponse: La meilleure façon de conserver les données pour une utilisation future est d'utiliser le concept de sérialisation.
Q94. Qu'est-ce qu'une classe locale en Java?
Réponse: En Java, si nous définissons une nouvelle classe à l'intérieur d'un bloc particulier, on l'appelle une classe locale. Une telle classe a une portée locale et n'est pas utilisable en dehors du bloc où elle est définie.
Q95. String et StringBuffer représentent tous deux des objets String. Pouvons-nous comparer String et StringBuffer en Java?
Réponse: Bien que String et StringBuffer représentent tous deux des objets String, nous ne pouvons pas les comparer et si nous essayons de les comparer, nous obtenons une erreur.
Q96. Quelle API est fournie par Java pour les opérations sur un ensemble d'objets?
Réponse: Java fournit une API de collection qui fournit de nombreuses méthodes utiles qui peuvent être appliquées à un ensemble d'objets. Certaines des classes importantes fournies par l'API Collection incluent ArrayList, HashMap, TreeSet et TreeMap.
Q97. Pouvons-nous convertir n'importe quel autre type en type booléen avec la conversion de type?
Réponse: Non, nous ne pouvons convertir aucun autre type primitif en type de données booléen ni convertir un type de données booléen en un autre type de données primitif.
Q98. Pouvons-nous utiliser différents types de retour pour les méthodes en cas de substitution?
Réponse: La condition de base de la substitution de méthode en Java est que la méthode remplacée doit avoir le même nom et les mêmes paramètres, mais une méthode peut être remplacée par un type de retour différent tant que le nouveau type de retour étend l'original.
Par exemple, la méthode renvoie un type de référence.
Class B extends A {A method(int x) {//original method}B method(int x) {//overridden method}}
Q99. Quelle est la classe de base de toutes les classes d'exception?
Réponse: En Java, Java.lang.Throwable est la super classe de toutes les classes d'exceptions et toutes les classes d'exceptions sont dérivées de cette classe de base.
Q100. Quel est l'ordre d'appel des constructeurs en héritage?
Réponse: En cas d'héritage, lorsqu'un nouvel objet d'une classe dérivée est créé, le constructeur de la super classe est d'abord appelé, puis le constructeur de la classe dérivée est appelé.
Préparez-vous pour votre entretien d'embauche !!! Suivez le tutoriel Java pour être mieux préparé.
Ce pdf détaillé des questions d'entretien Java vous aidera à dissiper les doutes sur les questions d'entretien Java et vous aidera également à résoudre l'entretien.