Top 130+ des questions et réponses d'entrevue Java 2022

Publié: 2021-01-01

Questions et réponses d'entrevue Java

Dans cet article, nous avons compilé les questions d'entrevue Java les plus fréquemment posées. Ces questions vous permettront de vous familiariser avec le type de questions qu'un intervieweur pourrait vous poser lors de votre entretien pour Programmation Java.

En tant que Fresher, vous venez d'assister à un entretien ou vous prévoyez d'y assister prochainement. Chercheur d'emploi débutant cherchant à développer votre carrière dans la programmation de logiciels, vous pourriez être nerveux à propos de vos entretiens à venir . Nous avons tous ces moments de panique où nous nous taisons et pouvons même oublier ce qu'est un fil. Nous allons le simplifier pour vous, tout ce dont vous avez besoin pour le faire, respirez profondément et vérifiez les questions qui sont les plus susceptibles d'être posées.

Vous ne pouvez pas éviter de paniquer, mais vous pouvez certainement vous y préparer lorsque vous entrez dans cette salle d'entretien. Vous êtes confiant et savez que vous pouvez gérer tout ce que l'intervieweur pourrait vous lancer.

Apprenez les programmes de génie logiciel en ligne des meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.

Voici une liste compilée de 24 questions d'entretien Java complètes avec réponses (dernières 2022) qui vous aideront à gagner cette confiance et à vous assurer de naviguer tout au long de l'entretien.

1. En quoi consiste JVM ?
JVM, abréviation de Java Virtual Machine, est requis par tout système pour exécuter des programmes Java. Son architecture comprend essentiellement :
● Classloader : C'est un sous-système de JVM et sa fonction principale est de charger des fichiers de classe chaque fois qu'un programme Java est exécuté.
● Tas : ce sont les données d'exécution qui sont utilisées pour allouer les objets.
● Zone de classe : elle contient le niveau de classe de chaque fichier de classe, comme les variables statiques, les métadonnées et le pool d'exécution constant.
● Stack : utilisé pour stocker les variables temporaires.
● Registre : le registre contient l'adresse de l'instruction JVM en cours d'exécution
● Moteur d'exécution : l'EE se compose d'un processeur virtuel, d'un interpréteur qui exécute les instructions après lecture du bytecode, et d'un compilateur JIT qui améliore les performances lorsque le rythme d'exécution est lent.
● Java Native Interface : elle sert de support de communication pour interagir avec une autre application développée en C, C++, etc.

2. Qu'est-ce que la programmation orientée objet ? Java est-il un langage orienté objet ?
Essentiellement, la programmation orientée objet est un paradigme de programmation qui fonctionne sur le concept d'objets. En termes simples, les objets sont des conteneurs - ils contiennent des données sous forme de champs et du code sous forme de procédures. Suivant cette logique, un langage orienté objet est un langage qui travaille sur des objets et des procédures.

Étant donné que Java utilise 8 types de données primitifs - boolean, byte, char, int, float, long, short, double - qui ne sont pas des objets, Java ne peut pas être considéré comme un langage 100 % orienté objet.

3. Qu'entendez-vous par agrégation dans le contexte de Java ?
L'agrégation est une forme d'association dans laquelle chaque objet se voit attribuer son propre cycle de vie. Mais, il y a propriété dans ceci, et l'objet enfant ne peut appartenir à aucun autre objet parent de quelque manière que ce soit.

4. Nommez la superclasse en Java.
Java.lang. Tous les différents non-primitifs sont hérités directement ou indirectement de cette classe.

5. Expliquez la différence entre « enfin » et « finaliser » en Java ?
Utilisé avec le bloc try-catch, le bloc 'finally' est utilisé pour s'assurer qu'un morceau de code particulier est toujours exécuté, même si l'exécution est déclenchée par le bloc try-catch.

En revanche, finalize() est une méthode spéciale dans la classe d'objets. Il est généralement remplacé pour libérer les ressources système lorsque la valeur de mémoire est collectée à partir de l'objet.

6. Qu'est-ce qu'une classe interne anonyme ? En quoi est-ce différent d'une classe interne ?
Toute classe interne locale qui n'a pas de nom est appelée classe interne anonyme. Comme il n'a pas de nom, il est impossible de créer son constructeur. Il étend toujours une classe ou implémente une interface, et est défini et instancié dans une seule instruction.

Une classe imbriquée non statique est appelée une classe interne. Les classes internes sont associées aux objets de la classe et elles peuvent accéder à toutes les méthodes et variables de la classe externe.

7. Qu'est-ce qu'une classe système ?
C'est une classe de base en Java. Puisque la classe est finale, nous ne pouvons pas remplacer son comportement par héritage. Nous ne pouvons pas non plus instancier cette classe car elle ne fournit aucun constructeur public. Par conséquent, toutes ses méthodes sont statiques.

8. Comment créer un thread démon en Java ?
Nous utilisons la classe setDaemon(true) pour créer ce thread. Nous appelons cette méthode avant la méthode start(), sinon nous obtenons IllegalThreadStateException.

Profil d'emploi pour développeur de logiciels

9. Java prend-il en charge les variables globales ? Pourquoi pourquoi pas?
Non, Java ne prend pas en charge les variables globales. Ceci est principalement dû à deux raisons :
● Ils créent des collisions dans l'espace de noms.
● Ils brisent la transparence référentielle.

10. Comment un objet RMI est-il développé ?
Les étapes suivantes peuvent être suivies pour développer un objet RMI :
● Définir l'interface
● Implémenter l'interface
● Compiler l'interface et leurs implémentations avec le compilateur java
● Compiler l'implémentation du serveur avec le compilateur RMI
● Exécuter le registre RMI
● Exécuter l'application

11. Expliquez les différences entre le découpage temporel et la planification préemptive ?
En cas de découpage temporel, une tâche s'exécute pendant un laps de temps spécifié, également appelé tranche. Après cela, il entre dans la file d'attente prête - un pool de tâches «prêtes». Le planificateur sélectionne ensuite la prochaine tâche à exécuter en fonction de la priorité et d'autres facteurs.

Alors que dans la planification préemptive, la tâche avec la priorité la plus élevée est exécutée soit jusqu'à ce qu'elle entre dans des états morts ou d'avertissement, soit si une autre tâche de priorité plus élevée se présente.

12. Quel type de thread est le Garbage collector thread ?
C'est un thread démon.

13. Quel est le cycle de vie d'un thread en Java ?
Tout thread en Java passe par les étapes suivantes de son cycle de vie :
● Nouveau
● Exécutable
● Courir
● Non exécutable (bloqué)
● Résilié

14. Indiquez les méthodes utilisées pendant le processus de désérialisation et de sérialisation.
ObjectInputStream.readObject
Lit le fichier et désérialise l'objet.

ObjectOuputStream.writeObjectObjectOututStream.writeObject
Sérialisez l'objet et écrivez l'objet sérialisé dans un fichier.

15. Que sont les variables volatiles et à quoi servent-elles ?
Les variables volatiles sont des variables qui lisent toujours depuis la mémoire principale, et non depuis la mémoire cache du thread. Ceux-ci sont généralement utilisés lors de la synchronisation.

16. Que sont les classes wrapper en Java ?
Tous les types de données primitifs en Java ont une classe qui leur est associée - connue sous le nom de classes wrapper. Elles sont appelées classes wrapper car elles « enveloppent » le type de données primitif dans un objet pour la classe. En bref, ils convertissent les primitives Java en objets.

17. Comment créer une classe singleton ?
En rendant son constructeur privé.

18. Quelles sont les méthodes importantes d'Exception Class en Java ?
● chaîne getMessage()
● chaîne versString()
● annuler printStackTrace()
● Synchronisé Throwable getCause()
● public StackTraceElement[] getStackTrace()

19. Comment créer un thread en Java ?
Nous pouvons suivre l'une des deux façons de créer un thread en Java :
● En étendant la classe Thread

L'inconvénient de cette méthode est que nous ne pouvons pas étendre d'autres classes puisque la classe thread a déjà été étendue.
● En implémentant l'interface Runnable

20. Expliquez les différences entre les méthodes get() et load().
Les méthodes get() et load() présentent les différences suivantes :
● get() renvoie null si l'objet n'est pas trouvé, alors que load() lève l'exception ObjectNotFound.
● get() renvoie toujours un objet réel, tandis que load() renvoie un objet proxy.
● La méthode get() touche toujours la base de données alors que load() ne le fait pas.
● get() doit être utilisé si vous n'êtes pas sûr de l'existence d'une instance, tandis que load() doit être utilisé si vous êtes sûr que l'instance existe.

