Java Questions et réponses de l'entretien SE 8 (Partie 1)

De Get Docs
Aller à :navigation, rechercher

Dans cet article, nous allons discuter de quelques questions d'entrevue importantes Java SE 8 avec réponses. J'écrirai un autre article pour discuter des questions d'entrevue restantes Java SE 8.

Java 8 Questions d'entretien

  1. Pourquoi devons-nous à nouveau passer à Java ?
  2. Java SE 8 nouvelles fonctionnalités ?
  3. Avantages des nouvelles fonctionnalités Java SE 8 ?
  4. Qu'est-ce qu'une expression lambda ?
  5. Quelles sont les trois parties d'une expression Lambda ? Quel est le type d'expression Lambda ?
  6. Qu'est-ce qu'une interface fonctionnelle ? Qu'est-ce que l'interface SAM ?
  7. Est-il possible de définir notre propre interface fonctionnelle ? Qu'est-ce que @FunctionalInterface ? Quelles sont les règles pour définir une Interface Fonctionnelle ?
  8. L'annotation @FunctionalInterface est-elle obligatoire pour définir une interface fonctionnelle ? À quoi sert l'annotation @FunctionalInterface ? Pourquoi avons-nous besoin d'interfaces fonctionnelles dans Java ?
  9. Quand allons-nous utiliser l'API Java 8 Stream ? Pourquoi devons-nous utiliser l'API Java 8 Stream dans nos projets ?
  10. Expliquer les différences entre l'API Collection et l'API Stream ?
  11. Qu'est-ce que Spliterator dans Java SE 8 ? Différences entre Iterator et Spliterator dans Java SE 8 ?
  12. Qu'est-ce qui est facultatif dans Java 8 ? Quelle est l'utilité de l'Optionnel ?Avantages de Java 8 Optionnel ?
  13. Qu'est-ce que l'inférence de type ? L'inférence de type est-elle disponible dans les anciennes versions telles que Java 7 et avant 7 ou n'est-elle disponible que dans Java SE 8 ?

Java 8 questions et réponses d'entrevue

Dans cette section, nous reprendrons chaque question de la section précédente et y répondrons avec une description détaillée. Si vous avez besoin de plus d'informations et d'exemples, veuillez consulter les articles précédents Java SE 8 disponibles dans JournalDEV.

Pourquoi devons-nous à nouveau passer à Java ?

Oracle Corporation a introduit de nombreux nouveaux concepts dans Java SE 8 pour introduire les avantages suivants :

  • Pour utiliser efficacement les processeurs multicœurs actuels Récemment, nous avons pu observer des changements drastiques dans le matériel. De nos jours, tous les systèmes utilisent des processeurs multi-cœurs (2, 4, 8, 16 cœurs, etc.) pour déployer et exécuter leurs applications. Nous avons besoin de nouvelles constructions de programmation dans Java pour utiliser efficacement ces processeurs multicœurs afin de développer des applications hautement simultanées et hautement évolutives.- Pour utiliser les fonctionnalités FP Oracle Corporation a introduit de nombreux concepts FP (programmation fonctionnelle) dans le cadre de Java SE 8 pour utiliser les avantages de FP.

Java SE 8 nouvelles fonctionnalités ?

  • Expressions lambda
  • Interfaces fonctionnelles
  • API de flux
  • API de date et d'heure
  • Méthodes d'interface par défaut et méthodes statiques
  • Séparateur
  • Références de méthode et de constructeur
  • Améliorations de l'API de collecte
  • Améliorations des utilitaires de concurrence
  • Améliorations du framework de fork/join
  • Itération interne
  • Opérations de tableau parallèle et de collecte parallèle
  • Optionnel
  • Annotations de type et annotations répétables
  • Méthode Paramètre Réflexion
  • Encodage et décodage Base64
  • Améliorations IO et NIO2
  • Moteur JavaScript Nashorn
  • Améliorations de javac
  • Modifications JVM
  • Java 8 profils compacts : compact1, compact2, compact3
  • JDBC 4.2
  • JAXP 1.6
  • Java DB 10.10
  • La mise en réseau
  • Changements de sécurité

Avantages des nouvelles fonctionnalités Java SE 8 ?

Nous pouvons obtenir les avantages suivants des nouvelles fonctionnalités Java SE 8 :

  • Code plus concis et lisible
  • Plus de code réutilisable
  • Code plus testable et maintenable
  • Code hautement simultané et hautement évolutif
  • Écrire du code parallèle
  • Écrire une base de données comme des opérations
  • Applications de meilleures performances
  • Code plus productif

Qu'est-ce qu'une expression lambda ?

Lambda Expression est une fonction anonyme qui accepte un ensemble de paramètres d'entrée et renvoie des résultats. Lambda Expression est un bloc de code sans nom, avec ou sans paramètres et avec ou sans résultats. Ce bloc de code est exécuté à la demande.

