Java SE 8 Interviewfragen und Antworten (Teil 2)

In meinem vorherigen Beitrag habe ich einige wichtige Java SE 8 Interviewfragen und -antworten diskutiert. In diesem Beitrag werden wir einige weitere Java SE 8 Interviewfragen und -antworten diskutieren. Bevor Sie diesen Beitrag lesen, lesen Sie bitte meinen vorherigen Beitrag unter: „Java SE 8 Interviewfragen (Teil 1)„.

Java SE 8 Interviewfragen

  1. Was ist interne Iteration in Java SE 8?
  2. Unterschiede zwischen externer Iteration und interner Iteration?
  3. Was sind die Hauptnachteile der externen Iteration?
  4. Was sind die Hauptvorteile der internen Iteration gegenüber der externen Iteration?
  5. Was ist der Hauptnachteil der internen Iteration gegenüber der externen Iteration?
  6. Was ist der Hauptvorteil der externen Iteration gegenüber der internen Iteration?
  7. Wann müssen wir interne Iteration verwenden? Wann müssen wir externe Iteration verwenden?
  8. Unterschiede zwischen Zwischenoperationen und Terminaloperationen der Stream-API von Java 8?
  9. Ist es möglich, Methodenimplementierungen in Java-Schnittstellen bereitzustellen? Wenn ja, wie stellen wir sie bereit?
  10. Was ist eine Standardmethode? Warum benötigen wir Standardmethoden in Java 8-Schnittstellen?
  11. Was ist eine statische Methode? Warum benötigen wir statische Methoden in Java 8-Schnittstellen?
  12. Differenzen zwischen funktionaler Programmierung und objektorientierter Programmierung?
  13. Erklärung der Probleme der alten Java-Datums-API? Was sind die Vorteile der Java 8-Datums- und Zeit-API gegenüber der alten Datums-API und der Joda-Zeit-API?
  14. Warum brauchen wir eine neue Datums- und Zeit-API in Java SE 8? Erläutern Sie, wie die Datums- und Zeit-API von Java SE 8 die Probleme der alten Java-Datums-API löst?
  15. Unterschiede zwischen der alten Java-Datums-API und der Java 8-Datums- und Zeit-API?
  16. Was ist mehrfache Vererbung? Wie unterstützt Java 8 mehrfache Vererbung?
  17. Was ist das Diamond-Problem bei Schnittstellen aufgrund von Standardmethoden? Wie löst Java 8 dieses Problem?

Java SE 8 Interviewfragen und Antworten

Was ist interne Iteration in Java SE 8?

Vor Java 8 kannten wir das Konzept der internen Iteration nicht. Java 8 hat eine neue Funktion namens „Interne Iteration“ eingeführt. Vor Java 8 hatte die Java-Sprache nur die externe Iteration, um Elemente eines aggregierten Objekts wie Sammlungen, Arrays usw. zu durchlaufen. Interne Iteration bedeutet „Das schrittweise Durchlaufen der Elemente eines aggregierten Objekts intern durch die Java-API“. Anstatt dass die Java-Anwendung die Iteration extern durchführt, bitten wir die Java-API, diese Aufgabe intern zu erledigen.

Unterschiede zwischen externer Iteration und interner Iteration?

S.No. External Iteration Internal Iteration
1. Available before Java 8 too. It is introduced in Java SE 8
2. Iterating an Aggregated Object elements externally. Iterating an Aggregated Object elements internally (background).
3. Iterate elements by using for-each loop and Iterators like Enumeration, Iterator, ListIterator. Iterate elements by using Java API like “forEach” method.
4. Iterating elements in Sequential and In-Order only. Not required to iterate elements in Sequential order.
5. It follows OOP approach that is Imperative Style. It follows Functional Programming approach that is Declarative Style.
6. It does NOT separate responsibilities properly that is, it defines both “What is to be done” and “How it is to be done”. It defines only “What is to be done”. No need to worry about “How it is to be done”. Java API takes care about “How to do”.
7. Less Readable Code. More Readable code.

Was sind die Hauptnachteile der externen Iteration?

