top 40 java 8 interview questions answers
Dans ce didacticiel, nous avons fourni les questions d'entrevue Java 8 les plus importantes et leurs réponses avec des exemples de code et des explications:
Toutes les questions importantes répertoriées dans ce didacticiel sont spécifiques à Java 8. Java a beaucoup évolué (au fil du temps) avec l'introduction de nouvelles versions. Avec chaque version, nous avons de nouvelles fonctionnalités associées à Java. Toutes ces fonctionnalités importantes seront couvertes dans ce tutoriel.
Ce sont des questions très courantes qui vous seront posées lors des entretiens Java nécessitant des compétences avancées. Ces concepts sont indispensables si vous souhaitez participer à des examens de certification Java standard tels que Oracle Certified Associate (OCA).
=> Jetez un œil au guide du débutant Java ici.
Cet article conviendra aussi bien aux développeurs Java qu'aux testeurs Java / testeurs d'automatisation ou à toute personne recherchant un salaire plus élevé dans le même domaine car il exige des compétences Java avancées.
Questions d'entretien les plus fréquemment posées sur Java 8
Q # 1) Liste des nouvelles fonctionnalités introduites dans Java 8?
Répondre: Les nouvelles fonctionnalités introduites dans Java 8 sont répertoriées ci-dessous:
- Expressions lambda
- Références de méthode
- Classe facultative
- Interface fonctionnelle
- Méthodes par défaut
- Rhinocéros, moteur JavaScript
- API de flux
- Date API
Q # 2) Que sont les interfaces fonctionnelles?
Répondre: L'interface fonctionnelle est une interface qui n'a qu'une seule méthode abstraite. L'implémentation de ces interfaces est fournie à l'aide d'une expression Lambda, ce qui signifie que pour utiliser l'expression Lambda, vous devez créer une nouvelle interface fonctionnelle ou vous pouvez utiliser le paramètre prédéfini interface fonctionnelle de Java 8 .
L'annotation utilisée pour créer une nouvelle interface fonctionnelle est ' @Interface fonctionnelle ».
Q # 3) Qu'est-ce qu'une classe facultative?
Répondre: La classe facultative est une classe wrapper spéciale introduite dans Java 8 qui est utilisée pour éviter les NullPointerExceptions. Cette dernière classe est présente sous le package java.util. NullPointerExceptions se produit lorsque nous ne parvenons pas à effectuer les vérifications Null.
Q # 4) Quelles sont les méthodes par défaut?
Répondre: Les méthodes par défaut sont les méthodes de l'interface qui a un corps. Ces méthodes, comme leur nom l'indique, utilisent les mots-clés par défaut. L'utilisation de ces méthodes par défaut est la «compatibilité descendante», ce qui signifie que si JDK modifie une interface (sans méthode par défaut), alors les classes qui implémentent cette interface seront interrompues.
D'autre part, si vous ajoutez la méthode par défaut dans une interface, vous pourrez alors fournir l'implémentation par défaut. Cela n'affectera pas les classes de mise en œuvre.
Syntaxe:
public interface questions{ default void print() { System.out.println('www.softwaretestinghelp.com'); } }
Q # 5) Quelles sont les principales caractéristiques de la fonction Lambda?
Répondre: Les principales caractéristiques de la fonction Lambda sont les suivantes:
- Une méthode définie comme expression Lambda peut être transmise en tant que paramètre à une autre méthode.
- Une méthode peut exister de manière autonome sans appartenir à une classe.
- Il n’est pas nécessaire de déclarer le type de paramètre car le compilateur peut extraire le type de la valeur du paramètre.
- Nous pouvons utiliser des parenthèses lors de l'utilisation de plusieurs paramètres, mais il n'est pas nécessaire d'avoir des parenthèses lorsque nous utilisons un seul paramètre.
- Si le corps de l'expression a une seule instruction, il n'est pas nécessaire d'inclure des accolades.
Q # 6) Quel était le problème avec l'ancienne date et l'heure?
Répondre: Voici les inconvénients de l'ancienne date et heure:
- Java.util.Date est modifiable et n'est pas thread-safe, tandis que la nouvelle API Java 8 Date and Time est thread-safe.
- L'API Java 8 Date and Time répond aux normes ISO alors que les anciennes date et heure étaient mal conçues.
- Il a introduit plusieurs classes d'API pour une date comme LocalDate, LocalTime, LocalDateTime, etc.
- En parlant des performances entre les deux, Java 8 fonctionne plus rapidement que l'ancien régime de date et d'heure.
Q # 7) Quelle est la différence entre l'API Collection et l'API Stream?
Répondre: La différence entre l'API Stream et l'API Collection peut être comprise dans le tableau ci-dessous:
API de flux | API de collecte |
---|---|
Il a été introduit dans la version Java 8 Standard Edition. | Il a été introduit dans la version Java 1.2 |
Il n'y a aucune utilisation de l'itérateur et des séparateurs. | Avec l'aide de forEach, nous pouvons utiliser l'itérateur et les séparateurs pour itérer les éléments et effectuer une action sur chaque élément ou élément. |
Un nombre infini de fonctionnalités peuvent être stockées. | Un nombre dénombrable d'éléments peut être stocké. |
La consommation et l'itération des éléments de l'objet Stream ne peuvent être effectuées qu'une seule fois. | La consommation et l'itération des éléments de l'objet Collection peuvent être effectuées plusieurs fois. |
Il est utilisé pour calculer les données. | Il est utilisé pour stocker des données. |
Q # 8) Comment créer une interface fonctionnelle?
Répondre: Bien que Java puisse identifier une interface fonctionnelle, vous pouvez en définir une avec l'annotation
@Interface fonctionnelle
Une fois que vous avez défini l'interface fonctionnelle, vous ne pouvez avoir qu'une seule méthode abstraite. Comme vous n'avez qu'une seule méthode abstraite, vous pouvez écrire plusieurs méthodes statiques et méthodes par défaut.
Voici l'exemple de programmation de FunctionalInterface écrit pour la multiplication de deux nombres.
@FunctionalInterface // annotation for functional interface interface FuncInterface { public int multiply(int a, int b); } public class Java8 { public static void main(String args()) { FuncInterface Total = (a, b) -> a * b; // simple operation of multiplication of 'a' and 'b' System.out.println('Result: '+Total.multiply(30, 60)); } }
Production:
Q # 9) Qu'est-ce qu'une interface SAM?
Répondre: Java 8 a introduit le concept de FunctionalInterface qui ne peut avoir qu'une seule méthode abstraite. Étant donné que ces interfaces ne spécifient qu'une seule méthode abstraite, elles sont parfois appelées en tant qu'interfaces SAM. SAM signifie «Single Abstract Method».
Q # 10) Qu'est-ce que la référence de méthode?
qu'est-ce que les métadonnées dans l'entrepôt de données
Répondre: Dans Java 8, une nouvelle fonctionnalité a été introduite, appelée Method Reference. Ceci est utilisé pour faire référence à la méthode de l'interface fonctionnelle. Il peut être utilisé pour remplacer l'expression Lambda tout en faisant référence à une méthode.
Par exemple: Si l'expression Lambda ressemble à
num -> System.out.println(num)
Ensuite, la référence de méthode correspondante serait,
System.out::println
où «::» est un opérateur qui distingue le nom de classe du nom de méthode.
Q # 11) Expliquez la syntaxe suivante
String:: Valueof Expression
Répondre: C'est une référence de méthode statique à la Valeur de méthode de la Chaîne classer. System.out :: println est une référence de méthode statique à la méthode println de l'objet out de la classe System.
Il renvoie la représentation sous forme de chaîne correspondante de l'argument transmis. L'argument peut être Caractère, Entier, Booléen, etc.
Q # 12) Qu'est-ce qu'un prédicat? Énoncez la différence entre un prédicat et une fonction?
Répondre: Le prédicat est une interface fonctionnelle prédéfinie. Il se trouve sous le package java.util.function.Predicate. Il n'accepte qu'un seul argument sous la forme indiquée ci-dessous,
Prédicat
Prédicat | Fonction |
---|---|
Il a le type de retour booléen. | Il a le type de retour comme Object. |
Il est écrit sous la forme de Prédicat qui accepte un seul argument. | Il est écrit sous la forme de Fonction qui accepte également un seul argument. |
Il s'agit d'une interface fonctionnelle utilisée pour évaluer les expressions Lambda. Cela peut être utilisé comme cible pour une référence de méthode. | C'est également une interface fonctionnelle qui est utilisée pour évaluer les expressions Lambda. Dans Fonction, T correspond au type d'entrée et R correspond au type de résultat. Cela peut également être utilisé comme cible pour une expression Lambda et une référence de méthode. |
Q # 13) Y a-t-il un problème avec le code suivant? Compilera-t-il ou donnera-t-il une erreur spécifique?
@FunctionalInterface public interface Test { public C apply(A a, B b); default void printString() { System.out.println('softwaretestinghelp'); } }
Répondre: Oui. Le code se compilera car il suit la spécification d'interface fonctionnelle de ne définir qu'une seule méthode abstraite. La deuxième méthode, printString (), est une méthode par défaut qui ne compte pas comme une méthode abstraite.
Q # 14) Qu'est-ce qu'une API Stream? Pourquoi avons-nous besoin de l'API Stream?
Répondre: L'API Stream est une nouvelle fonctionnalité ajoutée à Java 8. Il s'agit d'une classe spéciale qui est utilisée pour traiter des objets à partir d'une source telle que Collection.
Nous avons besoin de l'API Stream car,
- Il prend en charge les opérations agrégées, ce qui simplifie le traitement.
- Il prend en charge la programmation de style fonctionnel.
- Il effectue un traitement plus rapide. Par conséquent, il est apte à de meilleures performances.
- Il permet des opérations parallèles.
Q # 15) Quelle est la différence entre limit et skip?
Répondre: La méthode limit () est utilisée pour renvoyer le Stream de la taille spécifiée. Par exemple, Si vous avez mentionné limit (5), le nombre d'éléments de sortie serait de 5.
Prenons l'exemple suivant. La sortie renvoie ici six éléments car la limite est fixée à «six».
import java.util.stream.Stream; public class Java8 { public static void main(String() args) { Stream.of(0,1,2,3,4,5,6,7,8) .limit(6) /*limit is set to 6, hence it will print the numbers starting from 0 to 5 */ .forEach(num->System.out.print('
'+num)); } }
Production:
Alors que la méthode skip () est utilisée pour sauter l'élément.
Prenons l'exemple suivant. Dans la sortie, les éléments sont 6, 7, 8, ce qui signifie qu'il a ignoré les éléments jusqu'au 6ème index (à partir de 1).
import java.util.stream.Stream; public class Java8 { public static void main(String() args) { Stream.of(0,1,2,3,4,5,6,7,8) .skip(6) /* It will skip till 6th index. Hence 7th, 8th and 9th index elements will be printed */ .forEach(num->System.out.print('
'+num)); } }
Production:
Q # 16) Comment obtiendrez-vous la date et l'heure actuelles à l'aide de l'API Java 8 Date and Time?
Répondre: Le programme ci-dessous est écrit à l'aide de la nouvelle API introduite dans Java 8. Nous avons utilisé les API LocalDate, LocalTime et LocalDateTime pour obtenir la date et l'heure actuelles.
Dans la première et la deuxième instruction d'impression, nous avons récupéré la date et l'heure actuelles de l'horloge système avec le fuseau horaire défini par défaut. Dans la troisième instruction d'impression, nous avons utilisé l'API LocalDateTime qui imprimera à la fois la date et l'heure.
class Java8 { public static void main(String() args) { System.out.println('Current Local Date: ' + java.time.LocalDate.now()); //Used LocalDate API to get the date System.out.println('Current Local Time: ' + java.time.LocalTime.now()); //Used LocalTime API to get the time System.out.println('Current Local Date and Time: ' + java.time.LocalDateTime.now()); //Used LocalDateTime API to get both date and time } }
Production:
Q # 17) Quel est le but de la méthode limit () dans Java 8?
Répondre: La méthode Stream.limit () spécifie la limite des éléments. La taille que vous spécifiez dans la limite (X), il renverra le Stream de la taille de «X». C'est une méthode de java.util.stream.Stream
Syntaxe:
limit(X)
Où «X» est la taille de l’élément.
Q # 18) Ecrire un programme pour imprimer 5 nombres aléatoires en utilisant forEach dans Java 8?
Répondre: Le programme ci-dessous génère 5 nombres aléatoires à l'aide de forEach en Java 8. Vous pouvez définir la variable de limite sur n'importe quel nombre en fonction du nombre de nombres aléatoires que vous souhaitez générer.
import java.util.Random; class Java8 { public static void main(String() args) { Random random = new Random(); random.ints().limit(5).forEach(System.out::println); /* limit is set to 5 which means only 5 numbers will be printed with the help of terminal operation forEach */ } }
Production:
Q # 19) Écrire un programme pour imprimer 5 nombres aléatoires dans l'ordre trié en utilisant forEach dans Java 8?
Répondre: Le programme ci-dessous génère 5 nombres aléatoires à l'aide de forEach en Java 8. Vous pouvez définir la variable de limite sur n'importe quel nombre en fonction du nombre de nombres aléatoires que vous souhaitez générer. La seule chose que vous devez ajouter ici est la méthode sorted ().
import java.util.Random; class Java8 { public static void main(String() args) { Random random = new Random(); random.ints().limit(5).sorted().forEach(System.out::println); /* sorted() method is used to sort the output after terminal operation forEach */ } }
Production:
Q # 20) Quelle est la différence entre les opérations intermédiaires et les opérations de terminal dans Stream?
Répondre: Toutes les opérations de flux sont soit terminales, soit intermédiaires. Les opérations intermédiaires sont les opérations qui renvoient le flux afin que d'autres opérations puissent être effectuées sur ce flux. Les opérations intermédiaires ne traitent pas le Stream sur le site d'appel, elles sont donc appelées paresseuses.
Ces types d'opérations (Opérations intermédiaires) traitent des données lorsqu'une opération Terminal est effectuée. Exemples des opérations intermédiaires sont la carte et le filtre.
Les opérations du terminal lancent le traitement du flux. Au cours de cet appel, le Stream subit toutes les opérations intermédiaires. Exemples de l'exploitation du terminal sont sum, Collect et forEach.
Dans ce programme, nous essayons d'abord d'exécuter une opération intermédiaire sans opération de terminal. Comme vous pouvez le voir, le premier bloc de code ne s’exécutera pas car aucune opération de terminal n’est prise en charge.
Le deuxième bloc a été exécuté avec succès en raison de l'opération de terminal sum ().
import java.util.Arrays; class Java8 { public static void main(String() args) { System.out.println('Intermediate Operation won't execute'); Arrays.stream(new int() { 0, 1 }).map(i -> { System.out.println(i); return i; // No terminal operation so it won't execute }); System.out.println('Terminal operation starts here'); Arrays.stream(new int() { 0, 1 }).map(i -> { System.out.println(i); return i; // This is followed by terminal operation sum() }).sum(); } }
Production:
Q # 21) Ecrire un programme Java 8 pour obtenir la somme de tous les nombres présents dans une liste?
Répondre: Dans ce programme, nous avons utilisé ArrayList pour stocker les éléments. Ensuite, à l'aide de la méthode sum (), nous avons calculé la somme de tous les éléments présents dans ArrayList. Ensuite, il est converti en Stream et ajouté chaque élément à l'aide des méthodes mapToInt () et sum ().
import java.util.*; class Java8 { public static void main(String() args) { ArrayList list = new ArrayList(); list.add(10); list.add(20); list.add(30); list.add(40); list.add(50); // Added the numbers into Arraylist System.out.println(sum(list)); } public static int sum(ArrayList list) { return list.stream().mapToInt(i -> i).sum(); // Found the total using sum() method after // converting it into Stream } }
Production:
Q # 22) Ecrire un programme Java 8 pour mettre au carré la liste des nombres, puis filtrer les nombres supérieurs à 100, puis trouver la moyenne des nombres restants?
Répondre: Dans ce programme, nous avons pris un tableau d'entiers et les avons stockés dans une liste. Ensuite, à l'aide de mapToInt (), nous avons quadrillé les éléments et filtré les nombres supérieurs à 100. Enfin, la moyenne du nombre restant (supérieur à 100) est calculée.
import java.util.Arrays; import java.util.List; import java.util.OptionalDouble; public class Java8 { public static void main(String() args) { Integer() arr = new Integer() { 100, 100, 9, 8, 200 }; List list = Arrays.asList(arr); // Stored the array as list OptionalDouble avg = list.stream().mapToInt(n -> n * n).filter(n -> n > 100).average(); /* Converted it into Stream and filtered out the numbers which are greater than 100. Finally calculated the average */ if (avg.isPresent()) System.out.println(avg.getAsDouble()); } }
Production:
Q # 23) Quelle est la différence entre findFirst () et findAny () de Stream?
Répondre: Comme son nom l'indique, la méthode findFirst () est utilisée pour trouver le premier élément du flux tandis que la méthode findAny () est utilisée pour rechercher n'importe quel élément du flux.
Le findFirst () est de nature prédestinariste alors que findAny () est non déterministe. En programmation, déterministe signifie que la sortie est basée sur l'entrée ou l'état initial du système.
Q # 24) Quelle est la différence entre Iterator et Spliterator?
Répondre: Vous trouverez ci-dessous les différences entre Iterator et Spliterator.
Itérateur | Splitter |
---|---|
Il a été introduit dans la version Java 1.2 | Il a été introduit dans Java SE 8 |
Il est utilisé pour l'API Collection. | Il est utilisé pour l'API Stream. |
Certaines des méthodes d'itération sont next () et hasNext () qui sont utilisées pour itérer des éléments. | La méthode Spliterator est tryAdvance (). |
Nous devons appeler la méthode iterator () sur Collection Object. | Nous devons appeler la méthode spliterator () sur Stream Object. |
Itère uniquement dans un ordre séquentiel. | Itère dans un ordre parallèle et séquentiel. |
Q # 25) Qu'est-ce que l'interface fonctionnelle consommateur?
Répondre: Consumer Functional Interface est également une interface à argument unique (comme Predicate et Function). Il relève de java.util.function.Consumer. Cela ne renvoie aucune valeur.
Dans le programme ci-dessous, nous avons utilisé la méthode accept pour récupérer la valeur de l'objet String.
import java.util.function.Consumer; public class Java8 { public static void main(String() args) Consumer str = str1 -> System.out.println(str1); str.accept('Saket'); /* We have used accept() method to get the value of the String Object */ } }
Production:
Q # 26) Qu'est-ce que l'interface fonctionnelle fournisseur?
Répondre: L'interface fonctionnelle fournisseur n'accepte pas les paramètres d'entrée. Il relève de java.util.function.Supplier. Cela renvoie la valeur à l'aide de la méthode get.
Dans le programme ci-dessous, nous avons utilisé la méthode get pour récupérer la valeur de l'objet String.
import java.util.function.Supplier; public class Java8 { public static void main(String() args) { Supplier str = () -> 'Saket'; System.out.println(str.get()); /* We have used get() method to retrieve the value of String object str. */ } }
Production:
Q # 27) Qu'est-ce que Nashorn dans Java 8?
Répondre: Nashorn en Java 8 est un moteur basé sur Java pour exécuter et évaluer du code JavaScript.
Q n ° 28) Ecrire un programme Java 8 pour trouver le nombre le plus bas et le plus élevé d'un flux?
Répondre: Dans ce programme, nous avons utilisé les méthodes min () et max () pour obtenir le nombre le plus élevé et le plus bas d'un Stream. Tout d'abord, nous avons initialisé un Stream qui a des entiers et à l'aide de la méthode Comparator.comparing (), nous avons comparé les éléments du Stream.
meilleur logiciel espion de téléphone portable pour android
Lorsque cette méthode est incorporée avec max () et min (), elle vous donnera les nombres les plus élevés et les plus bas. Cela fonctionnera également lors de la comparaison des chaînes.
moyen le plus simple de convertir youtube en mp3
import java.util.Comparator; import java.util.stream.*; public class Java8{ public static void main(String args()) { Integer highest = Stream.of(1, 2, 3, 77, 6, 5) .max(Comparator.comparing(Integer::valueOf)) .get(); /* We have used max() method with Comparator.comparing() method to compare and find the highest number */ Integer lowest = Stream.of(1, 2, 3, 77, 6, 5) .min(Comparator.comparing(Integer::valueOf)) .get(); /* We have used max() method with Comparator.comparing() method to compare and find the highest number */ System.out.println('The highest number is: ' + highest); System.out.println('The lowest number is: ' + lowest); } }
Production:
Q # 29) Quelle est la différence entre l'opération de flux Map et flatMap?
Répondre: L'opération Map Stream donne une valeur de sortie par valeur d'entrée alors que l'opération flatMap Stream donne zéro ou plus de valeur de sortie par valeur d'entrée.
Exemple de carte- L'opération Map Stream est généralement utilisée pour une opération simple sur Stream telle que celle mentionnée ci-dessous.
Dans ce programme, nous avons changé les caractères de «Noms» en majuscules en utilisant l'opération de carte après les avoir stockés dans un Stream et avec l'aide de l'opération forEach Terminal, nous avons imprimé chaque élément.
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Map { public static void main(String() str) { List Names = Arrays.asList('Saket', 'Trevor', 'Franklin', 'Michael'); List UpperCase = Names.stream().map(String::toUpperCase).collect(Collectors.toList()); // Changed the characters into upper case after converting it into Stream UpperCase.forEach(System.out::println); // Printed using forEach Terminal Operation } }
Production:
Exemple de flatMap- L'opération flatMap Stream est utilisée pour des opérations Stream plus complexes.
Ici, nous avons effectué une opération flatMap sur «Liste de liste de type String». Nous avons donné les noms d’entrée sous forme de liste, puis nous les avons stockés dans un Stream sur lequel nous avons filtré les noms commençant par «S».
Enfin, à l'aide de l'opération forEach Terminal, nous avons imprimé chaque élément.
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class flatMap { public static void main(String() str) { List Names = Arrays.asList(Arrays.asList('Saket', 'Trevor'), Arrays.asList('John', 'Michael'), Arrays.asList('Shawn', 'Franklin'), Arrays.asList('Johnty', 'Sean')); /* Created a “List of List of type String” i.e. List Stored names into the list */ List Start = Names.stream().flatMap(FirstName -> FirstName.stream()).filter(s -> s.startsWith('S')) .collect(Collectors.toList()); /* Converted it into Stream and filtered out the names which start with 'S' */ Start.forEach(System.out::println); /* Printed the Start using forEach operation */ } }
Production:
Q # 30) Qu'est-ce que MetaSpace dans Java 8?
Répondre: Dans Java 8, une nouvelle fonctionnalité a été introduite pour stocker les classes. La zone dans laquelle toutes les classes stockées dans Java 8 sont appelées MetaSpace. MetaSpace a remplacé le PermGen.
Jusqu'à Java 7, PermGen était utilisé par Java Virtual Machine pour stocker les classes. Étant donné que MetaSpace est dynamique car il peut croître dynamiquement et qu'il n'a aucune limitation de taille, Java 8 a remplacé PermGen par MetaSpace.
Q # 31) Quelle est la différence entre l'itération interne et externe de Java 8?
Répondre: La différence entre l'itération interne et externe est indiquée ci-dessous.
Itération interne | Itération externe |
---|---|
Il a été introduit dans Java 8 (JDK-8). | Il a été introduit et mis en pratique dans la version précédente de Java (JDK-7, JDK-6 et ainsi de suite). |
Il itère en interne sur les objets agrégés tels que Collection. | Il itère en externe sur les objets agrégés. |
Il prend en charge le style de programmation fonctionnelle. | Il prend en charge le style de programmation OOPS. |
L'itérateur interne est passif. | L'itérateur externe est actif. |
Il est moins erroné et nécessite moins de codage. | Cela nécessite un peu plus de codage et est plus sujet aux erreurs. |
Q n ° 32) Qu'est-ce que JJS?
Répondre: JJS est un outil de ligne de commande utilisé pour exécuter du code JavaScript sur la console. Dans Java 8, JJS est le nouvel exécutable qui est un moteur JavaScript.
Q # 33) Qu'est-ce que ChronoUnits dans Java 8?
Répondre: ChronoUnits est l'énumération qui est introduite pour remplacer les valeurs Integer qui sont utilisées dans l'ancienne API pour représenter le mois, le jour, etc.
Q # 34) Expliquer la classe StringJoiner dans Java 8? Comment pouvons-nous joindre plusieurs chaînes à l'aide de la classe StringJoiner?
Répondre: Dans Java 8, une nouvelle classe a été introduite dans le package java.util appelé StringJoiner. Grâce à cette classe, nous pouvons joindre plusieurs chaînes séparées par des délimiteurs tout en leur fournissant un préfixe et un suffixe.
Dans le programme ci-dessous, nous allons apprendre à joindre plusieurs chaînes à l'aide de StringJoiner Class. Ici, nous avons «,» comme délimiteur entre deux chaînes différentes. Ensuite, nous avons joint cinq chaînes différentes en les ajoutant à l'aide de la méthode add (). Enfin, imprimé le String Joiner.
Dans la question suivante # 35, vous apprendrez comment ajouter un préfixe et un suffixe à la chaîne.
import java.util.StringJoiner; public class Java8 { public static void main(String() args) { StringJoiner stj = new StringJoiner(','); // Separated the elements with a comma in between. stj.add('Saket'); stj.add('John'); stj.add('Franklin'); stj.add('Ricky'); stj.add('Trevor'); // Added elements into StringJoiner “stj” System.out.println(stj); } }
Production:
Q # 35) Ecrire un programme Java 8 pour ajouter un préfixe et un suffixe à la chaîne?
Répondre: Dans ce programme, nous avons «,» comme délimiteur entre deux chaînes différentes. De plus, nous avons donné des crochets «(» et «)» comme préfixe et suffixe. Ensuite, cinq chaînes différentes sont jointes en les ajoutant à l'aide de la méthode add (). Enfin, imprimé le String Joiner.
import java.util.StringJoiner; public class Java8 { public static void main(String() args) { StringJoiner stj = new StringJoiner(',', '(', ')'); // Separated the elements with a comma in between. //Added a prefix '(' and a suffix ')' stj.add('Saket'); stj.add('John'); stj.add('Franklin'); stj.add('Ricky'); stj.add('Trevor'); // Added elements into StringJoiner “stj” System.out.println(stj); } }
Production:
Q # 36) Écrire un programme Java 8 pour itérer un flux à l'aide de la méthode forEach?
Répondre: Dans ce programme, nous itérons un Stream à partir de «nombre = 2», suivi de la variable de comptage incrémentée de «1» après chaque itération.
Ensuite, nous filtrons le nombre dont le reste n'est pas zéro lorsqu'il est divisé par le nombre 2. De plus, nous avons défini la limite comme? 5, ce qui signifie que seulement 5 fois il itérera. Enfin, nous imprimons chaque élément en utilisant forEach.
import java.util.stream.*; public class Java8 { public static void main(String() args){ Stream.iterate(2, count->count+1) // Counter Started from 2, incremented by 1 .filter(number->number%2==0) // Filtered out the numbers whose remainder is zero // when divided by 2 .limit(5) // Limit is set to 5, so only 5 numbers will be printed .forEach(System.out::println); } }
Production:
Q # 37) Ecrire un programme Java 8 pour trier un tableau, puis convertir le tableau trié en Stream?
Répondre: Dans ce programme, nous avons utilisé le tri parallèle pour trier un tableau d'entiers. Puis converti le tableau trié en Stream et avec l'aide de forEach, nous avons imprimé chaque élément d'un Stream.
import java.util.Arrays; public class Java8 { public static void main(String() args) { int arr() = { 99, 55, 203, 99, 4, 91 }; Arrays.parallelSort(arr); // Sorted the Array using parallelSort() Arrays.stream(arr).forEach(n -> System.out.print(n + ' ')); /* Converted it into Stream and then printed using forEach */ } }
Production:
Q # 38) Ecrire un programme Java 8 pour trouver le nombre de chaînes dans une liste dont la longueur est supérieure à 5?
Répondre: Dans ce programme, quatre chaînes sont ajoutées dans la liste à l'aide de la méthode add (), puis à l'aide de l'expression Stream et Lambda, nous avons compté les chaînes qui ont une longueur supérieure à 5.
import java.util.ArrayList; import java.util.List; public class Java8 { public static void main(String() args) { List list = new ArrayList(); list.add('Saket'); list.add('Saurav'); list.add('Softwaretestinghelp'); list.add('Steve'); // Added elements into the List long count = list.stream().filter(str -> str.length() > 5).count(); /* Converted the list into Stream and filtering out the Strings whose length more than 5 and counted the length */ System.out.println('We have ' + count + ' strings with length greater than 5'); } }
Production:
Q # 39) Ecrire un programme Java 8 pour concaténer deux flux?
Répondre: Dans ce programme, nous avons créé deux Streams à partir des deux listes déjà créées, puis les avons concaténées en utilisant une méthode concat () dans laquelle deux listes sont passées en argument. Enfin, imprimé les éléments du flux concaténé.
import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class Java8 { public static void main(String() args) { List list1 = Arrays.asList('Java', '8'); List list2 = Arrays.asList('explained', 'through', 'programs'); Stream concatStream = Stream.concat(list1.stream(), list2.stream()); // Concatenated the list1 and list2 by converting them into Stream concatStream.forEach(str -> System.out.print(str + ' ')); // Printed the Concatenated Stream } }
Production:
Q # 40) Ecrire un programme Java 8 pour supprimer les éléments en double de la liste?
Répondre: Dans ce programme, nous avons stocké les éléments dans un tableau et les avons convertis en une liste. Par la suite, nous avons utilisé stream et l'avons collecté sur «Set» à l'aide de la méthode «Collectors.toSet ()».
import java.util.Arrays; import java.util.List; import java.util.Set; import java.util.stream.Collectors; public class Java8 { public static void main(String() args) { Integer() arr1 = new Integer() { 1, 9, 8, 7, 7, 8, 9 }; List listdup = Arrays.asList(arr1); // Converted the Array of type Integer into List Set setNoDups = listdup.stream().collect(Collectors.toSet()); // Converted the List into Stream and collected it to “Set” // Set won't allow any duplicates setNoDups.forEach((i) -> System.out.print(' ' + i)); } }
Production:
Conclusion
Dans cet article, nous avons compris les nouvelles fonctionnalités introduites dans Java 8. Nous avons couvert toutes les principales questions d'entretien de Java 8 et leurs réponses en détail.
À la lecture de ce didacticiel, vous devez avoir acquis des connaissances sur les nouvelles API pour la manipulation de la date et l'heure, les nouvelles fonctionnalités de Java 8, les nouvelles API de streaming ainsi que les exemples de programmation apt selon le concept. Ces nouveaux concepts ou fonctionnalités font partie du processus d'entrevue lorsque vous êtes prêt pour les postes Java les plus difficiles.
Tous mes vœux!!
=> Consultez TOUS les didacticiels Java ici.
lecture recommandée
- Questions et réponses d'entrevue
- Questions et réponses d'entrevue de test ETL
- Quelques questions et réponses difficiles sur les tests manuels
- Top 40 des questions et réponses d'entrevue de programmation C
- Top 40 des questions et réponses d'entrevue J2EE les plus populaires à lire
- Questions d'entrevue Spock avec réponses (les plus populaires)
- 25 meilleures questions et réponses d'entrevue de test Agile
- Top 32 des meilleures questions et réponses d'entrevue de datastage