top 40 java 8 interview questions answers
In diesem Tutorial haben wir die wichtigsten Fragen zum Java 8-Interview und ihre Antworten mit Codebeispielen und Erläuterungen versehen:
Alle wichtigen Fragen, die in diesem Tutorial aufgeführt sind, beziehen sich speziell auf Java 8. Java hat sich mit der Einführung neuer Versionen (im Laufe der Zeit) stark weiterentwickelt. Mit jeder Version haben wir neue Funktionen für Java. Alle diese wichtigen Funktionen werden in diesem Tutorial behandelt.
Dies sind sehr häufige Fragen, die Ihnen in Java-Interviews gestellt werden, die fortgeschrittene Kenntnisse erfordern. Diese Konzepte sind ein Muss, wenn Sie für Standard-Java-Zertifizierungsprüfungen wie Oracle Certified Associate (OCA) erscheinen möchten.
=> Schauen Sie sich hier den Java Beginners Guide an.
Dieser Artikel eignet sich sowohl für Java-Entwickler als auch für Java-Tester / Automatisierungstester oder für alle, die auf demselben Gebiet höhere Löhne suchen, da er fortgeschrittene Java-Kenntnisse erfordert.
Am häufigsten gestellte Fragen zum Java 8-Interview
F # 1) Listen Sie die neuen Funktionen auf, die in Java 8 eingeführt wurden.
Antworten: Die neuen Funktionen, die in Java 8 eingeführt werden, sind unten aufgeführt:
- Lambda-Ausdrücke
- Methodenreferenzen
- Optionale Klasse
- Funktionsschnittstelle
- Standardmethoden
- Nashorn, JavaScript Engine
- Stream-API
- Datums-API
F # 2) Was sind funktionale Schnittstellen?
Antworten: Functional Interface ist eine Schnittstelle mit nur einer abstrakten Methode. Die Implementierung dieser Schnittstellen erfolgt mithilfe eines Lambda-Ausdrucks. Um den Lambda-Ausdruck zu verwenden, müssen Sie eine neue Funktionsschnittstelle erstellen oder die vordefinierte verwenden Funktionsschnittstelle von Java 8 .
Die Anmerkung zum Erstellen einer neuen Funktionsschnittstelle lautet „ @FunctionalInterface ”.
F # 3) Was ist eine optionale Klasse?
Antworten: Die optionale Klasse ist eine spezielle Wrapper-Klasse, die in Java 8 eingeführt wurde und zur Vermeidung von NullPointerExceptions verwendet wird. Diese letzte Klasse befindet sich im Paket java.util. NullPointerExceptions treten auf, wenn die Nullprüfungen nicht durchgeführt werden.
F # 4) Was sind die Standardmethoden?
Antworten: Standardmethoden sind die Methoden der Schnittstelle, die einen Körper hat. Diese Methoden verwenden, wie der Name schon sagt, die Standardschlüsselwörter. Die Verwendung dieser Standardmethoden ist 'Abwärtskompatibilität'. Wenn JDK eine Schnittstelle ändert (ohne Standardmethode), werden die Klassen, die diese Schnittstelle implementieren, unterbrochen.
Wenn Sie dagegen die Standardmethode in einer Schnittstelle hinzufügen, können Sie die Standardimplementierung bereitstellen. Dies hat keine Auswirkungen auf die implementierenden Klassen.
Syntax:
public interface questions{ default void print() { System.out.println('www.softwaretestinghelp.com'); } }
Q # 5) Was sind die Hauptmerkmale der Lambda-Funktion?
Antworten: Hauptmerkmale der Lambda-Funktion sind wie folgt:
- Eine als Lambda-Ausdruck definierte Methode kann als Parameter an eine andere Methode übergeben werden.
- Eine Methode kann eigenständig existieren, ohne zu einer Klasse zu gehören.
- Der Parametertyp muss nicht deklariert werden, da der Compiler den Typ aus dem Parameterwert abrufen kann.
- Bei Verwendung mehrerer Parameter können Klammern verwendet werden, bei Verwendung eines einzelnen Parameters ist jedoch keine Klammer erforderlich.
- Wenn der Ausdruck eine einzige Anweisung enthält, müssen keine geschweiften Klammern eingefügt werden.
Q # 6) Was war los mit dem alten Datum und der alten Uhrzeit?
Antworten: Nachfolgend sind die Nachteile des alten Datums und der alten Uhrzeit aufgeführt:
- Java.util.Date ist veränderlich und nicht threadsicher, während die neue Java 8-API für Datum und Uhrzeit threadsicher ist.
- Die Java 8-API für Datum und Uhrzeit entspricht den ISO-Standards, während das alte Datum und die Uhrzeit schlecht gestaltet wurden.
- Es wurden mehrere API-Klassen für ein Datum wie LocalDate, LocalTime, LocalDateTime usw. eingeführt.
- In Bezug auf die Leistung zwischen beiden arbeitet Java 8 schneller als das alte Regime von Datum und Uhrzeit.
F # 7) Was ist der Unterschied zwischen der Sammlungs-API und der Stream-API?
Antworten: Der Unterschied zwischen der Stream-API und der Sammlungs-API kann der folgenden Tabelle entnommen werden:
Stream-API | Sammlungs-API |
---|---|
Es wurde in der Java 8 Standard Edition-Version eingeführt. | Es wurde in Java Version 1.2 eingeführt |
Der Iterator und die Spliteratoren werden nicht verwendet. | Mit Hilfe von forEach können wir den Iterator und den Spliterator verwenden, um die Elemente zu iterieren und eine Aktion für jedes Element oder das Element auszuführen. |
Es können unendlich viele Features gespeichert werden. | Eine zählbare Anzahl von Elementen kann gespeichert werden. |
Der Verbrauch und die Iteration von Elementen aus dem Stream-Objekt können nur einmal erfolgen. | Der Verbrauch und die Iteration von Elementen aus dem Collection-Objekt können mehrfach erfolgen. |
Es wird zur Berechnung von Daten verwendet. | Es wird zum Speichern von Daten verwendet. |
Q # 8) Wie können Sie eine funktionale Schnittstelle erstellen?
Antworten: Obwohl Java eine funktionale Schnittstelle identifizieren kann, können Sie eine mit der Anmerkung definieren
@FunctionalInterface
Nachdem Sie die Funktionsschnittstelle definiert haben, können Sie nur noch eine abstrakte Methode verwenden. Da Sie nur eine abstrakte Methode haben, können Sie mehrere statische Methoden und Standardmethoden schreiben.
Unten finden Sie das Programmierbeispiel für FunctionalInterface, das für die Multiplikation zweier Zahlen geschrieben wurde.
@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)); } }
Ausgabe:
F # 9) Was ist eine SAM-Schnittstelle?
Antworten: Java 8 hat das Konzept von FunctionalInterface eingeführt, das nur eine abstrakte Methode haben kann. Da diese Schnittstellen nur eine abstrakte Methode angeben, werden sie manchmal als SAM-Schnittstellen bezeichnet. SAM steht für 'Single Abstract Method'.
Q # 10) Was ist Methodenreferenz?
Seifeui Interview Fragen und Antworten für erfahrene
Antworten: In Java 8 wurde eine neue Funktion eingeführt, die als Methodenreferenz bekannt ist. Dies bezieht sich auf die Methode der Funktionsschnittstelle. Es kann verwendet werden, um Lambda-Ausdruck zu ersetzen, während auf eine Methode verwiesen wird.
Zum Beispiel:: Wenn der Lambda-Ausdruck so aussieht
num -> System.out.println(num)
Dann wäre die entsprechende Methodenreferenz:
System.out::println
Dabei ist „::“ ein Operator, der den Klassennamen vom Methodennamen unterscheidet.
Q # 11) Erläutern Sie die folgende Syntax
String:: Valueof Expression
Antworten: Es ist eine statische Methodenreferenz auf die Wert von Methode der String Klasse. System.out :: println ist eine statische Methodenreferenz auf die println-Methode des out-Objekts der Systemklasse.
Es gibt die entsprechende Zeichenfolgendarstellung des übergebenen Arguments zurück. Das Argument kann Character, Integer, Boolean usw. sein.
F # 12) Was ist ein Prädikat? Geben Sie den Unterschied zwischen einem Prädikat und einer Funktion an?
Antworten: Prädikat ist eine vordefinierte Funktionsschnittstelle. Es befindet sich unter dem Paket java.util.function.Predicate. Es akzeptiert nur ein einziges Argument in der unten gezeigten Form.
Prädikat
Prädikat | Funktion |
---|---|
Es hat den Rückgabetyp Boolean. | Es hat den Rückgabetyp als Objekt. |
Es ist in der Form geschrieben Prädikat das akzeptiert ein einziges Argument. | Es ist in der Form geschrieben Funktion das akzeptiert auch ein einziges Argument. |
Es ist eine funktionale Schnittstelle, die zur Auswertung von Lambda-Ausdrücken verwendet wird. Dies kann als Ziel für eine Methodenreferenz verwendet werden. | Es ist auch eine funktionale Schnittstelle, die zur Auswertung von Lambda-Ausdrücken verwendet wird. In Function steht T für den Eingabetyp und R für den Ergebnistyp. Dies kann auch als Ziel für eine Lambda-Ausdrucks- und Methodenreferenz verwendet werden. |
Q # 13) Stimmt etwas mit dem folgenden Code nicht? Wird es kompilieren oder einen bestimmten Fehler geben?
@FunctionalInterface public interface Test { public C apply(A a, B b); default void printString() { System.out.println('softwaretestinghelp'); } }
Antworten: Ja. Der Code wird kompiliert, da er der Spezifikation der funktionalen Schnittstelle folgt, bei der nur eine einzige abstrakte Methode definiert wird. Die zweite Methode, printString (), ist eine Standardmethode, die nicht als abstrakte Methode zählt.
Q # 14) Was ist eine Stream-API? Warum benötigen wir die Stream-API?
Antworten: Die Stream-API ist eine neue Funktion, die in Java 8 hinzugefügt wurde. Es handelt sich um eine spezielle Klasse, die zum Verarbeiten von Objekten aus einer Quelle wie Collection verwendet wird.
Wir benötigen die Stream-API, weil,
- Es unterstützt Aggregatoperationen, die die Verarbeitung vereinfachen.
- Es unterstützt die Programmierung im funktionalen Stil.
- Es macht eine schnellere Verarbeitung. Daher ist es für eine bessere Leistung geeignet.
- Es ermöglicht parallele Operationen.
Q # 15) Was ist der Unterschied zwischen Limit und Skip?
Antworten: Die Methode limit () wird verwendet, um den Stream der angegebenen Größe zurückzugeben. Zum Beispiel, Wenn Sie die Grenze (5) erwähnt haben, beträgt die Anzahl der Ausgabeelemente 5.
Betrachten wir das folgende Beispiel. Die Ausgabe hier gibt sechs Elemente zurück, da der Grenzwert auf 'sechs' festgelegt ist.
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)); } }
Ausgabe:
Während die skip () -Methode verwendet wird, um das Element zu überspringen.
Betrachten wir das folgende Beispiel. In der Ausgabe sind die Elemente 6, 7, 8, was bedeutet, dass die Elemente bis zum 6. Index (beginnend mit 1) übersprungen wurden.
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)); } }
Ausgabe:
Q # 16) Wie erhalten Sie das aktuelle Datum und die aktuelle Uhrzeit mithilfe der Java 8-API für Datum und Uhrzeit?
Antworten: Das folgende Programm wurde mit Hilfe der in Java 8 eingeführten neuen API geschrieben. Wir haben die API LocalDate, LocalTime und LocalDateTime verwendet, um das aktuelle Datum und die aktuelle Uhrzeit abzurufen.
In der ersten und zweiten Druckanweisung haben wir das aktuelle Datum und die aktuelle Uhrzeit von der Systemuhr abgerufen, wobei die Zeitzone als Standard festgelegt wurde. In der dritten print-Anweisung haben wir die LocalDateTime-API verwendet, die sowohl Datum als auch Uhrzeit druckt.
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 } }
Ausgabe:
Q # 17) Was ist der Zweck der limit () -Methode in Java 8?
Antworten: Die Stream.limit () -Methode gibt die Grenze der Elemente an. Die Größe, die Sie im Grenzwert (X) angegeben haben, gibt den Stream mit der Größe 'X' zurück. Es ist eine Methode von java.util.stream.Stream
Syntax:
limit(X)
Wobei 'X' die Größe des Elements ist.
F # 18) Schreiben Sie ein Programm zum Drucken von 5 Zufallszahlen mit forEach in Java 8?
Antworten: Das folgende Programm generiert 5 Zufallszahlen mit Hilfe von forEach in Java 8. Sie können die Grenzwertvariable auf eine beliebige Zahl setzen, je nachdem, wie viele Zufallszahlen Sie generieren möchten.
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 */ } }
Ausgabe:
Q # 19) Schreiben Sie ein Programm zum Drucken von 5 Zufallszahlen in sortierter Reihenfolge mit forEach in Java 8?
Antworten: Das folgende Programm generiert 5 Zufallszahlen mit Hilfe von forEach in Java 8. Sie können die Grenzwertvariable auf eine beliebige Zahl setzen, je nachdem, wie viele Zufallszahlen Sie generieren möchten. Das einzige, was Sie hier hinzufügen müssen, ist die sortierte () Methode.
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 */ } }
Ausgabe:
Q # 20) Was ist der Unterschied zwischen Zwischen- und Terminalbetrieb in Stream?
Antworten: Alle Stream-Vorgänge sind entweder Terminal- oder Intermediate-Vorgänge. Zwischenoperationen sind die Operationen, die den Stream zurückgeben, damit einige andere Operationen auf diesem Stream ausgeführt werden können. Zwischenoperationen verarbeiten den Stream am Aufrufstandort nicht, daher werden sie als faul bezeichnet.
Diese Arten von Operationen (Zwischenoperationen) verarbeiten Daten, wenn eine Terminaloperation ausgeführt wird. Beispiele Zwischenbetrieb sind Karte und Filter.
Terminaloperationen initiieren die Stream-Verarbeitung. Während dieses Aufrufs durchläuft der Stream alle Zwischenoperationen. Beispiele des Terminalbetriebs sind sum, Collect und forEach.
In diesem Programm versuchen wir zunächst, einen Zwischenbetrieb ohne Terminalbetrieb auszuführen. Wie Sie sehen, wird der erste Codeblock nicht ausgeführt, da keine Terminaloperation unterstützt wird.
Der zweite Block wurde aufgrund der Terminaloperationssumme () erfolgreich ausgeführt.
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(); } }
Ausgabe:
Q # 21) Schreiben Sie ein Java 8-Programm, um die Summe aller in einer Liste vorhandenen Zahlen zu erhalten?
Antworten: In diesem Programm haben wir ArrayList zum Speichern der Elemente verwendet. Dann haben wir mit Hilfe der sum () -Methode die Summe aller in der ArrayList vorhandenen Elemente berechnet. Dann wird es in Stream konvertiert und jedes Element mit Hilfe der Methoden mapToInt () und sum () hinzugefügt.
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 } }
Ausgabe:
F # 22) Schreiben Sie ein Java 8-Programm, um die Liste der Zahlen zu quadrieren und dann die Zahlen größer als 100 herauszufiltern und dann den Durchschnitt der verbleibenden Zahlen zu ermitteln?
Antworten: In diesem Programm haben wir ein Array von Ganzzahlen genommen und in einer Liste gespeichert. Dann haben wir mit Hilfe von mapToInt () die Elemente quadriert und die Zahlen größer als 100 herausgefiltert. Schließlich wird der Durchschnitt der verbleibenden Zahl (größer als 100) berechnet.
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()); } }
Ausgabe:
Q # 23) Was ist der Unterschied zwischen Streams findFirst () und findAny ()?
Fragen und Antworten zum technischen Support für Erstsemester
Antworten: Wie der Name schon sagt, wird die findFirst () -Methode verwendet, um das erste Element aus dem Stream zu finden, während die findAny () -Methode verwendet wird, um ein Element aus dem Stream zu finden.
Das findFirst () ist von Natur aus prädestinär, während das findAny () nicht deterministisch ist. Deterministisch bedeutet bei der Programmierung, dass die Ausgabe auf der Eingabe oder dem Anfangszustand des Systems basiert.
Q # 24) Was ist der Unterschied zwischen Iterator und Spliterator?
Antworten: Nachfolgend sind die Unterschiede zwischen Iterator und Spliterator aufgeführt.
Iterator | Splitter |
---|---|
Es wurde in Java Version 1.2 eingeführt | Es wurde in Java SE 8 eingeführt |
Es wird für die Sammlungs-API verwendet. | Es wird für die Stream-API verwendet. |
Einige der iterierten Methoden sind next () und hasNext (), mit denen Elemente iteriert werden. | Die Spliterator-Methode ist tryAdvance (). |
Wir müssen die iterator () -Methode für Collection Object aufrufen. | Wir müssen die spliterator () -Methode für Stream Object aufrufen. |
Iteriert nur in sequentieller Reihenfolge. | Iteriert in paralleler und sequentieller Reihenfolge. |
Q # 25) Was ist die Consumer Functional Interface?
Antworten: Consumer Functional Interface ist auch eine Schnittstelle mit einem einzigen Argument (wie Prädikat und Funktion). Es kommt unter java.util.function.Consumer. Dies gibt keinen Wert zurück.
Im folgenden Programm haben wir die Methode accept verwendet, um den Wert des String-Objekts abzurufen.
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 */ } }
Ausgabe:
Q # 26) Was ist die funktionale Schnittstelle des Lieferanten?
Antworten: Supplier Functional Interface akzeptiert keine Eingabeparameter. Es kommt unter java.util.function.Supplier. Dies gibt den Wert mit der Methode get zurück.
Im folgenden Programm haben wir die get-Methode verwendet, um den Wert des String-Objekts abzurufen.
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. */ } }
Ausgabe:
Q # 27) Was ist Nashorn in Java 8?
Antworten: Nashorn in Java 8 ist eine Java-basierte Engine zum Ausführen und Auswerten von JavaScript-Code.
Q # 28) Schreiben Sie ein Java 8-Programm, um die niedrigste und höchste Nummer eines Streams zu finden?
Antworten: In diesem Programm haben wir die Methoden min () und max () verwendet, um die höchste und niedrigste Anzahl eines Streams zu erhalten. Zunächst haben wir einen Stream mit Ganzzahlen initialisiert und mit Hilfe der Comparator.comparing () -Methode die Elemente des Streams verglichen.
Wenn diese Methode in max () und min () integriert ist, erhalten Sie die höchsten und niedrigsten Zahlen. Dies funktioniert auch beim Vergleichen der Zeichenfolgen.
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); } }
Ausgabe:
Q # 29) Was ist der Unterschied zwischen Map- und FlatMap-Stream-Betrieb?
Antworten: Die Map Stream-Operation liefert einen Ausgabewert pro Eingabewert, während die flatMap Stream-Operation null oder mehr Ausgabewerte pro Eingabewert ergibt.
Kartenbeispiel- - Der Map Stream-Betrieb wird im Allgemeinen für den einfachen Betrieb von Streams wie dem unten genannten verwendet.
In diesem Programm haben wir die Zeichen von „Namen“ mithilfe der Kartenoperation in Großbuchstaben geändert, nachdem wir sie in einem Stream gespeichert haben, und mit Hilfe der Operation forEach Terminal haben wir jedes Element gedruckt.
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 } }
Ausgabe:
flatMap Beispiel- - Die flatMap Stream-Operation wird für komplexere Stream-Operationen verwendet.
Hier haben wir die flatMap-Operation für 'Liste der Liste vom Typ String' ausgeführt. Wir haben Eingabenamen als Liste angegeben und sie dann in einem Stream gespeichert, in dem wir die Namen herausgefiltert haben, die mit 'S' beginnen.
Schließlich haben wir mit Hilfe der Operation forEach Terminal jedes Element gedruckt.
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 */ } }
Ausgabe:
Q # 30) Was ist MetaSpace in Java 8?
Antworten: In Java 8 wurde eine neue Funktion zum Speichern von Klassen eingeführt. Der Bereich, in dem alle in Java 8 gespeicherten Klassen als MetaSpace bezeichnet werden. MetaSpace hat das PermGen ersetzt.
Bis Java 7 wurde PermGen von Java Virtual Machine zum Speichern der Klassen verwendet. Da MetaSpace dynamisch ist, da es dynamisch wachsen kann und keine Größenbeschränkung aufweist, hat Java 8 PermGen durch MetaSpace ersetzt.
Q # 31) Was ist der Unterschied zwischen interner und externer Java 8-Iteration?
Antworten: Der Unterschied zwischen interner und externer Iteration ist unten aufgeführt.
Interne Iteration | Externe Iteration |
---|---|
Es wurde in Java 8 (JDK-8) eingeführt. | Es wurde in der vorherigen Version von Java (JDK-7, JDK-6 usw.) eingeführt und geübt. |
Es iteriert intern auf den aggregierten Objekten wie Collection. | Es iteriert extern auf den aggregierten Objekten. |
Es unterstützt den funktionalen Programmierstil. | Es unterstützt den OOPS-Programmierstil. |
Der interne Iterator ist passiv. | Externer Iterator ist aktiv. |
Es ist weniger fehlerhaft und erfordert weniger Codierung. | Es erfordert wenig mehr Codierung und ist fehleranfälliger. |
Q # 32) Was ist JJS?
Wie spiele ich SWF-Dateien ab?
Antworten: JJS ist ein Befehlszeilentool zum Ausführen von JavaScript-Code auf der Konsole. In Java 8 ist JJS die neue ausführbare Datei, bei der es sich um eine JavaScript-Engine handelt.
F # 33) Was ist ChronoUnits in Java 8?
Antworten: ChronoUnits ist die Aufzählung, die eingeführt wird, um die Integer-Werte zu ersetzen, die in der alten API zur Darstellung von Monat, Tag usw. verwendet werden.
Q # 34) StringJoiner-Klasse in Java 8 erklären? Wie können wir mit der StringJoiner-Klasse mehrere Strings verbinden?
Antworten: In Java 8 wurde eine neue Klasse in das Paket java.util eingeführt, das als StringJoiner bekannt war. Durch diese Klasse können wir mehrere durch Trennzeichen getrennte Zeichenfolgen zusammenfügen und ihnen Präfixe und Suffixe zuweisen.
Im folgenden Programm erfahren Sie, wie Sie mit der StringJoiner-Klasse mehrere Strings verbinden. Hier haben wir ',' als Trennzeichen zwischen zwei verschiedenen Zeichenfolgen. Dann haben wir fünf verschiedene Zeichenfolgen verbunden, indem wir sie mit Hilfe der add () -Methode hinzugefügt haben. Zum Schluss wurde der String Joiner gedruckt.
In der nächsten Frage Nr. 35 erfahren Sie, wie Sie der Zeichenfolge Präfix und Suffix hinzufügen.
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); } }
Ausgabe:
F # 35) Schreiben Sie ein Java 8-Programm, um dem String Präfix und Suffix hinzuzufügen?
Antworten: In diesem Programm haben wir ',' als Trennzeichen zwischen zwei verschiedenen Zeichenfolgen. Außerdem haben wir Klammern '(' und ')' als Präfix und Suffix angegeben. Anschließend werden fünf verschiedene Zeichenfolgen verbunden, indem sie mithilfe der Methode add () hinzugefügt werden. Zum Schluss wurde der String Joiner gedruckt.
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); } }
Ausgabe:
Q # 36) Schreiben Sie ein Java 8-Programm, um einen Stream mit der forEach-Methode zu iterieren?
Antworten: In diesem Programm iterieren wir einen Stream ab „number = 2“, gefolgt von der Zählvariablen, die nach jeder Iteration um „1“ erhöht wird.
Dann filtern wir die Zahl, deren Rest nicht Null ist, wenn sie durch die Zahl 2 geteilt wird. Außerdem haben wir das Limit als? 5, was bedeutet, dass es nur 5 Mal iteriert. Schließlich drucken wir jedes Element mit 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); } }
Ausgabe:
Q # 37) Schreiben Sie ein Java 8-Programm, um ein Array zu sortieren, und konvertieren Sie das sortierte Array dann in Stream?
Antworten: In diesem Programm haben wir die parallele Sortierung verwendet, um ein Array von Ganzzahlen zu sortieren. Dann konvertierte das sortierte Array in Stream und mit Hilfe von forEach haben wir jedes Element eines Streams gedruckt.
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 */ } }
Ausgabe:
Q # 38) Schreiben Sie ein Java 8-Programm, um die Anzahl der Zeichenfolgen in einer Liste zu ermitteln, deren Länge größer als 5 ist.
Antworten: In diesem Programm werden vier Zeichenfolgen mit der Methode add () zur Liste hinzugefügt. Anschließend haben wir mithilfe von Stream- und Lambda-Ausdrücken die Zeichenfolgen gezählt, deren Länge größer als 5 ist.
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'); } }
Ausgabe:
Q # 39) Ein Java 8-Programm schreiben, um zwei Streams zu verketten?
Antworten: In diesem Programm haben wir zwei Streams aus den beiden bereits erstellten Listen erstellt und diese dann mit einer concat () -Methode verkettet, bei der zwei Listen als Argument übergeben werden. Schließlich wurden die Elemente des verketteten Streams gedruckt.
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 } }
Ausgabe:
Q # 40) Ein Java 8-Programm schreiben, um die doppelten Elemente aus der Liste zu entfernen?
Antworten: In diesem Programm haben wir die Elemente in einem Array gespeichert und in eine Liste konvertiert. Danach haben wir stream verwendet und ihn mit Hilfe der Methode „Collectors.toSet ()“ auf „Set“ gesammelt.
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)); } }
Ausgabe:
Fazit
In diesem Artikel haben wir die neuen Funktionen von Java 8 verstanden. Wir haben alle wichtigen Fragen zu Java 8-Interviews und deren Antworten ausführlich behandelt.
Beim Lesen dieses Tutorials müssen Sie Kenntnisse über die neuen APIs für die Manipulation von Datum und Uhrzeit, die neuen Funktionen von Java 8, neue Streaming-APIs sowie die passenden Programmierbeispiele gemäß dem Konzept erworben haben. Diese neuen Konzepte oder Funktionen sind Teil des Interviewprozesses, wenn Sie sich den anspruchsvolleren Java-Positionen stellen möchten.
Alles Gute!!
=> Überprüfen Sie ALLE Java-Tutorials hier.
Literatur-Empfehlungen
- Interview Fragen und Antworten
- Fragen und Antworten zum ETL-Testinterview
- Einige knifflige manuelle Testfragen und -antworten
- Top 40 Fragen und Antworten zum C-Programmierinterview
- Die 40 beliebtesten Fragen und Antworten zum J2EE-Interview, die Sie lesen sollten
- Spock Interview Fragen mit Antworten (am beliebtesten)
- 25 Fragen und Antworten zu den besten Agile Testing-Interviews
- Top 32 der besten Fragen und Antworten zum Datastage-Interview