Die externe Iteration hat folgende Nachteile:

  • Wir müssen den Code im imperativen Stil schreiben.
  • Es gibt keine klare Trennung der Verantwortlichkeiten. Starke Kopplung zwischen dem „Was getan werden soll“ und dem „Wie es getan werden soll“.
  • Weniger lesbare Code.
  • Mehr ausführlicher und boilerplate Code.
  • Wir müssen die Elemente in sequenzieller Reihenfolge durchlaufen.
  • Es unterstützt keine Nebenläufigkeit und Parallelität ordnungsgemäß.

Was sind die Hauptvorteile der internen Iteration gegenüber der externen Iteration?

Verglichen mit der externen Iteration hat die interne Iteration folgende Vorteile:

  • Da sie dem funktionalen Programmierstil folgt, können wir deklarativen Code schreiben.
  • Mehr lesbare und prägnante Code.
  • Vermeidet das Schreiben von umständlichem und Boilerplate-Code.
  • Keine Notwendigkeit, Elemente in sequentieller Reihenfolge zu durchlaufen.
  • Es unterstützt die Parallelität und Parallelität ordnungsgemäß.
  • Wir können parallelen Code schreiben, um die Leistung der Anwendung zu verbessern.
  • Klare Trennung der Verantwortlichkeiten. Lose Kopplung zwischen dem „Was getan werden soll“ und dem „Wie es getan werden soll“ Code.
  • Wir müssen nur Code über „Was getan werden soll“ schreiben, und die Java-API kümmert sich um den Code über „Wie es getan werden soll“.

Was ist der größte Nachteil der internen Iteration gegenüber der externen Iteration?

Verglichen mit der externen Iteration hat die interne Iteration einen großen Nachteil:

  • In der internen Iteration, da die Java-API die Iterationselemente intern übernimmt, haben wir KEINE Kontrolle über die Iteration.

Was ist der Hauptvorteil der externen Iteration gegenüber der internen Iteration?

Verglichen mit der internen Iteration hat die externe Iteration einen wichtigen Vorteil:

  • In der externen Iteration haben wir viel Kontrolle über die Iteration, da die Java-API sich NICHT um die Iterationselemente kümmert.

Wann sollten wir die interne Iteration verwenden? Wann sollten wir die externe Iteration verwenden?

Wir müssen die Situationen verstehen, um entweder die interne Iteration oder die externe Iteration zu verwenden.

  • Wenn wir mehr Kontrolle über die Iteration benötigen, können wir die externe Iteration verwenden.
  • Wenn wir keine zusätzliche Kontrolle über die Iteration benötigen, können wir die interne Iteration verwenden.
  • Wenn wir hochgradig parallele Anwendungen entwickeln müssen, sollten wir die interne Iteration verwenden.

Unterschiede zwischen den Zwischenoperationen und den Terminaloperationen der Stream-API von Java 8?

S.No. Stream Intermediate Operations Stream Terminal Operations
1. Stream Intermediate operations are not evaluated until we chain it with Stream Terminal Operation. Stream Terminal Operations are evaluated on it’s own. No need other operations help.
2. The output of Intermediate Operations is another Stream. The output of Intermediate Operations is Not a Stream. Something else other than a Stream.
3. Intermediate Operations are evaluated Lazily. Terminal Operations are evaluated Eagerly.
4. We can chain any number of Stream Intermediate Operations. We can NOT chain Stream Terminal Operations.
5. We can use any number of Stream Intermediate Operations per Statement. We can use only one Stream Terminal Operation per Statement.

Ist es möglich, Methodenimplementierungen in Java-Schnittstellen bereitzustellen? Wenn ja, wie machen wir das?

In Java 7 oder früher war es nicht möglich, Methodenimplementierungen in Schnittstellen bereitzustellen. Ab Java 8 ist es möglich. In Java SE 8 können wir Methodenimplementierungen in Schnittstellen mithilfe der folgenden beiden neuen Konzepte bereitstellen:

  • Standardmethoden
  • Statische Methoden

Was ist eine Standardmethode? Warum brauchen wir Standardmethoden in Java 8-Schnittstellen?

