Java ist eine der beliebtesten Programmiersprachen der Welt und bekannt für ihre Vielseitigkeit, Portabilität und ihr breites Anwendungsspektrum. Java ist aufgrund seiner Funktionen und Leistung die am häufigsten verwendete Sprache in Top-Unternehmen wie Uber, Airbnb, Google, Netflix, Instagram, Spotify, Amazon und vielen anderen.
In diesem Artikel stellen wir Ihnen vor Über 200 Kern-Java-Interviewfragen zugeschnitten sowohl auf Studienanfänger als auch auf erfahrene Fachkräfte mit 3, 5 und 8 Jahren Berufserfahrung. Hier decken wir alles ab, einschließlich grundlegender Java-Konzepte, objektorientierter Programmierung (OOP), Multithreading, Ausnahmebehandlung, Entwurfsmuster, Java-Sammlungen und mehr, was Ihnen sicherlich dabei helfen wird, Java-Interviews zu knacken.

Inhaltsverzeichnis
- Fragen zum Java-Interview für Erstsemester
- Fragen zum Java Intermediate-Interview
- Fragen zum Java-Interview für Erfahrene
- Fragen zum Java-Unterschied im Vorstellungsgespräch
Fragen zum Java-Interview für Erstsemester
1. Ist Java plattformunabhängig und wie?
Ja, Java ist eine plattformunabhängige Sprache. Im Gegensatz zu vielen Programmiersprachen kompiliert der Javac-Compiler das Programm, um eine Bytecode- oder .class-Datei zu bilden. Diese Datei ist unabhängig von der laufenden Software oder Hardware, benötigt jedoch eine im Betriebssystem vorinstallierte JVM-Datei (Java Virtual Machine) zur weiteren Ausführung des Bytecodes.
Obwohl JVM ist plattformabhängig , kann der Bytecode auf jedem System erstellt und auf jedem anderen System ausgeführt werden, unabhängig von der verwendeten Hardware oder Software, was Java plattformunabhängig macht.
2. Was sind die wichtigsten Java-Funktionen?
Java ist eine der bekanntesten und am häufigsten verwendeten Sprachen in der realen Welt. Es gibt viele Funktionen in Java, die es besser machen als jede andere Sprache. Einige davon sind unten aufgeführt:

- Einfach : Java ist recht einfach zu verstehen und die Syntax
- Plattformunabhängig: Java ist plattformunabhängig, was bedeutet, dass wir dasselbe Programm in jeder Software und Hardware ausführen können und das gleiche Ergebnis erzielen.
- Interpretiert : Java wird ebenso interpretiert wie eine Compiler-basierte Sprache.
- Robust : Funktionen wie Garbage Collection, Ausnahmebehandlung usw., die die Sprache robust machen.
- Objektorientierte : Java ist eine objektorientierte Sprache, die die Konzepte von Klassen, Objekten, vier Säulen von OOPS usw. unterstützt.
- Gesichert : Da wir eine Anwendung direkt mit dem Benutzer teilen können, ohne das eigentliche Programm zu teilen, ist Java eine sichere Sprache.
- Hochleistung: schneller als andere traditionell interpretierte Programmiersprachen.
- Dynamisch : unterstützt das dynamische Laden von Klassen und Schnittstellen.
- Verteilt : Mit der Funktion von Java können wir auf Dateien zugreifen, indem wir die Methoden von jedem angeschlossenen Computer aus aufrufen.
- Multithreaded : Behandeln Sie mehrere Aufgaben gleichzeitig, indem Sie mehrere Threads definieren
- Architekturneutral : Es ist nicht von der Architektur abhängig.
3. Was ist JVM?

JVM steht für Java Virtual Machine und ist ein Java-Interpreter. Es ist für das Laden, Überprüfen und Ausführen des in Java erstellten Bytecodes verantwortlich.
Obwohl es plattformabhängig ist, was bedeutet, dass die Software von JVM für verschiedene Betriebssysteme unterschiedlich ist, spielt es eine entscheidende Rolle bei der Unabhängigkeit von Java-Plattformen.
Weitere Informationen zum Thema finden Sie unter JVM in Java .
4. Was ist JIT?

JIT steht für (Just-in-Time). Der Compiler ist Teil von JRE (Java Runtime Environment) und wird für eine bessere Leistung der Java-Anwendungen während der Laufzeit verwendet. Die Verwendung von JIT wird im folgenden Schritt-für-Schritt-Prozess beschrieben:
- Der Quellcode wird mit kompiliert javac Compiler zur Bildung von Bytecode
- Bytecode wird weiter an JVM weitergegeben
- JIT ist ein Teil von JVM. JIT ist für die Kompilierung von Bytecode in nativen Maschinencode zur Laufzeit verantwortlich.
- Der JIT-Compiler ist durchgehend aktiviert, während er aktiviert wird, wenn eine Methode aufgerufen wird. Bei einer kompilierten Methode ruft die JVM den kompilierten Code direkt auf, anstatt ihn zu interpretieren.
- Als JVM bezeichnet man den kompilierten Code, der die Leistung und Geschwindigkeit der Ausführung erhöht.
Weitere Informationen zum Thema finden Sie unter JIT in Java .
5. Welche Speicherspeicher sind mit JVM verfügbar?

JVM besteht aus einigen Speicherspeichern, wie unten erwähnt:
- Klassenbereich (Methodenbereich): Speichert Daten auf Klassenebene jeder Klasse, z. B. den Laufzeitkonstantenpool, Feld- und Methodendaten sowie den Code für Methoden.
- Heap: Objekte werden erstellt oder Objekte gespeichert. Es wird verwendet, um Objekten während der Laufzeit Speicher zuzuweisen.
- Stack: Speichert Daten und Teilergebnisse, die benötigt werden, während der Wert für die Methode zurückgegeben und eine dynamische Verknüpfung durchgeführt wird
- Programmzählerregister: speichert die Adresse der aktuell ausgeführten Java Virtual Machine-Anweisung.
- Native Method Stack: Speichert alle in der Anwendung verwendeten nativen Methoden.
Weitere Informationen zum Thema finden Sie unter JVM-Speicherspeicher .
6. Was ist ein Klassenlader?
Der Klassenlader ist Teil von JRE (Java Runtime Environment). Während der Ausführung des Bytecodes oder der erstellten .class-Datei ist der Klassenlader für das dynamische Laden der Java-Klassen und Schnittstellen zur JVM (Java Virtual Machine) verantwortlich. Aufgrund der Klassenlader muss das Java-Laufzeitsystem keine Kenntnisse über Dateien und Dateisysteme haben.
Weitere Informationen zum Thema finden Sie unter ClassLoader in Java.
7. Unterschied zwischen JVM, JRE und JDK.
JVM : JVM, auch bekannt als Java Virtual Machine, ist ein Teil von JRE. JVM ist eine Art Interpreter, der für die Umwandlung von Bytecode in maschinenlesbaren Code verantwortlich ist. JVM selbst ist plattformabhängig, interpretiert jedoch den Bytecode, der der plattformunabhängige Grund dafür ist, dass Java plattformunabhängig ist.
JRE : JRE steht für Java Runtime Environment. Dabei handelt es sich um ein Installationspaket, das eine Umgebung zum Ausführen des Java-Programms oder der Java-Anwendung auf jedem Computer bereitstellt.
JDK : JDK steht für Java Development Kit, das die Umgebung zum Entwickeln und Ausführen von Java-Programmen bereitstellt. JDK ist ein Paket, das zwei Entwicklungstools zur Bereitstellung einer Umgebung zum Entwickeln Ihrer Java-Programme und JRE zum Ausführen von Java-Programmen oder -Anwendungen enthält.
Weitere Informationen zum Thema finden Sie unter Unterschiede zwischen JVM, JRE und JDK .
8. Was sind die Unterschiede zwischen Java und C++?
Basis | C++ | Java |
|---|---|---|
Plattform | C++ ist plattformabhängig | Java ist plattformunabhängig |
Anwendung | C++ wird hauptsächlich für die Systemprogrammierung verwendet | Java wird hauptsächlich für die Anwendungsprogrammierung verwendet |
Hardware | C++ ist näher an der Hardware | Java ist nicht so interaktiv mit Hardware |
Globaler Geltungsbereich | C++ unterstützt globale und Namespace-Bereiche. | Java unterstützt keinen globalen Bereich. |
Nicht unterstützend | Folgende Funktionen werden in Java, jedoch nicht in C++ unterstützt:
| Folgende Funktionen werden in C++, jedoch nicht in Java unterstützt:
|
HOPPLA | C++ ist eine objektorientierte Sprache. Es handelt sich nicht um eine einzelne Wurzelhierarchie. | Java ist auch eine objektorientierte Sprache. Es handelt sich um eine Single-Root-Hierarchie, da alles von einer einzigen Klasse (java.lang.Object) abgeleitet wird. |
Vererbungsbaum | C++ erstellt immer einen neuen Vererbungsbaum. | Java verwendet einen einzelnen Vererbungsbaum, da Klassen in Java untergeordnete Objekte von Objektklassen in Java sind. |
9. Erklären Sie public static void main(String args[]) in Java.

Im Gegensatz zu jeder anderen Programmiersprache wie C, C++ usw. haben wir in Java die Hauptfunktion als öffentliches statisches void main (String args[]) deklariert. Die Bedeutungen der Begriffe sind nachstehend aufgeführt:
- öffentlich : Die Öffentlichkeit ist der Zugriffsmodifikator, der angibt, wer auf das Element oder die Methode zugreifen kann und wie hoch die Beschränkung ist. Es ist dafür verantwortlich, die Hauptfunktion weltweit verfügbar zu machen. Es wird öffentlich gemacht, damit JVM es von außerhalb der Klasse aufrufen kann, da es in der aktuellen Klasse nicht vorhanden ist.
- statisch : static ist ein Schlüsselwort, das verwendet wird, damit wir das Element verwenden können, ohne die Klasse zu initiieren, um so die unnötige Zuweisung von Speicher zu vermeiden.
- Leere : void ist ein Schlüsselwort und wird verwendet, um anzugeben, dass eine Methode nichts zurückgibt. Da die Hauptfunktion nichts zurückgibt, verwenden wir void.
- hauptsächlich : main gibt an, dass die deklarierte Funktion die Hauptfunktion ist. Es hilft der JVM zu erkennen, dass die deklarierte Funktion die Hauptfunktion ist.
- String-Argumente[] : Es speichert Java-Befehlszeilenargumente und ist ein Array vom Typ java.lang.String-Klasse.
10. Was ist ein Java-String-Pool?
Ein Java String Pool ist ein Ort im Heap-Speicher, an dem alle im Programm definierten Strings gespeichert werden. Ein separater Ort in einem Stapel ist dort, wo die Variable gespeichert wird, die die Zeichenfolge speichert. Immer wenn wir ein neues String-Objekt erstellen, prüft die JVM, ob das Objekt im String-Pool vorhanden ist. Wenn String im Pool verfügbar ist, wird dieselbe Objektreferenz mit der Variablen geteilt, andernfalls wird ein neues Objekt erstellt.

Beispiel:
String str1='Hello'; // 'Hello' will be stored in String Pool // str1 will be stored in stack memory>
11. Was passiert, wenn wir die Hauptdatei nicht als statisch deklarieren?
Wir können die Hauptmethode deklarieren, ohne Static zu verwenden und ohne Fehler zu erhalten. Die Hauptmethode wird jedoch nicht als Einstiegspunkt in die Anwendung oder das Programm betrachtet.
12. Was sind Pakete in Java?
Pakete in Java können als Gruppierung verwandter Klassentypen, Schnittstellen usw. definiert werden, die Zugriff auf Schutz und Namespace-Management bieten.
13. Warum werden Pakete verwendet?
Pakete werden in Java verwendet, um Namenskonflikte zu verhindern, den Zugriff zu kontrollieren und das Suchen/Lokalisieren und Verwenden von Klassen, Schnittstellen usw. zu erleichtern.
14. Was sind die Vorteile von Paketen in Java?
Die Definition von Paketen in Java bietet verschiedene Vorteile.
- Pakete vermeiden Namenskonflikte.
- Das Paket bietet eine einfachere Zugangskontrolle.
- Wir können auch versteckte Klassen haben, die außerhalb nicht sichtbar sind und vom Paket verwendet werden.
- Es ist einfacher, die zugehörigen Klassen zu finden.
15. Wie viele Pakettypen gibt es in Java?
In Java gibt es zwei Arten von Paketen
- Benutzerdefinierte Pakete
- Eingebaute Pakete
16. Erklären Sie verschiedene Datentypen in Java.
Es gibt zwei Arten von Datentypen in Java, wie unten erwähnt:
- Primitiver Datentyp
- Nicht-primitiver Datentyp oder Objektdatentyp
Primitiver Datentyp: Primitive Daten sind einzelne Werte ohne besondere Fähigkeiten. Es gibt 8 primitive Datentypen:
- Boolescher Wert : Speichert den Wert wahr oder falsch
- Byte : Speichert eine 8-Bit-Zweierkomplement-Ganzzahl mit Vorzeichen
- verkohlen : speichert ein einzelnes 16-Bit-Unicode-Zeichen
- kurz : Speichert eine 16-Bit-Zweierkomplement-Ganzzahl mit Vorzeichen
- int : Speichert eine 32-Bit-Zweierkomplement-Ganzzahl mit Vorzeichen
- lang : Speichert eine 64-Bit-Zweierkomplement-Ganzzahl
- schweben : Speichert einen 32-Bit-IEEE 754-Gleitkomma mit einfacher Genauigkeit
- doppelt : Speichert einen 64-Bit-IEEE 754-Gleitkomma mit doppelter Genauigkeit
Nicht-primitiver Datentyp: Referenzdatentypen enthalten eine Speicheradresse der Variablenwerte, da sie die Werte nicht direkt im Speicher speichern können. Im Folgenden werden die Arten von Nicht-Primitiven aufgeführt:
- Saiten
- Array
- Klasse
- Objekt
- Schnittstelle
17. Wann wird ein Byte-Datentyp verwendet?
Ein Byte ist eine 8-Bit-Zweikomplement-Ganzzahl mit Vorzeichen. Der von Bytes unterstützte Mindestwert ist -128 und 127 ist der Höchstwert. Es wird in Situationen verwendet, in denen wir Speicher sparen müssen und die Grenze der benötigten Zahlen zwischen -128 und 127 liegt.
18. Können wir Pointer in Java deklarieren?
Nein, Java bietet keine Unterstützung für Pointer. Da Java sicherer sein musste, da diese Funktion des Zeigers in Java nicht bereitgestellt wird.
19. Was ist der Standardwert des Byte-Datentyps in Java?
Der Standardwert des Byte-Datentyps in Java ist 0.
20. Was ist der Standardwert für Float- und Double-Datentypen in Java?
Der Standardwert von float ist 0,0f und von double ist 0,0d in Java.
21. Was ist die Wrapper-Klasse in Java?
Als Wrapper wird im Allgemeinen eine größere Entität bezeichnet, die eine kleinere Entität einkapselt. Hier in Java ist die Wrapper-Klasse eine Objektklasse, die die primitiven Datentypen kapselt.
Die primitiven Datentypen sind diejenigen, aus denen weitere Datentypen erstellt werden könnten. Beispielsweise können Ganzzahlen weiter zur Konstruktion von Long, Byte, Short usw. führen. Auf der anderen Seite kann die Zeichenfolge dies nicht, daher ist sie nicht primitiv.
Zurück zur Wrapper-Klasse: Java enthält 8 Wrapper-Klassen. Sie sind Boolean, Byte, Short, Integer, Character, Long, Float und Double. Darüber hinaus können in Java auch benutzerdefinierte Wrapper-Klassen erstellt werden, die dem Strukturkonzept in der Programmiersprache C ähneln. Wir erstellen unsere eigene Wrapper-Klasse mit den erforderlichen Datentypen.
22. Warum brauchen wir Wrapper-Klassen?
Die Wrapper-Klasse ist eine Objektklasse, die die primitiven Datentypen kapselt, und wir benötigen sie aus folgenden Gründen:
- Wrapper-Klassen sind endgültig und unveränderlich
- Stellt Methoden wie valueOf(), parseInt() usw. bereit.
- Es bietet die Funktion zum automatischen Ein- und Auspacken.
23. Unterscheiden Sie zwischen Instanz- und lokalen Variablen.
Instanzvariable | Lokale Variable |
|---|---|
Außerhalb der Methode deklariert und direkt von der Methode aufgerufen. | Wird innerhalb der Methode deklariert. |
Hat einen Standardwert. | Kein Standardwert |
Es kann im gesamten Unterricht verwendet werden. | Der Geltungsbereich ist auf die Methode beschränkt. |
24. Welche Standardwerte werden Variablen und Instanzen in Java zugewiesen?
Wenn wir in Java die Instanzvariablen nicht initialisiert haben, initialisiert der Compiler sie mit Standardwerten. Die Standardwerte für Instanzen und Variablen hängen von deren Datentypen ab. Einige gängige Arten von Standarddatentypen sind:
- Der Standardwert für numerische Typen (Byte, Short, Int, Long, Float und Double) ist 0.
- Der Standardwert für den booleschen Typ ist false.
- Der Standardwert für Objekttypen (Klassen, Schnittstellen und Arrays) ist null.
- Das Nullzeichen u0000 ist der Standardwert für den Typ char.
Beispiel:
while und do while-Schleife in JavaJava
// Java Program to demonstrate use of default values import java.io.*; class GFG { // static values static byte b; static int i; static long l; static short s; static boolean bool; static char c; static String str; static Object object; static float f; static double d; static int[] Arr; public static void main(String[] args) { // byte value System.out.println('byte value' + b); // short value System.out.println('short value' + s); // int value System.out.println('int value' + i); // long value System.out.println('long value' + l); System.out.println('boolean value' + bool); System.out.println('char value' + c); System.out.println('float value' + f); System.out.println('double value' + d); System.out.println('string value' + str); System.out.println('object value' + object); System.out.println('Array value' + Arr); } }> Ausgabe
byte value0 short value0 int value0 long value0 boolean valuefalse char value float value0.0 double value0.0 string valuenull object valuenull Array valuenull>
25. Was ist eine Klassenvariable?
In Java ist eine Klassenvariable (auch als statische Variable bekannt) eine Variable, die innerhalb einer Klasse, aber außerhalb einer Methode, eines Konstruktors oder eines Blocks deklariert wird. Klassenvariablen werden mit dem Schlüsselwort static deklariert und von allen Instanzen (Objekten) der Klasse sowie von der Klasse selbst gemeinsam genutzt. Unabhängig davon, wie viele Objekte von einer Klasse abgeleitet werden, würde jede Klassenvariable nur einmal existieren.
Beispiel:
Java // Java program to demonstrate use of Clas Variable class GFG { public static int ctr = 0; public GFG() { ctr++; } public static void main(String[] args) { GFG obj1 = new GFG(); GFG obj2 = new GFG(); GFG obj3 = new GFG(); System.out.println('Number of objects created are ' + GFG.ctr); } }> Ausgabe
Number of objects created are 3>
26. Welcher Standardwert wird in lokalen Variablen gespeichert?
Bei lokalen Variablen wird kein Standardwert gespeichert. Außerdem haben primitive Variablen und Objekte keine Standardwerte.
27. Erklären Sie den Unterschied zwischen einer Instanzvariablen und einer Klassenvariablen.
Instanzvariable: Eine Klassenvariable ohne statischen Modifikator, die als Instanzvariable bezeichnet wird, wird normalerweise von allen Instanzen der Klasse gemeinsam genutzt. Diese Variablen können bei mehreren Objekten unterschiedliche Werte haben. Der Inhalt einer Instanzvariablen ist von einer Objektinstanz völlig unabhängig, da er sich auf eine bestimmte Objektinstanz der Klasse bezieht.
Beispiel:
Java // Java Program to demonstrate Instance Variable import java.io.*; class GFG { private String name; public void setName(String name) { this.name = name; } public String getName() { return name; } public static void main(String[] args) { GFG obj = new GFG(); obj.setName('John'); System.out.println('Name ' + obj.getName()); } }> Ausgabe
Name John>
Klassenvariable: Klassenvariablenvariablen können überall auf Klassenebene mit dem Schlüsselwort static deklariert werden. Diese Variablen können bei Anwendung auf verschiedene Objekte nur einen Wert haben. Diese Variablen können von allen Klassenmitgliedern gemeinsam genutzt werden, da sie nicht mit einem bestimmten Objekt der Klasse verbunden sind.
Beispiel:
Java // Java Program to demonstrate Class Variable import java.io.*; class GFG { // class variable private static final double PI = 3.14159; private double radius; public GFG(double radius) { this.radius = radius; } public double getArea() { return PI * radius * radius; } public static void main(String[] args) { GFG obj = new GFG(5.0); System.out.println('Area of circle: ' + obj.getArea()); } }> Ausgabe
Area of circle: 78.53975>
28. Was ist eine statische Variable?
Das Schlüsselwort static wird verwendet, um dieselbe Variable oder Methode einer bestimmten Klasse gemeinsam zu nutzen. Statische Variablen sind Variablen, die nach der Deklaration eine einzelne Kopie der Variablen erstellen und von allen Objekten auf Klassenebene gemeinsam genutzt werden.
29. Was ist der Unterschied zwischen System.out, System.err und System.in?
System.out – Es handelt sich um einen PrintStream, der zum Schreiben von Zeichen verwendet wird oder der die Daten, die wir schreiben möchten, auf der Konsole/dem Terminal der Befehlszeilenschnittstelle ausgeben kann.
Beispiel:
Java // Java Program to implement // System.out import java.io.*; // Driver Class class GFG { // Main Function public static void main(String[] args) { // Use of System.out System.out.println(''); } }>
System.err – Es dient zur Anzeige von Fehlermeldungen.
Beispiel:
Java // Java program to demonstrate // System.err import java.io.*; // Driver Class class GFG { // Main function public static void main(String[] args) { // Printing error System.err.println( 'This is how we throw error with System.err'); } }> Ausgabe:
This is how we throw error with System.err>
Obwohl System.err viele Ähnlichkeiten aufweist, weisen beide auch große Unterschiede auf. Lassen Sie uns sie überprüfen.
| System.out | System.fehler |
|---|---|
Es wird standardmäßig aus dem System gedruckt. | Es wird mit dem Standardfehler gedruckt. |
Es wird hauptsächlich zur Anzeige von Ergebnissen auf der Konsole verwendet. | Meistens wird es zur Ausgabe von Fehlertexten verwendet. |
Die Ausgabe auf der Konsole erfolgt in der Standardfarbe (schwarz). | Es gibt auch eine Ausgabe auf der Konsole, aber die meisten IDEs geben ihm zur Unterscheidung eine rote Farbe. |
System.in – Es handelt sich um einen InputStream, der zum Lesen von Eingaben aus dem Terminalfenster verwendet wird. Wir können System.in nicht direkt verwenden, daher verwenden wir die Scanner-Klasse, um Eingaben mit system.in entgegenzunehmen.
Beispiel:
Java // Java Program to demonstrate // System.in import java.util.*; // Driver Class class Main { // Main Function public static void main(String[] args) { // Scanner class with System.in Scanner sc = new Scanner(System.in); // Taking input from the user int x = sc.nextInt(); int y = sc.nextInt(); // Printing the output System.out.printf('Addition: %d', x + y); } }> Ausgabe:
3 4 Addition: 7>
30. Was versteht man unter einem IO-Stream?

