Introduction aux questions et réponses d'entrevue Java 8

Java 8 est une nouvelle plate-forme qui vient d'être publiée avec de nouvelles bibliothèques et classes. Généralement, ces fonctionnalités se concentrent sur un code plus propre et compact. Les nouvelles fonctionnalités ajoutées dans cette version peuvent être répertoriées en tant qu'expressions Lambda, références de méthodes, interface fonctionnelle et facultative, et méthodes par défaut, Nashorn, Stream et API Date. Le besoin de changement en Java était d'utiliser efficacement les processeurs multicœurs actuels et d'utiliser les fonctionnalités FP.

Voici la question la plus importante posée lors de l'entretien:

Maintenant, si vous recherchez un emploi lié à Java 8, vous devez vous préparer aux questions d'entrevue Java 8 de 2019. Il est vrai que chaque entretien est différent selon les différents profils d'emploi. Ici, nous avons préparé les importantes questions et réponses d'entrevue Java 8 qui vous aideront à réussir votre entrevue. Ces questions d'entrevue sont divisées en deux parties:

Partie 1 - Questions d'entrevue Java 8 (de base)

Cette première partie couvre les questions et réponses d'entrevue de base de Java 8

Q1. En quoi Java 8 est-il différent des versions précédentes de Java?

Répondre:
Les différentes versions de Java sont les suivantes:

  • API de date: Il s'agit d'une API améliorée qui est une API de date immuable inspirée de JodaTime.
  • API de flux: il s'agit d'une classe d'itérateurs spéciale qui aide à traiter la collection d'objets de manière fonctionnelle.
  • Expression Lambda: Il s'agit d'une nouvelle fonctionnalité de langage qui permet de traiter différentes actions effectuées en tant qu'objets.
  • Référence de méthode: Cela aide à définir des expressions Lambda en faisant directement référence à différentes méthodes en utilisant leurs noms.
  • Facultatif: il s'agit d'une classe d'encapsuleur spéciale qui aide à spécifier les fonctionnalités facultatives.
  • Interface fonctionnelle: il s'agit d'une interface avec au maximum une méthode abstraite et son implémentation est fournie par l'expression Lambda
  • Nashorn Javascript Engine: C'est un moteur basé sur Java qui est utilisé pour exécuter et évaluer le code JavaScript.

Q2. Est-il possible d'implémenter deux interfaces ayant la méthode par défaut avec le même nom et la même signature? Expliquez avec un exemple.

Répondre:
Ce sont les questions d'entretien de base de Java 8 posées lors d'un entretien. Considérez le code suivant avec implémente deux interfaces
public interface DefaultMethodInterface (
default public void defaultMethod()(
System.out.println("I am in Default method Interface I");
)
)
public interface DefaultMethodInterface2 (
default public void defaultMethod()(
System.out.println("I am in Default method Interface II");
)
)
public class HelloJava8 implements DefaultMethodInterface, DefaultMethodInterface2 (
public static void main(String() args)(
DefaultMethodInterface defMethIn = new HelloJava();
defMethIn.defaultMethod();
)
)

Ici, le compilateur donne une erreur disant que «Méthodes par défaut en double». Il n'est donc pas possible d'implémenter deux interfaces avec le même nom et la même signature.

Q3. Est-il possible de définir notre propre interface fonctionnelle? Expliquez les règles pour définir une interface fonctionnelle.

Répondre:
Il est possible de définir nos propres interfaces fonctionnelles. Un utilisateur peut utiliser l'annotation @FunctionalInterface de Java SE 8 pour marquer une interface comme interface fonctionnelle. Les règles suivantes doivent être gardées à l'esprit lors de la création d'une interface fonctionnelle.

  1. Une seule interface doit être définie avec une seule méthode abstraite
  2. Plus que sur les méthodes abstraites ne peuvent pas être définies
  3. Un utilisateur doit utiliser l'annotation @FunctionalInterface dans la définition de l'interface.
  4. Un certain nombre de méthodes différentes comme la méthode par défaut, la méthode statique, etc. peuvent être définies.
  5. Nous pouvons remplacer la méthode de la classe java.lang.Object comme une méthode abstraite et cela ne sera pas compté comme une méthode abstraite.

Passons aux prochaines questions d'entrevue Java 8.

Q4. Qu'est-ce qui est facultatif dans Java 8? Expliquez ses avantages.

