Fragen und Antworten zu Java-Interviews im Jahr 2022
Veröffentlicht: 2022-08-03Bist du ein Programmierer? Und Sie haben sich für die Programmiersprache Java als Ihre bevorzugte Nische entschieden, um Karriere zu machen? Herzliche Glückwünsche! Sie haben richtig gewählt. Laut Statistik verdient ein US-Programmierer durchschnittlich 105.801 US-Dollar pro Jahr. Das sind durchschnittlich 50,87 $ pro Stunde, 2.035 $ pro Woche und 8.817 $ pro Monat. Ist das nicht beeindruckend?
Aber eine Chance auf Ihren Traumjob als Java-Programmierer zu bekommen, ist jenseits von Wunschdenken. Von 8 Millionen Java-Programmierern weltweit sind nur etwa 56.585 in den USA erwerbstätig, was die Stellensuche als Java-Programmierer ziemlich konkurrenzfähig macht. Wenn Sie diesen Traumjob ergattern müssen, müssen Sie sowohl in den grundlegenden als auch in den komplexen Aspekten der Programmiersprache Java gut gerüstet sein.
Jetzt wissen Sie, wie wettbewerbsintensiv es ist, einen Job als Java-Programmierer zu bekommen, und die Voraussetzungen, um zu den wenigen zu gehören, die einen Job als Java-Programmierer bekommen. Denken Sie daran, dass Erfolg eine Funktion der Vorbereitung auf Gelegenheitstreffen ist. Im weiteren Verlauf haben wir einen Frage-und-Antwort-Leitfaden entwickelt, der Ihnen dabei hilft, die Interviewphase zu überstehen und möglicherweise Ihren Traumjob zu bekommen. Diese Liste wurde mit Hilfe des Artikels „Vorbereitung auf ein Java-Interview – Fragen und Antworten zu Apollotechnical“ zusammengestellt. Machen wir weiter.
Grundlegende Java-Interviewfragen für Studienanfänger