Java bringt mit seinem I/O-Paket verschiedene Streams mit, die dem Benutzer helfen, alle Eingabe-Ausgabe-Vorgänge durchzuführen. Diese Streams unterstützen alle Arten von Objekten, Datentypen, Zeichen, Dateien usw., um die E/A-Vorgänge vollständig auszuführen.
31. Was ist der Unterschied zwischen der Klassenhierarchie Reader/Writer und der Klassenhierarchie InputStream/OutputStream?
Der Hauptunterschied zwischen ihnen besteht darin, dass Bytestream-Daten von Eingabe-/Ausgabe-Stream-Klassen gelesen und geschrieben werden. Zeichen werden von den Klassen Reader und Writer verarbeitet. Im Gegensatz zu Reader/Writer-Klassen, die Zeichenarrays als Parameter akzeptieren, akzeptieren Eingabe-/Ausgabe-Stream-Klassenmethoden Byte-Arrays. Im Vergleich zu Eingabe-/Ausgabeströmen sind die Reader/Writer-Klassen effizienter, verarbeiten alle Unicode-Zeichen und sind nützlich für die Internalisierung. Verwenden Sie Reader/Writer-Klassen anstelle von Binärdaten wie Bildern, sofern Sie dies nicht tun.
Beispiel:
Java // Java Program to demonstrate Reading Writing Binary Data // with InputStream/OutputStream import java.io.*; class GFG { public static void main(String[] args) { try { // Writing binary data to a file using OutputStream byte[] data = {(byte) 0xe0, 0x4f, (byte) 0xd0, 0x20, (byte) 0xea}; OutputStream os = new FileOutputStream('data.bin'); os.write(data); os.close(); // Reading binary data from a file using InputStream InputStream is = new FileInputStream('data.bin'); byte[] newData = new byte[5]; is.read(newData); is.close(); // Printing the read data for (byte b : newData) { System.out.println(b); } } catch (IOException e) { e.printStackTrace(); } } }> Ausgabe
-32 79 -48 32 -22>
32. Was sind die Super-Most-Klassen für alle Streams?
Alle Stream-Klassen können in zwei Arten von Klassen unterteilt werden: ByteStream-Klassen und CharacterStream-Klassen. Die ByteStream-Klassen sind weiter in InputStream-Klassen und OutputStream-Klassen unterteilt. CharacterStream-Klassen sind außerdem in Reader-Klassen und Writer-Klassen unterteilt. Die SuperMost-Klassen für alle InputStream-Klassen sind java.io.InputStream und für alle Ausgabestream-Klassen java.io.OutPutStream. Ebenso ist für alle Reader-Klassen die oberste Klasse java.io.Reader und für alle Writer-Klassen java.io.Writer.
33. Was sind FileInputStream und FileOutputStream?
Zum Lesen und Schreiben von Daten bietet Java I/O-Streams an. Ein Stream stellt eine Eingabequelle oder ein Ausgabeziel dar, bei dem es sich um eine Datei, ein E/A-Gerät, ein anderes Programm usw. handeln kann. FileInputStream In Java wird es verwendet, um Daten aus einer Datei als Bytestrom zu lesen. Es wird hauptsächlich zum Lesen von Binärdaten wie Bildern, Audiodateien oder serialisierten Objekten verwendet.
Beispiel:
File file = new File('path_of_the_file'); FileInputStream inputStream = new FileInputStream(file);>In Java ist das FileOutputStream Die Funktion wird verwendet, um Daten Byte für Byte in eine bestimmte Datei oder einen bestimmten Dateideskriptor zu schreiben. Normalerweise werden rohe Bytedaten, wie zum Beispiel Bilder, mit FileOutputStream in eine Datei geschrieben.
Beispiel:
File file = new File('path_of_the_file'); FileOutputStream outputStream = new FileOutputStream(file);>34. Was ist der Zweck der Verwendung der Klassen BufferedInputStream und BufferedOutputStream?
Wenn wir mit den Dateien oder Streams arbeiten, müssen wir zur Steigerung der Eingabe-/Ausgabeleistung des Programms die Klassen BufferedInputStream und BufferedOutputStream verwenden. Diese beiden Klassen bieten die Möglichkeit der Pufferung, was bedeutet, dass die Daten in einem Puffer gespeichert werden, bevor sie in eine Datei geschrieben oder aus einem Stream gelesen werden. Es reduziert auch die Häufigkeit, mit der unser Betriebssystem mit dem Netzwerk oder der Festplatte interagieren muss. Pufferung ermöglicht es Programmen, große Datenmengen zu schreiben, anstatt sie in kleinen Blöcken zu schreiben. Dies reduziert auch den Overhead beim Zugriff auf das Netzwerk oder die Festplatte.
BufferedInputStream(InputStream inp); // used to create the bufferinput stream and save the arguments.>
BufferedOutputStream(OutputStream output); // used to create a new buffer with the default size.>
35. Was sind FilterStreams?
Stream-Filter oder Streams filtern gibt einen Stream zurück, der aus den Elementen dieses Streams besteht, die mit dem angegebenen Prädikat übereinstimmen. Während filter() ausgeführt wird, führt es keine eigentliche Filterung durch, sondern erstellt stattdessen einen neuen Stream, der beim Durchlaufen die Elemente der anfänglichen Streams enthält, die mit dem angegebenen Prädikat übereinstimmen.
Beispiel:
FileInputStream fis =new FileInoutStream('file_path'); FilterInputStream = new BufferedInputStream(fis);>
36. Was ist ein I/O-Filter?
Ein E/A-Filter, auch als Eingabe-Ausgabe-Filter definiert, ist ein Objekt, das aus einem Stream liest und Daten in Eingabe- und Ausgabequellen schreibt. Zur Verwendung dieses Filters wurde das Paket java.io verwendet.
37. Auf wie viele Arten können Sie Eingaben von der Konsole entgegennehmen?
Es gibt zwei Methoden, um Eingaben von der Konsole in Java zu übernehmen, die unten erwähnt werden:
- Verwenden des Befehlszeilenarguments
- Verwenden der Buffered Reader-Klasse
- Verwenden der Konsolenklasse
- Verwenden der Scannerklasse
Das Programm, das die Verwendung jeder Methode demonstriert, ist unten aufgeführt.
Beispiel:
Java // Java Program to implement input // using Command line argument import java.io.*; class GFG { public static void main(String[] args) { // check if length of args array is // greater than 0 if (args.length > 0) { System.out.println( 'The command line arguments are:'); // iterating the args array and printing // the command line arguments for (String val : args) System.out.println(val); } else System.out.println('No command line ' + 'arguments found.'); } } // Use below commands to run the code // javac GFG.java // java Main techcodeview.com> Java // Java Program to implement // Buffer Reader Class import java.io.*; class GFG { public static void main(String[] args) throws IOException { // Enter data using BufferReader BufferedReader read = new BufferedReader( new InputStreamReader(System.in)); // Reading data using readLine String x = read.readLine(); // Printing the read line System.out.println(x); } }> Java // Java program to implement input // Using Console Class public class GfG { public static void main(String[] args) { // Using Console to input data from user String x = System.console().readLine(); System.out.println('You entered string ' + x); } }> Java // Java program to demonstrate // working of Scanner in Java import java.util.Scanner; class GfG { public static void main(String args[]) { // Using Scanner for Getting Input from User Scanner in = new Scanner(System.in); String str = in.nextLine(); System.out.println('You entered string ' + str); } }> Ausgabe:
techcodeview.com>
38. Unterschied in der Verwendung von print, println und printf.
print, println und printf werden alle zum Drucken der Elemente verwendet, aber print druckt alle Elemente und der Cursor bleibt in derselben Zeile. println verschiebt den Cursor in die nächste Zeile. Und mit printf können wir auch Formatbezeichner verwenden.
39. Was sind Operatoren?
Operatoren sind spezielle Symboltypen, die zum Ausführen einiger Operationen an Variablen und Werten verwendet werden.
40. Wie viele Arten von Operatoren sind in Java verfügbar?
Im Folgenden werden alle Arten von Operatoren in Java aufgeführt:
- Rechenzeichen
- Unäre Operatoren
- Aufgabenverwalter
- Vergleichsoperatoren
- Logische Operatoren
- Ternärer Operator
- Bitweise Operatoren
- Schichtoperatoren
- Instanz des Operators
Postfix-Operatoren gelten gemäß der Rangfolge der Java-Operatoren als die höchste Priorität.
41. Erklären Sie den Unterschied zwischen den Operatoren>> und>>>.
Operatoren wie>> und>>> scheinen gleich zu sein, verhalten sich aber etwas anders. Der>>-Operator verschiebt die Vorzeichenbits und der>>>-Operator wird zum Herausschieben der mit Nullen gefüllten Bits verwendet.
Beispiel:
Java // Java Program to demostrate //>> und>>> Operatoren import java.io.*; // Treiberklasse GFG { public static void main(String[] args) { int a = -16, b = 1; // Verwendung von>> System.out.println(a >> b); a = -17; b = 1; // Verwendung von>>> System.out.println(a >>> b); } }> Ausgabe
-8 2147483639>
42. Welcher Java-Operator ist rechtsassoziativ?
Es gibt nur einen rechtsassoziativen Operator, nämlich den =-Operator.
43. Was ist ein Punktoperator?
Der Punktoperator in Java wird verwendet, um auf die Instanzvariablen und Methoden von Klassenobjekten zuzugreifen. Es wird auch verwendet, um vom Paket aus auf Klassen und Unterpakete zuzugreifen.
44. Was ist ein kovarianter Rückgabetyp?
Der kovariante Rückgabetyp gibt an, dass der Rückgabetyp in derselben Richtung wie die Unterklasse variieren kann. Es ist möglich, unterschiedliche Rückgabetypen für eine überschreibende Methode in der untergeordneten Klasse zu haben, aber der Rückgabetyp des untergeordneten Elements sollte ein Untertyp des Rückgabetyps der übergeordneten Klasse sein und dadurch wird die überschreibende Methode in Bezug auf den Rückgabetyp zu einer Variante.
Wir verwenden den kovarianten Rückgabetyp aus folgenden Gründen:
- Vermeidet verwirrende Typumwandlungen in der Klassenhierarchie und macht den Code lesbar, verwendbar und wartbar.
- Bietet die Möglichkeit, beim Überschreiben von Methoden spezifischere Rückgabetypen zu verwenden.
- Hilfe bei der Verhinderung von ClassCastExceptions zur Laufzeit bei Rückgaben.
45. Was ist das transiente Schlüsselwort?
Das Schlüsselwort transient wird zum Zeitpunkt der Serialisierung verwendet, wenn wir den Wert einer bestimmten Variablen nicht in einer Datei speichern möchten. Wenn JVM auf ein transientes Schlüsselwort stößt, ignoriert es den ursprünglichen Wert der Variablen und speichert den Standardwert dieses Variablendatentyps.
46. Was ist der Unterschied zwischen den Methoden sleep() und wait()?
Schlafen() | Warten() |
|---|---|
Die Methode sleep() gehört zur Thread-Klasse. | Die Wait()-Methode gehört zur Objektklasse. |
Der Ruhezustand gibt die Sperre, die der aktuelle Thread hält, nicht frei. | wait() gibt die Sperre frei, sodass andere Threads sie erwerben können. |
Diese Methode ist eine statische Methode. | Diese Methode ist keine statische Methode. |
| Sleep() löst keine InterruptedException aus. | InterruptedException wird angezeigt, wenn der Thread während des Wartens unterbrochen wird. |
Wird hauptsächlich verwendet, um einen Thread für eine bestimmte Zeitdauer zu verzögern. | Wird hauptsächlich verwendet, um einen Thread anzuhalten, bis er von einem anderen Thread benachrichtigt wird. |
Sleep() hat zwei überladene Methoden:
| Wait() hat drei überladene Methoden:
|
47. Was sind die Unterschiede zwischen String und StringBuffer?
Zeichenfolge | StringBuffer |
|---|---|
| Speicher einer Zeichenfolge. | Bietet Funktionalität zum Arbeiten mit den Zeichenfolgen. |
| Es ist unveränderlich. | Es ist veränderbar (kann geändert werden und andere Zeichenfolgenoperationen können an ihnen ausgeführt werden.) |
| Keine Thread-Operationen in einer Zeichenfolge. | Es ist Thread-sicher (zwei Threads können die Methoden von StringBuffer nicht gleichzeitig aufrufen) |
48. Was sind die Unterschiede zwischen StringBuffer und StringBuilder?
StringBuffer | StringBuilder |
|---|---|
| StringBuffer bietet Funktionalität zum Arbeiten mit den Strings. | StringBuilder ist eine Klasse, die zum Erstellen einer veränderlichen Zeichenfolge verwendet wird. |
| Es ist Thread-sicher (zwei Threads können die Methoden von StringBuffer nicht gleichzeitig aufrufen) | Es ist nicht threadsicher (zwei Threads können die Methoden gleichzeitig aufrufen) |
| Vergleichsweise langsam, da synchronisiert. | Da die Implementierung nicht synchronisiert ist, erfolgt sie schneller |
49. Welcher String- oder String-Puffer sollte bevorzugt werden, wenn in den Daten viele Aktualisierungen erforderlich sind?
Der String wird gegenüber StringBuffer bevorzugt, da StringBuilder schneller als StringBuffer ist, aber StringBuffer-Objekte werden gegenüber StringBuffer bevorzugt, da sie mehr Thread-Sicherheit bieten.
50. Warum heißt StringBuffer veränderbar?
Die StringBuffer-Klasse in Java wird verwendet, um eine veränderbare Zeichenfolge darzustellen. Sie bietet eine Alternative zur unveränderlichen String-Klasse, indem sie es Ihnen ermöglicht, den Inhalt eines Strings zu ändern, ohne ständig neue Objekte zu erstellen. Veränderbare (veränderbare) Strings werden mit Hilfe der StringBuffer-Klasse erstellt. Die StringBuffer-Klasse in Java ist mit der String-Klasse identisch, außer dass sie änderbar ist.
Beispiel:
Java // Java Program to demonstrate use of stringbuffer public class StringBufferExample { public static void main(String[] args) { StringBuffer s = new StringBuffer(); s.append('Geeks'); s.append('for'); s.append('Geeks'); String message = s.toString(); System.out.println(message); } }> Ausgabe
techcodeview.com>
51. Wie unterscheidet sich die Erstellung eines Strings mit new() von der eines Literals?
Ein String mit new() unterscheidet sich vom Literal, denn wenn wir einen String deklarieren, speichert er die Elemente im Stapelspeicher, während er bei der Deklaration mit new() einen dynamischen Speicher im Heap-Speicher zuweist. Das Objekt wird im Heap-Speicher erstellt, auch wenn dasselbe Inhaltsobjekt vorhanden ist.
Syntax:
String x = new String('ABC');>

52. Was ist ein Array in Java?
Ein Array in Java ist eine Datenstruktur, die zum Speichern einer Folge fester Größe von Elementen desselben Typs verwendet wird. Auf Elemente eines Arrays kann über ihren Index zugegriffen werden, der bei 0 beginnt und bis zu einer Länge von minus 1 reicht. Die Array-Deklaration in Java erfolgt mit Hilfe von eckigen Klammern und die Größe wird bei der Deklaration ebenfalls angegeben.
Syntax:
int[] Arr = new int[5];>
53. Auf welchen Speicherarrays werden in Java erstellt?
Arrays in Java werden im Heap-Speicher erstellt. Wenn ein Array mithilfe eines neuen Schlüsselworts erstellt wird, wird im Heap Speicher zugewiesen, um die Elemente des Arrays zu speichern. In Java wird der Heap-Speicher von der Java Virtual Machine (JVM) verwaltet und auch von allen Threads des Java-Programms gemeinsam genutzt. Der Speicher, der vom Programm nicht mehr verwendet wird, wird von der JVM mithilfe eines Garbage Collectors zurückgewonnen. Arrays in Java werden dynamisch erstellt, was bedeutet, dass die Größe des Arrays während der Laufzeit des Programms bestimmt wird. Die Größe des Arrays wird bei der Array-Deklaration angegeben und kann nach der Erstellung des Arrays nicht mehr geändert werden.
54. Welche Arten von Arrays gibt es?
Es gibt zwei Arten von Arrays, nämlich primitive Arrays und Referenzarrays.
- Eindimensionale Arrays: Arrays, die nur eine Dimension haben, d. h. ein Array aus ganzen Zahlen oder ein Array aus Strings, werden als eindimensionale Arrays bezeichnet.