Quelles sont les trois parties d'une expression Lambda ? Quel est le type d'expression Lambda ?

Une expression Lambda contient 3 parties :

  • Liste de paramètres Une expression Lambda peut contenir zéro ou un ou plusieurs paramètres. Il est facultatif.- Lambda Arrow Operator "->" est connu sous le nom d'opérateur Lambda Arrow. Il sépare la liste des paramètres et le corps.- Corps d'expression Lambda

Le type de "Journal Dev" est java.lang.String. Le type de "vrai" est booléen. De la même manière, quel est le type d'une expression Lambda ? Le type d'une expression Lambda est une interface fonctionnelle. Exemple :- Quel est le type de l'expression Lambda suivante ?

   () -> System.out.println("Hello World");

Cette expression Lambda n'a pas de paramètres et ne renvoie aucun résultat. Son type est donc l'interface fonctionnelle "java.lang.Runnable".

Qu'est-ce qu'une interface fonctionnelle ? Qu'est-ce que l'interface SAM ?

Une interface fonctionnelle est une interface qui contient une et une seule méthode abstraite. L'interface fonctionnelle est également connue sous le nom d'interface SAM car elle ne contient qu'une seule méthode abstraite. L'interface SAM signifie Single Abstract Method Interface. Java L'API SE 8 a défini de nombreuses interfaces fonctionnelles.

Est-il possible de définir notre propre interface fonctionnelle ? Qu'est-ce que @FunctionalInterface ? Quelles sont les règles pour définir une Interface Fonctionnelle ?

Oui, il est possible de définir nos propres interfaces fonctionnelles. Nous utilisons l'annotation @FunctionalInterface de Java SE 8 pour marquer une interface en tant qu'interface fonctionnelle. Nous devons suivre ces règles pour définir une interface fonctionnelle :

  • Définissez une interface avec une et une seule méthode abstraite.
  • Nous ne pouvons pas définir plus d'une méthode abstraite.
  • Utilisez l'annotation @FunctionalInterface dans la définition de l'interface.
  • Nous pouvons définir n'importe quel nombre d'autres méthodes comme les méthodes par défaut, les méthodes statiques.
  • Si nous remplaçons la méthode de la classe java.lang.Object comme une méthode abstraite, qui ne compte pas comme une méthode abstraite.

L'annotation @FunctionalInterface est-elle obligatoire pour définir une interface fonctionnelle ? À quoi sert l'annotation @FunctionalInterface ? Pourquoi avons-nous besoin d'interfaces fonctionnelles dans Java ?

Il n'est pas obligatoire de définir une interface fonctionnelle avec l'annotation @FunctionalInterface. Si nous ne voulons pas, nous pouvons omettre cette annotation. Cependant, si nous l'utilisons dans la définition de l'interface fonctionnelle, le compilateur Java oblige à utiliser une et une seule méthode abstraite à l'intérieur de cette interface. Pourquoi avons-nous besoin d'interfaces fonctionnelles ? Le type d'expression Lambda d'un Java SE 8 est une interface fonctionnelle. Partout où nous utilisons des expressions Lambda, cela signifie que nous utilisons des interfaces fonctionnelles.

Quand allons-nous utiliser l'API Java 8 Stream ? Pourquoi devons-nous utiliser l'API Java 8 Stream dans nos projets ?

Lorsque notre projet Java souhaite effectuer les opérations suivantes, il est préférable d'utiliser l'API Java 8 Stream pour obtenir de nombreux avantages :

  • Lorsque nous voulons effectuer des opérations de type base de données. Par exemple, nous voulons effectuer une opération groupby, une opération orderby, etc.
  • Lorsque vous souhaitez effectuer des opérations paresseusement.
  • Lorsque nous voulons écrire une programmation de style fonctionnel.
  • Lorsque nous voulons effectuer des opérations parallèles.
  • Quand voulez-vous utiliser l'itération interne
  • Lorsque nous voulons effectuer des opérations de Pipelining.
  • Lorsque nous voulons obtenir de meilleures performances.

Expliquer les différences entre l'API Collection et l'API Stream ?