Was verstehst du unter Java?
Java ist eine vielseitige, objektorientierte und plattformübergreifende Programmiersprache, die auf 3 Milliarden Geräten weltweit für verschiedene Aufgaben wie Anwendungen für soziale Netzwerke, Audio- und Videoprogramme, Spiele, massive Datenverarbeitung, eingebettete Geräte und so weiter verwendet wird.
Vergleichen Sie zwischen Java und Python
In ihrer Einfachheit ist Java eine universelle, objektorientierte Programmiersprache, die auf Klassen basiert, aber weniger erforderliche Spezifikationen aufweist. Aufgrund ihres Rufs, schnell, zuverlässig und ergebnisorientiert zu sein, ist sie die bevorzugte Programmiersprache für die Entwicklung von Anwendungen in Mobiltelefonen, Spielekonsolen, Laptops, High-End-Wissenschaftscomputern usw. Auf der anderen Seite ist Python eine übersetzte, objektorientierte und erhöhte dynamisch strukturierte Programmiersprache. Python erleichtert die Programmflexibilität und die Wiederverwendung von Code, indem Module und Pakete aktiviert werden.
Skizzieren Sie die wichtigsten Java-Features
- Java ist objektorientiert
- Java ist plattformunabhängig
- Hat eine ausgezeichnete Multithreading-Implementierung
- Verwendet einfache Sprache
- Und ist architekturneutral
Was meinst du mit einem Objekt in Java
In Java ist ein Objekt eine Komponente (auch bekannt als „eine Instanz“) einer anderen Java-Gruppierung namens „Klasse“. Jedes Objekt hat einen einzigartigen Zustand, Verhalten/Aktionen und Identität. Felder (Variablen) speichern den Zustand eines Objekts, während Methoden (Operationen) die Aktionen des Objekts darstellen. Zur Laufzeit werden Objekte aus Frameworks erstellt, die als Klassen identifiziert werden.
Ein Objekt könnte auch ein grundlegendes Element der objektbasierten Programmierung sein, das reale Entitäten darstellt.
Unterscheiden Sie zwischen Stringbuffer und Stringbuilder in der Java-Programmierung
StringBuffer und StringBuilder unterscheiden sich hauptsächlich in vier Parametern: Leistung/Geschwindigkeit, Thread-Sicherheit, Verfügbarkeit und Synchronisation. StringBuilder ist eine nicht synchronisierte Variante der StringBuffer-Klasse.
Ein weiterer Unterschied zwischen StringBuffer und StringBuilder besteht darin, dass ersterer Thread-sicher ist, während letzterer dies nicht ist.
Unterscheiden Sie zwischen JDK, JRE und JVM
Das Java Development Kit (JDK) umfasst das Schreiben, Beheben und Analysieren von Java-Programmiertools. JRE ist ein Satz von Klassen und Objekten und anderen begleitenden Dateien, die JVM benötigt, um eine Anwendung auszuführen. JVM stellt keine Softwareentwicklungstools bereit.
Das Java Development Kit (JDK) ist ein Softwareprodukt zum Erstellen von Java-Anwendungen. JRE ist ein Softwarepaket, das die Java-Klassenbibliotheken und andere Komponenten enthält, die zum Ausführen der Java-Programmierung erforderlich sind. Die Java Virtual Machine (JVM) interpretiert die Java-Byte-Sprache und schafft eine für die Ausführung geeignete Atmosphäre. JDK ist plattformspezifisch, JRE ist plattformabhängig und die JVM ist in einem höheren Maßstab plattformabhängig.
Erbschaft definieren
In Java ist Vererbung ein Prinzip, das Eigenschaften einer Klasse auf eine andere überträgt; Es ist der Rahmen in Java, durch den eine Klasse Eigenschaften von einer anderen erhält oder einer Klasse erlaubt, die Eigenschaften (Methoden und Attribute) einer anderen Klasse zu besitzen.
Was ist Klasse in Java?
Eine Klasse ist ein grundlegendes Element in der objektorientierten Programmierung. Es ist ein Format, das den Zustand und die Funktionen definiert, die der Klasseninstanziierung zugeschrieben werden. Eine Klasse ist auch eine logische Vorlage, da sie zum Erstellen von Modellen mit ähnlichen Attributen und Methoden verwendet wird.
Vergleichen Sie Überladen und Überschreiben in Java
Überladen bezieht sich darauf, Methoden derselben Klasse mit demselben Namen zu haben, aber jede hat verschiedene Kriterien oder dieselben Kriterien mit verschiedenen Typen und Reihenfolgen. Während Überschreiben bedeutet, eine Unterklasse mit denselben Techniken unter demselben Titel wie eine Oberklasse und denselben Typ von Kriterien und Rückgabewerten zu haben.
Darüber hinaus ist das Überladen ein Befehlszeilenpolymorphismus mit einer statischen Bindung und das Überladen der statischen Methode. Beim Überschreiben handelt es sich um einen Programmausführungspolymorphismus mit einer flexiblen Bindung und der Unfähigkeit, die statische Methode zu überschreiben.
Erklären Sie die Erstellung eines Thread-sicheren Singletons in Java mit Double-Checked Locking
Das Singleton-Muster ist ein bekanntes Entwurfsmuster, bei dem eine Klasse während ihrer gesamten Lebensdauer auf nur eine Instanz beschränkt ist und mehrere Clients diese Instanz gemeinsam nutzen. Das Singleton-Muster ist mit zwei Hauptaufgaben verkörpert: Die erste besteht darin, sicherzustellen, dass nur eine Klasseninstanz generiert wird. Die zweite besteht darin, eine Methode bereitzustellen, mit der jeder weltweit Zugriff auf diese bestimmte Instanz hat.
Eine der Herausforderungen, denen das Singleton-Design in einem Multithreading-Programm gegenübersteht, besteht darin sicherzustellen, dass nur eine Instanz der Klasse generiert wird, obwohl verschiedene Benutzer gleichzeitig die getInstance()-Technik aufrufen. Das doppelt geprüfte Sperrsystem behebt dieses Dilemma, indem sichergestellt wird, dass die Synchronisierung nur dann verwendet wird, wenn ein einzelner Fall von Singleton erstellt wird, wenn die Funktion getInstance() zum ersten Mal aufgerufen wird, und dass dieselbe Instanz ohne obige Synchronisierung wieder zurückgebracht wird die all diese anderen Instanzen.
Interviewfragen für Fortgeschrittene in Java

