Ces questions et réponses pour débutants ne sont pas seulement pour préparer les entretiens d'embauche en Java, mais permettent également de bien comprendre les concepts basiques de Java.
Question 1 : Pourquoi Java ?
Réponse 1 : Java est un langage très populaire selon l'indice TIOBE. Java est un langage de programmation dominant comme C, C ++, C # et Python.
Il faut utiliser le meilleur outil pour le travail, que cet outil soit Java ou non. Lors du choix d'une technologie pour résoudre vos problèmes métiers, vous devez tenir compte de nombreux facteurs tels que le coût de développement (par exemple, pouvez-vous facilement trouver des développeurs Java ?), La robustesse (c.-à-d. La gestion automatique de la mémoire, typée statiquement, etc.), la flexibilité (c.-à-d. L'indépendance de la plate-forme - écriture Une fois exécuté n'importe où -Write Once Run Anywhere ), la sécurité (c'est-à-dire intégrée au langage et aux systèmes d'exécution), les performances (c'est-à-dire les capacités multithreading intégrées), etc.
- Java fournit des technologies client, des technologies de serveur et des technologies d'intégration pour résoudre des problèmes métiers de petite à très grande échelle.
- Premièrement, Java est une technologie éprouvée et mûrie utilisée dans de nombreuses applications critiques, il existe des millions de développeurs dans le monde entier, des milliers de frameworks , d'outils et de bibliothèques (API) pour cela, et des millions de sites, blogs et livres pour trouver des informations pertinentes. .
- L'émergence des technologies open-source a vraiment fait de Java un concurrent puissant dans le domaine des technologies de serveur et d'intégration. Vous pouvez toujours trouver un framework open source éprouvé écrit en Java qui résout le mieux vos problèmes métiers.
- La plateforme JEE basée sur Java est également livrée avec un riche ensemble d'API. Cela signifie que les développeurs passent moins de temps à écrire des bibliothèques de support et plus de temps à développer du contenu pour leurs applications, Digital Growing propose une formation en ligne (e-learning) sur JEE et tous ses APIs et services
- Prise en charge intégrée du multithread, de la communication des sockets et de la gestion automatique de la mémoire (c'est-à-dire la collecte automatique des objets supprimés).
Question 2 :
Java est-il un langage 100% orienté objet (OOP) ? Si oui pourquoi ? Si non, pourquoi pas ?
Réponse 2 :
Je dirais que Java n'est pas 100% orienté objet, mais il incarne les concepts OO. Il y a 6 concepts pour dire qu’un langage de programmation est purement orienté objet :
1. Encapsulation - masquage des données et modularité.
2. Héritage - vous définissez de nouvelles classes et un nouveau comportement en fonction des classes existantes pour obtenir la réutilisation du code.
3. Polymorphisme - le même message envoyé à différents objets entraîne un comportement qui dépend de la nature de l'objet qui reçoit le message.
4. Tous les types prédéfinis sont des objets.
5. Toutes les opérations sont effectuées en envoyant des messages aux objets.
6. Tous les types définis par l'utilisateur sont des objets.
Les points 1 à 3, représentent PIE (Polymorphism, Inheritance, et Encapsulation).
Raison n ° 1 : La principale raison pour laquelle Java ne peut pas être considéré comme 100% OOP est due à l’existence de 8 variables primitives (c'est-à-dire viole le point 4) comme int, long, char, float, etc. Ces types de données ne sont pas des objets pour plus de simplicité et pour améliorer les performances. Étant donné que les types de données primitifs ne sont pas des objets, ils n'ont aucune qualité telle que l'héritage ou le polymorphisme. Même si Java fournit des classes wrapper immuables comme Integer, Long, Character, etc. représentant des données primitives correspondantes en tant qu'objets, le fait qu'il a permis à des variables primitives non orientées objet d'exister, ne le rend pas entièrement OO.
Raison n ° 2 : Une autre raison pour laquelle Java n'est pas considéré comme OOP completement est due à l’existence de méthodes et de variables statiques (c'est-à-dire qu'il viole le point 5). Puisque les méthodes statiques peuvent être invoquées sans instancier un objet, nous pourrions dire qu'il enfreint les règles d'encapsulation.
Raison n ° 3 : Java ne prend pas en charge l'héritage de plusieurs classes pour résoudre le problème du diamant car différentes classes peuvent avoir des variables différentes avec le même nom qui peuvent entrer en conflit et peuvent provoquer des confusions et entraîner des erreurs. En Java, n'importe quelle classe ne peut étendre qu'une seule autre classe, mais peut implémenter plusieurs interfaces.
Nous pourrions également affirmer que Java n'est pas 100% OOP selon ce point de vue. Mais Java réalise certains des avantages clés de l'héritage multiple grâce à sa prise en charge de l'héritage d'interfaces multiples et dans Java 8, vous pouvez avoir un héritage à comportements multiples (pas d'état) car vous pouvez avoir des méthodes par défaut dans les interfaces.
Raison n ° 4 : La surcharge des opérateurs n'est pas possible en Java, sauf pour les opérations de concaténation et d'addition de chaînes. Exemple de concaténation et d'addition de chaînes :
Comme il s'agit d'une sorte de polymorphisme pour d'autres opérateurs comme * (multiplication), / (division) ou - (soustraction) et Java ne le supporte pas, on pourrait donc débattre du fait que Java n'est pas 100% OOP. Travailler avec une primitive en Java est plus élégant que travailler avec un objet comme BigDecimal. Par exemple,
Que se passe-t-il en Java lorsque vous devez gérer de grands nombres décimaux qui doivent être exacts et d'une taille et d'une précision illimitées ? Vous devez utiliser un BigDecimal. BigDecimal est plus verbeux pour des calculs plus volumineux sans surcharge d'opérateur, comme illustré ci-dessous :
De plus, la dernière ligne ci-dessus est fausse. Les règles de priorité ont changé. Avec des appels de méthode en chaîne comme celui-ci, l'évaluation est strictement de gauche à droite. Au lieu de soustraire le produit de c et d de b, nous multiplions la différence entre b et c par d. Il faudrait réécrire la dernière ligne comme indiqué ci-dessous:
Donc, il est également source d’erreurs. Un autre point est que la classe BigDecimal est immuable et, en tant que telle, chacune des méthodes «opérateur» renvoie une nouvelle instance. Dans les futures versions de Java, vous pourriez avoir une surcharge d'opérateur pour BigDecimal, et cela rendrait votre code plus lisible comme indiqué ci-dessous.
Question 3 :
Quelle est la différence entre C ++ et Java?
Réponse 3 :
C ++ et Java utilisent tous deux une syntaxe similaire et sont orientés objet, mais:
1) Java ne prend pas en charge les pointeurs. Les pointeurs sont intrinsèquement difficiles à utiliser et gênants.
2) Java ne prend pas en charge les héritages multiples car il provoque plus de problèmes qu'il n'en résout. Au lieu de cela, Java prend en charge l'héritage de comportement d'interfaces multiples (dans Java 8, vous pouvez avoir des interfaces avec des méthodes par défaut et statiques, mais ne peut pas avoir d'état), ce qui permet à un objet d'hériter de nombreuses signatures de méthode de différentes interfaces à la condition que l'objet héritant doit implémenter ces méthodes héritées.
3) Java ne prend pas en charge les destructeurs mais ajoute plutôt une méthode finalize (). Les méthodes de finalisation sont appelées par le garbage collector avant de récupérer la mémoire occupée par l'objet, qui a la méthode finalize (). Cela signifie que vous ne savez pas quand les objets seront finalisés. Évitez d'utiliser la méthode finalize () pour libérer des ressources autres que la mémoire telles que les descripteurs de fichiers, les sockets, les connexions à la base de données, etc. car Java ne dispose que d'un nombre fini de ces ressources et vous ne savez pas quand le garbage collection va démarrer pour libérer ces ressources via la méthode finalize ().
4) Java n'inclut pas les structures ou les unions. Java utilise le framework Java Collection.
5) Tout le code du programme Java est encapsulé dans des classes, donc Java n'a pas de variables ou de fonctions globales.
-
Votre commentaire
Votre commentaire s'affichera sur cette page après validation par l'administrateur.
Ceci n'est en aucun cas un formulaire à l'adresse du sujet évoqué,
mais juste un espace d'opinion et d'échange d'idées dans le respect.
Posté Le : 11/03/2020
Posté par : laouedj
Ecrit par : Ahmed LAOUEDJ
Source : https://www.digital-growing-dz.com/blog