Syntax:
data_type[] Array_Name = new data_type[ArraySize];>
- Mehrdimensionale Arrays: Arrays mit zwei oder mehr Dimensionen, z. B. zweidimensionale oder dreidimensionale Arrays.
55. Warum beginnt der Java-Array-Index mit 0?
Der Index eines Arrays gibt den Abstand vom Anfang des Arrays an. Das erste Element hat also den Abstand 0, daher ist der Startindex 0.
Syntax:
[Base Address + (index * no_of_bytes)]>
56. Was ist der Unterschied zwischen int array[] und int[] array?
Sowohl int array[] als auch int[] array werden verwendet, um ein Array von Ganzzahlen in Java zu deklarieren. Der einzige Unterschied zwischen ihnen besteht in ihrer Syntax, es besteht kein Funktionsunterschied zwischen ihnen.
int arr[] is a C-Style syntax to declare an Array.>
int[] arr is a Java-Style syntax to declare an Array.>
Im Allgemeinen wird jedoch empfohlen, zum Deklarieren eines Arrays eine Syntax im Java-Stil zu verwenden. Da es leicht zu lesen und zu verstehen ist, ist es auch konsistenter mit anderen Java-Sprachkonstrukten.
57. Wie kopiere ich ein Array in Java?
In Java gibt es mehrere Möglichkeiten, ein Array entsprechend den Anforderungen zu kopieren.
- clone()-Methode in Java: Diese Methode in Java wird verwendet, um eine flache Kopie des angegebenen Arrays zu erstellen, was bedeutet, dass das neue Array denselben Speicher wie das ursprüngliche Array nutzt.
int[] Arr = { 1, 2, 3, 5, 0}; int[] tempArr = Arr.clone();>- arraycopy()-Methode: Um eine tiefe Kopie des Arrays zu erstellen, können wir diese Methode verwenden, die ein neues Array mit denselben Werten wie das ursprüngliche Array erstellt.
int[] Arr = {1, 2, 7, 9, 8}; int[] tempArr = new int[Arr.length]; System.arraycopy(Arr, 0, tempArr, 0, Arr.length);>- copyOf()-Methode: Mit dieser Methode wird ein neues Array mit einer bestimmten Länge erstellt und der Inhalt des ursprünglichen Arrays in das neue Array kopiert.
int[] Arr = {1, 2, 4, 8}; int[] tempArr = Arrays.copyOf(Arr, Arr.length);>- copyOfRange()-Methode: Diese Methode ist der Methode copyOf() in Java sehr ähnlich, aber mit dieser Methode können wir auch den Bereich der Elemente angeben, die aus dem ursprünglichen Array kopiert werden sollen.
int[] Arr = {1, 2, 4, 8}; int[] temArr = Arrays.copyOfRange(Arr, 0, Arr.length);>58. Was verstehen Sie unter dem gezackten Array?
Ein gezacktes Array in Java ist lediglich ein zweidimensionales Array, bei dem jede Zeile des Arrays eine unterschiedliche Länge haben kann. Da alle Zeilen in einem 2-D-Array die gleiche Länge haben, ermöglicht ein gezacktes Array mehr Flexibilität bei der Größe jeder Zeile. Diese Funktion ist sehr nützlich, wenn die Daten unterschiedliche Längen haben oder die Speichernutzung optimiert werden muss.
Syntax:
int[][] Arr = new int[][] { {1, 2, 8}, {7, 5}, {6, 7, 2, 6} };>59. Ist es möglich, ein Array flüchtig zu machen?
In Java ist es nicht möglich, eine flüchtige Variable zu erstellen. In Java können flüchtige Schlüsselwörter nur auf einzelne Variablen angewendet werden, nicht jedoch auf Arrays oder Sammlungen. Der Wert der Variablen wird immer aus dem Hauptspeicher gelesen und in diesen geschrieben, wenn er als flüchtig definiert ist, anstatt im lokalen Speicher eines Threads zwischengespeichert zu werden. Dadurch lässt sich einfacher sicherstellen, dass alle Threads, die auf die Variable zugreifen, die daran vorgenommenen Änderungen sehen können.
60. Was sind die Vor- und Nachteile eines Arrays?

Die Vorteile von Arrays sind:
- Arrays ermöglichen den direkten und effektiven Zugriff auf jedes Element in der Sammlung. Auf die Elemente eines Arrays kann mit einer O(1)-Operation zugegriffen werden, was bedeutet, dass die hierfür benötigte Zeit konstant und unabhängig von der Größe des Arrays ist.
- Mithilfe von Arrays können Daten effektiv im Speicher gespeichert werden. Die Größe eines Arrays ist zur Kompilierungszeit bekannt, da seine Elemente in zusammenhängenden Speicherbereichen gespeichert werden.
- Da die Daten in zusammenhängenden Speicherbereichen gespeichert werden, ermöglichen Arrays einen schnellen Datenabruf.
- Arrays sind einfach zu implementieren und zu verstehen, was sie zu einer idealen Wahl für Anfänger beim Erlernen der Computerprogrammierung macht.
Nachteile von Arrays sind:
- Arrays werden mit einer vorgegebenen Größe erstellt, die zu diesem Zeitpunkt ausgewählt wird. Das bedeutet, dass, wenn die Größe des Arrays erweitert werden muss, ein neues Array erstellt werden muss und die Daten vom alten Array in das neue Array kopiert werden müssen, was viel Zeit und Speicher beanspruchen kann.
- Wenn das Array nicht vollständig belegt ist, kann im Speicherbereich eines Arrays ungenutzter Speicherplatz vorhanden sein. Wenn Ihr Gedächtnis schlecht ist, kann dies ein Problem sein.
- Im Vergleich zu anderen Datenstrukturen wie verknüpften Listen und Bäumen können Arrays aufgrund ihrer festen Größe und der eingeschränkten Unterstützung komplexer Datentypen starr sein.
- Da die Elemente eines Arrays alle vom gleichen Datentyp sein müssen, werden komplexe Datentypen wie Objekte und Strukturen nicht unterstützt.
61. Was ist ein objektorientiertes Paradigma?
Paradigma bedeutet wörtlich ein Muster oder eine Methode. Programmierparadigmen sind die Methoden zur Lösung eines Programms, das aus vier Typen besteht, nämlich imperativ, logisch, funktional und objektorientiert. Wenn Objekte als Basiseinheiten verwendet werden, auf die die Methoden angewendet werden, Kapselungs- oder Vererbungsfunktionen ausgeführt werden, spricht man von einem objektorientierten Paradigma.
62. Was sind die Hauptkonzepte von OOPs in Java?
Die Hauptkonzepte von OOPs in Java werden im Folgenden aufgeführt:
- Nachlass
- Polymorphismus
- Abstraktion
- Verkapselung
63. Was ist der Unterschied zwischen einer objektorientierten Programmiersprache und einer objektbasierten Programmiersprache?
Objektorientierte Programmiersprache | Objektbasierte Programmiersprache |
|---|---|
| Die objektorientierte Programmiersprache deckt größere Konzepte wie Vererbung, Polymorphismus, Abstraktion usw. ab. | Der Umfang der objektbasierten Programmierung beschränkt sich auf die Verwendung von Objekten und deren Kapselung. |
| Es unterstützt alle integrierten Objekte | Es werden nicht alle integrierten Objekte unterstützt |
| Beispiele: Java, C# usw. | Beispiele: Java-Script, visuelle Grundlagen usw. |
64. Wie unterscheidet sich der „new“-Operator vom „newInstance()“-Operator in Java?
Der neue Operator wird zum Erstellen von Objekten verwendet. Wenn wir jedoch entscheiden möchten, welche Art von Objekt zur Laufzeit erstellt werden soll, können wir den neuen Operator nicht verwenden. In diesem Fall müssen wir das verwenden newInstance()-Methode .
65. Was sind Klassen in Java?
In Java sind Klassen eine Sammlung von Objekten, die ähnliche Eigenschaften und Attribute aufweisen. Klassen stellen den Bauplan oder die Vorlage dar, aus der Objekte erstellt werden. Klassen sind keine Entitäten der realen Welt, sondern helfen uns, Objekte zu erstellen, die Entitäten der realen Welt sind.
66. Was ist der Unterschied zwischen statischen (Klassen-)Methoden und Instanzmethoden?
Statische (Klassen-)Methode | Instanzmethode |
|---|---|
Eine statische Methode ist einer Klasse und nicht einem Objekt zugeordnet. | Die Instanzmethode ist einem Objekt und nicht einer Klasse zugeordnet. |
Statische Methoden können nur über den Klassennamen aufgerufen werden, ohne dass eine Instanz einer Klasse erstellt wird. | Die Instanzmethode kann mithilfe der Objektreferenz für eine bestimmte Instanz einer Klasse aufgerufen werden. |
Statische Methoden haben keinen Zugriff auf Das Stichwort . | Instanzmethoden haben Zugriff auf Das Stichwort . |
Diese Methode kann nur auf statische Mitglieder der Klasse zugreifen | Diese Methode kann sowohl auf statische als auch auf nicht statische Methoden der Klasse zugreifen. |
67. Was ist dieses Schlüsselwort in Java?

„this“ ist ein Schlüsselwort, mit dem auf eine Variable verwiesen wird, die auf das aktuelle Objekt verweist.
68. Was sind kurze Zugriffsspezifizierer und Arten von Zugriffsspezifizierern?