Was ist JDK? Erwähnen Sie die Varianten von JDK?
JDK steht für Java Development Kit. Das Java Development Kit (JDK) ist die Software der Wahl bei der Entwicklung jeder Java-Anwendung. Das Java Development Kit (JDK) umfasst das Schreiben, die Fehlerbehebung und die Analyse von Java-Programmiertools.
Grundsätzlich ist JDK eine Java Standard Edition- oder Java Enterprise Edition-Implementierung. Java wurde 1998 aufgrund eines bedeutenden Plattform-Upgrades in Java 2 (abgekürzt zu Java 2 SDK oder J2SDK) umbenannt. Es wurden drei separate Java-Versionen entwickelt, um verschiedene Anwendungen zu unterstützen.
- J2SE steht für Java 2 Platform, die Basic and Usual Edition, und ist für Desktop- und Serverkontexte gedacht.
- J2EE steht für Java 2 Platform, Corporate Edition, wurde für Geschäftsanwendungen entwickelt und umfasst Funktionen wie Cloud-basierte Speicherung und Unterstützung von Onlinediensten.
- J2ME (Java 2 Platform, Micro Edition) ist für installierte und mobile Geräte oder Plattformen vorgesehen.
Im Jahr 2004 wurden die Bezeichnungen der Varianten jedoch in Java ME (Micro Edition der Java-Plattform), Java EE (Enterprise Edition der Java-Plattform) bzw. Java SE (Standard Edition der Java-Plattform) geändert. Auch der Spitzname des Entwicklungskits wurde von „Java 2 SDK“ in „JDK“ geändert. Außerdem wurde der Betriebskontext in „JRE“ statt in „J2RE“ umbenannt. Die Varianten mit ihren Versionen Java SE 6 und Java EE 5 sind noch im Einsatz.
Kann ein Konstruktor einen Wert zurückgeben?
Wenn man versteht, dass ein Konstruktor nicht wie eine herkömmliche Technik ist, die während der Programmierung in Java verwendet wird, gibt er irgendwie kein bestimmtes Ergebnis zurück oder bringt es zurück, was einen großen Effekt oder Einfluss auf den Code haben könnte. Der Konstruktor kann unbegrenzte Anweisungen enthalten, aber er kann die Werte oder das Ergebnis von Anweisungen nicht zurückbringen oder zurückgeben.

Erklären Sie das Schlüsselwort „THIS“ in Java
„Dies“ ist ein spezifischer Begriff in Java, der die Entität angibt, die der Programmierer gerade ausführt. Das Schlüsselwort wird lediglich dem abweichenden Parameter vorangestellt, der sich auf die Verwendung des Operators bezieht – Punkt (.), der innerhalb einer Methode oder eines Konstruktors verwendet werden kann. Das Schlüsselwort „This“ wird nicht sehr oft verwendet, da die meisten Anwendungen dazu gedacht sind, Situationen zu vermeiden, in denen es notwendig gewesen wäre. Der Zugriff auf Instanzvariablen wird durch den Begriff „this“ bereitgestellt.
Erklären Sie das Schlüsselwort „SUPER“ in Java
In Java ist das Schlagwort „super“ ein relativer Parameter, der mit dem Konzept der Vererbung verbunden ist und sich auf übergeordnete Klasseninstanzen bezieht, vorausgesetzt, dass die abgeleitete Klasse einen Parameter in der Gruppe oder Methode mit demselben Namen wie die übergeordnete Klasse hat. Der Begriff wird hauptsächlich verwendet, wenn die Unterklasse auf einen Parameter, eine Funktion oder einen Konstruktor in der Basisklasse zugreifen muss.
Erklären Sie das Überladen von Methoden in Java
Überladen bezieht sich in Java auf Methoden mit demselben Namen und derselben Klasse, aber mit unterschiedlichen Kriterien und umgekehrt. Zwei oder mehr Techniken haben einheitliche Namen und Klassen, aber unterschiedliche Signaturen beim Überladen. Überladen ist ein Befehlszeilenpolymorphismus, der das Verhalten einer Methode dehnt und dadurch eine Überladung verursacht.
Können wir eine statische Methode in Java überladen?
In Java verhält sich die statische Methode ähnlich wie reguläre Überladungsmethoden und könnte als solche überladen werden. Allerdings muss eine zusätzliche statische Methode mit gleichem Namen, aber unterschiedlicher Methodensignatur angeboten werden, wenn die statische Methode überladen werden soll.
Definieren Sie spätes Binden
Die späte Bindung ist ein Format, das angibt, dass der Compiler keine Typprüfungen bei Methodenaufrufen und keine Argumentprüfungen durchführen und alles der Laufzeit überlassen sollte (eine Instanz befindet sich in der COM-Programmierung).
Definieren Sie den Versand dynamischer Methoden
Der dynamische Methodenversand bezieht sich auf das Auflösen oder Korrigieren eines Aufrufs einer überschriebenen Methode zur Laufzeit und nicht zur Kompilierzeit.
Warum ist die Löschfunktion in der verknüpften Liste schneller als in einem Array
Die LinkedList-Entfernungsoperation gibt O(1) zurück. Aber die ArrayList-Remove-Operation gibt im schlimmsten Fall O(n) zurück, dh beim Löschen des ersten Eintrags und O(1) im besten Szenario beim Entfernen des letzten Elements. Im Vergleich zu ArrayList ist das Löschen von LinkedList-Elementen schneller. Der Grund dafür ist, dass jedes LinkedList-Element zwei Zeiger (Adressen) hat, die auf beide benachbarten Mitglieder in der Liste zeigen. Folglich beinhaltet das Entfernen eines Knotens das Modifizieren der Referenzposition in den zwei angrenzenden Komponenten des Knotens.
Fortgeschrittene Java-Interviewfragen für erfahrene