S.Non. API de collecte API de flux
1. Il est disponible depuis Java 1.2 Il est introduit dans Java SE 8
2. Il est utilisé pour stocker des données (un ensemble d'objets). Il sert à calculer des données (Calcul sur un ensemble d'Objets).
3. Nous pouvons utiliser à la fois Spliterator et Iterator pour itérer les éléments. Nous pouvons utiliser forEach pour effectuer une action pour chaque élément de ce flux. Nous ne pouvons pas utiliser Spliterator ou Iterator pour itérer des éléments.
4. Il est utilisé pour stocker un nombre illimité d'éléments. L'API de flux est utilisée pour traiter les éléments d'une collection.
5. En règle générale, il utilise le concept d'itération externe pour itérer des éléments tels que Iterator. L'API Stream utilise l'itération interne pour itérer les éléments, à l'aide des méthodes forEach.
6. L'objet de collection est construit avec impatience. L'objet de flux est construit paresseusement.
7. Nous ajoutons des éléments à l'objet Collection uniquement après son calcul complet. Nous pouvons ajouter des éléments à Stream Object sans aucun calcul préalable. Cela signifie que les objets Stream sont calculés à la demande.
8. Nous pouvons itérer et consommer des éléments d'un objet de collection à n'importe quel nombre de fois. Nous ne pouvons itérer et consommer les éléments d'un objet Stream qu'une seule fois.


Qu'est-ce que Spliterator dans Java SE 8 ? Différences entre Iterator et Spliterator dans Java SE 8 ?

Spliterator signifie Splitable Iterator. Il est nouvellement introduit par Oracle Corporation dans le cadre de Java SE 8. Comme Iterator et ListIterator, c'est aussi l'une des interfaces Iterator.

S.Non. Séparateur Itérateur
1. Il est introduit dans Java SE 8. Il est disponible depuis Java 1.2.
2. Itérateur divisible Itérateur non fractionnable
3. Il est utilisé dans l'API Stream. Il est utilisé pour l'API Collection.
4. Il utilise le concept d'itération interne pour itérer les flux. Il utilise le concept d'itération externe pour itérer les collections.
5. Nous pouvons utiliser Spliterator pour itérer les flux dans l'ordre parallèle et séquentiel. Nous pouvons utiliser Iterator pour itérer les collections uniquement dans l'ordre séquentiel.
6. Nous pouvons obtenir Spliterator en appelant la méthode spliterator() sur Stream Object. Nous pouvons obtenir Iterator en appelant la méthode iterator() sur Collection Object.
7. Méthode importante : tryAdvance() Méthodes importantes : next(), hasNext()


Qu'est-ce qui est facultatif dans Java 8 ? Quelle est l'utilité de l'Optionnel ?Avantages de Java 8 Optionnel ?

Facultatif : Facultatif est une classe finale introduite dans le cadre de Java SE 8. Il est défini dans le package java.util. Il est utilisé pour représenter des valeurs facultatives qui existent ou n'existent pas. Il peut contenir une valeur ou une valeur nulle. S'il contient une valeur, nous pouvons l'obtenir. Sinon, on n'obtient rien. C'est une collection bornée c'est-à-dire qu'elle ne contient au plus qu'un seul élément. C'est une alternative à la valeur « nulle ». Le principal avantage de l'option est :

  • Il est utilisé pour éviter les vérifications nulles.
  • Il est utilisé pour éviter "NullPointerException".

Qu'est-ce que l'inférence de type ? L'inférence de type est-elle disponible dans les anciennes versions telles que Java 7 et avant 7 ou n'est-elle disponible que dans Java SE 8 ?

L'inférence de type signifie déterminer le type par le compilateur au moment de la compilation. Ce n'est pas une nouvelle fonctionnalité dans Java SE 8. Il est également disponible dans Java 7 et avant Java 7. Avant Java 7 :- Explorons les tableaux Java. Définissez une chaîne de tableau avec des valeurs comme indiqué ci-dessous :

String str[] = { "Java 7", "Java 8", "Java 9" };

Ici, nous avons attribué des valeurs String sur le côté droit, mais nous n'avons pas défini son type. Java Le compilateur déduit automatiquement son type et crée une chaîne de tableau. Java 7 : Oracle Corporation a introduit la nouvelle fonctionnalité "Diamond Operator" dans Java SE 7 pour éviter une définition de type inutile dans les génériques.

Map<String,List<Customer>> customerInfoByCity = new HashMap<>();

Ici, nous n'avons pas défini les informations de type sur le côté droit, simplement défini l'opérateur diamant de Java SE 7. Java SE 8 : Oracle Corporation a beaucoup amélioré ce concept d'inférence de type dans Java SE 8. Nous utilisons ce concept pour définir les expressions Lambda, les fonctions, les références de méthodes, etc.

ToIntBiFunction<Integer,Integer> add = (a,b) -> a + b;

Ici, le compilateur Java observe la définition de type disponible sur le côté gauche et détermine le type des paramètres d'expression Lambda a et b en tant qu'entiers. C'est tout sur Java 8 questions d'entrevue. J'ai discuté de certaines questions d'entrevue Java SE 8 dans cet article et je discuterai d'autres questions d'entrevue Java SE 8 dans mes prochains articles. S'il vous plaît laissez-moi un commentaire si vous aimez mon message ou si vous avez des problèmes / suggestions.