Zugriffsspezifizierer in Java helfen dabei, den Umfang einer Klasse, eines Konstruktors, einer Variablen, einer Methode oder eines Datenelements einzuschränken. Es gibt vier Arten von Zugriffsspezifizierern in Java, die unten erwähnt werden:
- Öffentlich
- Privat
- Geschützt
- Standard
69. Was ist der Anfangswert einer Objektreferenz, die als Instanzvariable definiert ist?
Der Anfangswert einer Objektreferenz, die als Instanzvariable definiert ist, ist ein NULL-Wert.
70. Was ist ein Objekt?
Das Objekt ist eine reale Entität, mit der bestimmte Eigenschaften und Methoden verknüpft sind. Das Objekt wird auch als Instanz einer Klasse definiert. Ein Objekt kann mit einem neuen Schlüsselwort deklariert werden.
71. Welche verschiedenen Möglichkeiten gibt es, Objekte in Java zu erstellen?
Im Folgenden werden Methoden zum Erstellen von Objekten in Java aufgeführt:
- Neues Schlüsselwort verwenden
- Neue Instanz verwenden
- Verwendung der clone()-Methode
- Deserialisierung verwenden
- Verwendung der newInstance()-Methode der Constructor-Klasse
Weitere Informationen zu Methoden zum Erstellen von Objekten in Java finden Sie unter Dieser Artikel .
72. Welche Vor- und Nachteile hat das Klonen von Objekten?
Das Klonen von Objekten hat viele Vor- und Nachteile, wie im Folgenden aufgeführt:
Vorteile:
- In Java kann der Zuweisungsoperator „=“ nicht zum Klonen verwendet werden, da er lediglich eine Kopie der Referenzvariablen erstellt. Um solche Diskrepanzen zu überwinden, kann die clone()-Methode der Object-Klasse anstelle des Zuweisungsoperators verwendet werden.
- Die clone()-Methode ist eine geschützte Methode der Klasse Object, was bedeutet, dass nur die Employee-Klasse Employee-Objekte klonen kann. Dies bedeutet, dass keine andere Klasse als Employee Mitarbeiterobjekte klonen kann, da sie die Attribute der Employee-Klasse nicht kennt.
- Die Codegröße nimmt mit abnehmender Wiederholung ab.
- Ermöglicht die Replikation (ähnlich einem Prototypmuster). Die manuelle Initialisierung jedes Felds erstellt großen Code, wenn das Objekt komplex ist. Durch Klonen geht es schneller.
Nachteile:
- Da die Methode Object.clone() geschützt ist, müssen wir unseren eigenen clone() bereitstellen und von dort aus indirekt Object.clone() aufrufen.
- Wenn wir keine Methoden haben, müssen wir eine klonbare Schnittstelle bereitstellen, da wir JVM-Informationen bereitstellen müssen, damit wir ein clone() für unser Objekt ausführen können. Wenn nicht, können wir nicht klonen Geben Sie einfach super.clone() von der Klonmethode zurück, was problematisch sein kann.
73. Welche Vorteile hat die Übergabe an eine Methode statt an das aktuelle Klassenobjekt selbst?
Die Übergabe an eine Methode anstelle des aktuellen Klassenobjekts selbst bietet einige Vorteile:
- Dies ist die letzte Variable, weshalb sie keinem neuen Wert zugewiesen werden kann, während das aktuelle Klassenobjekt möglicherweise nicht endgültig ist und geändert werden kann.
- Dies kann im synchronisierten Block verwendet werden.
74. Was ist der Konstruktor?
Der Konstruktor ist eine spezielle Methode, die zum Initialisieren von Objekten verwendet wird. Der Konstruktor wird aufgerufen, wenn ein Objekt erstellt wird. Der Name des Konstruktors ist derselbe wie der der Klasse.
Beispiel:
// Class Created class XYZ{ private int val; // Constructor XYZ(){ val=0; } };>75. Was passiert, wenn Sie in einer Klasse keinen Konstruktor bereitstellen?
Wenn Sie in einer Klasse in Java keinen Konstruktor bereitstellen, generiert der Compiler automatisch einen Standardkonstruktor ohne Argumente und ohne Operation, der ein Standardkonstruktor ist.
76. Wie viele Arten von Konstruktoren werden in Java verwendet?
Es gibt zwei Arten von Konstruktoren in Java, wie unten erwähnt:
- Standardkonstruktor
- Parametrisierter Konstruktor
Standardkonstruktor: Dies ist der Typ, der keinen Parameterwert akzeptiert. Es wird verwendet, um Anfangswerte für Objektattribute festzulegen.
class_Name(); // Default constructor called>
Parametrisierter Konstruktor: Dies ist der Konstruktortyp, der Parameter als Argumente akzeptiert. Diese werden verwendet, um Instanzvariablen bei der Initialisierung von Objekten Werte zuzuweisen.
class_Name(parameter1, parameter2......); // All the values passed as parameter will be // allocated accordingly>
77. Was ist der Zweck eines Standardkonstruktors?
Konstruktoren helfen dabei, Instanzen einer Klasse zu erstellen, oder man kann sagen, dass sie Objekte einer Klasse erstellen. Der Konstruktor wird während der Initialisierung von Objekten aufgerufen. Ein Standardkonstruktor ist ein Konstruktortyp, der keine Parameter akzeptiert. Daher gelten alle Werte, die den Eigenschaften der Objekte zugewiesen werden, als Standardwerte.
78. Was verstehen Sie unter einem Kopierkonstruktor in Java?
Der Kopierkonstruktor ist der Konstruktortyp, bei dem wir ein anderes Objekt als Parameter übergeben, da die Eigenschaften beider Objekte gleich zu sein scheinen und es daher so aussieht, als würden Konstruktoren eine Kopie eines Objekts erstellen.
79. Wo und wie können Sie einen privaten Konstruktor verwenden?
Ein privater Konstruktor wird verwendet, wenn Sie nicht möchten, dass eine andere Klasse das Objekt instanziiert, um eine Unterklassenbildung zu vermeiden. Der Konstruktor „use private“ kann im Beispiel als implementiert angesehen werden.
Beispiel:
Java // Java program to demonstrate implementation of Singleton // pattern using private constructors. import java.io.*; class GFG { static GFG instance = null; public int x = 10; // private constructor can't be accessed outside the // class private GFG() {} // Factory method to provide the users with instances static public GFG getInstance() { if (instance == null) instance = new GFG(); return instance; } } // Driver Class class Main { public static void main(String args[]) { GFG a = GFG.getInstance(); GFG b = GFG.getInstance(); a.x = a.x + 10; System.out.println('Value of a.x = ' + a.x); System.out.println('Value of b.x = ' + b.x); } }> Ausgabe
Value of a.x = 20 Value of b.x = 20>
80. Was sind die Unterschiede zwischen den Konstruktoren und Methoden?
Java-Konstruktoren werden zum Initialisieren von Objekten verwendet. Während der Erstellung werden Konstruktoren aufgerufen, um Attribute für Objekte festzulegen. Abgesehen davon sind einige grundlegende Unterschiede zwischen ihnen:
- Konstruktoren werden nur aufgerufen, wenn das Objekt erstellt wird, andere Methoden können jedoch während der Lebensdauer eines Objekts mehrmals aufgerufen werden.
- Konstruktoren geben nichts zurück, während andere Methoden alles zurückgeben können.
- Konstruktoren werden verwendet, um den Anfangszustand einzurichten, Methoden werden jedoch verwendet, um bestimmte Aktionen auszuführen.
81. Was ist eine Schnittstelle?
Eine Schnittstelle in Java ist eine Sammlung statischer Endvariablen und abstrakter Methoden, die den Vertrag oder die Vereinbarung für eine Reihe verknüpfter Klassen definieren. Jede Klasse, die eine Schnittstelle implementiert, muss einen bestimmten Satz von Methoden implementieren. Es gibt das Verhalten an, das eine Klasse zeigen muss, nicht jedoch die Einzelheiten, wie sie implementiert werden soll.
Syntax:
interface { // constant fields // methds that are abstract by default }>Beispiel:
Java // Java Program to demonstrate Interface import java.io.*; interface Shape { double getArea(); double getPerimeter(); } class Circle implements Shape { private double radius; public Circle(double radius) { this.radius = radius; } public double getArea() { return Math.PI * radius * radius; } public double getPerimeter() { return 2 * Math.PI * radius; } } class GFG { public static void main(String[] args) { Circle circle = new Circle(5.0); System.out.println('Area of circle is ' + circle.getArea()); System.out.println('Perimeter of circle is' + circle.getPerimeter()); } }> Ausgabe
Area of circle is 78.53981633974483 Perimeter of circle is31.41592653589793>
82. Nennen Sie einige Funktionen der Schnittstelle.
Eine Schnittstelle wird in der Programmiersprache Java als abstrakter Typ definiert, der zur Angabe des Verhaltens einer Klasse verwendet wird. Eine Schnittstelle in Java ist ein Entwurf eines Verhaltens. Eine Java-Schnittstelle enthält statische Konstanten und abstrakte Methoden.
Nachfolgend sind die Funktionen der Schnittstelle aufgeführt:
- Die Schnittstelle kann dabei helfen, eine vollständige Abstraktion zu erreichen.
- Ermöglicht uns die Verwendung mehrerer Vererbungen in Java.
- Jede Klasse kann mehrere Schnittstellen implementieren, auch wenn eine Klasse nur eine Klasse erweitern kann.
- Es wird auch verwendet, um eine lose Kopplung zu erreichen.
83. Was ist eine Markerschnittstelle?
Eine Schnittstelle wird als leere Schnittstelle (kein Feld oder Methoden) erkannt und als Markierungsschnittstelle bezeichnet. Beispiele für Markierungsschnittstellen sind serialisierbare, klonbare und Remote-Schnittstellen.
84. Was sind die Unterschiede zwischen abstrakter Klasse und Schnittstelle?

Abstrakte Klasse | Schnittstellenklasse |
|---|---|
In einer abstrakten Klasse können sowohl abstrakte als auch nicht abstrakte Methoden vorkommen. | Die Schnittstelle enthält nur abstrakte Methoden. |
Die abstrakte Klasse unterstützt Final-Methoden. | Die Schnittstellenklasse unterstützt keine Final-Methoden. |
Mehrfachvererbung wird von der Abstract-Klasse nicht unterstützt. | Mehrfachvererbungen werden von der Interface-Klasse unterstützt. |
Das Schlüsselwort „Abstract“ wird zum Deklarieren der Abstract-Klasse verwendet. | Das Schnittstellenschlüsselwort wird zum Deklarieren der Schnittstellenklasse verwendet. |
| verlängern Das Schlüsselwort wird verwendet, um eine abstrakte Klasse zu erweitern. | implementiert Das Schlüsselwort wird zur Implementierung der Schnittstelle verwendet. |
Die abstrakte Klasse hat Mitglieder wie „geschützt“, „privat“ usw. | Alle Klassenmitglieder sind standardmäßig öffentlich. |
85. Was meinen Sie mit Datenkapselung?

Datenkapselung ist das Konzept von OOPS-Eigenschaften und Merkmalen der Klassen, die über die Schnittstelle miteinander verbunden sind. Im Grunde bündelt es Daten und Methoden, die mit diesen Daten arbeiten, in einer einzigen Einheit. Die Kapselung wird erreicht, indem die Instanzvariablen einer Klasse als privat deklariert werden, was bedeutet, dass auf sie nur innerhalb der Klasse zugegriffen werden kann.
86. Was sind die Vorteile der Kapselung in Java?
Die Vorteile der Kapselung in Java werden im Folgenden aufgeführt:
- Ausblenden von Daten: Dies ist eine Möglichkeit, den Zugriff unserer Datenmitglieder einzuschränken, indem die Implementierungsdetails ausgeblendet werden. Die Kapselung bietet auch eine Möglichkeit, Daten zu verbergen. Der Benutzer hat keine Ahnung von der inneren Implementierung der Klasse.
- Erhöhte Flexibilität: Wir können die Variablen der Klasse je nach unseren Anforderungen schreibgeschützt oder schreibgeschützt machen.
- Wiederverwendbarkeit: Die Kapselung verbessert auch die Wiederverwendbarkeit und lässt sich leicht an neue Anforderungen anpassen.
- Das Testen von Code ist einfach: Code lässt sich für Unit-Tests einfach testen.
87. Was ist der Hauptvorteil der Kapselung?
Der Hauptvorteil der Kapselung in Java ist ihre Fähigkeit, den internen Zustand eines Objekts vor externen Änderungen oder Zugriffen zu schützen. Dies ist eine Möglichkeit, die Implementierungsdetails einer Klasse vor dem Zugriff von außen zu verbergen und nur eine öffentliche Schnittstelle offenzulegen, die zur Interaktion mit der Klasse verwendet werden kann. Der Hauptvorteil besteht darin, den Zustand und das Verhalten eines Objekts zu kontrollieren und zu verwalten und es gleichzeitig vor Änderungen und unbefugtem Zugriff zu schützen.
Beispiel:
Java // Java Program to demonstrate use of Encapsulation import java.io.*; class Person { private String Name; private int age; public String getName() { return Name; } public void setName(String Name) { this.Name = Name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } // Driver class class GFG { // main function public static void main(String[] args) { Person p = new Person(); p.setName('Rohan'); p.setAge(29); System.out.println('Name is ' + p.getName()); System.out.println('Age is ' + p.getAge()); } }> Ausgabe
Name is Rohan Age is 29>
88. Was meinst du mit Aggregation?

Aggregation ist ein Begriff, der sich auf die Beziehung zwischen zwei Klassen bezieht, die am besten als Hat-A-Beziehung beschrieben werden kann. Diese Art ist die spezialisierteste Version der Assoziation. Es handelt sich um eine unidirektionale Assoziation, das heißt, es handelt sich um eine einseitige Beziehung. Es enthält den Verweis auf eine andere Klasse und soll Eigentümer dieser Klasse sein.
89. Was ist die „IS-A“-Beziehung in OOPs Java?
„IS-A“ ist eine Art Beziehung in OOPs Java, bei der eine Klasse eine andere Klasse erbt.
90. Vererbung definieren.
Wenn ein Objekt, das zu einer Unterklasse gehört, alle Eigenschaften und Verhaltensweisen eines übergeordneten Objekts der Oberklasse übernimmt, spricht man von Vererbung. Eine Klasse innerhalb einer Klasse wird als Unterklasse und diese als Oberklasse bezeichnet. Die Unterklasse oder die untergeordnete Klasse gilt als spezifisch, während die Oberklasse oder die übergeordnete Klasse generisch ist. Vererbung sorgt für Wiederverwendbarkeit des Codes.
91. Welche verschiedenen Arten der Vererbung gibt es in Java?
Vererbung ist die Methode, mit der die Child-Klasse die Funktionen der Super- oder Parent-Klasse erben kann. In Java gibt es vier Arten von Vererbung:
- Einzelvererbung: Wenn eine untergeordnete Klasse oder Unterklasse nur eine Oberklasse erweitert, spricht man von einer Einzelvererbung. Die Eigenschaften einer einzelnen übergeordneten Klasse werden an die untergeordnete Klasse weitergegeben.
- Mehrstufige Vererbung: Wenn eine untergeordnete Klasse oder Unterklasse eine andere Unterklasse erweitert, wird eine Vererbungshierarchie erstellt, die als mehrstufige Vererbung bezeichnet wird. Mit anderen Worten: Eine Unterklasse wird zur übergeordneten Klasse einer anderen.
- Hierarchische Vererbung: Wenn mehrere Unterklassen von derselben übergeordneten Klasse abgeleitet sind, spricht man von hierarchischer Vererbung. Mit anderen Worten: Eine Klasse mit einem einzigen übergeordneten Element hat viele Unterklassen.
- Mehrfachvererbung: Wenn eine untergeordnete Klasse von mehreren übergeordneten Klassen erbt, spricht man von Mehrfachvererbung. In Java wird nur die Mehrfachvererbung von Schnittstellen unterstützt, nicht von Klassen.
92. Was ist Mehrfachvererbung? Wird es von Java unterstützt?
Eine als Mehrfachvererbung bekannte Komponente des objektorientierten Konzepts ermöglicht es einer Klasse, Eigenschaften von vielen übergeordneten Klassen zu erben. Wenn Methoden mit derselben Signatur sowohl in Oberklassen als auch in Unterklassen vorhanden sind, entsteht ein Problem. Der Aufrufer der Methode kann dem Compiler nicht angeben, welche Klassenmethode aufgerufen werden soll oder welcher Klassenmethode Vorrang gegeben werden soll.
Notiz: Java unterstützt keine Mehrfachvererbung
Beispiel:
Java // Java Program to show multiple Inheritance import java.io.*; interface Animal { void eat(); } interface Mammal { void drink(); } class Dog implements Animal, Mammal { public void eat() { System.out.println('Eating'); } public void drink() { System.out.println('Drinking'); } void bark() { System.out.println('Barking'); } } class GFG { public static void main(String[] args) { Dog d = new Dog(); d.eat(); d.drink(); d.bark(); } }> Ausgabe
Eating Drinking Barking>
93. Wie unterscheidet sich die Vererbung in C++ von Java?
Vererbung in C++ | Vererbung in Java |
|---|---|
| Mit C++ kann der Benutzer mehrere Klassen erben. | Java unterstützt keine Mehrfachvererbung. |
| Wenn eine Klasse in C++ erstellt wird, erbt sie nicht von der Objektklasse, sondern existiert eigenständig. | Von Java wird immer gesagt, dass es eine einzige Vererbung gibt, da alle Klassen auf die eine oder andere Weise von der Objektklasse erben. |
94. Gibt es Einschränkungen bei der Verwendung von Vererbung?
Ja, es gibt eine Einschränkung bei der Verwendung der Vererbung in Java, da man aufgrund der Vererbung alles von der Superklasse und der Schnittstelle erben kann, wodurch die Unterklasse zu geclustert und manchmal fehleranfällig ist, wenn in bestimmten Situationen dynamisches Überschreiben oder dynamisches Überladen durchgeführt wird.
95. Obwohl Vererbung ein beliebtes OOP-Konzept ist, ist sie weniger vorteilhaft als Komposition. Erklären.
Vererbung ist ein beliebtes Konzept der objektorientierten Programmierung (OOP), bei dem eine Klasse die Eigenschaften und Methoden von jeder anderen Klasse erben kann, die als übergeordnete oder übergeordnete Klasse bezeichnet wird. Andererseits kann eine Klasse in Composition eine Instanz einer anderen Klasse als Mitgliedsvariable enthalten, die oft als Teil oder Komponente bezeichnet wird. Nachfolgend sind einige Gründe aufgeführt, warum die Zusammensetzung vorteilhafter ist als die Vererbung:
- Enge Kopplung: Wenn an der Oberklasse Änderungen vorgenommen werden, können sich diese Änderungen auf das Verhalten aller ihrer untergeordneten Klassen oder Unterklassen auswirken. Dieses Problem macht den Code weniger flexibel und verursacht auch Probleme bei der Wartung. Dieses Problem führt auch zur engen Kopplung zwischen den Klassen.
- Problem der fragilen Basisklasse: Wenn die Änderungen an der Basisklasse die Funktionalität ihrer abgeleiteten Klassen beeinträchtigen können. Dieses Problem kann es schwierig machen, neue Funktionen hinzuzufügen oder vorhandene zu ändern. Dieses Problem ist als Fragile-Base-Klassenproblem bekannt.
- Begrenzte Wiederverwendung: Die Vererbung in Java kann zu einer eingeschränkten Code-Wiederverwendung und auch zu einer Code-Duplizierung führen. Da eine Unterklasse alle Eigenschaften und Methoden ihrer Oberklasse erbt, kann es manchmal passieren, dass unnötiger Code entsteht, der nicht benötigt wird. Dies führt zu einer weniger wartbaren Codebasis.
96. Was ist ein Verein?
Die Assoziation ist eine Beziehung zwischen zwei separaten Klassen, die durch ihre Objekte hergestellt wird. Es stellt die Beziehung zwischen Has und A dar.
97. Was meinst du mit Aggregation?
Komposition ist eine eingeschränkte Form der Aggregation, bei der zwei Einheiten stark voneinander abhängig sind. Es repräsentiert Teil von die Beziehung.
98. Wie setzt sich Java zusammen?
Zusammensetzung impliziert eine Beziehung, in der das Kind ist kann nicht unabhängig existieren des Elternteils. Zum Beispiel das menschliche Herz, das Herz existiert nicht getrennt vom Menschen.
99. Nennen Sie den Unterschied zwischen Komposition und Aggregation.
Anhäufung | Komposition |
|---|---|
Es definiert eine Beziehung zwischen den Objekten | Es repräsentiert den Teil einer Beziehung |
Objekte sind unabhängig voneinander. | Objekte sind voneinander abhängig. |
Stellen Sie es dar, indem Sie die gefüllte Raute verwenden. | Stellen Sie es dar, indem Sie die leere Raute verwenden. |
Untergeordnete Objekte haben keine Lebensdauer. | Untergeordnete Objekte haben eine Lebensdauer. |
100. Kann der Konstruktor vererbt werden?
Nein, wir können keinen Konstruktor erben.
101. Was ist Polymorphismus?
Polymorphismus ist definiert als die Fähigkeit, mehr als eine Form anzunehmen. Es gibt zwei Arten, nämlich Polymorphismus zur Kompilierungszeit oder Methodenüberladung – eine Funktion, die während der Kompilierungszeit aufgerufen wird. Nehmen Sie zum Beispiel eine Klasse „Bereich“. Basierend auf der Anzahl der Parameter kann die Fläche eines Quadrats, Dreiecks oder Kreises berechnet werden. Laufzeitpolymorphismus oder Methodenüberschreibung – Links während der Laufzeit. Die Methode innerhalb einer Klasse überschreibt die Methode der übergeordneten Klasse.
102. Was ist Laufzeitpolymorphismus oder dynamischer Methodenversand?
Der dynamische Methodenversand ist ein Lösungsmechanismus für das Überschreiben von Methoden während der Laufzeit. Beim Überschreiben einer Methode handelt es sich um eine Methode, bei der die Methode in einer Unterklasse denselben Namen, dieselben Parameter und denselben Rückgabetyp wie eine Methode in der Oberklasse hat. Wenn die überschriebene Methode über eine Superklassenreferenz aufgerufen wird, bestimmt Java basierend auf dem Typ eines Objekts, auf das zum Zeitpunkt des Aufrufs verwiesen wird, welche Version (Superklasse oder Unterklasse) dieser Methode ausgeführt werden soll. Somit wird die Entscheidung zur Laufzeit getroffen. Dies wird als dynamischer Methodenversand bezeichnet.
103. Was ist Methodenüberschreibung?
Beim Überschreiben von Methoden, auch Laufzeitpolymorphismus genannt, enthält die untergeordnete Klasse dieselbe Methode wie die übergeordnete Klasse. Wir haben zum Beispiel eine Methode namens „gfg()“ in der übergeordneten Klasse. In der Unterklasse ist wiederum eine Methode gfg() definiert. Wenn also gfg() in der Unterklasse aufgerufen wird, wird die Methode innerhalb der Klassen-ID ausgeführt. Hier hat gfg() innerhalb der Klasse die Methode außerhalb überschrieben.
104. Was ist Methodenüberladung?

Das Überschreiben von Methoden ist eine Methode zum Erreichen eines Laufzeitpolymorphismus in Java. Das Überschreiben von Methoden ist eine Funktion, die es einer untergeordneten Klasse ermöglicht, eine bestimmte Implementierung einer Methode bereitzustellen, die bereits von einer ihrer übergeordneten Klassen bereitgestellt wird. Wenn eine Methode in einer untergeordneten Klasse denselben Namen, dieselben Parameter oder dieselbe Signatur und denselben Rückgabetyp (oder Untertyp) wie eine Methode in ihrer übergeordneten Klasse hat, wird gesagt, dass die Methode in der Unterklasse die Methode in überschreibt die Superklasse.
105. Können wir die statische Methode überschreiben?
Nein, da statische Methoden Teil der Klasse und nicht des Objekts sind, können wir sie nicht überschreiben.
106. Können wir die überladene Methode überschreiben?
Ja, da die überladene Methode in den Augen des Compilers eine völlig andere Methode ist. Überschreiben ist überhaupt nicht dasselbe. Die Entscheidung, welche Methode aufgerufen werden soll, wird zur Laufzeit verschoben.
107. Können wir die main()-Methode überladen?
Ja, in Java können wir die Hauptmethode überladen, um die Hauptmethode mithilfe ihrer vordefinierten Aufrufmethode aufzurufen.
108. Was sind Methodenüberladung und Methodenüberschreibung?
Methodenüberladung: Es wird auch als Kompilierungszeit-Polymorphismus bezeichnet. Bei der Methodenüberladung werden zwei oder mehr Methoden in derselben Klasse mit unterschiedlicher Signatur gemeinsam genutzt.
Beispiel:
Java // Java Program to demonstrate use of Method Overloading import java.io.*; class GFG { static int multiply(int a, int b) { return a * b; } static int multiply(int a, int b, int c) { return a * b * c; } static int multiply(int a, int b, int c, int d) { return a * b * c * d; } public static void main(String[] args) { System.out.println('multiply() with 2 parameters'); System.out.println(multiply(4, 5)); System.out.println('multiply() with 3 parameters'); System.out.println(multiply(2, 3, 4)); System.out.println('multiply() with 4 parameters'); System.out.println(multiply(2, 3, 4, 1)); } }> Ausgabe
multiply() with 2 parameters 20 multiply() with 3 parameters 24 multiply() with 4 parameters 24>
Methodenüberschreibung: Eine Methodenüberschreibung liegt vor, wenn eine Unterklasse die Implementierung einer Methode bereitstellen kann, die bereits in der übergeordneten Klasse oder Oberklasse definiert ist. Der Rückgabetyp, der Name und die Argumente müssen den Methoden in der Oberklasse ähneln.
Beispiel:
Java // Java Program to demonstrate use of Method Overriding import java.io.*; class Vehicle { void drive() { System.out.println('drive() method of base class'); System.out.println('driving the Car.'); } } class Car extends Vehicle { void drive() { System.out.println( 'drive() method of derived class'); System.out.println('Car is driving.'); } } class GFG { public static void main(String[] args) { Car c1 = new Car(); Vehicle v1 = new Vehicle(); c1.drive(); v1.drive(); Vehicle vehicle = new Car(); // drive() method of Vehicle class is overridden by // Car class drive() vehicle.drive(); } }> Ausgabe
drive() method of derived class Car is driving. drive() method of base class driving the Car. drive() method of derived class Car is driving.>
Methodenüberladung | Methodenüberschreibung |
|---|---|
Wenn sich zwei oder mehrere Methoden in derselben Klasse mit unterschiedlichen Parametern, aber demselben Namen befinden. | Wenn eine Unterklasse ihre eigene Implementierung einer Methode bereitstellt, die bereits in der übergeordneten Klasse definiert ist. |
Eine Methodenüberladung kann nur in derselben Klasse oder zwischen einer Unterklasse oder einer übergeordneten Klasse auftreten. | Das Überschreiben von Methoden kann nur in der Unterklasse erfolgen. |
Wenn ein Fehler auftritt, wird dieser zum Zeitpunkt der Kompilierung des Programms abgefangen. | Wenn ein Fehler auftritt, wird dieser zur Laufzeit des Programms abgefangen. |
Beispiel für Kompilierzeit-Polymorphismus. | Beispiel für Laufzeitpolymorphismus. |
Das Überladen von Methoden erfordert möglicherweise eine Vererbung. | Das Überschreiben einer Methode erfordert immer Vererbung. |
Es geschieht innerhalb der Klasse. | Es wird in zwei Klassen mit einer Vererbungsbeziehung durchgeführt. |
109. Können wir die privaten Methoden überschreiben?
Es ist nicht möglich, die privaten Methoden in Java zu überschreiben. Beim Überschreiben von Methoden wird die Methode in der Unterklasse anstelle der Methode aus der übergeordneten Klasse implementiert. Auf die privaten Methoden kann nur innerhalb der Klasse zugegriffen werden, in der sie deklariert sind. Da diese Methode für andere Klassen nicht sichtbar ist und nicht darauf zugegriffen werden kann, kann sie nicht überschrieben werden.
110. Können wir den Umfang der überschriebenen Methode in der Unterklasse ändern?
In Java ist es nicht möglich, den Gültigkeitsbereich der überschriebenen Methode zu ändern. Der Gültigkeitsbereich der Unterklassenmethode muss gleich oder größer als der Gültigkeitsbereich der überschriebenen Methode der Oberklassenmethode sein. Die überschriebene Methode in der Unterklasse kann beispielsweise einen öffentlichen Bereich oder einen besser zugänglichen Bereich wie protected oder default haben, wenn die überschriebene Methode in der Oberklasse einen öffentlichen Bereich hat. Es kann jedoch keinen exklusiveren Umfang wie privat haben.
111. Können wir die throws-Klausel der Oberklassenmethode ändern und sie gleichzeitig in der Unterklasse überschreiben?
Wir können die Throws-Klausel der Superclass-Methode mit einigen Einschränkungen ändern. Wir können die Throws-Klausel der Superclass-Methode ändern und sie gleichzeitig in der Unterklasse überschreiben. Die überschriebene Methode der Unterklasse kann nur dann ungeprüfte Ausnahmen angeben, wenn die Methode der Oberklasse keine Ausnahmen deklariert. Wenn die Oberklassenmethode eine Ausnahme deklariert, kann die Unterklassenmethode dieselbe Ausnahme, eine Unterklassenausnahme oder überhaupt keine Ausnahme deklarieren. Die Unterklassenmethode kann jedoch keine übergeordnete Ausnahme deklarieren, die umfassender ist als die in der Oberklassenmethode deklarierten Ausnahmen.
112. Können Sie in Java virtuelle Funktionen haben?
Ja, Java unterstützt virtuelle Funktionen. Funktionen sind standardmäßig virtuell und können mit dem Schlüsselwort final auch nicht-virtuell gemacht werden.
113. Was ist Abstraktion?
Unter Abstraktion versteht man die Darstellung wesentlicher Merkmale ohne Einbeziehung von Hintergrunddetails. Die detaillierten Informationen bzw. die Umsetzung werden ausgeblendet. Das häufigste Beispiel für Abstraktion ist ein Auto. Wir wissen, wie man den Motor einschaltet, beschleunigt und bewegt, die Funktionsweise des Motors und seine internen Komponenten sind jedoch eine komplexe Logik, die dem allgemeinen Benutzer verborgen bleibt. Dies geschieht normalerweise, um die Komplexität zu bewältigen.
114. Was ist eine abstrakte Klasse?
Eine als abstrakt deklarierte Klasse kann nicht instanziiert werden, d. h. das Objekt kann nicht erstellt werden. Sie kann abstrakte Methoden enthalten oder auch nicht, aber wenn eine Klasse mindestens eine abstrakte Methode hat, muss sie als abstrakt deklariert werden.
Beispiel einer abstrakten Klasse mit abstrakter Methode:
Java // Java Program to implement // abstract method import java.io.*; // Abstract class abstract class Fruits { abstract void run(); } // Driver Class class Apple extends Fruits { void run() { System.out.println('Abstract class example'); } // main method public static void main(String args[]) { Fruits obj = new Apple(); obj.run(); } }> 115. Wann werden abstrakte Methoden verwendet?
Eine abstrakte Methode wird verwendet, wenn wir eine Methode verwenden möchten, aber möchten, dass untergeordnete Klassen über die Implementierung entscheiden. In diesem Fall verwenden wir abstrakte Methoden mit den übergeordneten Klassen.
116. Wie können Sie die Serialisierung in der untergeordneten Klasse vermeiden, wenn die Basisklasse die Serializable-Schnittstelle implementiert?
Serialisierung in der untergeordneten Klasse: Wenn die Basisklasse die Serializable-Schnittstelle implementiert, können wir sie vermeiden, indem wir die Methode writeObject() definieren und NotSerializableException() auslösen.
117. Was ist das Collection Framework in Java?
Sammlungen sind Einheiten von Objekten in Java. Das Sammlungsframework besteht aus einer Reihe von Schnittstellen und Klassen in Java, die zur Darstellung und Bearbeitung von Objektsammlungen auf verschiedene Arten verwendet werden. Das Sammlungsframework enthält Klassen (ArrayList, Vector, LinkedList, PriorityQueue, TreeSet) und mehrere Schnittstellen (Set, List, Queue, Deque), wobei jede Schnittstelle zum Speichern eines bestimmten Datentyps verwendet wird.
118. Erklären Sie verschiedene Schnittstellen, die im Collection-Framework verwendet werden.
Sammlungsframework implementiert
- Sammlungsschnittstelle
- Listenschnittstelle
- Schnittstelle festlegen
- Warteschlangenschnittstelle
- Und die Schnittstelle
- Kartenschnittstelle
Sammlungsschnittstelle: Collection ist die primäre verfügbare Schnittstelle, die mit java.util.Collection importiert werden kann.
Syntax:
public interface Collection extends iterable>
119. Wie kann man eine ArrayList in Java synchronisieren?
Eine ArrayList kann mit den beiden unten genannten Methoden synchronisiert werden:
- Verwenden von Collections.synchronizedList()
- Verwenden von CopyOnWriteArrayList
Verwenden von Collections.synchronizedList():
public static List synchronizedList(List list)>
Verwenden von CopyOnWriteArrayList:
- Erstellen Sie eine leere Liste.
- Es implementiert die List-Schnittstelle
- Es handelt sich um eine threadsichere Variante von ArrayList
- T steht für generisch
120. Warum brauchen wir eine synchronisierte ArrayList, wenn wir in Java Vektoren (die synchronisiert sind) haben?
ArrayList wird aus bestimmten Gründen auch dann benötigt, wenn wir Vektoren haben:
- ArrayList ist schneller als Vektoren.
- ArrayList unterstützt Multithreading, während Vectors nur die Verwendung mit einem Thread unterstützt.
- ArrayList ist sicherer zu verwenden, da Vectors einzelne Threads unterstützt und einzelne Vorgänge weniger sicher sind und die Synchronisierung länger dauert.
- Vektoren gelten in Java aufgrund ihrer synchronisierten Natur als veraltet.
121. Warum können wir kein generisches Array erstellen?
Generische Arrays können nicht erstellt werden, da ein Array trägt Typinformationen seiner Elemente zur Laufzeit, weshalb es während der Laufzeit eine „ArrayStoreException“ auslöst, wenn der Typ der Elemente nicht ähnlich ist. Da generische Typinformationen zur Kompilierungszeit durch Type Erasure gelöscht werden, wäre die Array-Speicherprüfung dort bestanden worden, wo sie hätte fehlschlagen sollen.
122. Angrenzende Speicherorte werden normalerweise zum Speichern tatsächlicher Werte in einem Array verwendet, jedoch nicht in ArrayList. Erklären.
Die Elemente eines Arrays werden an zusammenhängenden Speicherorten gespeichert, was bedeutet, dass jedes Element in einem separaten Block gespeichert wird, der auf seiner Position im Array basiert. Da die Elemente des Arrays an zusammenhängenden Orten gespeichert sind, kann es relativ einfach sein, auf jedes Element über seinen Index zuzugreifen, da die Elementadresse basierend auf dem Ort des Elements berechnet werden kann. Aber Java implementiert ArrayLists als dynamische Arrays, was bedeutet, dass sich die Größe ändern kann, wenn Elemente entfernt oder hinzugefügt werden. ArrayList-Elemente werden nicht an zusammenhängenden Speicherorten gespeichert, um dieser dynamischen Natur gerecht zu werden. Stattdessen nutzt die ArrayList eine als erweiterbares Array bekannte Methode, bei der das zugrunde liegende Array nach Bedarf auf eine größere Größe erweitert wird und die Elemente dann an den neuen Speicherort kopiert werden. Im Gegensatz zu einer ArrayList, die eine dynamische Größe hat und ihre Elemente nicht an zusammenhängenden Speicherorten speichert, hat ein Array eine feste Größe und seine Elemente werden dort gespeichert.
123. Erklären Sie die Methode zum Konvertieren von ArrayList in Array und Array in ArrayList.
Konvertierung einer Liste in eine ArrayList
Es gibt mehrere Methoden zum Konvertieren von List in ArrayList

Programmierer können ein Array mit der Methode asList() der Klasse Arrays in eine ArrayList konvertieren. Es handelt sich um eine statische Methode der Arrays-Klasse, die das List-Objekt akzeptiert.
Syntax:
Arrays.asList(item)>
Beispiel:
Java // Java program to demonstrate conversion of // Array to ArrayList of fixed-size. import java.util.*; // Driver Class class GFG { // Main Function public static void main(String[] args) { String[] temp = { 'Abc', 'Def', 'Ghi', 'Jkl' }; // Conversion of array to ArrayList // using Arrays.asList List conv = Arrays.asList(temp); System.out.println(conv); } }> Ausgabe
[Abc, Def, Ghi, Jkl]>
Konvertierung von ArrayList in Array

Java-Programmierer können ArrayList in konvertieren
Syntax:
List_object.toArray(new String[List_object.size()])>
Beispiel:
Java // Java program to demonstrate working of // Objectp[] toArray() import java.io.*; import java.util.List; import java.util.ArrayList; // Driver Class class GFG { // Main Function public static void main(String[] args) { // List declared List<Integer> arr = new ArrayList<Integer>(); arr.add(1); arr.add(2); arr.add(3); arr.add(2); arr.add(1); // Conversion Object[] objects = arr.toArray(); // Printing array of objects for (Object obj : objects) System.out.print(obj + ' '); } }> Ausgabe
1 2 3 2 1>
124. Wie wächst die Größe von ArrayList dynamisch? Und geben Sie auch an, wie es intern umgesetzt wird.
Aufgrund der Array-basierten Natur von ArrayLists wächst die Größe dynamisch und stellt sicher, dass immer genügend Platz für Elemente vorhanden ist. Wenn ein ArrayList-Element zum ersten Mal erstellt wird, beträgt die Standardkapazität etwa 10–16 Elemente, was im Wesentlichen von der Java-Version abhängt. ArrayList-Elemente werden vom ursprünglichen Array in das neue Array kopiert, wenn die Kapazität des ursprünglichen Arrays voll ist. Wenn die Größe der ArrayList dynamisch zunimmt, erstellt die Klasse ein neues Array mit größeren Größen und kopiert alle Elemente aus dem alten Array in das neue Array. Nun wird intern die Referenz des neuen Arrays verwendet. Dieser Prozess der dynamischen Vergrößerung eines Arrays wird als Größenänderung bezeichnet.
125. Was ist ein Vektor in Java?
Vektoren in Java sind ähnlich und können mehrere Elemente darin speichern. Vektoren folgen bestimmten Regeln, die unten aufgeführt sind:
- Vector kann mit Java.util.Vector importiert werden.
- Der Vektor wird mithilfe eines dynamischen Arrays implementiert, da die Größe des Vektors abhängig von den darin eingefügten Elementen zunimmt und abnimmt.
- Elemente des Vektors mit Indexnummern.
- Vektoren sind von Natur aus synchronisiert, was bedeutet, dass sie nur einen einzigen Thread verwenden (zu einem bestimmten Zeitpunkt wird nur ein Prozess ausgeführt).
- Der Vektor enthält viele Methoden, die nicht Teil des Collections-Frameworks sind.
Syntax:
Vector gfg = new Vector(size, increment);>
126. Wie mache ich Java ArrayList schreibgeschützt?
Eine ArrayList kann nur mit der von Collections bereitgestellten Methode mithilfe der Collections.unmodifiableList()-Methode vorbereitet werden.
Syntax:
array_readonly = Collections.unmodifiableList(ArrayList);>
Beispiel:
Java // Java program to demonstrate // unmodifiableList() method import java.util.*; public class Main { public static void main(String[] argv) throws Exception { try { // creating object of ArrayList <Character> ArrayList<Character> temp = new ArrayList<Character>(); // populate the list temp.add('X'); temp.add('Y'); temp.add('Z'); // printing the list System.out.println('Initial list: ' + temp); // getting readonly list // using unmodifiableList() method List<Character> new_array = Collections.unmodifiableList(temp); // printing the list System.out.println('ReadOnly ArrayList: ' + new_array); // Adding element to new Collection System.out.println('
If add element in ' + ' the ReadOnly ArrayList'); new_array.add('A'); } catch (UnsupportedOperationException e) { System.out.println('Exception is thrown : ' + e); } } }> Ausgabe
Initial list: [X, Y, Z] ReadOnly ArrayList: [X, Y, Z] If add element in the ReadOnly ArrayList Exception is thrown : java.lang.UnsupportedOperationException>
127. Was ist eine Prioritätswarteschlange in Java?

Netzwerkarchitektur
Eine Prioritätswarteschlange ist ein abstrakter Datentyp, der einer regulären Warteschlange oder einer Stapeldatenstruktur ähnelt. In Elementen gespeicherte Elemente werden je nach Priorität von niedrig nach hoch definiert. Die PriorityQueue basiert auf dem Prioritätsheap.
Syntax:
Java // Java program to demonstrate the // working of PriorityQueue import java.util.*; class PriorityQueueDemo { // Main Method public static void main(String args[]) { // Creating empty priority queue PriorityQueue<Integer> var1 = new PriorityQueue<Integer>(); // Adding items to the pQueue using add() var1.add(10); var1.add(20); var1.add(15); // Printing the top element of PriorityQueue System.out.println(var1.peek()); } }> Ausgabe
10>
128. Erklären Sie die LinkedList-Klasse.
Die LinkedList-Klasse ist eine Java-Klasse, die eine doppelt verknüpfte Liste zum Speichern von Elementen verwendet. Es erbt die AbstractList-Klasse und implementiert List- und Deque-Schnittstellen. Nachfolgend werden die Eigenschaften der LinkedList-Klasse aufgeführt:
- LinkedList-Klassen sind nicht synchronisiert.
- Behält die Einfügereihenfolge bei.
- Es kann als Liste, Stapel oder Warteschlange verwendet werden.
Syntax:
LinkedList list_name=new LinkedList();>
129. Was ist die Stack-Klasse in Java und welche verschiedenen Methoden bietet sie?
Eine Stack-Klasse in Java ist eine LIFO-Datenstruktur, die die Last-In-First-Out-Datenstruktur implementiert. Es ist von einer Vector-Klasse abgeleitet, verfügt jedoch über stapelspezifische Funktionen. Die Stack-Klasse in Java bietet die folgenden Methoden:
- spähen(): gibt das oberste Element vom Stapel zurück, ohne es zu entfernen
- leer(): gibt „true“ zurück, wenn der Stapel leer ist, andernfalls „false“.
- drücken(): schiebt einen Gegenstand oben auf den Stapel
- Pop(): Entfernt das oberste Element vom Stapel und gibt es zurück
- suchen(): gibt die 1-basierte Position des Objekts von der Oberseite des Stapels zurück. Befindet sich das Objekt nicht im Stapel, wird -1 zurückgegeben
130. Was ist im Java Collections-Framework festgelegt und listet seine verschiedenen Implementierungen auf?
Sets sind Sammlungen, die keine doppelten Elemente speichern. Sie halten keine Ordnung der Elemente ein. Das Java Collections-Framework stellt mehrere Implementierungen der Set-Schnittstelle bereit, darunter:
- HashSet: HashSet in Java speichert die Elemente in einer Has-Tabelle, was schnellere Suchvorgänge und schnellere Einfügungen ermöglicht. HashSet ist nicht geordnet.
- LinkedHashSet: LinkedHashSet ist eine Implementierung von HashSet, die die Einfügereihenfolge der Elemente beibehält.
- TreeSet: TreeSet speichert die Elemente in einer sortierten Reihenfolge, die durch die natürliche Reihenfolge der Elemente oder durch einen benutzerdefinierten Komparator bestimmt wird, der zum Zeitpunkt der Erstellung bereitgestellt wird.
131. Was ist die HashSet-Klasse in Java und wie speichert sie Elemente?
Die HashSet-Klasse implementiert die Set-Schnittstelle im Java Collections Framework und ist Mitglied der HashSet-Klasse. Im Gegensatz zu doppelten Werten speichert es eine Sammlung unterschiedlicher Elemente. In dieser Implementierung wird jedes Element mithilfe einer Hash-Funktion einem Index in einem Array zugeordnet und der Index wird verwendet, um schnell auf das Element zuzugreifen. Basierend auf dem Eingabeelement wird ein Index für das Element im Array erstellt, in dem es gespeichert ist. Unter der Annahme, dass die Hash-Funktion die Elemente ordnungsgemäß auf die Buckets verteilt, bietet die HashSet-Klasse eine konstante Leistung für grundlegende Vorgänge (Hinzufügen, Entfernen, Einschließen und Größe).
132. Was ist LinkedHashSet im Java Collections Framework?
Das LinkedHashSet ist eine geordnete Version von Hashset, die von einer doppelt verknüpften Liste über alle Elemente hinweg verwaltet wird. Dies ist sehr hilfreich, wenn eine Iterationsreihenfolge erforderlich ist. Während der Iteration in LinkedHashSet werden Elemente in derselben Reihenfolge zurückgegeben, in der sie eingefügt wurden.
Syntax:
LinkedHashSet hs = new LinkedHashSet();>
Beispiel:
Java // Java Program to implement // LinkedHashSet import java.io.*; import java.util.*; // Driver Class class GFG { // Main Function public static void main(String[] args) { // LinkedHashSet declared LinkedHashSet<Integer> hs = new LinkedHashSet<Integer>(); // Add elements in HashSet hs.add(1); hs.add(2); hs.add(5); hs.add(3); // Print values System.out.println('Values:' + hs); } }> Ausgabe
Values:[1, 2, 5, 3]>
133. Was ist eine Map-Schnittstelle in Java?

Die Kartenschnittstelle ist in der Java-Sammlung vorhanden und kann mit dem Java.util-Paket verwendet werden. Eine Kartenschnittstelle wird zum Zuordnen von Werten in Form eines Schlüsselwertformulars verwendet. Die Karte enthält alle eindeutigen Schlüssel. Außerdem stellt es damit verbundene Methoden wie „containsKey()“, „contains value()“ usw. zur Verfügung.
Es gibt mehrere Arten von Karten in der Kartenoberfläche, wie unten erwähnt:
- SortedMap
- TreeMap
- HashMap
- LinkedHashMap
134. Erklären Sie Treemap in Java
TreeMap ist eine Art Karte, die Daten in Form eines Schlüssel-Wert-Paares speichert. Die Implementierung erfolgt über den Rot-Schwarz-Baum. Funktionen von TreeMap sind:
- Es enthält nur einzigartige Elemente.
- Es darf keinen NULL-Schlüssel haben
- Es kann mehrere NULL-Werte haben.
- Es ist nicht synchronisiert.
- Es behält die aufsteigende Reihenfolge bei.
135. Was ist EnumSet?
EnumSet ist eine spezielle Implementierung der Set-Schnittstelle zur Verwendung mit dem Aufzählungstyp. Einige Funktionen von EnumSet sind:
- Es ist nicht synchronisiert.
- Schneller als HashSet.
- Alle Elemente in einem EnumSet müssen von einem einzigen Aufzählungstyp stammen.
- Es lässt keine Nullobjekte zu und löst eine NullPointerException für Ausnahmen aus.
- Es verwendet einen ausfallsicheren Iterator.
Syntax:
public abstract class EnumSet>
Parameter: E gibt die Elemente an.
136. Was ist BlockingQueue?

Eine blockierende Warteschlange ist eine Warteschlange, die die Vorgänge unterstützt, die beim Abrufen und Entfernen des Elements darauf warten, dass die Warteschlange nicht leer wird, und beim Hinzufügen des Elements darauf warten, dass Platz in der Warteschlange verfügbar wird.
Syntax:
public interface BlockingQueue extends Queue>
Parameter: E ist der Typ der in der Sammlung gespeicherten Elemente
137. Was ist die ConcurrentHashMap in Java und implementieren Sie sie?
ConcurrentHashMap wird mit Hashtable implementiert.
Syntax:
public class ConcurrentHashMap extends AbstractMap implements ConcurrentMap, Serializable>
Parameter : K ist der Schlüsselobjekttyp und V ist der Wertobjekttyp
138. Können Sie jede Klasse als Kartenschlüssel verwenden?
Ja, wir können jede Klasse als Map-Schlüssel verwenden, wenn sie bestimmte unten aufgeführte vordefinierte Regeln befolgt:
- Die Klasse, die die Methode equal() überschreibt, muss auch die Methode hashCode() überschreiben
- Die concurrentHashMap-Klasse ist threadsicher.
- Der Standard-Parallelitätsgrad von ConcurrentHashMap ist 16.
- Das Einfügen von Nullobjekten in ConcurrentHashMap ist weder als Schlüssel noch als Wert möglich.
139. Was ist ein Iterator?

Die Iterator-Schnittstelle bietet Methoden zum Durchlaufen jeder Sammlung in Java. Iterator ist der Ersatz für Enumeration im Java Collections Framework. Mithilfe der Methode _iterator()_ kann eine Iteratorinstanz aus einer Sammlung abgerufen werden. Außerdem kann der Aufrufer während der Iteration Elemente aus der zugrunde liegenden Sammlung entfernen.
140. Was ist eine Aufzählung?
Aufzählung ist ein benutzerdefinierter Datentyp. Es wird hauptsächlich verwendet, um Integralkonstanten Namen zuzuweisen. Die Namen machen ein Programm einfach zu lesen und zu warten. Das Hauptziel der Enumeration besteht darin, benutzerdefinierte Datentypen zu definieren.
Beispiel:
// A simple enum example where enum is declared // outside any class (Note enum keyword instead of // class keyword) enum Color { RED, GREEN, BLUE; }>141. Was ist der Unterschied zwischen Collection und Collections?
Sammlung | Sammlungen |
|---|---|
Die Sammlung ist eine Schnittstelle. | Sammlungen sind eine Klasse. |
Es bietet die Standardfunktionalität der Datenstruktur. | Es dient dazu, die Sammlungselemente zu sortieren und zu synchronisieren. |
Es stellt die Methoden bereit, die für die Datenstruktur verwendet werden können. | Es stellt statische Methoden bereit, die für verschiedene Operationen verwendet werden können. |
142. Unterscheiden Sie zwischen Array und ArrayList in Java.
Array | Anordnungsliste |
|---|---|
Eindimensional oder mehrdimensional | Eindimensional |
Für und für jedes wird zur Iteration verwendet | Hier wird der Iterator zum Durchlaufen von riverArrayList verwendet |
Das Schlüsselwort „length“ gibt die Größe des Arrays zurück. | Die Methode size() wird verwendet, um die Größe von ArrayList zu berechnen. |
Das Array hat eine feste Größe. | Die Größe der ArrayList ist dynamisch und kann bei Bedarf vergrößert oder verkleinert werden. |
Es ist schneller, da wir es oben in fester Größe sehen | Aufgrund seiner dynamischen Natur ist es relativ langsamer |
Primitive Datentypen können direkt in unwahrscheinlichen Objekten gespeichert werden. | Primitive Datentypen werden nicht direkt zu unwahrscheinlichen Arrays hinzugefügt, sondern indirekt mithilfe von Autoboxing und Unboxing |
Sie können hier nicht hinzugefügt werden, daher ist der Typ unsicher. | Sie können hier hinzugefügt werden, wodurch ArrayList typsicher gemacht wird. |
Der Zuweisungsoperator dient lediglich dem Zweck | Hier wird eine spezielle Methode verwendet, die als add()-Methode bekannt ist |
143. Was ist der Unterschied zwischen Array und Collection in Java?
Array | Sammlungen |
|---|---|
Arrays in Java haben eine feste Größe. | Sammlungen in Java haben dynamische Größen. |
In einem Array werden Elemente an zusammenhängenden Speicherorten gespeichert. | In Sammlungen werden Elemente nicht unbedingt an zusammenhängenden Speicherorten gespeichert. |
Objekte und primitive Datentypen können in einem Array gespeichert werden. | Wir können Objekte nur in Sammlungen speichern. |
Für die Größenänderung des Arrays ist eine manuelle Manipulation erforderlich. | Die Größenänderung in Sammlungen erfolgt automatisch. |
Das Array verfügt über grundlegende Methoden zur Manipulation. | Sammlungen verfügen über erweiterte Methoden zur Manipulation und Iteration. |
Das Array ist seit den Anfängen von Java verfügbar. | Sammlungen wurden in Java 1.2 eingeführt. |
144. Unterschied zwischen ArrayList und LinkedList.
Anordnungsliste | LinkedList |
|---|---|
ArrayList wird als erweiterbares Array implementiert. | LinkedList wird als doppelt verknüpfte Liste implementiert. |
In ArrayList werden Elemente an zusammenhängenden Speicherorten gespeichert | LinkedList-Elemente werden an nicht zusammenhängenden Speicherorten gespeichert, da jedes Element einen Verweis auf das nächste und vorherige Element hat. |
ArrayLists sind für den Direktzugriff schneller. | LinkedLists sind für Einfüge- und Löschvorgänge schneller |
ArrayLists sind speichereffizienter. | LinkedList ist weniger speichereffizient |
ArrayLists Benutzen Sie mehr Speicher, da die Array-Größe beibehalten wird. | LinkedList Benötigt weniger Speicher, da es nur Verweise auf Elemente enthält |
Der Suchvorgang ist in ArrayList schneller. | Der Suchvorgang ist in LinkedList langsamer |
145. Unterscheiden Sie zwischen ArrayList und Vector in Java.
Anordnungsliste | Vektor |
|---|---|
ArrayLists werden als erweiterbares Array implementiert. | Vector wird als erweiterbares Array implementiert. |
ArrayList ist nicht synchronisiert. | Der Vektor ist synchronisiert. |
ArrayLists sind für nicht gleichzeitige Vorgänge schneller. | Vector ist bei nicht gleichzeitigen Vorgängen aufgrund des zusätzlichen Synchronisierungsaufwands langsamer. |
ArrayLists wurden in Java 1.2 eingeführt. | Vector wurde in JDK 1.0 eingeführt. |
Empfohlen für die Verwendung in einer Single-Threaded-Umgebung. | Vektoren werden für die Verwendung in einer Multithread-Umgebung empfohlen. |
Die standardmäßige Anfangskapazität von ArrayLists beträgt 10. | In Vectors beträgt die standardmäßige Anfangskapazität 10, aber das Standardinkrement ist doppelt so groß. |
Die Leistung von ArrayList ist hoch. | Die Vektorleistung ist gering. |
146. Was ist der Unterschied zwischen Iterator und ListIterator?
Iterator | ListIterator |
|---|---|
Kann in der Sammlung vorhandene Elemente nur in Vorwärtsrichtung durchlaufen. | Kann in der Sammlung vorhandene Elemente sowohl in Vorwärts- als auch in Rückwärtsrichtung durchlaufen. |
Wird zum Durchlaufen von Karte, Liste und Satz verwendet. | Kann nur List durchqueren, die anderen beiden nicht. |
Mit Iterator können keine Indizes abgerufen werden | Es verfügt über Methoden wie nextIndex() und previousIndex(), um beim Durchlaufen der Liste jederzeit Indizes von Elementen abzurufen. |
In der Sammlung vorhandene Elemente können nicht geändert oder ersetzt werden | Kann Elemente mit Hilfe von set(E e) ändern oder ersetzen |
Es können keine Elemente hinzugefügt werden und es wird außerdem eine ConcurrentModificationException ausgelöst. | Kann jederzeit problemlos Elemente zu einer Sammlung hinzufügen. |
Bestimmte Methoden von Iterator sind next(), remove() und hasNext(). | Bestimmte Methoden von ListIterator sind next(), previous(), hasNext(), hasPrevious(), add(E e). |
147. Unterscheiden Sie zwischen HashMap und HashTable.
HashMap | Hash-tabelle |
|---|---|
HashMap ist nicht synchronisiert | HashTable ist synchronisiert |
Ein Schlüssel kann ein NULL-Wert sein | NULL-Werte sind nicht zulässig |
Der Iterator wird zum Durchlaufen von HashMap verwendet. | Es können sowohl Iterator als auch Enumertar verwendet werden |
HashMap ist schneller. | HashTable ist im Vergleich zu HashMap langsamer. |
148. Was ist der Unterschied zwischen Iterator und Enumeration?
Iterator | Aufzählung |
|---|---|
Der Iterator kann sowohl Legacy- als auch Nicht-Legacy-Elemente durchlaufen. | Die Aufzählung kann nur Legacy-Elemente durchlaufen. |
Der Iterator ist ausfallsicher. | Die Aufzählung ist nicht ausfallsicher. |
Die Iteratoren sind langsamer. | Die Aufzählung ist schneller. |
Der Iterator kann beim Durchlaufen der Sammlung einen Entfernungsvorgang ausführen. | Die Enumeration kann nur Durchlaufoperationen für die Sammlung ausführen. |
149. Was ist der Unterschied zwischen Comparable und Comparator?
Vergleichbar | Komparator |
|---|---|
Die Schnittstelle ist im Paket java.lang vorhanden. | Die Schnittstelle ist im Paket java.util vorhanden. |
Stellt die Methode „compareTo()“ zum Sortieren von Elementen bereit. | Stellt die Methode „compare()“ zum Sortieren von Elementen bereit. |
Es bietet einzelne Sortierreihenfolgen. | Es bietet mehrere Sortierreihenfolgen. |
Die Sortierlogik muss in derselben Klasse liegen, deren Objekt Sie sortieren möchten. | Die Sortierlogik sollte in einer separaten Klasse liegen, um unterschiedliche Sortierungen basierend auf unterschiedlichen Objektattributen zu schreiben. |
Die Methode sortiert die Daten nach einer festen Sortierreihenfolge. | Die Methode sortiert die Daten gemäß der benutzerdefinierten Sortierreihenfolge. |
Es betrifft die ursprüngliche Klasse. | Es hat keinen Einfluss auf die ursprüngliche Klasse. |
Wird häufig in der API durch Kalender, Wrapper-Klassen, Datum und Zeichenfolge implementiert. | Es ist implementiert, um Instanzen von Klassen von Drittanbietern zu sortieren. |
150. Was ist der Unterschied zwischen Set und Map?
Satz | Karte |
|---|---|
Die Set-Schnittstelle wird mit dem Paket java.util implementiert. | Die Karte wird mit dem Paket java.util implementiert. |
Es kann die Sammlungsschnittstelle erweitern. | Die Sammlungsschnittstelle wird dadurch nicht erweitert. |
Es sind keine doppelten Werte zulässig. | Es erlaubt doppelte Werte. |
Die Menge kann nur einen Nullwert sortieren. | Die Karte kann mehrere Nullwerte sortieren. |
Fragen zum Java Intermediate-Interview
151. Erklären Sie den FailFast-Iterator und den FailSafe-Iterator zusammen mit Beispielen für jeden.
Ein FailFast-Iterator ist ein Iterator, der a auslöst ConcurrentModificationException wenn festgestellt wird, dass die zugrunde liegende Sammlung während der Verwendung des Iterators geändert wurde. Dies ist das Standardverhalten von Iteratoren im Java Collections Framework. Der Iterator für eine HashMap ist beispielsweise FailFast.
Beispiel:
Java // Java Program to demonstrate FailFast iterator import java.io.*; import java.util.HashMap; import java.util.Iterator; import java.util.Map; class GFG { public static void main(String[] args) { HashMap<Integer, String> map = new HashMap<>(); map.put(1, 'one'); map.put(2, 'two'); Iterator<Map.Entry<Integer, String> > iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<Integer, String> entry = iterator.next(); // this will throw a // ConcurrentModificationException if (entry.getKey() == 1) { map.remove(1); } } } }> Ausgabe:
Exception in thread 'main' java.util.ConcurrentModificationException>
Ein FailSafe-Iterator löst kein aus ConcurrentModificationException wenn die zugrunde liegende Sammlung geändert wird, während der Iterator verwendet wird. Alternativ erstellt es zum Zeitpunkt der Erstellung des Iterators einen Snapshot der Sammlung und iteriert über den Snapshot. Der Iterator für eine ConcurrentHashMap ist beispielsweise FailSafe.
Beispiel:
Java
// Java Program to demonstrate FailSafe import java.io.*; import java.util.Iterator; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; class GFG { public static void main(String[] args) { ConcurrentHashMap<Integer, String> map = new ConcurrentHashMap<>(); map.put(1, 'one'); map.put(2, 'two'); Iterator<Map.Entry<Integer, String> > iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<Integer, String> entry = iterator.next(); // this will not throw an exception if (entry.getKey() == 1) { map.remove(1); } } } }> 152. Was ist Ausnahmebehandlung?
Ein Ausnahme ist ein Ereignis, das den normalen Programmablauf unterbricht und eine spezielle Verarbeitung erfordert. Während der Ausführung eines Programms können Fehler und ungeplante Ereignisse mithilfe des Java-Ausnahmebehandlungsmechanismus behandelt werden. Nachfolgend sind einige Gründe aufgeführt, warum in Java Ausnahmen auftreten:
- Gerätefehler
- Verlust der Netzwerkverbindung
- Codefehler
- Öffnen einer nicht verfügbaren Datei
- Ungültige Benutzereingabe
- Physische Einschränkungen (nicht genügend Festplattenspeicher)
153. Wie viele Arten von Ausnahmen können in einem Java-Programm auftreten?

In Java gibt es im Allgemeinen zwei Arten von Ausnahmen:
- Integrierte Ausnahmen: Integrierte Ausnahmen in Java werden von den Java-Bibliotheken bereitgestellt. Diese Ausnahmen können weiter in zwei Unterkategorien unterteilt werden, nämlich aktivierte und nicht aktivierte Ausnahmen. Nachfolgend sind einige der in Java integrierten Ausnahmen aufgeführt:
- ArrayIndexOutOfBoundsExceptions
- ClassNotFoundException
- FileNotFoundException
- IOException
- NullPointerException
- ArithmeticException
- InterruptedException
- RuntimeException
- Benutzerdefinierte Ausnahmen: Benutzerdefinierte Ausnahmen werden von den Programmierern selbst definiert, um bestimmte Situationen oder Fehler zu behandeln, die nicht durch integrierte Ausnahmen abgedeckt werden. Um benutzerdefinierte Ausnahmen zu definieren, muss eine neue Klasse definiert werden, die die entsprechende Ausnahmeklasse erweitert. Benutzerdefinierte Ausnahmen in Java werden verwendet, wenn die integrierten Ausnahmen in Java vorhanden sind.
154. Unterschied zwischen einem Fehler und einer Ausnahme.
Fehler | Ausnahmen |
|---|---|
Eine Wiederherstellung nach Fehlern ist nicht möglich. | Stellen Sie Ausnahmen wieder her, indem Sie entweder einen Try-Catch-Block verwenden oder Ausnahmen an den Aufrufer zurückwerfen. |
Fehler sind in Java alle ungeprüften Typen. | Es umfasst sowohl aktivierte als auch nicht aktivierte Typen, die vorkommen. |
Fehler werden meist durch die Umgebung verursacht, in der das Programm ausgeführt wird. | Das Programm ist hauptsächlich für das Auslösen von Ausnahmen verantwortlich. |
Fehler können sowohl zur Kompilierungszeit als auch zur Laufzeit auftreten. Kompilierungszeit: Syntaxfehler, Laufzeit: Logischer Fehler. | Alle Ausnahmen treten zur Laufzeit auf, aktivierte Ausnahmen sind dem Compiler jedoch bekannt, nicht aktivierte jedoch nicht. |
Sie sind im Paket java.lang.Error definiert. | Sie sind im Paket java.lang.Exception definiert |
Beispiele : java.lang.StackOverflowError, java.lang.OutOfMemoryError | Beispiele : Geprüfte Ausnahmen: SQLException, IOException Nicht geprüfte Ausnahmen: ArrayIndexOutOfBoundException, NullPointerException, ArithmeticException. |
155. Erklären Sie die Hierarchie der Java-Ausnahmeklassen.

Alle Ausnahme- und Fehlertypen in Java sind Unterklassen der Klasse throwable, die die Basisklasse der Hierarchie darstellt. Diese Klasse wird dann für Ausnahmebedingungen verwendet, die Benutzerprogramme abfangen sollen. NullPointerException ist ein Beispiel für eine solche Ausnahme. Ein weiterer Zweig, Fehler, wird vom Java-Laufzeitsystem verwendet, um Fehler anzuzeigen, die mit der JRE zu tun haben. StackOverflowError ist ein Beispiel für einen solchen Fehler.
156. Erklären Sie Laufzeitausnahmen.
Laufzeitausnahmen sind Ausnahmen, die während der Ausführung eines Codes auftreten, im Gegensatz zu Ausnahmen zur Kompilierungszeit, die während der Kompilierung auftreten. Laufzeitausnahmen sind ungeprüfte Ausnahmen, da sie von der JVM nicht berücksichtigt werden.
Beispiele für Laufzeitausnahmen in Java sind:
- NullPointerException: Dies tritt auf, wenn eine Anwendung versucht, eine Null-Objektreferenz zu verwenden.
- ArrayIndexOutOfBoundsException: Dies tritt auf, wenn eine Anwendung versucht, auf einen Array-Index zuzugreifen, der außerhalb der Grenzen liegt.
- ArithmeticException: Dies tritt auf, wenn eine Anwendung versucht, durch Null zu dividieren.
- IllegalArgumentException: Dies tritt auf, wenn einer Methode ein illegales oder unangemessenes Argument übergeben wird.
Im Gegensatz zu geprüften Ausnahmen erfordern Laufzeitausnahmen keine Deklaration in der Throws-Klausel oder eine Erfassung in einem Try-Catch-Block. Allerdings ist die Behandlung von Laufzeitausnahmen empfehlenswert, um aussagekräftige Fehlermeldungen bereitzustellen und einen Systemabsturz zu verhindern. Da Laufzeitausnahmen spezifischere Informationen über das Problem liefern als geprüfte Ausnahmen, ermöglichen sie Entwicklern, Programmierfehler einfacher und schneller zu erkennen und zu beheben.
157. Was ist NullPointerException?
Dabei handelt es sich um eine Art Laufzeitausnahme, die ausgelöst wird, wenn das Programm versucht, eine Objektreferenz zu verwenden, die einen Nullwert hat. Der Hauptzweck von NullPointerException besteht darin, anzuzeigen, dass einer Referenzvariablen kein Wert zugewiesen ist. Außerdem wird es zum Implementieren von Datenstrukturen wie verknüpften Listen und Bäumen verwendet.
158. Wann wird die ArrayStoreException ausgelöst?
ArrayStoreException wird ausgelöst, wenn versucht wird, den falschen Objekttyp in einem Array von Objekten zu speichern.
Beispiel:
Java
// Java Program to implement // ArrayStoreException public class GFG { public static void main(String args[]) { // Since Double class extends Number class // only Double type numbers // can be stored in this array Number[] a = new Double[2]; // Trying to store an integer value // in this Double type array a[0] = new Integer(4); } }> Beispiel:
Exception in thread 'main' java.lang.ArrayStoreException: java.lang.Integer at GFG.main(GFG.java:6)>
159. Was ist der Unterschied zwischen geprüfter Ausnahme und ungeprüfter Ausnahme?
Geprüfte Ausnahme:
Geprüfte Ausnahmen sind Ausnahmen, die während der Kompilierzeit eines Programms überprüft werden. Wenn in einem Programm ein Code innerhalb einer Methode eine geprüfte Ausnahme auslöst, muss die Methode entweder die Ausnahme behandeln oder die Ausnahme mit dem Schlüsselwort throws angeben.
Es gibt zwei Arten von geprüften Ausnahmen:
- Vollständig geprüfte Ausnahmen: Alle untergeordneten Klassen werden ebenfalls geprüft, z. B. IOException und InterruptedException.
- Teilweise geprüfte Ausnahmen: Einige seiner untergeordneten Klassen sind nicht geprüft, wie z. B. eine Ausnahme.
Ungeprüfte Ausnahme:
Ungeprüft sind die Ausnahmen, die zur Kompilierzeit eines Programms nicht geprüft werden. Ausnahmen unter den Klassen „Error“ und „RuntimeException“ sind ungeprüfte Ausnahmen, alles andere unter „Throwable“ wird geprüft.
160. Was ist die Basisklasse für Fehler und Ausnahme?

Ein Fehler ist eine vom Benutzer ausgeführte illegale Operation, die zu einer Anomalie im Programm führt. Ausnahmen sind unerwartete Ereignisse oder Bedingungen, die während der Ausführung des Programms auftreten. Ausnahmen unterbrechen den normalen Ablauf der Programmanweisungen.
Fehler und Ausnahmen haben beide eine gemeinsame übergeordnete Klasse, nämlich die Klasse java.lang.Throwable.
161. Ist es notwendig, dass auf jeden Try-Block ein Catch-Block folgt?
Nein, es ist nicht notwendig, den Catch-Block nach dem Try-Block in Java zu verwenden, da wir mit dem Final-Block eine weitere Kombination erstellen können. Schließlich ist der Block aufgeführt, der unabhängig davon ausgeführt wird, ob die Ausnahme ausgelöst wurde oder nicht.
162. Was ist Ausnahmeweitergabe?
Die Ausnahmeweitergabe ist ein Prozess, bei dem die Ausnahme von oben nach unten im Stapel verworfen wird. Wenn sie nicht einmal abgefangen wird, fällt die Ausnahme wieder auf die vorherige Methode zurück und so weiter, bis sie abgefangen wird oder bis sie das unterste Ende des Aufrufstapels erreicht.
163. Was passiert, wenn Sie System.exit(0) auf den Try- oder Catch-Block setzen? Wird der Block endlich ausgeführt?
System.exit(int) kann eine SecurityException auslösen. Wenn also aus Sicherheitsgründen die Ausnahme ausgelöst wird, wird der endgültige Block ausgeführt, andernfalls wird JVM geschlossen, während System aufgerufen wird. Exit(0), weshalb der Block „finally“ nicht ausgeführt wird.
164. Was verstehen Sie unter Objektklonen und wie erreichen Sie es in Java?
Dabei handelt es sich um den Prozess der Erstellung einer exakten Kopie eines beliebigen Objekts. Um dies zu unterstützen, muss eine Java-Klasse die Cloneable-Schnittstelle des java.lang-Pakets implementieren und die von der Object-Klasse bereitgestellte clone()-Methode überschreiben, deren Syntax wie folgt lautet:
Das geschützte Objekt clone() löst eine CloneNotSupportedException{ return (Object)super.clone();} aus. Falls die Cloneable-Schnittstelle nicht implementiert ist und nur die Methode überschrieben wird, führt dies in Java zu einer CloneNotSupportedException.
165. Wie wirken sich Ausnahmen auf das Programm aus, wenn es sie nicht behandelt?
Ausnahmen sind dafür verantwortlich, dass die Ausführung des Programms während der Ausführung abrupt beendet wird und der nach Auftreten der Ausnahme geschriebene Code nicht ausgeführt wird.
166. Wozu dient das letzte Schlüsselwort?
Das letzte Schlüsselwort wird verwendet, um Funktionen nicht virtuell zu machen. Standardmäßig sind alle Funktionen virtuell. Um sie nicht virtuell zu machen, verwenden wir das Schlüsselwort final.
167. Welchen Zweck erfüllen die Schlüsselwörter final, final und finalize?
ich). Finale:
final ist ein Schlüsselwort, das mit der Variablen, Methode oder Klasse verwendet wird, sodass diese nicht überschrieben werden können.
Beispiel:
Java
// Java Program to use final // keyword import java.io.*; // Driver Class class GFG { // Main function public static void main(String[] args) { final int x = 100; x = 50; } }> Ausgabe:
./GFG.java:6: error: cannot assign a value to final variable x x=50; ^ 1 error>
ii). Endlich
„finally“ ist ein Codeblock, der mit Try-Catch bei der Ausnahmebehandlung verwendet wird. Im „finally“-Block geschriebener Code wird ausgeführt, unabhängig davon, ob eine Ausnahme ausgelöst wurde oder nicht.
Beispiel:
Java
// Java Program to implement finally import java.io.*; // Driver class class GFG { // Main function public static void main(String[] args) { int x = 10; // try block try { System.out.println('Try block'); } // finally block finally { System.out.println( 'Always runs even without exceptions'); } } }> Ausgabe
Try block Always runs even without exceptions>
iii). abschließen
Es handelt sich um eine Methode, die kurz vor dem Löschen/Zerstören der Objekte aufgerufen wird, die für die Garbage Collection in Frage kommen, um Bereinigungsaktivitäten durchzuführen.
Beispiel:
Java
/*package whatever // do not write package name here */ import java.io.*; class GFG { public static void main(String[] args) { System.out.println('Main function running'); System.gc(); } // Here overriding finalize method public void finalize() { System.out.println('finalize method overridden'); } }> Ausgabe
Main function running>
168. Was ist der Unterschied zwischen this() und super() in Java?
Das( ) | super( ) |
|---|---|
Es stellt die aktuelle Instanz der Klasse dar. | Es stellt die aktuelle Instanz der übergeordneten Klasse dar. |
Ruft den Standardkonstruktor derselben Klasse auf. | Ruft den Standardkonstruktor der Basisklasse auf. |
Greifen Sie auf die Methoden derselben Klasse zu. | Greifen Sie auf die Methoden der übergeordneten Klasse zu. |
Zeigt auf die aktuelle Klasseninstanz. | Zeigt auf die Superklasseninstanz. |
169. Was ist Multitasking?
Unter Multitasking versteht man in Java die Fähigkeit eines Programms, mehrere Aufgaben gleichzeitig auszuführen. Threads, bei denen es sich um schnelle Operationen handelt, die in einem einzelnen Programm enthalten sind, können dies tun. Das gleichzeitige Ausführen mehrerer Dinge wird als Multitasking bezeichnet.
Beispiel:
Java
// Java program for multitasking import java.io.*; public class MyThread extends Thread { public void run() { // Code to be executed in this thread for (int i = 0; i < 10; i++) { System.out.println( 'Thread ' + Thread.currentThread().getId() + ': ' + i); } } } public class GFG { public static void main(String[] args) { MyThread thread1 = new MyThread(); MyThread thread2 = new MyThread(); // Start the threads thread1.start(); thread2.start(); } }> 170. Was meinen Sie mit einem Multithread-Programm?
Multithread-Programme in Java enthalten Threads, die gleichzeitig statt nacheinander ausgeführt werden. Ein Computer kann seine Ressourcen effizienter nutzen, indem er mehrere Aufgaben gleichzeitig kombiniert. Jedes Programm mit Multithreading ermöglicht es mehr als einem Benutzer, das Programm gleichzeitig zu verwenden, ohne mehrere Kopien ausführen zu müssen. Ein Multithread-Programm ist darauf ausgelegt, mehrere Prozesse gleichzeitig auszuführen, was die Leistung eines Programms verbessern kann und es dem Programm ermöglicht, mehrere Prozessoren zu nutzen und den Gesamtdurchsatz zu verbessern.
171. Was sind die Vorteile von Multithreading?
Die Verwendung von Multithreading bietet mehrere Vorteile:
- Reaktionsfähigkeit: Die Reaktionsfähigkeit der Benutzer erhöht sich, da die interaktive Multithreading-Anwendung die Ausführung von Code auch dann ermöglicht, wenn der Abschnitt blockiert ist oder ein längerer Prozess ausgeführt wird.
- Ressourcenfreigabe: Der Prozess kann aufgrund von Multithreading eine Nachrichtenübermittlung und einen gemeinsam genutzten Speicher durchführen.
- Wirtschaftlichkeit: Wir sind in der Lage, Speicher zu teilen, wodurch die Prozesse wirtschaftlich sind.
- Skalierbarkeit: Multithreading auf mehreren CPU-Maschinen erhöht die Parallelität.
- Bessere Kommunikation: Thread-Synchronisierungsfunktionen verbessern die Kommunikation zwischen Prozessen.
- Nutzung der Multiprozessor-Architektur
- Minimierter Systemressourcenverbrauch
172. Auf welche zwei Arten kann Thread erstellt werden?
Multithreading ist eine Java-Funktion, die die gleichzeitige Ausführung von zwei oder mehr Teilen eines Programms zur maximalen Auslastung der CPU ermöglicht. Im Allgemeinen handelt es sich bei Threads um kleine, leichtgewichtige Prozesse mit separaten Ausführungspfaden. Diese Threads verwenden gemeinsam genutzten Speicher, agieren jedoch unabhängig voneinander. Wenn also ein Thread ausfällt, hat dies keine Auswirkungen auf die anderen Threads. Es gibt zwei Möglichkeiten, einen Thread zu erstellen:
- Durch Erweiterung der Thread-Klasse
- Durch die Implementierung einer Runnable-Schnittstelle.
Durch Erweiterung der Thread-Klasse
Wir erstellen eine Klasse, die das erweitert java.lang.Thread-Klasse . Diese Klasse überschreibt die in der Thread-Klasse verfügbare run()-Methode. Ein Thread beginnt sein Leben innerhalb der run()-Methode.
Syntax:
public class MyThread extends Thread { public void run() { // thread code goes here } }>Durch die Implementierung der Runnable-Schnittstelle
Wir erstellen eine neue Klasse, die implementiert java.lang.Runnable Schnittstelle und überschreiben Sie die run()-Methode. Dann instanziieren wir ein Thread-Objekt und rufen die start()-Methode für dieses Objekt auf.
Syntax:
public class MyRunnable implements Runnable { public void run() { // thread code goes here } }>173. Was ist ein Thread?
Threads in Java sind leichtgewichtige Unterprozesse mit der kleinsten Prozesseinheit und verfügen außerdem über separate Ausführungspfade. Diese Threads verwenden gemeinsam genutzten Speicher, agieren jedoch unabhängig voneinander, wenn also eine Ausnahme in Threads auftritt, die die Arbeit anderer Threads nicht beeinträchtigt, obwohl sie denselben Speicher gemeinsam nutzen. Ein Thread verfügt über einen eigenen Programmzähler, Ausführungsstapel und lokale Variablen, teilt sich jedoch denselben Speicherplatz mit anderen Threads im selben Prozess. Java bietet integrierte Unterstützung für Multithreading durch Ausführbare Schnittstelle und das Thread-Klasse .
174. Zwischen Prozess und Thread unterscheiden?
Ein Prozess und ein Thread sind beide Ausführungseinheiten in einem Computersystem, unterscheiden sich jedoch in mehreren Punkten:
Verfahren | Faden |
|---|---|
Ein Prozess ist ein Programm in Ausführung. | Ein Thread ist eine einzelne Folge von Anweisungen innerhalb eines Prozesses. |
Der Vorgang dauert länger, bis er beendet ist. | Das Beenden des Threads dauert weniger lange. |
Der Prozess benötigt mehr Zeit für den Kontextwechsel. | Der Thread benötigt weniger Zeit für den Kontextwechsel. |
Der Prozess ist hinsichtlich der Kommunikation weniger effizient. | Thread ist hinsichtlich der Kommunikation effizienter. |
Der Prozess ist isoliert. | Threads teilen sich den Speicher. |
Der Prozess verfügt über einen eigenen Prozesskontrollblock, Stapel und Adressraum. | Thread verfügt über eine übergeordnete Leiterplatte, einen eigenen Thread-Kontrollblock sowie einen Stack und einen gemeinsamen Adressraum. |
Der Prozess tauscht keine Daten untereinander aus. | Threads teilen Daten miteinander. |
175. Beschreiben Sie den Lebenszyklus des Threads?

A Faden in Java existiert zu jedem Zeitpunkt in einem der folgenden Zustände. Ein Thread befindet sich zu jedem Zeitpunkt nur in einem der angezeigten Zustände:
- Neu: Der Thread wurde erstellt, aber noch nicht gestartet.
- Lauffähig: Der Thread wird ausgeführt, führt seine Aufgabe aus oder ist zur Ausführung bereit, wenn keine anderen Threads mit höherer Priorität vorhanden sind.
- Verstopft: Der Thread ist vorübergehend angehalten und wartet auf eine Ressource oder ein Ereignis.
- Warten: Der Thread wartet darauf, dass ein anderer Thread eine Aufgabe ausführt oder dass eine bestimmte Zeitspanne verstrichen ist.
- Beendet: Der Thread hat seine Aufgabe abgeschlossen oder wurde von einem anderen Thread beendet.
176. Erklären Sie die suspend()-Methode unter der Thread-Klasse.
Die suspend()-Methode der Thread-Klasse in Java unterbricht vorübergehend die Ausführung eines Threads. Wenn ein Thread angehalten wird, geht er in einen blockierten Zustand über und wird vom Betriebssystem nicht geplant, was bedeutet, dass er seine Aufgabe erst dann ausführen kann, wenn er wieder aufgenommen wird. In der modernen Programmiersprache Java gibt es sicherere und flexiblere Alternativen zu den suspend()-Methoden. Diese Methode gibt keinen Wert zurück.
Syntax:
public final void suspend();>
Beispiel:
Java
// Java program to show thread suspend() method import java.io.*; class MyThread extends Thread { public void run() { for (int i = 0; i < 10; i++) { System.out.println(' Running thread : ' + i); try { Thread.sleep(1000); } catch (Interrupted_Exception e) { e.printStackTrace(); } } } } class GFG { public static void main(String[] args) { MyThread t1 = new MyThread(); t1.start(); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } // suspend the execution of the thread t1.suspend(); System.out.println('Suspended thread '); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } // resume the execution of the thread t1.resume(); System.out.println('Resumed thread'); } }> Ausgabe:
Thread running: 0 Thread running: 1 Thread running: 2 Suspended thread Resumed thread Thread running: 3 Thread running: 4 Thread running: 5 Thread running: 6 Thread running: 7 Thread running: 8 Thread running: 9>
177. Erklären Sie den Hauptthread unter Thread-Klassenausführung.
Java bietet integrierte Unterstützung für Multithread-Programmierung. Der Hauptthread gilt als übergeordneter Thread aller anderen Threads, die während der Programmausführung erstellt werden. Der Hauptthread wird automatisch erstellt, wenn das Programm gestartet wird. Dieser Thread führt die Hauptmethode des Programms aus. Es ist für die Ausführung der Hauptlogik des Java-Programms sowie für die Verarbeitung der Benutzereingabevorgänge verantwortlich. Der Hauptthread dient als Basisthread, aus dem alle anderen untergeordneten Threads hervorgehen.

178. Was ist ein Daemon-Thread?
Ein Daemon-Thread in Java ist ein Thread mit niedriger Priorität, der zum Ausführen von Hintergrundoperationen oder Aufgaben verwendet wird, die zur kontinuierlichen Ausführung verwendet werden. B. Garbage Collection, Signal Dispatches, Action Listener usw. Daemon-Threads in Java haben eine niedrigere Priorität als Benutzer-Threads, was bedeutet, dass sie nur ausgeführt werden können, wenn keine Benutzer-Threads ausgeführt werden. Daemon-Threads in Java sind nützliche Funktionen, die für Hintergrundaufgaben erforderlich sind, die kein explizites Herunterfahren oder Abschließen erfordern. Es ermöglicht eine effizientere Nutzung der Systemressourcen und dient zur Vereinfachung von Ressourcen sowie zur Vereinfachung lang andauernder Aufgaben.
179. Auf welche Weise kann ein Thread in den Wartezustand wechseln?
Thread ist ein einfacher Prozess, der gleichzeitig mit dem anderen Thread innerhalb eines einzelnen Prozesses ausgeführt wird. Jeder Thread kann eine andere Aufgabe ausführen und die Ressourcen innerhalb eines einzelnen Prozesses teilen. Threads in Java können auf viele verschiedene Arten in den Wartezustand gelangen:
- Aufruf der Sleep()-Methode: Der Schlaf ()-Methode wird verwendet, um die Ausführung des Threads für eine bestimmte Zeitspanne anzuhalten. Während der Thread angehalten ist, geht er in den Wartezustand über.
- Wait()-Methode: Diese Methode wird verwendet, um einen Thread zu warten, bis der andere Thread ihm das Aufwachen signalisiert. Der Thread geht in den Wartezustand, bis er eine Benachrichtigung von einem anderen Thread erhält.
- Join()-Methode: Mit der Join()-Methode kann darauf gewartet werden, dass der Thread die Ausführung beendet. Der aufrufende Thread geht in den Wartezustand, bis der Ziel-Thread abgeschlossen ist.
- Warten auf E/A-Vorgänge: Wenn der Thread auf den Abschluss des Eingabe-/Ausgabevorgangs wartet, wechselt er in den Wartezustand, bis der Vorgang abgeschlossen ist.
- Synchronisierungsprobleme: Wenn in einer Multithread-Anwendung Synchronisierungsprobleme auftreten, gehen Threads möglicherweise in den Wartezustand, bis die Synchronisierungsprobleme behoben sind.
180. Wie erfolgt Multithreading auf einem Computer mit einer einzelnen CPU?
Java verwendet eine Technik namens Time-Sharing, die allgemein als Time-Slicing bezeichnet wird, um Multithreading auf Computern mit einer einzigen CPU zu implementieren. Der Anschein einer parallelen Ausführung entsteht dadurch, dass die CPU zwischen aktiven Threads wechselt. Das Betriebssystem ist dafür verantwortlich, jedem Thread nacheinander CPU-Zeit zuzuweisen und die Threads zu planen.
Um zu verhindern, dass Threads miteinander interagieren und Race-Situationen oder andere Probleme entstehen, verfügt Java über eine Reihe von Möglichkeiten, das Verhalten von Threads zu steuern, einschließlich Synchronisierung und Sperrung. Es ist möglich, Multithread-Programmierer zu erstellen, die auf einer Maschine mit einer einzigen CPU korrekt und effektiv arbeiten, indem die Interaktion zwischen Threads reguliert und sichergestellt wird, dass wichtige Codeteile synchronisiert werden. Im Gegensatz zur Ausführung desselben Programms auf einem Computer mit mehreren CPUs oder Kernen kann Multithreading auf einer einzelnen CPU nur den Anschein von Parallelität erwecken, und die tatsächlichen Leistungssteigerungen können bescheiden sein. Das Betriebssystem teilt die CPU-Zeit, die verfügbar ist, wenn zahlreiche Threads auf einer einzelnen CPU ausgeführt werden, in kleine Zeitscheiben auf und gibt jedem Thread eine Zeitscheibe für die Ausführung. Durch den schnellen Wechsel zwischen den Threads durch das Betriebssystem entsteht der Anschein einer parallelen Ausführung. Der Wechsel zwischen Threads scheint unmittelbar zu erfolgen, da die Zeitintervalle oft sehr klein sind und in der Größenordnung von Millisekunden oder Mikrosekunden liegen.
Fragen zum Java-Interview für Erfahrene
181. Welche verschiedenen Arten von Thread-Prioritäten gibt es in Java? Und was ist die Standardpriorität eines von JVM zugewiesenen Threads?
Prioritäten in Threads sind ein Konzept, bei dem jeder Thread eine Priorität hat. In der Laiensprache kann man sagen, dass jedes Objekt Priorität hat, was durch Zahlen von 1 bis 10 dargestellt wird. Es gibt verschiedene Arten von Thread-Eigenschaften in Java, die unten aufgeführt sind:
- MIN_PRIORITÄT
- MAX_PRIORITY
- NORM_PRIORITY
Standardmäßig wird dem Thread NORM_PRIORITY zugewiesen.
182. Warum ist Garbage Collection in Java notwendig?
Für Java ist die Garbage Collection notwendig, um Speicherlecks zu vermeiden, die zum Absturz und zur Instabilität des Programms führen können. Es gibt keine Möglichkeit, die Garbage Collection in Java zu vermeiden. Im Gegensatz zu C++ hilft die Garbage Collection in Java Programmierern, sich auf die Entwicklung der Anwendung zu konzentrieren, anstatt sich mit der Verwaltung von Speicherressourcen und der Sorge über Speicherverluste befassen zu müssen. Die Java Virtual Machine (JVM) verwaltet den Speicher regelmäßig automatisch, indem sie einen Garbage Collector ausführt, der den ungenutzten Speicher in der Anwendung freigibt. Durch die Garbage Collection wird der Java-Speicher effizienter, da nicht referenzierte Objekte aus dem Heap-Speicher entfernt werden.
183. Was ist der Nachteil der Garbage Collection?
Abgesehen von vielen Vorteilen hat Garbage Collector bestimmte unten aufgeführte Nachteile:
- Der Hauptnachteil der Garbage Collection besteht darin, dass sie zu Pausen bei der Ausführung einer Anwendung führen kann, da sie den Speicher löscht, was die Leistung der Anwendung verlangsamt.
- Der Prozess der Garbage Collection ist nicht deterministisch, was es schwierig macht, vorherzusagen, wann die Garbage Collection stattfindet, was zu unvorhersehbarem Verhalten in Anwendungen führt. Wenn wir beispielsweise ein Programm schreiben, ist es für Programmierer schwierig zu entscheiden, ob das Problem durch die Speicherbereinigung oder andere Faktoren im Programm verursacht wird.
- Die Speicherbereinigung kann auch die Speichernutzung erhöhen, wenn das Programm viele kurzlebige Objekte erstellt und verwirft.
184. Erklären Sie den Unterschied zwischen einer Minor-, Major- und Full-Garbage-Collection.
Die Java Virtual Machine (JVM) entfernt Objekte, die nicht mehr verwendet werden, mithilfe eines Garbage Collectors, der diese Objekte regelmäßig überprüft und entfernt. In der JVM gibt es verschiedene Arten der Speicherbereinigung, jede mit unterschiedlichen Eigenschaften und Auswirkungen auf die Leistung. Die wichtigsten Arten der Garbage Collection sind:
- Kleinere Müllsammlung: Diese Art der Garbage Collection, auch als Garbage Collection der jungen Generation bekannt, wird verwendet, um Speicher zu sammeln und zurückzugewinnen, der von kurzlebigen Objekten (Objekten, die schnell erstellt und verworfen werden) verwendet wird.
- Große Müllabfuhr: Diese Art der Garbage Collection, auch als Garbage Collection der alten Generation bekannt, wird verwendet, um Speicher zu sammeln und zurückzugewinnen, der von langlebigen Objekten verwendet wird (Objekte, die mehrere kleinere Garbage Collections überleben und zur alten Generation hochgestuft werden).
- Vollständige Müllabfuhr: Bei der vollständigen Müllabfuhr werden Erinnerungen aller Generationen gesammelt und zurückgewonnen, auch Erinnerungen von Jung und Alt. Eine vollständige Garbage Collection dauert normalerweise länger als eine kleinere oder größere Garbage Collection, was dazu führt, dass die App vorübergehend angehalten wird.
185. Wie erkennt man große und kleine Garbage Collections in Java?
Die große Garbage Collection erfolgt im Survivor-Bereich und die kleinere Garbage Collection im Eden-Bereich, um eine Mark-and-Sweep-Routine durchzuführen. Und wir können beide anhand der Ausgabe identifizieren, bei der die Nebensammlung GC ausgibt, während die Hauptsammlung Vollständige GC ausgibt, wenn die Garbage-Collection-Protokollierung mit -XX:PrintGCDetails oder verbose:gc aktiviert ist.
186. Was ist ein Speicherverlust und wie wirkt er sich auf die Speicherbereinigung aus?
In Java können Speicherlecks durch eine Vielzahl von Faktoren verursacht werden, z. B. durch das nicht ordnungsgemäße Schließen von Ressourcen, das Halten von Objektreferenzen länger als nötig oder das unnötige Erstellen zu vieler Objekte. Es gibt Situationen, in denen der Garbage Collector keine Objekte sammelt, weil ein Verweis auf diese Objekte vorhanden ist. In solchen Situationen, in denen die Anwendung viele Objekte erstellt und diese nicht verwendet und jedes Objekt über einige gültige Referenzen verfügt, kann ein Garbage Collector in Java die Objekte nicht zerstören. Diese nutzlosen Objekte, die dem Programm keinen Wert bieten, werden als Speicherlecks bezeichnet. Speicherlecks können sich negativ auf die Garbage Collection auswirken, indem sie den Garbage Collector daran hindern, ungenutzten Speicher zurückzugewinnen. Dieses Verhalten führt zu einer langsamen Leistung oder manchmal zu einem Systemausfall. In einem Programm ist es wichtig, Speicherlecks durch die ordnungsgemäße Verwaltung von Ressourcen und Objektreferenzen zu vermeiden.
Beispiel:
Java
// Java Program to demonstrate memory leaks import java.io.*; import java.util.Vector; class GFG { public static void main(String[] args) { Vector a = new Vector(21312312); Vector b = new Vector(2147412344); Vector c = new Vector(219944); System.out.println('Memory Leak in Java'); } }> Ausgabe:
Exception in thread 'main' java.lang.OutOfMemoryError: Java heap space at java.base/java.util.Vector.(Vector.java:142) at java.base/java.util.Vector.(Vector.java:155) at GFG.main(GFG.java:9)>
187. Nennen Sie einige Klassen, die im Paket java.util.regex vorhanden sind.
Reguläre Ausdrücke oder Regex in Java sind eine API, die zum Suchen und Bearbeiten von Zeichenfolgen in Java verwendet wird. Es erstellt String-Muster, die die benötigten Daten aus den Strings extrahieren oder ein Muster verallgemeinern können.
Es gibt drei Klassen in java.util.regex, die unten erwähnt werden:
- Musterklasse: Kann Muster definieren
- Matcher-Klasse: Kann Match-Operationen für Text mithilfe von Mustern durchführen
- PatternSyntaxException-Klasse: Kann auf einen Syntaxfehler in einem regulären Ausdrucksmuster hinweisen.
Abgesehen von den 3 Klassen besteht das Paket auch aus einer einzigen Schnittstelle, der MatchResult-Schnittstelle, die zur Darstellung des Ergebnisses einer Match-Operation verwendet werden kann.
188. Schreiben Sie einen regulären Ausdruck, um ein Passwort zu validieren. Ein Passwort muss mit einem Alphabet beginnen und von alphanumerischen Zeichen gefolgt werden; Seine Länge muss zwischen 8 und 20 liegen.
regex = ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&-+=()])(?=S+$).{8, 20}$>Erläuterung:
- ^ wird als Startzeichen der Zeichenfolge verwendet.
- (?=.*[0-9]) für eine Ziffer muss mindestens einmal vorkommen.
- (?=.*[a-z]), das für ein Kleinbuchstabe verwendet wird, muss mindestens einmal vorkommen.
- (?=.*[A-Z]) wird für ein Großbuchstabe verwendet, das mindestens einmal in der Teilzeichenfolge vorkommen muss.
- (?=.*[@#$%^&-+=()] wird für ein Sonderzeichen verwendet, das mindestens einmal vorkommen muss.
- (?=S+$) Leerzeichen sind in der gesamten Zeichenfolge nicht zulässig.
- .{8, 20} wird für mindestens 8 Zeichen und höchstens 20 Zeichen verwendet.
- $ wird für das Ende der Zeichenfolge verwendet.
189. Was ist JDBC?
JDBC Zur Verknüpfung von Java-Anwendungen und relationalen Datenbanken wird eine Standard-API verwendet. Es bietet eine Sammlung von Klassen und Schnittstellen, die es Programmierern ermöglichen, die Programmiersprache Java für die Kommunikation mit der Datenbank zu verwenden. Die Klassen und die Schnittstelle von JDBC ermöglichen es der Anwendung, von Benutzern gestellte Anforderungen an die angegebene Datenbank zu senden. Es gibt im Allgemeinen vier Komponenten von JDBC, über die es mit der Datenbank interagiert:
- JDBC-API
- JDBC-Treibermanager
- JDBC-Testsuite
- JDBC-ODBC-Brückentreiber

190. Was ist ein JDBC-Treiber?
JDBC-Treiber ist eine Softwarekomponente, die es einer Java-Anwendung ermöglicht, mit der Datenbank zu interagieren. JDBC stellt die Implementierung der JDBC-API für ein bestimmtes Datenbankverwaltungssystem bereit, die es ermöglicht, die Datenbank zu verbinden, SQL-Anweisungen auszuführen und Daten abzurufen. Es gibt vier Arten von JDBC-Treibern:
- JDBC-ODBC Bridge-Treiber
- Native-API-Treiber
- Netzwerkprotokolltreiber
- Dünner Treiber

191. Welche Schritte sind zum Herstellen einer Verbindung zur Datenbank in Java erforderlich?
Es gibt bestimmte Schritte, um die Datenbank und das Java-Programm zu verbinden, wie unten beschrieben:
- Importieren Sie die Pakete
- Laden Sie die Treiber mit der Methode forName()
- Registrieren Sie die Treiber mit DriverManager
- Stellen Sie eine Verbindung mithilfe des Connection-Klassenobjekts her
- Erstellen Sie eine Erklärung
- Führen Sie die Abfrage aus
- Schließen Sie die Verbindungen
192. Was sind die JDBC-API-Komponenten?
JDBC-API-Komponenten stellen verschiedene Methoden und Schnittstellen für die einfache Kommunikation mit den Datenbanken bereit. Außerdem werden Pakete wie Java Se und Java EE bereitgestellt, die die Möglichkeit bieten, WORA (Write Once Run Anywhere) auszuführen.
Syntax:
java.sql.*;>
193. Was ist die JDBC-Verbindungsschnittstelle?
Die Java Database Connectivity Interface (JDBC) ist eine Softwarekomponente, die es Java-Anwendungen ermöglicht, mit Datenbanken zu interagieren. Um die Verbindung zu verbessern, benötigt JDBC Treiber für jede Datenbank.
194. Was bedeutet die JDBC-ResultSet-Schnittstelle?
Die JDBC ResultSet-Schnittstelle wird verwendet, um die Daten aus der Datenbank zu speichern und in unserem Java-Programm zu verwenden. Wir können ResultSet auch verwenden, um die Daten mithilfe der updateXXX()-Methoden zu aktualisieren. Das ResultSet-Objekt zeigt den Cursor vor die erste Zeile der Ergebnisdaten. Mit der Methode next() können wir das ResultSet durchlaufen.
195. Was ist das JDBC-Rowset?
Ein JDBC-RowSet bietet eine Möglichkeit, die Daten in Tabellenform zu speichern. RowSet ist eine Schnittstelle in Java, die im Paket java.sql verwendet werden kann. Die Verbindung zwischen dem RowSet-Objekt und der Datenquelle bleibt während seines gesamten Lebenszyklus bestehen. RowSets werden basierend auf der unten aufgeführten Implementierung in fünf Kategorien eingeteilt:
- JdbcRowSet
- CachedRowSet
- WebRowSet
- FilteredRowSet
- JoinRowSet
196. Welche Rolle spielt die JDBC DriverManager-Klasse?
Die JDBC-DriverManager-Klasse fungiert als Schnittstelle für Benutzer und Treiber. Es wird auf viele Arten verwendet, wie unten erwähnt:
- Es wird verwendet, um eine Verbindung zwischen einer Java-Anwendung und der Datenbank herzustellen.
- Hilft dabei, den Überblick über die verfügbaren Treiber zu behalten.
- Es kann hilfreich sein, eine Verbindung zwischen einer Datenbank und den entsprechenden Treibern herzustellen.
- Es enthält alle Methoden, die die Datenbanktreiberklassen registrieren und abmelden können.
- Die Methode DriverManager.registerDriver() kann die Liste der Treiberklassen verwalten, die sich selbst registriert haben.
Fragen zum Java-Unterschied im Vorstellungsgespräch
197. Unterscheiden Sie zwischen Iterable und Iterator.
Wiederholbar | Iterator |
|---|---|
Iterable bietet eine Möglichkeit, eine Folge von Elementen zu durchlaufen. | Iterator hilft beim sequentiellen Durchlaufen einer Sammlung von Elementen. |
| Iterator() Methode gibt einen Iterator zurück. | hasNext() Und nächste() Methoden sind erforderlich. |
| entfernen() Methode ist optional. | entfernen() Im Iterator ist eine Methode erforderlich. |
Beispiele sind Liste, Warteschlange und Satz. | Beispiele sind ListIterator, Enumeration und ArrayIterator. |
198. Unterscheiden Sie zwischen Liste und Menge.
Aufführen | Satz |
|---|---|
Bestellt | Ungeordnet |
Liste erlaubt Duplikate. | Set lässt keine doppelten Werte zu. |
Der Zugriff auf die Liste erfolgt über den Index. | Der Zugriff auf das Set erfolgt über Hashcode. |
Es können mehrere Nullelemente gespeichert werden. | Ein Nullelement kann nur einmal gespeichert werden. |
Beispiele sind ArrayList, LinkedList usw. | Beispiele sind HashSet und TreeSet. LinkedHashSet usw. |
199. Unterscheiden Sie zwischen Liste und Karte.
Aufführen | Karte |
|---|---|
Die Listenschnittstelle ermöglicht doppelte Elemente. | Die Karte erlaubt keine doppelten Elemente. |
Die Liste behält die Einfügungsreihenfolge bei. | Die Karte behält die Einfügereihenfolge nicht bei. |
Es können mehrere Nullelemente gespeichert werden. | Die Karte erlaubt höchstens einen einzelnen Nullschlüssel und eine beliebige Anzahl von Nullwerten. |
Die Liste stellt die Methode get() bereit, um das Element an einem angegebenen Index abzurufen. | Die Karte bietet keine Get-Methode zum Abrufen der Elemente an einem angegebenen Index. |
Liste wird durch ArrayList usw. implementiert. | Map wird von HashMap, TreeMap, LinkedHashMap implementiert |
200. Unterscheiden Sie zwischen Warteschlange und Stapel.
Warteschlange | Stapel |
|---|---|
Die Warteschlangendatenstruktur dient zum Speichern von Elementen und zum Durchführen von Vorgängen wie dem Einreihen in die Warteschlange, dem Entfernen aus der Warteschlange oder dem Ende der Warteschlange. | Die Stapeldatenstruktur wird zum Speichern von Elementen und zum Ausführen von Vorgängen wie „Push“ und „Pop“ von der Oberseite des Stapels verwendet. |
Warteschlangendatenstruktur Implementiert die FIFO-Reihenfolge. | Stapeldatenstruktur Implementiert die LIFO-Reihenfolge. |
Das Einfügen und Löschen in Warteschlangen erfolgt am gegenüberliegenden Ende der Liste. Das Löschen erfolgt am Anfang der Liste und das Einfügen am Ende der Liste. | Das Einfügen und Löschen in Stapeln erfolgt nur von einem Ende der Liste aus, das als oberstes Ende bezeichnet wird. |
Der Einfügevorgang wird als Enqueue-Vorgang bezeichnet. | Der Einfügevorgang wird Push-Vorgang genannt. |
Die Warteschlange wird im Allgemeinen zur Lösung von Problemen im Zusammenhang mit der sequentiellen Verarbeitung verwendet. | Stack wird im Allgemeinen zur Lösung von Problemen im Zusammenhang mit der Rekursion verwendet. |
201. Unterscheiden Sie zwischen PriorityQueue und TreeSet.
Prioritätswarteschlange | TreeSet |
|---|---|
Es verwendet Queue als zugrunde liegende Datenstruktur. | Es verwendet ein Set als zugrunde liegende Datenstruktur. |
Diese Datenstruktur ermöglicht doppelte Elemente | Diese Datenstruktur lässt keine doppelten Elemente zu |
Priority Queue wird von der PriorityQueue-Klasse implementiert. | TreeSet wird durch die TreeSet-Klasse implementiert. |
PriorityQueue ist in JDK 1.5 verfügbar. | TreeSet kommt in JDK 1.4. |
PriorityQueue pq = new PriorityQueue(); | reeSet ts = new TreeSet(); |
202. Unterscheiden Sie zwischen der einfach verknüpften Liste und der doppelt verknüpften Liste.
Einfach verknüpfte Liste | Doppelt verknüpfte Liste |
|---|---|
Einfach verknüpfte Listen enthalten nur zwei Segmente, nämlich Daten und Link. | Eine doppelt verknüpfte Liste enthält drei Segmente, d. h. Daten, und zwei Zeiger. |
Das Durchlaufen einer einfach verknüpften Liste ist nur in Vorwärtsrichtung möglich. | Das Durchlaufen einer doppelt verketteten Liste ist nur in beiden Richtungen vorwärts und rückwärts möglich. |
Es verbraucht weniger Speicher, da jeder einzelne Knoten nur einen Zeiger hat. | Sie benötigt mehr Speicher als eine einfach verknüpfte Liste, da jeder Knoten zwei Zeiger hat. Enthält eine Java-Methode |
Einfach zu verwenden und Knoten am Anfang der Liste einzufügen. | Etwas komplexer in der Anwendung und einfach am Ende der Liste einzufügen. |
Die zeitliche Komplexität des Einfügens und Löschens beträgt O(n). | Die zeitliche Komplexität des Einfügens und Löschens beträgt O(1). |
| | |
203. Unterscheiden Sie zwischen Failfast und Failsafe.
FailFast | Ausfallsicher |
|---|---|
Failsfast schlägt sofort fehl, wenn während der Iterationszeit gleichzeitige Änderungen erkannt werden. | Failsafe durchläuft weiterhin die ursprüngliche Sammlung und erstellt außerdem eine Kopie zur Änderung. |
Failfast wird im Allgemeinen in Single-Threaded-Umgebungen verwendet. | Failsafe wird in Multithread-Umgebungen verwendet. |
Failfast erlaubt keine Änderungen während der Iteration. | Failsafe ermöglicht Änderungen während der Iterationszeit. |
Failfast ist im Vergleich zu Failsafe schnell, da die Sammlung nicht kopiert werden muss. | Failsafe ist im Vergleich zu Failfast im Allgemeinen langsam. |
FailFast-Würfe ConcurrentModificationException wenn die Sammlung während der Iteration geändert wird. | FailSafe löst keine Ausnahme aus, sondern erstellt stattdessen eine Kopie der Sammlung zur Iteration. |
204. Unterscheiden Sie zwischen HashMap und TreeMap.
HashMap | TreeMap |
|---|---|
Hasmap verwendet eine Hashtabelle, um Schlüssel-Wert-Paare zu speichern. | Treemap verwendet Rot-Schwarz-Bäume zum Speichern von Schlüssel-Wert-Paaren. |
Hashmap behält keine bestimmte Reihenfolge für Schlüssel-Wert-Paare bei. | Treemap behält eine natürliche Reihenfolge basierend auf den Schlüsseln bei. |
Die Reihenfolge der Iteration ist in der Hashmap nicht garantiert. | Die Iteration erfolgt in sortierter Reihenfolge basierend auf Schlüsseln. |
Hashmaps sind im Vergleich zu Treemaps schneller abzurufen. | Der Abruf in Treemap ist langsamer, da zum Suchen von Schlüsseln die Baumdurchquerung verwendet wird. |
Hashmap wird mithilfe eines Arrays verknüpfter Listen implementiert. | TreeMap wird mithilfe eines Rot-Schwarz-Baums implementiert. |
Hashmap verwendet die Methode equal() der Object-Klasse, um Schlüssel zu vergleichen. | TreeMap verwendet die Methode „compareTo()“, um Schlüssel zu vergleichen. |
205. Unterscheiden Sie zwischen Queue und Deque.
Warteschlange | Worüber |
|---|---|
Die Warteschlange ist eine lineare Datenstruktur, die zum Speichern einer Sammlung von Elementen verwendet wird. | Deque, auch als Double-Ended Queue bekannt, ist ebenfalls eine lineare Datenstruktur, die eine Sammlung von Elementen mit Operationen zum Entfernen und Hinzufügen an beiden Enden speichert. |
Elemente in der Warteschlange können nur am Ende der Datenstruktur eingefügt werden. | Elemente können von beiden Enden der Datenstruktur eingefügt werden. |
Die Warteschlange kann mithilfe eines Arrays oder einer verknüpften Liste implementiert werden. | Das Entfernen aus der Warteschlange kann mithilfe von Circular Array oder Double Linked List implementiert werden. |
Warteschlangen werden im Allgemeinen zur Implementierung einer Warteliste oder Aufgabenwarteschlange verwendet. | Deque wird verwendet, um einen Stapel zu implementieren oder Elemente von beiden Enden aus der Warteschlange zu entfernen. |
| | |
206. Unterscheiden Sie zwischen HashSet und TreeSet.
HashSet | TreeSet |
|---|---|
HashSet ist ungeordnet. | TreeSet basiert auf natürlicher Ordnung. |
HashSet erlaubt Nullelemente. | TreeSet erlaubt keine Nullelemente. |
HashSet wird von der HashSet-Klasse implementiert. | TreeSet wird von der TreeSet-Klasse implementiert. |
HashSet hs = new HashSet(); | TreeSet ts = new TreeSet(); |
Fragen zum Java-Interview – FAQs
Q1. Wie hoch ist das Gehalt eines Java-Entwicklers in Indien?
Verschiedenen Quellen zufolge liegt das durchschnittliche Gehalt eines Java-Backend-Entwicklers bei mehr als 14 Lakhs pro Jahr, was 30 % mehr ist als bei jeder anderen Entwicklerrolle . Hier können Sie sich auch unseren neuesten Kurs ansehen GeekforGeeks-Übungsportal kann auch hilfreich sein.
F5. Wie kann ich in einem Java-Interview hervorstechen?
Um in einem Java-Interview hervorzustechen, demonstrieren Sie ein tiefes Verständnis der Java-Konzepte und praktischen Anwendungen. Stellen Sie Ihre Fähigkeiten zur Problemlösung unter Beweis, indem Sie Ihre Herangehensweise an komplexe Szenarien erläutern und effiziente Lösungen anbieten. Heben Sie außerdem alle relevanten Projekte oder Beiträge hervor, die Sie für die Java-Community geleistet haben. Auch Begeisterung, gute Kommunikation und Lernbereitschaft können einen positiven Eindruck hinterlassen.