Répondre:
Facultatif est une classe finale qui est introduite dans le cadre de Java SE 8. Elle fait partie de java.util.package. Il peut être utilisé pour représenter des valeurs facultatives qui existent ou n'existent pas. Cela peut avoir une valeur comme une valeur ou une valeur nulle. Si cette classe contient une valeur, alors nous obtenons la valeur sinon nous n'obtenons rien.
Les principaux avantages de cette classe sont qu'elle peut être utilisée pour éviter les vérifications nulles et elle peut être utilisée pour éviter «NullPointerException».

Q5. Le code ci-dessous se compile-t-il sans erreur?

Répondre:
@FunctionalInterface
public interface Function2 (
public V apply(T t, U u);
default void count() (
// increment counter
)
)

Oui, ce code se compilera sans aucune erreur car il suit la règle de spécification d'interface fonctionnelle de définir une seule méthode abstraite. La deuxième méthode utilisée est une méthode par défaut qui n'augmente pas le nombre de méthodes abstraites.

Partie 2 - Questions d'entrevue avec Java 8 Server (avancées)

Voyons maintenant les questions et réponses avancées de Java 8 Interview

Q6. Qu'est-ce que Nashorn en Java?

Répondre:
Il s'agit du nouveau moteur de traitement Java pour la plate-forme Java qui est livré en Java 8. Jusqu'à ce que la plate-forme JDK 7 Java utilise Rhino comme moteur de traitement. C'était un moteur de traitement Javascript. Nashorn offre une meilleure conformité avec la spécification JavaScript normalisée ECMA. Il offre également de meilleures performances d'exécution que ses versions précédentes.

Q7. Quelle est la différence entre Predicate et Function?

Répondre:
Ce sont deux interfaces fonctionnelles. Un prédicat est une fonction d'argument unique qui retourne vrai ou faux. Cette expression peut être utilisée comme cible d'affectation pour l'expression lambda ou n'importe quelle référence de méthode.
La fonction est également une fonction à argument unique, mais la différence ici est qu'elle renvoie un objet. Ici, T représente l'entrée de la fonction et R représente le type de résultat. Ces deux éléments peuvent être utilisés comme cible d'affectation pour les expressions lambda ou les références de méthode.

Passons aux prochaines questions d'entrevue Java 8.

Q8. Expliquez la différence entre les opérations intermédiaires et terminales.

Répondre:
Les opérations de flux sont utilisées pour traiter les flux et les combiner. Toutes ces opérations sont intermédiaires ou terminales. Les opérations intermédiaires renvoient le flux lui-même et autorisent d'autres opérations si elles doivent être effectuées. Ces opérations ne sont pas effectuées en même temps. Ces opérations ne peuvent être effectuées que pour traiter des données en cas d'opération de terminal. Pour nommer quelques opérations, il s'agit du filtre, de la carte et de la carte plate.
Les opérations de terminal mettent fin au pipeline et lancent le traitement du flux. Ce flux passe par toutes les opérations intermédiaires pendant le fonctionnement du terminal. Ces opérations incluent pour chacune, réduire, collecter, additionner, etc.

Q9. Qu'est-ce que le pipelining de flux dans Java 8?

Répondre:
Ceci est avancé Questions d'entretien Java 8 posées dans une interview. C'est le concept de l'enchaînement des opérations. Ce processus se fait en fractionnant les opérations qui peuvent fonctionner avec des flux avec deux catégories d'opérations intermédiaires et terminales. Chaque opération intermédiaire renvoie une instance d'un flux lors de son exécution. Il doit également y avoir une opération de terminal qui retournera une valeur finale et mettra fin au pipeline.

Q10. Qu'est-ce que StringJoiner?

Répondre:
StringJoiner est une méthode util qui est utilisée pour construire différentes chaînes avec les délimiteurs souhaités. Il peut également aider à créer des séquences de différents caractères séparés par des délimiteurs. Ceci a été introduit dans Java 8. Les différents constructeurs sont Public StringJoiner (délimiteur CharSequence) et Public StringJoiner (délimiteur CharSequence, préfixe CharSequence, suffixe CharSequence). Ci-dessous est un exemple de StringJoiner:
StringJoiner strJoiner = new StringJoiner(".");
strJoiner.add("Buggy").add("Bread");
System.out.println(strJoiner); // prints Buggy.Bread

Article recommandé

Ceci a été un guide pour lister les questions et réponses d'entrevue Java 8 afin que le candidat puisse réprimer facilement ces questions d'entrevue Java 8. Ici, dans cet article, nous avons étudié les principales questions d'entrevue Java 8 qui sont souvent posées lors des entretiens. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Questions d'entretiens chez Java Multi-threading
  2. Questions d'entretiens chez Java EE
  3. Questions d'entretiens chez Oops Java
  4. Questions d'entretiens chez Java Spring
  5. Quoi de neuf dans Java 8?