21. Quelle est la valeur par défaut des variables locales ?
Ils ne sont initialisés à aucune valeur par défaut. Ni les primitives ni les références d'objet.

22. Qu'est-ce que Singleton en Java ?
C'est une classe avec une instance dans toute l'application Java. Par exemple, java.lang.Runtime est une classe Singleton. L'objectif premier de Singleton est de contrôler la création d'objet en gardant le constructeur privé.

23. Qu'est-ce que la méthode statique ?

Une méthode statique peut être invoquée sans qu'il soit nécessaire de créer une instance d'une classe. Une méthode statique appartient à la classe plutôt qu'à un objet d'une classe. Une méthode statique peut accéder aux données membres statiques et peut en modifier la valeur.

24. Quelle est l'exception ?

Exceptions Conditions inhabituelles pendant le programme. Cela peut être dû à une logique incorrecte écrite par une entrée utilisateur ou un programmeur incorrect.

25. En termes simples, comment définiriez-vous Java ?

Java est un portail de haut niveau, indépendant de la plate-forme et orienté objet, qui offre un support hautes performances pour la création de programmes, d'applications et de sites Web sophistiqués. Java est un langage de programmation à usage général qui permet aux développeurs de créer des applications riches en fonctionnalités avec leur environnement WORA (Write Once Run Anywhere). James Arthur Gosling, un informaticien canadien, a développé Java en 1991 et est populairement connu sous le nom de "Dr Java". Aujourd'hui, Java est devenu une base essentielle pour l'industrie informatique moderne.

26 . Qu'est-ce que le pool de chaînes Java ?

Un pool de chaînes en Java est un endroit distinct qui possède un pool de chaînes stockées via la mémoire Java Heap. Ici, String représente une classe spéciale en Java, et les objets chaîne peuvent être créés en utilisant soit un nouvel opérateur, soit des valeurs entre guillemets doubles.
La chaîne est immuable en Java, rendant ainsi la faisabilité du pool de chaînes, puis la mise en œuvre ultérieure via les concepts d'internat de chaîne.

27. Qu'est-ce qu'une classe de collection en Java ? Lister ses méthodes et ses interfaces ?

Les classes de collection Java sont des classes spéciales, qui sont exclusivement utilisées avec des méthodes statiques qui fonctionnent spécifiquement sur les collections de retour. Java Collection hérite par défaut d'une classe et possède deux fonctionnalités essentielles telles que :

  • Ils prennent en charge et fonctionnent avec des algorithmes polymorphes qui renvoient de nouvelles collections pour chaque collection spécifique.
  • Les méthodes de Java Collection lèvent une NullPointerException dans le cas où les objets de classe ou les collections ont une valeur Null.

Ceux-ci sont représentés et déclarés en tant que Java.util.Collectionclass.

Il existe plus de 60 méthodes, modificateurs et types de classes Java Collection. Voici une liste des méthodes les plus importantes de Java Collection Class :

S. Non. Modificateur, méthode et type La description
1. statique <T> booléen addAll() Cette méthode permet l'ajout d'éléments spécifiques à une collection particulière.
2. statique <T> File d'attente <T> asLifoQueue() Cette méthode permet la liste de la collection comme Last-in-first-out (LIFO) en vue.
3. statique <T> int recherchebinaire() Cette méthode permet de rechercher un objet spécifique puis de les renvoyer dans une liste triée.
4. statique <E> Collection<E> Cette méthode renvoie la vue dynamique d'une collection particulière.
5. statique <E> Liste <E> Cette méthode donne un retour d'une vue typesafe dynamique à partir d'une liste particulière.

Voici quelques exemples pour Java Collection :
Collection Java min() Exemple :

 1
 2
 3
 4
 5
 6
 7
 8
 9
dix
11
12
 importer java.util.* ;  
 	public class CollectionsExample {  
 	    public static void main ( Chaîne a []){         
 	        List < Integer > list = new ArrayList < Integer >();  
 	        liste . ajouter ( 90 );  
 	        liste . ajouter ( 80 );  
 	        liste . ajouter ( 76 );  
 	        liste . ajouter ( 58 );  
 	        liste . ajouter ( 12 );  
          Système . dehors . println ( "Élément de valeur minimale dans la collection : " + Collections . min ( list ));  
      }  
  } 

La sortie sera :

Élément de valeur minimale dans la collection : 12

Collection Java max() Exemple :

 1
 2
 3
 4
 5
 6
 7
 8
 9
dix
11
12
 importer java.util.* ;  
  public class CollectionsExample {  
      public static void main ( Chaîne a []){         
          List < Integer > list = new ArrayList < Integer >();  
          liste . ajouter ( 90 );  
          liste . ajouter ( 80 );  
          liste . ajouter ( 76 );  
          liste . ajouter ( 58 );  
          liste . ajouter ( 12 );  
          Système . dehors . println ( "Élément de valeur maximale dans la collection : " + Collections . max ( list ));  
      }  
  }

La sortie sera :

Élément de valeur maximale dans la collection : 90

28 . Qu'est-ce qu'un servlet ?

Les servlets sont des composants logiciels Java qui ajoutent plus de fonctionnalités à un serveur Java via la technologie, l'API, l'interface, la classe ou tout déploiement Web. Les servlets s'exécutent spécifiquement sur des serveurs d'applications Web basés sur Java et sont capables de gérer des requêtes complexes provenant du serveur Web. Les servlets ajoutent l'avantage de performances, de robustesse, d'évolutivité, de portabilité supérieures et garantissent la sécurité des applications Java.

Processus ou exécution du servlet :

  • Cela commence lorsqu'un utilisateur envoie une demande à partir d'un navigateur Web.
  • Le serveur Web reçoit puis transmet cette demande au servlet spécifique.
  • Le servlet traite ensuite cette demande pour obtenir une réponse spécifique avec sortie.
  • Le servlet renvoie ensuite cette réponse au serveur Web.
  • Ensuite, le serveur Web obtient les informations que le navigateur affiche à l'écran.

Les servlets Java sont livrés avec plusieurs classes et interfaces telles que GenericServlet, ServletRequest, Servlet API, HttpServlet, ServeResponse, etc.

29. Qu'est-ce que le répartiteur de demandes ?

Dans Servlet, RequestDispatcher agit comme une interface pour définir un objet pour recevoir les demandes des clients d'un côté, puis le répartir à des ressources particulières de l'autre côté (qui peut être un servlet, HTML, JSP). Ce RequestDispatcher a deux méthodes en général :

void forward (demande ServletRequest, réponse ServletResponse) Cela autorise et transmet les requêtes de n'importe quel servlet aux ressources du serveur sous la forme d'un servlet, d'un fichier HTML ou d'un fichier JSP.
void include (demande ServletRequest, réponse ServletResponse) Qui a du contenu pour une ressource particulière sous la forme d'une réponse telle qu'un fichier HTML, une page JSP ou un servlet.

30. Quel est le cycle de vie d'une servlet ?

Servlet est un composant logiciel Java qui a pour fonction principale de prendre d'abord la demande, puis de traiter la demande et de donner une réponse à l'utilisateur dans une page HTML. Ici, Servlet Container gère le cycle de vie d'un servlet. Voici les principales étapes :

  • Chargement de la servlet.
  • Ensuite, initialisation de la servlet.
  • Traitement de la demande (méthode de service appelant).
  • Puis détruire le Servlet.

Voici un schéma rapide montrant le cycle de vie d'un servlet Java :
Cycle de vie du servlet

La source

  • Chargement du servlet

Le cycle de vie de Servlet commence par l'étape de chargement dans le conteneur Servlet. Le servlet se charge de l'une des deux manières avec :

    • Définition du servlet en tant que valeur intégrale positive ou nulle.
    • Deuxièmement, ce processus peut être retardé, car le conteneur sélectionne le bon servlet pour gérer la demande.

Maintenant, les conteneurs chargent d'abord la classe Servlet, puis construisent une instance via le constructeur sans argument.

  • Initialisation du servlet

