20 questions en java pour préparer votre entretien d'embauche
La préparation d'un entretien est la première étape pour obtenir l'emploi dont vous rêvez, dans cet article je vais essayer de vous donner les questions fréquemment posées dans le poste de développeur java.
Question 1 : Quelle est la différence entre une classe interne et une sous-classe ?
Une classe Inner est une classe imbriquée dans une autre classe. Une classe interne a des droits d'accès pour la classe externe et 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 classe mère. La sous-classe peut accéder à toutes les méthodes et champs publics et protégés de sa classe mère.
Question 2 : À quoi servent les méthodes et variables statiques ?
Lorsqu'il est nécessaire de partager une méthode ou une variable entre plusieurs objets (instances) d'une classe au lieu de créer des copies séparées pour chaque objet, nous utilisons le mot-clé static pour créer une méthode ou une variable partagée pour tous les objets.
Question 3 : Qu'est-ce que l'encapsulation de données et quelle est sa signification ?
L'encapsulation est un concept de la programmation orientée objet permettant de 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 possède son propre ensemble de méthodes et de variables et remplit ses fonctions indépendamment des autres objets. L'encapsulation sert également à cacher des données.
Question 4 : 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 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.
Question 5 : Quelle est la différence entre les variables doubles et flottantes en Java ?
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.
Question 6 : Qu'est-ce que le mot-clé final en Java ?
En java, une constante est déclarée à l'aide du mot-clé Final. La valeur ne peut être affectée qu'une seule fois et après l'affectation, la valeur d'une constante ne peut pas être modifiée.
Lorsqu'une méthode est déclarée comme finale, elle ne peut pas être remplacée par les sous-classes. Ces méthodes sont plus rapides que toute autre méthode car elles sont résolues au moment de la compilation.
Lorsqu'une classe est déclarée comme finale, elle ne peut pas être sous-classée. Exemple String, Integer et autres classes enveloppes.
Question 7 : Que sont les packages Java ?
En Java, un 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é et utilisé dans d'autres classes.
Question 8 : Peut-on déclarer une classe comme abstraite sans avoir de méthode abstraite ?
Oui, nous pouvons créer une classe abstraite en utilisant un mot-clé abstract avant le nom de la classe même si elle n'a pas de méthode abstraite. Cependant, si une classe a même une méthode abstraite, elle doit être déclarée comme abstraite sinon elle donnera une erreur.
Question 9 : Quelle est la différence entre une classe abstraite et une interface en Java ?
La principale différence entre une classe abstraite et une interface est qu'une interface ne peut posséder que la 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, private, 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 superclasse.
Une classe peut implémenter plusieurs interfaces mais elle ne peut étendre qu'une seule classe abstraite.
Question 10 : Quelles sont les implications en termes de performances des interfaces sur les classes abstraites ?
Les interfaces sont plus lentes en termes de performances que les classes abstraites, car des indirections supplémentaires sont nécessaires pour les interfaces.
L'utilisation d'interfaces impose également une charge 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 de l'interface.
Question 11 : Importer un package importe-t-il également ses sous-packages en Java ?
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 mvc.*, toutes les classes du package nommé mvc sont chargées mais aucune classe du sous-package n'est chargée. Pour charger les classes à partir de son sous-package (disons models), le développeur doit l'importer explicitement comme suit :
import mvc.models.*
Question 12 : Pouvons-nous déclarer la méthode principale (main) de notre classe comme privée ?
En Java, la méthode main doit être public static afin d'exécuter correctement n'importe quelle application. Si la méthode main 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.
Question 13 : Comment un objet est sérialisé en java ?
En java, pour convertir un objet en flux d'octets par sérialisation, une interface portant le nom Serializable est implémentée par la classe. Tous les objets d'une classe implémentant une interface Serializable sont sérialisés et leur état est enregistré dans un flux d'octets.
Question 14 : Quand devons-nous utiliser la sérialisation ?
La sérialisation est utilisée lorsque les 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 un flux d'octets. Le flux d'octets est transféré sur le réseau et l'objet est recréé à la destination.
Question 15 : Est-il obligatoire qu'un bloc Try soit suivi d'un bloc Catch en Java pour la gestion des exceptions ?
Le bloc Try doit être suivi soit du bloc Catch, soit du bloc Finally, soit des deux. Toute exception levée à partir du bloc try doit être soit interceptée dans le bloc catch, soit toute tâche spécifique à effectuer avant que l'avortement du code ne soit placé dans le bloc Finally.
Question 16 : Existe-t-il un moyen d'ignorer le bloc d'exception Finally même si une exception se produit dans le bloc d'exception ?
Si une exception est levée dans un bloc Try, le contrôle passe au bloc catch s'il existe sinon pour le block Finally. Le bloc Finally 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 de forcer l'abandon du code en écrivant la ligne de code suivante à la fin d'un bloc try :
System.exit(0);
Question 17 : Peut-on surcharger les méthodes statiques d'une classe ?
Nous ne pouvons pas surcharger 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 surcharger une méthode statique, nous n'obtiendrons pas d'erreur de compilation, ni l'impact de la substitution lors de l'exécution du code.
Question 18 : String est-il un type de données en Java ?
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 string, toutes les méthodes intégrées de la classe String peuvent être utilisées sur l'objet string.
Question 19 : Dans l'exemple ci-dessous, combien d'objets string sont créés ?
String s1="Morocco is a beautiful country"; String s2="We love France"; String s3="Morocco is a beautiful country";
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.
Question 20 : Pourquoi les String en Java sont appelées immuables ?
En Java, les objets string sont appelés immuables car une fois que la valeur a été attribuée à une string, 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 chaîne ayant la valeur "Morocco".
String str="Morocco";
Lorsqu'une nouvelle valeur lui est attribuée, un nouvel objet String est créé et la référence est déplacée vers le nouvel objet.
String str="France";