A Default Method is a method which is implemented in an interface with “default” keyword. It’s new featured introduced in Java SE 8. We need Default Methods because of the following reasons:

  • Es ermöglicht uns, die Implementierung von Methoden in Schnittstellen bereitzustellen.
  • Um neue Funktionalitäten zur Schnittstelle hinzuzufügen, ohne die Klassen zu brechen, die diese Schnittstelle implementieren.
  • Um eine elegante Rückwärtskompatibilitätsfunktion bereitzustellen.
  • Um die Erweiterung der vorhandenen Funktionalität zu erleichtern.
  • Um die Wartung der vorhandenen Funktionalität zu erleichtern.

Was ist eine statische Methode? Warum benötigen wir statische Methoden in Java 8-Schnittstellen?

A Static Method is an Utility method or Helper method, which is associated to a class (or interface). It is not associated to any object. We need Static Methods because of the following reasons:

  • Wir können Hilfs- oder Utility-Methoden, die spezifisch für eine Schnittstelle sind, in derselben Schnittstelle belassen, anstatt sie in einer separaten Utility-Klasse zu haben.
  • Wir benötigen keine separaten Utility-Klassen wie Collections, Arrays usw., um Utility-Methoden zu haben.
  • Klare Trennung der Verantwortlichkeiten. Das heißt, wir benötigen keine Utility-Klasse, um alle Utility-Methoden der Collection-API wie Collections usw. zu haben.
  • Einfache Erweiterung der API.
  • Einfache Wartung der API.

Unterschiede zwischen funktionaler Programmierung und objektorientierter Programmierung?

Functional Programming OOP
Does not exist State Exists State
Uses Immutable data Uses Mutable data
It follows Declarative Programming Model It follows Imperative Programming Model
Stateless Programming Model Stateful Programming Model
Main Fcous on: “What you are doing” Main focus on “How you are doing”
Good for Parallel (Concurrency) Programming Poor for Parallel (Concurrency) Programming
Good for BigData processing and analysis NOT Good for BigData processing and analysis
Supports pure Encapsulation It breaks Encapsulation concept
Functions with No-Side Effects Methods with Side Effects
Functions are first-class citizens Objects are first-class citizens
Primary Manipulation Unit is “Function” Primary Manipulation Unit is Objects(Instances of Classes)
Flow Controls: Function calls, Function Calls with Recursion Flow Controls: Loops, Conditional Statements
It uses “Recursion” concept to iterate Collection Data. It uses “Loop” concept to iterate Collection Data. For example:-For-each loop in Java
Order of execution is less importance. Order of execution is must and very important.
Supports both “Abstraction over Data” and “Abstraction over Behavior”. Supports only “Abstraction over Data”.
We use FP when we have few Things with more operations. We use OOP when we have few Operations with more Things. For example: Things are classes and Operations are Methods in Java.

HINWEIS: – Für weitere Informationen über FP-, IP- und OOP-Vergleiche lesen Sie bitte meinen vorherigen Beitrag unter: „Vergleichen Sie FP, OOP(IP)

Erklären Sie die Probleme der alten Java-Datums-API? Was sind die Vorteile der Java-8-Datums- und Zeit-API gegenüber der alten Datums-API und der Joda-Time-API?

Die alte Java-Datums-API von Java bezieht sich auf die Datums-API, die vor Java SE 8 verfügbar war, wie Datum, Kalender, SimpleDateFormat usw. Die alte Datums-API von Java hat die folgenden Probleme oder Nachteile im Vergleich zur Java-8-Datums- und Zeit-API und zur Joda-Time-API.

  • Die meisten APIs sind veraltet.
  • Weniger Lesbarkeit.
  • java.util.Date ist veränderlich und nicht thread-sicher.
  • java.text.SimpleDateFormat ist nicht thread-sicher.
  • Weniger Leistung.

Die Java-SE-8-Datums- und Zeit-API hat die folgenden Vorteile gegenüber der alten Java-Datums-API.

  • Sehr einfach zu verwenden.
  • Menschlich lesbare Syntax, die eine bessere Lesbarkeit bietet.
  • Alle APIs sind thread-sicher.
  • Bessere Leistung.

Warum brauchen wir eine neue Date- und Zeit-API in Java SE 8? Erläutern Sie, wie die Java SE 8 Data und Time API die Probleme der alten Java-Datei-API löst?