L'étape suivante consiste à utiliser la méthode Servlet.init(ServletConfig) pour initialiser le Servlet, par exemple la source de données JDBC.

  • Traitement de la demande (méthode de service d'appel)

Ici, le servlet prend les demandes du client et effectue l'opération requise à l'aide de la méthode service().

  • Détruire la servlet

Maintenant, le conteneur Servlet détruit le servlet en exécutant et en complétant des tâches spécifiques et en appelant la méthode destroy() dans l'instance.

31. Quelles sont les différentes méthodes de gestion de session dans les servlets ?

Les sessions suivent l'activité de l'utilisateur après sa connexion au site. La gestion de session fournit le mécanisme permettant d'obtenir des informations pour chaque utilisateur indépendant. Voici les quatre méthodes différentes de gestion de session dans les servlets :

  • Session HTTP
  • Biscuits
  • Réécriture d'URL
  • Champ masqué HTML

32. Qu'est-ce qu'un pilote JDBC ?

Java Database Connectivity (JDBC) agit ici comme un composant logiciel qui permet aux applications Java de communiquer avec une base de données.

Les pilotes JDBC ont les quatre types suivants dans l'environnement :

  • Pilote de pont JDBC-ODBC
  • Pilote de protocole réseau (pilote middleware)
  • Pilote de protocole de base de données (pilote entièrement Java)
  • Pilote d'API native

33. Qu'est-ce que l'interface de connexion JDBC ?

Les connexions définissent les sessions entre la base de données et les applications Java. L'interface de connexion JDBC fait partie du package java.sql uniquement et fournit des informations de session pour une base de données particulière. Ceux-ci représentent plusieurs instructions SQL pour l'exécution et les résultats dans le contexte d'une interface de connexion unique. Voici les principales méthodes pour l'interface Connections :

  • createStatement() : pour créer un objet d'instruction spécifique pour ajouter des instructions SQL à la base de données particulière.
  • setAutoCommit(boolean status) : Pour définir la connexion d'un mode commit à une directive false ou true.
  • commit() : qui effectue toutes les modifications depuis le dernier commit et libère ensuite toute base de données actuellement détenue par l'objet Connection spécifique.
  • rollback() : qui annule ou annule toutes les modifications apportées dans la transaction passée ou actuelle et libère également la base de données actuellement détenue dans l'objet de connexion.
  • close() : Qui met fin ou ferme la connexion actuelle et libère ou efface également instantanément les ressources JDBC.

34. Nommez les différents modules du framework Spring ?

Il existe plusieurs modules dans le framework Spring :

  • Module Web
  • Module entretoises
  • Module de servlet
  • Module de conteneur principal
  • Programmation orientée aspect (AOP)
  • Module Contexte d'application
  • Module de cadre MVC
  • Module d'abstraction JDBC et DAO
  • Module OXM
  • Module de langage d'expression
  • Module transactionnel
  • Module de service de messagerie Java (JMS)
  • Module d'intégration ORM

Ces modules sont présents en groupes :

modules-ressorts

La source

35. Expliquez Bean in Spring et répertoriez les différentes portées de Spring bean.

Les beans sont l'un des concepts fondamentaux du framework Spring pour gérer efficacement les structures. Dans une définition simple, Spring Bean représente les conteneurs IoC qui gèrent l'objet formant l'épine dorsale des applications.

Champs d'application du haricot de printemps :

Les étendues jouent un rôle crucial dans l'utilisation efficace des beans Spring dans l'application. Scope nous aide à comprendre le cycle de vie du Spring Bean, et ils ont les types suivants .

S. Non. Portée et description
1. Singleton – Par défaut, la portée du bean Spring a une portée singleton qui représente une seule instance pour le conteneur Spring IOC. Ce même objet est partagé pour chaque requête.
2. Prototype - Dans ce cas, une nouvelle instance sera appelée et créée pour chaque définition de bean, chaque fois qu'une demande est faite pour un bean spécifique.
3. Requête – Dans cette portée, un seul bean sera appelé et créé pour chaque requête HTTP pour ce bean spécifique.
4. Session – Cette portée définit l'utilisation d'un bean unique pour un cycle de vie dans une session HTTP globale particulière.
5. Global-session – Cette portée permet à un seul bean pour le cycle de vie particulier d'être implémenté dans la session HTTP globale.

Remarque : les trois dernières étendues s'appliquent uniquement au Spring ApplicationContext compatible Web.

Doit lire : pourquoi Java est si populaire auprès des développeurs

36. Expliquez le rôle de DispatcherServlet et ContextLoaderListener.

Lors de la configuration de la configuration Spring MVC basée sur XML dans le fichier web.xml, deux déclarations de DispatcherServlet et ContextLoaderListener jouent un rôle essentiel en complétant l'objectif du framework.

  • DispatcherServlet –

DispatcherServlet a pour objectif principal de gérer les demandes Web entrantes pour des modèles d'URI configurés correspondants spécifiques. DispatcherServlet agit en tant que contrôleur frontal pour le cœur de l'application Spring MVC et charge spécifiquement le fichier de configuration, puis initialise les bons beans présents dans ce fichier. Et lorsque les annotations sont activées, il peut également vérifier et analyser les configurations et les packages pour tous annotés avec @Repository, @Component, @Service ou @Controller.

  • ContextLoaderListener –

ContextLoaderListener agit ici comme écouteur de requête pour démarrer et arrêter le WebApplicationContext racine. Ainsi, il crée et partage le contexte d'application racine avec les contextes enfants par les contextes DispatcherServlet. Les applications ne peuvent utiliser qu'une seule entrée pour ContextLoaderListener dans le fichier web.xml.

37. Expliquez l'architecture Hibernate.

Hibernate définit une architecture en couches qui permet aux utilisateurs d'opérer et de fonctionner sans connaître les API sous-jacentes, c'est-à-dire qu'Hibernate agit comme un cadre pour construire et développer une logique de persistance indépendante du logiciel de base de données.

L'architecture Hibernate comporte les quatre couches principales avec :

  • Couche applicative Java
  • Couche de base de données
  • Couche API back-end
  • Couche de structure Hibernate

Éléments de l'architecture Hibernate

Il existe plusieurs aspects et portées pour l'architecture Hibernate. Pour en savoir plus à leur sujet, vous devez connaître les éléments de l'architecture Hibernate.

  • SessionFactory : Sessionfactory fournit la méthode pour créer des objets de session présents uniquement dans le package org.hiberate. Il est de nature thread-safe, immuable, et contient et préserve le cache de deuxième niveau des données.
  • Session : les objets de session fournissent l'interface pour les logiciels de connexion et de base de données via le cadre d'hibernation.
  • Transaction : Interface qui facilite la gestion des transactions et permet un changement dans la base de données.
  • ConnectiveProvider : une partie des connexions JDBC, il sépare l'application principale du DataSource ou du DriverManager.
  • TransactionFactory : Représente la fabrique de la transaction.

38. Qu'est-ce qu'une hiérarchie d'exceptions en Java ?

L'exception définit les événements indésirables qui se présentent lors de l'exécution ou de l'exécution du programme. L'exception perturbe le déroulement régulier du programme.
La hiérarchie des exceptions fait partie de la classe java.lang.Exception et relève uniquement de la classe principale Throwable. Une autre sous-classe ' Error ' représente également la classe Throwable en Java. Bien que les erreurs soient des conditions inhabituelles en cas d'échec, elles ne sont toujours pas gérées ou effacées avec les programmes Java.
Il existe deux sous-classes principales pour la hiérarchie exceptionnelle en Java avec la classe RuntimeException et la classe IOCException.

39. Qu'est-ce que la synchronisation ?

La synchronisation en Java définit la capacité de gérer et de contrôler l'accès de plusieurs threads à une ressource particulière. Ainsi, un thread peut accéder à une ressource spécifique à l'heure actuelle. Ici, Java permet de développer des threads puis de synchroniser des tâches via les blocs de synchronisation.

Ces blocs synchronisés n'autorisent l'exécution que d'un seul thread pendant un temps donné et bloquent les autres threads jusqu'à ce que le thread actuel sorte du bloc. Ici, le concept des moniteurs est crucial dans la mise en œuvre de la synchronisation en Java. Une fois que le thread entre dans une phase de verrouillage, il est appelé à entrer dans le moniteur. Ainsi, verrouiller tous les autres threads à moins que le premier thread n'ait quitté le moniteur.

40. Quelles sont les fonctionnalités qui font de Java l'un des meilleurs langages de programmation ?

Voici les principales fonctionnalités qui font de Java le début de votre courbe d'apprentissage dans le monde de la programmation :

  • Simplicité : Java est assez simple à apprendre et à écrire. La syntaxe Java est en C++ qui permet aux développeurs d'écrire des programmes de manière transparente.
  • OOPS : Java est basé sur le système de programmation orienté objet (OOPS), permettant ainsi de créer du code dans plusieurs types d'objets avec des données et des comportements différents.
  • Dynamique : Java est un langage dynamique complet qui prend en charge le chargement de classes dynamiques quand et où cela est nécessaire. Et il a également un support complet pour le langage de code natif tel que C, C++, etc.
  • Indépendant de la plate-forme : Java prend également en charge un langage de programmation exclusif et indépendant de la plate-forme, permettant ainsi aux développeurs d'exécuter leur programme sur leur plate-forme uniquement.
  • Portabilité : Java a une approche accessible une fois écrit n'importe où qui permet au code de s'exécuter sur n'importe quelle plate-forme.
  • Sécurité : suivre le concept de ByteCode, la gestion des exceptions et l'absence d'utilisation de pointeurs explicites font de Java un environnement hautement sécurisé.

Java est également indépendant de l'architecture et ne dépend d'aucune architecture. Une solide gestion de la mémoire et une collecte automatisée des déchets ajoutent plus de robustesse à son environnement.

41. Qu'est-ce qui fait que Java permet des performances élevées ?

L'utilisation du compilateur Just in Time (JIT) dans son architecture fait de Java l'un des langages de programmation les plus performants, car il transforme les instructions en bytecodes.

42. Nommez les IDE Java les plus populaires.

Il existe de nombreux IDE disponibles dans l'industrie pour Java. Voici les cinq meilleurs IDE Java que vous pouvez utiliser pour commencer à apprendre ce langage de programmation dès aujourd'hui :

  • Éclipse
  • netbeans
  • IntelliJ
  • JDeveloper
  • MonÉclipse

43. Définissez les principales différences entre Java et les autres plates-formes ?

Les deux principales différences qui distinguent Java des autres plates-formes sont :

  • Java est principalement une plate-forme logicielle, tandis que d'autres peuvent être des plates-formes logicielles ou matérielles.
  • Java s'exécute ou s'exécute sur n'importe quelle plate-forme matérielle, tandis que d'autres nécessitent des exigences matérielles spécifiques.

44. Qu'est-ce qui fait que Java a sa nature "écrire une fois et exécuter n'importe où" (WORA) ?

Eh bien, la réponse en un mot est Bytecode. Le compilateur Java convertit tous les programmes Java en un Byte Code spécifique agissant comme un langage médiateur entre le code machine et le code source. ByteCode peut s'exécuter sur n'importe quel ordinateur et ne dépend d'aucune plate-forme.

45. Expliquez les différents types de spécificateurs d'accès utilisés en Java.

Dans le langage de programmation Java, les spécificateurs d'accès représentent la portée exacte d'une classe, d'une variable ou d'une méthode. Il existe quatre principaux spécificateurs d'accès :

  • Les variables, méthodes ou classes définies par le public sont accessibles dans n'importe quelle méthode ou classe.
  • Le spécificateur d'accès protégé définit la portée d'une classe, d'une méthode et d'une variable dans le même package, dans la même classe ou dans cette sous-classe particulière de classe.
  • La portée par défaut est là pour toutes les classes, variables et méthodes présentes avec accès au package uniquement.
  • La portée privée conserve l'accès de la classe, des variables et des méthodes à une classe particulière uniquement.

Lire : Projet Java Swing

46. ​​Expliquez la signification des packages en Java ainsi que leurs avantages.

Les packages sont un mécanisme de regroupement de types similaires (interface, classes, annotations et énumérations) assurant la protection des actifs et une gestion complète des noms.

Voici les avantages des packages en Java :

  • Les packages nous aident à éviter les conflits de noms lorsque des classes du même nom existent dans deux packages différents.
  • Les packages aident à rendre le contrôle d'accès systématique.
  • Créez des classes cachées à utiliser par les packages.
  • Aide à localiser les classes associées pour le package.

47. Comment définiriez-vous Constructor en Java ?

Les constructeurs sont un bloc spécial de codes qui initialise un objet au moment de sa création. Bien qu'il ressemble à la méthode d'instance, les constructeurs ne sont toujours pas la méthode, car ils n'ont pas de type de retour explicite. Ainsi, chaque fois qu'un objet est créé dans le système, un constructeur est appelé à s'exécuter. Si aucun constructeur n'est défini, le compilateur utilise un constructeur par défaut.

Voici une présentation simple de Constructor en Java :

 1
2
3
4
5
6
 classe publique MaClasse {
   // C'est le constructeur
   MaClasse (){
   }
   ..
}

48. Quels sont les différents types de constructeurs utilisés en Java ?

Il existe trois types de constructeurs utilisés en Java :

  • Constructeur par défaut : lorsqu'un développeur n'utilise pas de constructeur, le compilateur Java ajoute un constructeur par défaut plus spécifique existant dans le fichier .class.
  • Constructeur sans argument : dans ce cas, il n'y a pas d'arguments dans le constructeur et le compilateur n'accepte aucun paramètre, car la méthode de la variable d'instance est initialisée avec des valeurs fixes spécifiques.
  • Constructeur paramétré : Dans ce cas, un ou plusieurs paramètres sont présents dans le constructeur écrit à l'intérieur des parenthèses de l'élément principal uniquement.

49. Quelles sont les différences entre les constructeurs et les méthodes ?

Les principales différences entre les constructeurs et les méthodes sont :

  • Objectif : l'objectif des constructeurs est d'initialiser l'objet d'une classe, tandis que la méthode effectue des tâches spécifiques lors de l'exécution du code.
  • La méthode a des types de retour alors que les constructeurs n'en ont pas.
  • Dans les méthodes, il existe des méthodes abstraites, statiques, finales et de synchronisation tandis que dans les constructeurs, vous ne pouvez pas créer de procédures spécifiques.

50. Expliquez la signification de Variable locale et Variable d'instance ?

  • Les variables locales sont présentes dans la méthode et la portée existe uniquement dans la méthode.
  • Les variables d'instance sont présentes et définies dans la classe uniquement avec leur portée à travers la classe.

51. Expliquez la signification de Class en Java ?

En Java, tous les codes, variables et méthodes sont définis dans la classe.

  • Les variables représentent des attributs qui définissent l'état d'une classe particulière.
  • Les méthodes représentent où la logique métier prend effet. Les méthodes comprennent un ensemble d'instructions et d'instructions pour répondre aux exigences.

Voici un exemple simple pour une classe en Java :

 1
2
3
4
5
6
7
 public class Addition { //Déclaration du nom de la classe
entier x = 10 ; //Déclaration des variables
entier y = 10 ;
public void add (){ //Déclaration de méthode
int z = a + b ;
}
}

52. Expliquez la signification d'Objet en Java ?

Les objets sont définis comme une instance d'une classe uniquement avec un état et un comportement spécifiques. Par exemple, un chien avec un état spécifique de nom, de race et de couleur alors que le comportement inclut l'aboiement, le remue-ménage de la queue, etc. Ainsi, chaque fois que JVM lit un mot-clé new(), une instance correspondante sera créée. Un objet doit d'abord être déclaré, puis instancié et enfin initialisé pour continuer à fonctionner.

53. Définissez la valeur par défaut pour le type de données byte en langage Java.

Pour le type de données Byte, la valeur par défaut est 0.

54. Pourquoi le type de données byte est-il plus avantageux en Java ?

Comme le type de données byte est presque quatre fois plus petit qu'un entier, il peut stocker plus d'espace pour les grands tableaux.

55. Expliquez les concepts de POO en Java.

Les POO sont les concepts fondamentaux du langage de programmation Java. Ceux-ci incluent l'abstraction, le polymorphisme, l'héritage et l'encapsulation. Les concepts Java OOP permettent aux développeurs de créer des variables, des méthodes et des composants qui leur permettent en outre de les réutiliser de manière personnalisée tout en maintenant la sécurité.

56. Expliquez la signification de l'héritage.

En Java, l'héritage est un mécanisme spécifique qui permet à une classe d'acquérir les propriétés (avec des champs et des méthodes) d'une autre classe. L'héritage est l'un des concepts de base des OOP Java.

L'héritage permet de construire de nouvelles classes, d'ajouter plus de champs et de méthodes sur les classes existantes pour les réutiliser de quelque manière que ce soit.

  • Une sous-classe est celle qui hérite des propriétés de l'autre classe.
  • La superclasse est celle dont les propriétés sont héritées.

57. Expliquer les concepts d'encapsulation en Java ?

En tant que l'un des principaux concepts des OOP Java, l'encapsulation permet d'encapsuler les données et le code dans une seule unité. L'encapsulation est également connue sous le nom de masquage de données, avec des variables d'une classe spécifique masquées de toutes les autres classes et accessibles avec les méthodes de la classe existante uniquement.

Les deux éléments essentiels pour réaliser l'encapsulation en Java sont :

  • Déclarer les variables d'une classe spécifique en tant que private.
  • Tirer parti des méthodes setter et getter publiques pour apporter des modifications et afficher les valeurs des variables.

58. Expliquez les concepts de polymorphisme.

Le polymorphisme en Java permet aux développeurs d'effectuer une même tâche de plusieurs manières. Il existe deux types de polymorphisme en Java avec le temps d'exécution et le temps de compilation. Vous pouvez utiliser des méthodes de remplacement et de surcharge pour faire fonctionner le polymorphisme en Java.

59. Expliquez la signification de l'interface.

En Java, nous ne pouvons pas réaliser d'héritages multiples. Ici, l'interface joue un rôle crucial dans la résolution de ce problème pour réaliser l'abstraction, faciliter les héritages multiples et prendre également en charge le couplage lâche. Nous avons maintenant une méthode par défaut, statique et privée en interface avec les dernières mises à jour Java.

60. Qu'entend-on par classe abstraite ?

Les classes abstraites sont construites avec un mot-clé abstrait spécifique en Java. Ils représentent à la fois des méthodes abstraites et non abstraites.

61. Expliquez la classe d'abstraction en Java ?

L'abstraction est l'une des propriétés essentielles pour cacher les informations d'implémentation à l'utilisateur et ne représenter que les fonctions de l'utilisateur. For instance, when you send an SMS from one person to another person. The user gets to know only the message and number while the backend process remains hidden.

You can achieve abstraction in Java using the following two ways:

  • Abstract Class (0 to 100%)
  • Interface (100%)

62. Explain the difference between Abstraction and Encapsulation in Java.

Here are the main differences:

Abstraction Encapsulation
Abstraction aims to gain information. Encapsulation's main aim is to contain or procure information.
In the abstraction process, issues or problems are handled at the interface/ design level. In Encapsulation, problems are handled at a specific implementation level.
Abstraction aids in hiding unwanted information. Encapsulation method applies hiding data within a single unit.
Implemented with interfaces and abstract classes. Implemented with a particular access modifier (public, private, and protected).
Use abstract classes and interfaces to hide complexities. Use getters and setters to hide data.
Objects that extend to abstraction must be encapsulated. An object for encapsulation must not be abstracted.

63. Explain the differences between Abstract class and interface.

Abstract Class Interface
Abstract Class comes with a default constructor. The interface doesn't have a constructor. So, no further process.
Uses both Abstract and Non-Abstract methods. Only use Abstract methods.
Classes that must extend for Abstract class need only abstract methods throughout their sub-class. Classes that extend to interface must provide implementation across all the methods.
These include instance variables. The interface presents constants only.

64. Explain the main differences between Array and Array List.

Déployer Array List
The size needs to be defined for the declaring array.

String[] name = new String[5]

No size requirements; and modifies dynamically.

ArrayList name = new ArrayList

You must specify an index for putting an object inside the array.

name[1] = “dog”

There are no index requirements.

name.add(“dog”)

Arrays are not parameterised. From Java 5.0 onwards, ArrayLists have a specific parameterised type.

65. Explain the difference between static method and instance method.

Static or Class Method Instance Method
You must declare a method static for a static method. All methods with declaration as static come under Instance method only.
No requirements for creating objects in the Static method. The object is a must for calling the instance method.
You cannot access Instance or Non-static methods in the static context. You can access both static and non-static in the instance method.

66. How to make Constructors static?

Constructors invoked with the object, and static context is part of the class, not the object. Hence, constructors cannot be static and show compiler error if run or executed.

67. Explain the use of 'this' keyword in Java?

In Java, 'this' keyword represents a specific reference on the current object. There are multiple uses for this keyword for referring to the current class properties from a variable, constructors, methods, and more. You can also pass this as an argument within constructors or methods. You can also fetch this as a return value from the current class instance. You can also refer to this as a static context.

A lire également : Comment coder, compiler et exécuter des projets Java

68. What is a classloader in Java? What are the different types of ClassLoaders in Java?

Java Classloader's main function is to dynamically load all classes into the Java Virtual Machine (JVM). ClassLoaders are part of the JRE only. So every time we run a Java program, classloader loads the classes to execute this program. A single ClassLoader loads only a specific class on requirements and uses getClassLoader() method to specify the class. These classes are loaded by calling their names, and in case these are not found then it retrieves or throws a ClassNotFoundException or NoClassDefFoundError.

Java ClassLoader uses three principles in performing tasks with delegation, uniqueness, and visibility.
There are three different types of Java ClassLoader:

  • BootStrap ClassLoader:

BootStrap ClassLoader represents the parent or superclass for extension classloader and all other classloaders. It has machine code that loads the pure first Java ClassLoader and takes classes from the rt.jar and also known as Primordial ClassLoader.

  • Extension ClassLoader:

Extension ClassLoader represents the child classloader for the superclass or BootStrap ClassLoader. It loads core java classes from jre/lib/ext , ie, JDK extension library.

  • System ClassLoader:

Application or System ClassLoader are further child classes of Extension ClassLoader. It takes and loads a file from the current directory for the program that you can customise with the 'classpath' switch.

69. Explain the meaning of Java Applet.

Java Applet is a program that executes or runs in the web browser only. Applets are specifically designed to function and embed with HTML web pages. Applets have the capability to function full Java applications with the entire use of Java API. JVM is a must requirement to view an applet on the browser. Applet extends with the use of java.applet.Applet class.

70. What are the types of Applets?

Based on location, there are two types of Java applets as Local Applets that are stored on the same computer or system. The Remote Applets that have files on remote systems.

71 What are immutable objects in Java?

En Java, les objets immuables sont ceux dont l'état ne change pas après leur création. Les objets immuables sont idéaux pour les applications multi-thread qui permettent de partager les threads tout en évitant la synchronisation. Les objets immuables sont privilégiés pour construire un code simple, solide et fiable pour correspondre à une stratégie efficace.

72. Qu'entendez-vous par JRE (Java Runtime Environment) ?

Java Runtime Environment est la couche logicielle qui prend en charge les exigences minimales pour exécuter des programmes Java sur une machine. Avec JDK et JRE, ces trois éléments constituent la base pour exécuter et développer des programmes Java sur une machine spécifique.

73. De quoi fait partie un JDK ?

Java Development Kit (JDK) est l'un des principaux packages technologiques essentiels à l'exécution de programmes Java. Il peut s'agir de l'implémentation à partir de l'une des plates-formes Java, Standard Edition, Micro ou Enterprise Edition développée par Oracle pour créer des applications sur Windows, Linux ou macOS.

74. Qu'est-ce qu'une machine virtuelle Java (JVM) ?

Java Virtual Machine (JVM) est l'une des trois exigences fondamentales pour exécuter et exécuter des programmes Java avec JDK et JRE. JVM a deux fonctions principales ; premièrement, pour permettre aux programmes Java de s'exécuter de manière transparente sur n'importe quelle machine ou système et deuxièmement pour optimiser la mémoire afin d'offrir des performances.

75.Quelles sont les différences entre JDK, JRE et JVM ?

JVM
JRE
JDK
Machine virtuelle Java Environnement d'exécution Java Kit de développement Java
Dépend de la plate-forme avec plusieurs options logicielles et matérielles disponibles. Couche logicielle qui prend en charge les exigences minimales pour exécuter des programmes Java sur une machine.

édition standard

Edition pour entreprise

Micro-édition

Trois notions comme :

  • spécification
  • Mise en œuvre
  • Exemple
Ensemble de bibliothèques + fichiers qui renforcent JVM lors de l'exécution. JRE + outils de développement
Fournit un environnement d'exécution pour l'exécution. JRE représente l'implémentation de JVM. Environnement de développement logiciel.

76. Combien de types de zones mémoire existe-t-il dans la JVM ?

Il existe plusieurs types de zones mémoire en JVM :

  • Zone de classe : cette mémoire stocke les structures de pré-classe avec le champ, le pool, les données de méthode et le code.
  • Heap représente la mémoire d'exécution spécifiquement allouée aux objets.
  • Stack représente la mémoire du cadre avec une variable locale, des résultats partiels, un thread et un cadre pour chaque méthode.
  • Le registre de compteur de programme stocke les informations de l'instruction en cours avec l'exécution de la machine virtuelle Java.
  • Méthode native Stack stocke toutes les méthodes natives actuelles utilisées dans les applications actuelles.

77. Qu'est-ce que la liaison de données en Java ?

La liaison de données représente les connexions entre la classe et la méthode, le champ, la variable, les constructeurs ou le corps d'une méthode. Java peut gérer la liaison de données de manière statique et dynamique.

78. Quels sont les différents types de liaison de données en Java ?

Il existe deux types cruciaux de liaison de données en Java.

  • La liaison statique se produit au moment de la compilation à l'aide de méthodes statiques, finales et privées ; également connu sous le nom de liaison précoce.
  • La liaison dynamique se présente au moment de l'exécution sans aucune information exacte connue sur la bonne méthode au moment de la compilation.

79. Qu'est-ce qu'un socket Java ?

Les sockets aident à construire des mécanismes de communication entre les deux ordinateurs via TCP. Les prises sont idéalement plus suffisantes et flexibles pour les communications.

80. Expliquez la différence entre Path et Classpath.

Path et Classpath représentent des variables d'environnement locales. Le chemin fournit le logiciel pour localiser les fichiers exécutables tandis que ClassPath spécifie l'emplacement des fichiers .class dans le système.

81. Existe-t-il une méthode abstraite sans utilisation de classe abstraite ?

Non, pour qu'une méthode abstraite existe dans une classe, elle doit être une classe abstraite.

82. Quel est le processus de création d'une classe en lecture seule en Java ?

En Java, vous pouvez créer une classe en lecture seule en gardant tous les champs privés. Cette classe spécifique en lecture seule n'aura que des méthodes getter qui renvoient une propriété privée. Il ne permet pas de modifier ou de changer cette propriété car aucune méthode de définition n'est disponible.

 1
2
3
4
5
6
7
8
9
 //Une classe en lecture seule en Java
classe publique Étudiant {    
// membre de données privées
institut de chaîne privé = "MKG" ;    
// méthode getter pour l'institut
chaîne publique getInstitut (){    
retour institut ;    
}    
}

83. Quel est le processus de création d'une classe en écriture seule en Java ?

En Java, vous pouvez également créer une classe en écriture seule en gardant tous les champs privés avec l'implémentation de méthodes setter uniquement.

 1
2
3
4
5
6
7
8
9
 // Une classe en écriture seule en Java
classe publique Étudiant {    
// membre de données privées
institut privé String ;    
//méthode setter pour l'institut
public void setInstitute ( String institute ){    
cela . institut = institut ;    
}    
}

84. Expliquer comment accéder à une classe dans une autre classe en Java ?

En Java, il existe deux façons d'accéder à une classe dans une autre classe comme :

  • Utilisation du nom spécifique : nous pouvons accéder à une classe particulière à partir d'un package différent en utilisant le nom qualifié ou importer ce package qui contient une classe spécifique.
  • Utilisation du chemin relatif : De même, nous pouvons également utiliser le chemin relatif pour ce package avec une classe spécifique.

85. Qu'est-ce que la gestion des exceptions ?

La gestion des exceptions représente le mécanisme permettant de gérer l'exception ou les conditions anormales pendant les erreurs d'exécution afin de maintenir le flux normal de l'application. Il existe trois types différents d'exceptions Java avec l'exception vérifiée, l'exception non vérifiée et l'erreur.

86. Expliquez la différence entre l'exception vérifiée et l'exception non vérifiée.

  • Les exceptions vérifiées sont des classes qui étendent davantage les classes jetables à l'exception de RuntimeException telles que SQLException, IOException, etc. Les exceptions vérifiées sont gérées uniquement au moment de la compilation.
  • Les exceptions non vérifiées sont des classes qui étendent RuntimeException telles que NullPointerException, ArithmeticException, etc. et ne sont pas gérées pendant la compilation.

87. Quelle est la classe de base pour Exception et Error ?

Ici, la classe Throwable représente la classe de base pour Exception et Error.

88. Mentionnez le mot-clé de gestion des exceptions en Java.

Il existe cinq mots clés pour gérer les exceptions en Java :

Mot-clé La description
essayer Ce bloc try définit le bloc pour placer le code d'exécution. Ce bloc try est généralement suivi de l'utilisation de catch ou finally. Ils ne peuvent donc pas être utilisés seuls.
attraper L'objectif principal du bloc catch est de gérer l'exception. Vous devez l'utiliser en combinaison avec le bloc try, puis enfin à l'étape ultérieure.
finalement Enfin, le bloc vérifie le code important du programme qui vérifie si l'exécution est terminée ou non.
lancer L'objectif principal du mot-clé throw est de lever une exception du programme.
jette Le mot clé throws est principalement utilisé pour déclarer des exceptions et non pour lancer une exception. Il fournit des informations sur l'occurrence d'une exception et est appliqué avec une signature de méthode.

89. Expliquez l'importance du bloc finally.

Ici, le bloc finally a une importance cruciale dans le bon déroulement du programme. Il est toujours exécuté que l'exception soit gérée ou non. Enfin, le bloc vient après le bloc try ou catch. Dans la JVM, le système exécutera toujours le bloc finally avant de terminer ou de fermer un fichier. Pour chaque bloc try présent, il peut y avoir zéro ou plusieurs blocs catch, mais il ne peut y avoir qu'un seul bloc finally.

90. Est-il possible d'exécuter un bloc finally sans bloc catch ?

Oui, un bloc finally peut être exécuté suivi d'un bloc try ou catch, respectivement.

91. Existe-t-il des cas où le bloc finally n'existe pas ?

Enfin, le bloc ne s'exécute pas ou ne s'exécute pas si le programme existe déjà ou provoque une erreur fatale pour l'abandon du processus.

92. Expliquez les principales différences entre le lancer et les lancers.

lancer le mot-clé

lance le mot-clé

Il lève une exception. Il déclare une exception.
Les exceptions cochées ne peuvent pas se propager uniquement avec throw. Les exceptions vérifiées peuvent se propager avec des levées.
Il est suivi d'une instance. Il est suivi d'un cours.
Il est utilisé uniquement dans la méthode. Il est utilisé avec une signature de méthode spécifique.
Il n'y a aucune possibilité d'exceptions multiples. Alors que dans cette procédure, plusieurs exceptions peuvent être déclarées.

93. Existe-t-il une possibilité de rejet d'une exception ?

Oui, si une exception existe, elle peut être rejetée à nouveau.

94. Expliquez la propagation des exceptions.

Le processus d'exception dans la procédure de traitement est connu sous le nom de propagation d'exception. Par exemple, une exception est d'abord gérée en haut de la pile, puis si elle n'est pas interceptée, l'exception passe à la méthode précédente et si ce n'est pas le cas, elle descend jusqu'à ce que l'exception soit interceptée ou qu'elle atteigne le bas. de la pile. Les exceptions cochées par défaut n'ont pas de propagation.

95. Expliquez la signification de thread en Java.

En Java, la manière ou le flux de l'exécution est connu sous le nom de thread. Ainsi, chaque programme contient un thread appelé thread principal créé par la JVM. Les développeurs ont le pouvoir de définir leurs threads personnalisés en ajoutant et en étendant la classe Thread à l'aide de l'interface.

96. Expliquez la signification du pool de threads.

Le pool de threads Java est un groupe de plusieurs threads qui attendent en permanence des tâches allouées. Ici, les pools de threads fonctionnent sous le fournisseur de services qui extrait un thread de ce pool, puis leur attribue la tâche d'un travail spécifique. Le pool de threads ajoute plus de performances et de stabilité au système.

97. Expliquez la différence entre String et StringBuffer.

Chaîne de caractères

StringBuffer

La classe String est immuable par nature. La classe StringBuffer, en revanche, est modifiable.
Les cordes sont lentes. Sinon, StringBuffer est assez rapide.
Ceux-ci consomment plus de mémoire pour créer une nouvelle instance. Celles-ci consomment moins de mémoire avec les chaînes concat.
Les chaînes permettent la comparaison de son contenu, car elles remplacent la méthode equals() de la classe Object. Alors que la classe StringBuffer ne peut pas remplacer la méthode equals() de la classe Object.

98. Expliquez la différence entre StringBuffer et StringBuilder.

StringBuffer

Générateur de chaînes

Il est synchronisé avec la sécurité des threads. Il est non synchronisé sans sécurité pour les threads.
En cela, deux threads n'ont pas de méthode d'appel. En cela, deux threads peuvent avoir des méthodes d'appel de manière transparente.
Inférieur ou moins efficace que StringBuilder. Plus efficace que StringBuffer.

99. Comment créer une classe immuable en Java ?

En Java, vous pouvez créer une classe immuable en déclarant une classe finale avec tous ses membres comme final. Prenons un exemple pour comprendre ceci :

 1
 2
 3
 4
 5
 6
 7
 8
 9
dix
11
12
 Employé de classe finale publique {  
 	final String securityNumber ;  
 	  
 	public Employee ( String securityNumber ){  
 	cela . securityNumber = securityNumber ;  
 	}  
 	  
 	chaîne publique getSecurityNumber (){  
 	renvoie le numéro de sécurité ;  
  }  
    
  }

99. Que sont les classes internes ?

Les classes Java Inner sont définies et déclarées dans une interface ou une classe. Les classes internes permettent au système de regrouper les classes et les interfaces de manière logique, ce qui les rend plus lisibles et faciles à entretenir. De plus, ces classes peuvent accéder à tous les membres de la classe externe avec des méthodes ainsi qu'aux membres de données privées.

100. Quels sont les principaux avantages et inconvénients de l'utilisation des classes Java Inner ?

Les principaux avantages des classes internes Java incluent :

  • Accessibilité à tous les membres des classes extérieures.
  • Moins de code à écrire.
  • Plus de maintenance et code lisible.

Les principaux inconvénients des classes internes Java incluent :

  • Moins de support de l'IDE.
  • Un nombre élevé de classes au total.

101. Définir les types de classes internes dans le langage de programmation Java ?

Les classes internes ont trois types principaux :

  • Membre Classe interne qui spécifie une classe dans la classe à l'aide de la méthode extérieure.
  • Anonymous Inner Class pour étendre la classe ou spécifier l'implémentation d'une interface.
  • Local Inner Class pour créer une classe dans la méthode.

102. Définissez une classe imbriquée.

Les classes imbriquées sont définies ou déclarées dans une classe ou une interface uniquement. Une classe imbriquée peut accéder spécifiquement à tous les membres de la classe externe avec des méthodes et des membres de données privés également. Voici une syntaxe simple d'une classe imbriquée :

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

103. Pouvez-vous expliquer la différence entre les classes internes et les classes imbriquées ?

Toutes les classes internes sont définies comme des classes imbriquées non statiques. Ainsi, les classes internes font partie des classes imbriquées uniquement.

104. Comment définiriez-vous la signification de Collections en Java ?

Les collections en Java sont un groupe de plusieurs objets qui se présentent comme une seule unité ; principalement connu sous le nom de Collections d'objets. Ils sont également appelés un cadre de collection ou une architecture qui fournit un espace de stockage pour les objets et manipule davantage la conception pour les modifications.

Voici les principales fonctions exécutées par les Java Collections :

  • Tri
  • Recherche
  • Insertion
  • Manipulation
  • Effacement

De nombreuses interfaces et classes font partie des collections.

105. Quelles interfaces et classes sont disponibles dans les collections ?

Voici la liste des interfaces et classes disponibles avec les collections en Java.

  • Interfaces : Collection, file d'attente, ensemble trié, carte triée, liste, ensemble, carte
  • Classes : listes, vecteur, liste de tableaux, liste chaînée
  • Ensembles : ensemble de hachage, ensemble d'arbres, ensemble de hachage lié
  • Cartes : carte de hachage, table de hachage, TreeMap, carte hachée liée
  • File d'attente : file d'attente prioritaire

106. Expliquer trié et ordonné par rapport aux collections en Java ?

  • Trié : le tri permet au groupe d'objets de s'appliquer en interne ou en externe pour les trier dans une collection particulière, en fonction de leurs différentes propriétés.
  • Ordered : définit les valeurs qui sont triées sur la base des valeurs ajoutées dans la collection et les itère dans un ordre particulier.

107. Quelles sont les différentes listes disponibles dans la collection ?

Répertorie les valeurs de magasin en fonction de leur position d'index avec la duplication autorisée. Voici les principaux types de listes :
Listes de tableaux : utilise l'interface d'accès aléatoire, fournit une collecte de commandes par index, non triée, et offre une itération rapide. Voici un exemple pour comprendre cela :

 1
 2
 3
 4
 5
 6
 7
 8
 9
dix
11
12
13
 classe publique Fruits {
public static void main ( String [ ] args ){
ArrayList < String > names = new ArrayList < String >();
noms . ajouter ( " pomme " );
noms . ajouter ( " avocat " );
noms . ajouter ( " cerise " );
noms . ajouter ( " kiwi " );
noms . ajouter ( " oranges " );
noms . ajouter ( " banane " );
noms . ajouter ( " kiwi " );
Système . dehors . println ( noms );
}
}

La sortie est la suivante :

[Pomme, avocat, cerise, kiwi, oranges, banane, kiwi]

Avec la sortie, vous pouvez vérifier que Array List conserve l'ordre d'insertion d'origine et autorise également les doublons. Bien que non trié.

Vector : utilise également la méthode d'accès aléatoire, est synchronisé et prend en charge la sécurité des threads.

Comprenons cela avec un exemple :

 1
 2
 3
 4
 5
 6
 7
 8
 9
dix
11
12
13
 classe publique Fruits {
public static void main ( String [ ] args ){
ArrayList < String > noms = nouveau vecteur < String >();
noms . ajouter ( " kiwi " );
noms . ajouter ( " oranges " );
noms . ajouter ( " banane " );
noms . ajouter ( " pomme " );
noms . ajouter ( " avocat " );
noms . ajouter ( " cerise " );
noms . ajouter ( " kiwi " );
Système . dehors . println ( noms );
}
}

La sortie est la suivante :

[kiwi, oranges, banane, pomme, avocat, cerise, kiwi]

Les listes de vecteurs suivent l'ordre d'insertion d'origine et prennent également en charge les doublons.

Liste liée : c'est également un choix idéal pour la suppression et l'insertion, les éléments sont à double liaison, mais leurs performances sont lentes.

Exemple de liste liée :

 1
 2
 3
 4
 5
 6
 7
 8
 9
dix
11
12
13
 classe publique Fruits {
public static void main ( String [ ] args ){
ArrayList < String > noms = nouveau vecteur < String >();
noms . ajouter ( " kiwi " );
noms . ajouter ( " oranges " );
noms . ajouter ( " banane " );
noms . ajouter ( " pomme " );
noms . ajouter ( " avocat " );
noms . ajouter ( " cerise " );
noms . ajouter ( " kiwi " );
Système . dehors . println ( noms );
}
}

La sortie est la suivante :

[Pomme, avocat, cerise, kiwi, oranges, banane, kiwi]

Il suit également l'ordre d'insertion d'origine et accepte les doublons.

108. Quelles sont les principales différences entre collection et collections en Java ?

Les principales différences sont les suivantes :

  • La collection représente une interface alors que Collections est particulièrement une classe uniquement.
  • L'interface de collecte fournit plusieurs fonctionnalités pour structurer les données en tant que liste, ensemble et file d'attente. Alors que l'objectif principal de la classe Collection se limite à trier et synchroniser les éléments de la collection.

109. Expliquez la file d'attente prioritaire.

La file d'attente prioritaire définit l'interface de file d'attente pour la gestion des listes liées dans le but d'une priorité d'entrée et d'une priorité de sortie. La file d'attente suit généralement un algorithme premier entré, premier sorti (FIFO), mais vous pouvez toujours mettre en file d'attente des éléments en fonction d'exigences spécifiques, puis nous pouvons implémenter PriorityQueue pour la personnalisation. Avec Priority Queue, cela dépend du tas prioritaire soit naturellement, soit via le comparateur de leur priorité relative.

110. Quand est-il idéal d'utiliser et de comparer l'interface Runnable en Java ?

Lorsque nous devons étendre une classe avec d'autres classes et non avec les threads, les interfaces exécutables sont un choix idéal.

111. Quelle est la différence entre les méthodes start() et run() de la classe thread ?

La méthode start() ajoute et crée un nouveau thread. Et le code de la méthode run() est exécuté uniquement dans le nouveau thread. Tandis que la méthode run() exécutera le code dans le thread actuel uniquement.

112. Qu'est-ce que le multithreading ?

En Java, nous pouvons exécuter plusieurs threads simultanément, ce que l'on appelle le multithreading. Il aide le programme à effectuer plusieurs tâches tout en prenant moins de mémoire et en offrant de meilleures performances. Dans le multithreading, les threads sont légers, partagent le même espace et sont assez abordables à tous égards.

113. Expliquez la différence entre processus et threads.

Ici les principales différences sont :

  • Un programme Java en cours d'exécution est qualifié de processus, tandis qu'un thread représente uniquement un sous-ensemble du processus.
  • Les processus représentent différents espaces dans la mémoire, tandis que les threads ont la même adresse.
  • Les processus sont entièrement indépendants, tandis que les threads font uniquement partie du processus.
  • Communication lente entre les processus, tandis que la communication entre les threads est rapide.

114. Expliquez la signification de la communication inter-thread.

La communication inter-thread est définie comme le processus qui permet la communication entre plusieurs threads synchronisés. Son objectif principal est d'éviter le regroupement de threads en Java. La communication est réalisée via les méthodes de wait(), notify() et notifyAll().

115. Expliquez la méthode wait().

Avec la méthode wait(), vous pouvez autoriser le thread à être en phase d'attente pendant que l'autre thread est verrouillé sur l'objet. Ainsi, la méthode wait() peut ajouter une durée d'attente significative pour les threads.

Voici une syntaxe pour représenter ceci :

 1
2
3
4
5
6
 public static void main ( Chaîne [] args ){
Thread t = nouveau Thread ();
t . commencer ();
Synchronisé ( t ) {
Attendez ();
}

116. Quelle est la principale différence entre les méthodes notify() et notifyAll() en Java ?

La méthode notify() envoie un signal pour réveiller uniquement un thread particulier dans le pool d'attente alors que notifyAll() réveille tous les threads dans la phase d'attente du pool.

117. Définissez les principales différences entre sleep() et wait().

Sleep() met en pause ou arrête la progression du thread en cours en suspendant l'exécution pendant une durée particulière sans relâcher le verrou. While wait() provoque une durée d'attente pour un thread après l'appel d'une méthode notify() pour se réveiller plus tard.

118. Expliquez la méthode join() par rapport au thread en Java.

La méthode join() permet de combiner un thread avec l'un des threads continus. Voici une syntaxe pour la méthode join() :

 1
2
3
4
5
 public static void main ( Chaîne [] args ){
Thread t = nouveau Thread ();
t . commencer ();
t . rejoindre ();
}

119. Expliquez la méthode Yield de Thread.

La méthode Yield est une méthode statique et ne libère aucun verrou dans les threads. Ici, une méthode Yield() habilite le thread actuel à un thread plus exécutable tout en permettant aux autres threads de conserver l'exécution. Ainsi, des threads de priorité de thread égale peuvent s'exécuter régulièrement.

120. Qu'est-ce que l'étape de famine ?

La famine est une phase au cours de laquelle un thread ne parvient pas à accéder aux ressources partagées et n'est pas en mesure de progresser.

121. Qu'est-ce que Deadlock pour un thread ?

Deadlock définit une étape où deux ou plusieurs threads sont bloqués pour toujours en attente l'un de l'autre.

122. Définir la sérialisation et la désérialisation en Java ?

La sérialisation est le processus de transformation de l'état d'un objet en un flux d'octets particulier parfaitement adapté aux technologies JPA, JMS, RMI, JPA et Hibernate. Alors que le processus inverse de transformation d'un flux d'octets en un objet est appelé désérialisation. Les deux processus sont indépendants de la plate-forme, ils vous permettent donc de sérialiser sur une plate-forme et de désérialiser efficacement sur une plate-forme entièrement différente.

123. Quelle est l'importance des variables transitoires ?

L'importance des variables transitoires réside dans la désérialisation qui est définie sur les variables par défaut et non utilisée avec les variables statiques.

124. Que sont les variables volatiles ?

Les variables volatiles jouent un rôle crucial dans la synchronisation et la lecture de la mémoire principale tout en évitant la mémoire cache des threads.

125. Qu'est-ce que SerialVersionUID ?

Dans le processus sérialisé, un objet est estampillé avec un numéro d'identification de version spécifique pour la classe d'objets respective. Ce numéro est appelé SerialVersionUID et joue un rôle crucial dans la vérification pendant le processus de désérialisation pour vérifier la compatibilité sur l'expéditeur et le destinataire, respectivement.

126. Quel est le processus de clonage d'un objet en Java ?

Avec le clonage d'objet, vous pouvez créer une copie exacte de l'objet d'origine. Pour que le clonage soit possible, une classe doit prendre en charge le clonage avec l'interface java.lang.Cloneable et autoriser la substitution de la méthode clone() à partir de la classe d'objet d'origine.

Voici une syntaxe simple pour la méthode clone() :

objet protégé clone() lève CloneNotSupportedException

Si le clone ne l'implémente pas, il lève généralement une exception avec 'CloneNotSupportedException'.

127. Définir la classe qui reste superclasse pour chaque classe ?

Classe d'objet.

128. Définir si une classe de chaîne est mutable ou immuable ?

La classe String représente un état immuable. Ainsi, une fois qu'un objet est créé, cela ne peut plus changer.

129. Comment différencier les classes StringBuffer et StringBuilder ?

  • StringBuilder est plus rapide que StringBuffer.
  • StringBuffer est synchronisé alors que StringBuilder n'est pas synchronisé.
  • StringBuffer offre un environnement thread-safe, tandis que StringBuilder n'a pas de fonctionnalité thread-safe.

130. A quoi sert la méthode toString() en Java ?

En Java, toString() récupère ou renvoie la représentation sous forme de chaîne de n'importe quel objet.

131. Qu'est-ce qu'un ramasse-miettes en Java ?

Comme les objets sont alloués dynamiquement via l'opérateur, le système Java gère également la désallocation de la mémoire utilisée automatiquement dans le cas où il n'y a pas de références pour l'objet qui reste pendant une durée significative. Ce processus consistant à garder le système exempt d'objets qui n'ont pas d'utilité est connu sous le nom de Garbage Collection en Java. L'objectif principal du ramasse-miettes est d'en faire une gestion plus efficace de la mémoire.

132. Quel est le nombre de fois qu'un ramasse-miettes appelle la méthode finalize() pour un objet spécifique ?

Vous ne pouvez appeler la méthode finalize() dans le ramasse-miettes qu'une seule fois.

133. Définissez les manières d'appeler le ramasse-miettes.

Il existe deux manières d'appeler le ramasse-miettes :

  • System.gc()
  • Runtime.getRuntime().gc()

134. Pouvons-nous forcer le Garbage Collection ?

Non, c'est un processus automatique. Vous pouvez appeler la méthode de récupération de place, mais vous ne pouvez pas la forcer. Pourtant, cela ne garantit pas qu'il serait complet.

135. Quels sont les différents types de données en Java ? Expliquer.

Voici une courte liste pour vous aider avec les types de données :

  • octet - 8 bits
  • court - 16 bits
  • caractère – Unicode 16 bits
  • int – 32 bits (nombre entier)
  • flottant - 32 bits (nombre réel)
  • long - 64 bits (simple précision)
  • double - 64 bits (double précision)

136. Définissez l'Unicode.

Les Unicodes sont un moyen de définir les caractères internationaux dans les langues humaines, et Java utilise cette structure Unicode pour symboliser les caractères.

137. Définir littéral.

Un littéral est une valeur constante attribuée à une variable particulière

// Ici 105 est un littéral

nombre entier = 105

138. Définir le type de casting en Java ?

Dans le cas de l'attribution d'une valeur d'un type de données à un autre type de données, ces deux peuvent ou non être compatibles et nécessiter une conversion. Java convertira automatiquement en cas de types de données compatibles. Alors que si les types de données ne sont pas compatibles, ceux-ci doivent être convertis pour une conversion réussie. La diffusion a deux types de base : implicite et explicite.

139. Expliquez les deux différents types de typage ?

  • Implicite : définit le stockage des valeurs de types de données plus petits dans des types de données plus grands, effectué uniquement par le compilateur.
  • Explicite : définit le stockage des valeurs de types de données plus volumineux dans des types de données plus petits, ce qui peut entraîner une perte d'informations.

Conclusion

Les questions d'entretien Java ci-dessus fourniront un bon début pour se préparer à l'entretien. Pratiquez également vos compétences en codage et assurez-vous d'être minutieux dans ces questions et leurs concepts associés afin que lorsque l'intervieweur déclenche un Q, vous soyez prêt à gagner la manche avec votre A. Oh, et n'oubliez pas 3 respirations (discrètes) lorsque vous vous présentez devant l'intervieweur.

Si vous souhaitez en savoir plus sur Java, le développement de logiciels full-stack, consultez le programme Executive PG de upGrad & IIIT-B en développement de logiciels - Spécialisation en développement Full Stack, conçu pour les professionnels en activité et offrant plus de 500 heures de formation rigoureuse. , 9+ projets et affectations, statut d'ancien de l'IIIT-B, projets de synthèse pratiques et aide à l'emploi avec les meilleures entreprises.

Tous mes vœux! J'espère que vous craquerez vos entretiens !!

Décrochez le job de vos rêves

Postulez pour la certification PG liée à l'emploi d'upGrad en génie logiciel