Obwohl Vererbung ein beliebtes Hoppla-Konzept ist, ist es weniger vorteilhaft als Komposition. Erklären!
Java-Klassen können nur eine Oberklasse haben, da Mehrfachvererbungen in der Sprache nicht unterstützt werden. Bei verschiedenen Funktionalitäten, wie z. B. Lesen und Schreiben in eine Datei, ist die Zusammenstellungsstruktur vorzuziehen. Sie können es mit den Schreib- und Lesefähigkeiten eines privaten Mitglieds vergleichen. Mit Hilfe der Zusammensetzung ist es möglich, ein Aufbrechen der Verkapselung zu verhindern und gleichzeitig eine erhebliche Flexibilität zu erreichen. Unit-Tests, die aufgrund von Vererbung unmöglich sind, sind mit Hilfe von Komposition möglich.
Wie unterscheidet sich die Erstellung eines Strings mit new() von der eines Literals?
Wenn wir new() verwenden, um einen String zu generieren, wird ein neues Objekt im Heap-Speicher erstellt. Die Ausführung dauert länger und fällt daher im Vergleich zum String-Literal zurück. Wenn jedoch bereits festgelegte Daten im String für einen mit String-Literal erstellten String vorhanden sind, gibt es eine Verknüpfung derselben Daten mit der String-Variablen im String-Pool. Und dies wird erreicht, ohne einen völlig neuen String mit denselben etablierten Daten erstellen zu müssen.
Ist das Überschreiten des Speicherlimits trotz Garbage Collector in einem Programm möglich?
Ja. Das Vorhandensein eines Garbage Collectors verhindert oder verhindert in keiner Weise, dass ein Programm nicht mehr genügend Speicher hat.
Warum ist eine Synchronisation notwendig? Erläutern Sie anhand eines relevanten Beispiels
Die Synchronisierung ist ein Mechanismus, der sicherstellt, dass alle übereinstimmenden Threads gleichzeitig ausgeführt werden. Die Synchronisierung verhindert Speicherkonsistenzprobleme, die durch eine inkonsistente synergetische Speicheransicht verursacht werden. Bei einer synchronisierten Methode wird das Objekt überwacht und vom Thread an Ort und Stelle gehalten. Wenn ein anderer Thread die synchronisierte Methode ausführt, wird der aktuelle Thread angehalten, bis der vorherige Thread den Monitor freigibt.
Nehmen wir an, in einer Situation, in der es erforderlich ist, die Anzahl der Anfragen an eine bestimmte URL zu ermitteln, führt die Ausführung von mehr als einer Anfrage zwangsläufig zu einer unregelmäßigen Zählung. Angenommen, Thread 1 sieht die Anzahl als 12; es wird auf 13 erhöht, indem eins hinzugefügt wird. Gleichzeitig sieht ein anderer Thread 2 den Zählwert ebenfalls als 12 und wird in gleicher Weise durch Hinzufügen von 1 auf 13 erhöht. Diese Unvorhersagbarkeit des Zählwerts tritt auf, weil anstelle des erwarteten Endwerts von 14 das erhalten würde, was als Endwert erhalten würde Der Wert ist 13. Hier kommt die Synchronisierung ins Spiel, wenn die Funktion zunimmt (), sodass ein gleichzeitiger Zugriff auf die Zählung verhindert wird.
Können Sie den Java-Thread-Lebenszyklus erklären?
In Java ist der Lebenszyklus eines Threads definiert als die Zustandstransformationen eines Threads von der Geburt bis zum Tod. Wenn eine Thread-Instanz generiert und die start()-Funktion der Thread-Klasse aufgerufen wird, wechselt der Thread in den lauffähigen Zustand. Wenn die Thread-Klasse die Methoden sleep() oder wait() aufruft, wird der Thread nicht mehr lauffähig.
Was könnte der Kompromiss zwischen der Verwendung eines ungeordneten Arrays und der Verwendung eines geordneten Arrays sein?
Ein großer Vorteil eines geordneten Arrays ist, dass es eine Suchzeitkomplexität von O(log n) hat. Die Einfügungsoperation in einem geordneten Array hat eine zeitliche Komplexität von O(n), da die Mitglieder mit höheren Punktzahlen verschoben werden müssen, um eine neue Variante zu erstellen. Auf der anderen Seite erfordert die Einfügungsoperation eines ungeordneten Arrays eine konstante Zeit von O (1).
Ist es möglich, dieselbe Klasse oder dasselbe Paket zweimal in Java zu importieren, und was passiert damit während der Laufzeit?
Ja. Unabhängig davon, wie oft die Klasse oder das Paket importiert wird, lädt die JVM es intern einmal während der Laufzeit.
Wird der „Finally“-Block ausgeführt, wenn der Code system.Exit(o) am Ende des try-Blocks geschrieben wird?
Nein, der „finally“-Block wird in diesem Szenario nicht ausgeführt, denn wenn System.exit (0) aktiviert ist, verlässt die Steuerung das Programm sofort und „finally“ wird daher nie ausgeführt. Wenn System. exit(0) wird ohne Ausnahme aufgerufen; das Programm wird nicht ausgeführt.
Was versteht man unter Marker-Interfaces in Java
Eine Schnittstelle ohne Konstanten oder Methoden wird als Markierungsschnittstelle oder Tagging-Schnittstelle bezeichnet, da sie dem Compiler und der JVM Informationen über die Art der Laufzeit für Objekte gibt. Remote Interfaces, Serializable und Cloneable sind Beispiele für Marker-Interfaces, und alle diese Interfaces sind leer.
Erklären Sie den Begriff „Doppelte Klammerinitialisierung“ in Java
In Java ist die Initialisierung mit doppelten geschweiften Klammern eine Mischung aus zwei separaten Prozessen. In dieser Situation sind zwei geschweifte Klammern ({) betroffen. Doppelte geschweifte Klammern werden initialisiert, wenn zwei aufeinanderfolgende geschweifte Klammern im Java-Code angezeigt werden.
Die Konstruktion einer unbenannten inneren Klasse ist die erste geschweifte Klammer, während ein Initialisierungsblock die zweite geschweifte Klammer ist. Die Java Double Brace-Initialisierung tritt auf, wenn eine unbenannte innere Klasse den Initialisierungsblock verwendet.
Fazit
Als Programmierneuling oder sogar als erfahrener Programmierer können diese Interviewfragen etwas knifflig erscheinen. Aber wenn Sie sich dazu verpflichten, diese Fragen zu üben, werden Sie diese nächste Gelegenheit, die sich Ihnen bietet, mit Sicherheit meistern.