Wir benötigen die Date- und Zeit-API von Java 8, um hochperformante, threadsichere und hochskalierbare Java-Anwendungen zu entwickeln. Die Date- und Zeit-API von Java 8 löst alle Probleme der alten Datei-API von Java, indem sie den Grundsätzen der Unveränderlichkeit und Thread-Sicherheit folgt.

Was sind die Unterschiede zwischen der alten Java-Datei-API und der Datei- und Zeit-API von Java 8?

Unterschiede zwischen der alten Java-Datei-API und der Datei- und Zeit-API von Java 8:

S.No. Java’s OLD Java Date API Java 8’s Date and Time API
1. Available before Java 8 too. It is introduced in Java SE 8
2. Not Thread Safe. Thread Safe.
3. Mutable API. Immutable API.
4. Less Performance. Better Performance.
5. Less Readability. More Readability.
6. It’s not recommended to use as its deprecated. It’s always recommended to use.
7. Not Extendable. Easy to Extend.
8. It defines months values from 0 to 11, that is January = 0. It defines months values from 1 to 12, that is January = 1.
9. It’s an old API. It’s a new API.

Was ist Mehrfachvererbung? Wie unterstützt Java 8 Mehrfachvererbung?

Mehrfachvererbung bedeutet, dass eine Klasse Merkmale und Eigenschaften von mehr als einer Elternklasse erben oder erweitern kann. In Java 7 oder früher ist Mehrfachvererbung nicht möglich, da Java der Regel folgt, dass „eine Klasse nur eine Klasse oder abstrakte Klasse erweitern sollte“. Es ist jedoch möglich, mehrfache Implementationsvererbung über ein Interface bereitzustellen, da Java der Regel folgt, dass „eine Klasse eine beliebige Anzahl von Schnittstellen erweitern kann“. Java 8 unterstützt jedoch „Implementierung von Methoden in Schnittstellen“, indem es neue Funktionen einführt: Standardmethoden in Schnittstellen. Aufgrund dieser Funktion unterstützt Java 8 Mehrfachvererbung mit einigen Einschränkungen.

Was ist das Diamantproblem in Schnittstellen aufgrund von Standardmethoden? Wie löst Java 8 dieses Problem?

Java 8 Standardmethoden können ein Diamantenproblem einführen, wenn eine Klasse mehrere Schnittstellen implementiert. Es tritt auf, wenn eine Klasse mehrere Schnittstellen mit denselben Methodenimplementierungen (Standardmethode) erweitert. Beispielcode für Java SE 8, um das Diamantenproblem mit Schnittstellenstandardmethoden zu zeigen.

interface A {
	default void display() {
		System.out.println("A");
	}
}

interface B extends A {
	default void display() {
		System.out.println("B");
	}
}

interface C extends A {
	default void display() {
		System.out.println("C");
	}
}

class D implements B, C {
}

Im obigen Code-Schnipsel gibt die Klasse D einen Kompilierungsfehler aus, der besagt: „Duplizierte Standardmethoden mit den Parametern () und () werden von den Typen C und B geerbt“. Das liegt daran, dass der Java-Compiler darüber verwirrt wird, welche display()-Methode in der Klasse D verwendet werden soll. Die Klasse D erbt die display()-Methode von beiden Schnittstellen B und C. Um dieses Problem zu lösen, hat Java 8 die folgende Lösung gegeben.

class D implements B, C {

	@Override
	public void display() {
		B.super.display();
	}
	
}

Dieses B.super.display(); wird dieses Diamantenproblem lösen. Wenn Sie die Standardmethode der C-Schnittstelle verwenden möchten, verwenden Sie C.super.display();. Das ist alles zu Java 8 Interviewfragen. Wir werden in meinen kommenden Beiträgen einige weitere Java SE 8 Interviewfragen besprechen. Bitte hinterlassen Sie mir einen Kommentar, wenn Ihnen mein Beitrag gefallen hat oder wenn Sie Probleme/Vorschläge haben.

Source:
https://www.digitalocean.com/community/tutorials/javase8-interview-questions-part2