Top-Java-Interviewfragen – Beantwortet

Top-Java-Interviewfragen – Beantwortet

  • ITOps & DevOps
6 Minuten Lesezeit Aktualisiert Apr 27, 2020

Auf einen Blick: Top-Java-Interviewfragen bieten wichtige Einblicke für Jobsuchende und Personalverantwortliche und decken grundlegende und fortgeschrittene Java-Konzepte ab, um Programmierkenntnisse und Vorstellungsgesprächsbereitschaft zu verbessern.

  • Die Plattformunabhängigkeit von Java ist ein zentrales Merkmal, das es ermöglicht, auf jedem Betriebssystem zu laufen.
  • Wichtige Themen sind JVM, JRE, Exception Handling und Datenkapselung.

Bei der Vorbereitung auf ein Vorstellungsgespräch ist es ratsam, branchenspezifische Fragen zu studieren und darauf vorbereitet zu sein, wie man sie am besten beantwortet. Das ist besonders wichtig, wenn Sie mit technischem Wissen wie Programmiersprachen wie Java zu tun haben. Java wird durchweg zu den beliebtesten Programmiersprachen gezählt. Mit seiner Portabilität und der Fähigkeit, über mehrere Plattformen hinweg zu laufen, ist es kein Wunder, dass Java eine so gefragte Programmiersprache ist – sowohl bei Unternehmen als auch bei Entwicklern. Wenn Sie eine Karriere in der Java-Programmierung anstreben, werden potenzielle Arbeitgeber Ihnen eine Vielzahl von Fragen stellen, um Ihr Wissen in der Sprache einzuschätzen – von den Grundlagen bis hin zu fortgeschrittenen Verständnissen der technischen Details und Vorteile. Oder wenn Sie Personalverantwortlicher oder Personalvermittler sind, sollten Sie einige grundlegende und fortgeschrittenere Java-Konzepte kennen, um das Beste aus Ihren Kandidateninterviews herauszuholen. Wir haben einige Top-Java-Fragen zusammengestellt, damit Sie sich besser vorbereiten und sich während des Bewerbungsprozesses sicherer fühlen. Egal, ob Sie einen Job suchen oder eine Stelle suchen, dieser Artikel wird Ihnen weiterhelfen.

Warum Java?

Java ist eine der beliebtesten Programmiersprachen, die zur Erstellung von APIs und Plattformen verwendet werden. Es wurde für Flexibilität entwickelt und ermöglicht es Entwicklern, Code zu schreiben, der auf jeder Maschine unabhängig von Architektur oder Plattform läuft. Java wird von einer deutlichen Mehrheit der Unternehmen weltweit genutzt. Während diese Top-Java-Interviewfragen nur an der Oberfläche kratzen, bieten sie ein breites Spektrum an der Art des Wissens, das Sie benötigen, um sich auf Ihr Vorstellungsgespräch vorzubereiten.

Grundlegende Java-Fragen

Q. Warum gilt Java als plattformunabhängig?

Javas Motto ist WORA, was für "einmal schreiben, überall ausführen" steht. Java gilt als plattformunabhängig, da es dank Bytecode auf allen Betriebssystemen laufen kann: Mac, Linux oder Windows. Dies ist in einer vernetzten Umgebung vorteilhaft, da Unternehmen typischerweise viele Arten von Computern und Geräten verwenden.

Q. Was sind JVM, JRE und JDK?

  • Die Java Virtual Machine (JVM) ist eine abstrakte Maschine, die die Laufzeitumgebung für den Java-Bytecode bereitstellt.
  • Die Java Runtime Environment (JRE) bezeichnet die spezifische Laufzeitumgebung, in der der Java-Bytecode ausgeführt werden kann. JRE implementiert das JVM und stellt alle Unterstützungsdateien bereit, die das JVM während der Laufzeit verwendet.
  • Java Development Kit (JDK) ist das Werkzeug, das Java-Programme sammelt, dokumentiert und verpackt. Es umfasst sowohl das JRE als auch die notwendigen Entwicklungswerkzeuge.

Q. Was ist der Unterschied zwischen equals() und == ?

Die Equals()- Methode wird verwendet, um die Werte zweier Objekte zu vergleichen. Der == Gleichheitsoperator wird verwendet, um Primitive und Objekte zu vergleichen.

Q. Was ist Hashing?

Hashing ist eine Technik, bei der ein großer String in einen kleinen String umgewandelt wird. Ein kürzerer Wert beschleunigt das Indexieren und Suchen. Hashing wandelt ein Objekt mithilfe der HashCode()-Methode in ganzzahlige Form um. Man muss den HashCode() korrekt schreiben, um eine genaue HashMap-Performance zu gewährleisten.

Q. Was ist HashMap?

HashMap bietet die grundlegende Implementierung der Mapping-Schnittstelle von Java. Es speichert die Daten in (Schlüssel-, Wert-) Paare, und um auf einen Wert zugreifen zu können, muss man dessen Schlüssel kennen. Der Name HashMap leitet sich von der Verwendung der Hashing-Technik ab.

Q. Was unterscheidet HashMap und HashTable?

In HashMap sind die Methoden nicht synchronisiert und es gibt keine Thread-Sicherheit. Der Iterator wird verwendet, um die Werte zu iterieren, und erlaubt einen Nullschlüssel zusammen mit mehreren Nullwerten. In HashTable sind die Schlüsselmethoden synchronisiert und es gibt Thread-Sicherheit. Der Enumerator iteriert die Werte und erlaubt nichts, was null ist. Die Leistung ist langsam, besonders im Vergleich zu HashMap.

Q. Was ist der Unterschied zwischen ArrayList und Vector?

Eine ArrayList ist nicht synchronisiert, was sie deutlich schneller macht. ArrayList kann Iterator nur zum Durchqueren einer ArrayList verwenden. Ein Vektor ist synchronisiert, was ihn verlangsamt. Er ist jedoch threadsicher und auf einen Thread gleichzeitig beschränkt. HashTable und Vektor sind die einzigen Klassen, die sowohl Enumeration als auch Iterator verwenden.

Q. Wie unterscheiden sich innere Klassen und Unterklassen?

Eine innere Klasse ist eine Klasse, die innerhalb einer anderen Klasse verschachtelt ist. Sie hat Zugriffsrechte für die Klasse, die sie verschachtelt. Sie kann auf alle in der äußeren Klasse definierten Variablen und Methoden zugreifen. Eine Unterklasse ist eine Klasse, die von einer anderen Klasse abgeleitet ist. Sie kann auf alle öffentlichen und geschützten Methoden und Felder ihrer Superklasse zugreifen.

Q. Was sind die verschiedenen Zugriffsmodifikatoren für Java-Klassen?

Zugriffsspezifizieren sind die Schlüsselwörter, die vor einem Klassennamen verwendet werden, um ihren Zugriffsbereich zu definieren. In Java sind die vier Modifikatoren:

  • Privat. Die Variable ist außerhalb der Klasse nicht verfügbar, daher können externe Mitglieder nicht auf die privaten Mitglieder zugreifen. (Denken Sie daran, Klassen und Schnittstellen können nicht privat sein.)
  • Öffentlich. Die Methode oder Variable kann von allen anderen Klassen im Projekt erreicht werden.
  • Standard. Sichtbar für die Klassen mit dem Paket.
  • Geschützt. Die Variable kann innerhalb derselben Paketklassen und Unterklassen wie andere Pakete abgerufen werden. Diese können nicht für Klassen oder Schnittstellen verwendet werden.

Q. Was ist Datenkapselung und welche Bedeutung hat sie?

Kapselung ist ein Konzept der objektorientierten Programmierung, bei dem Eigenschaften und Methoden in einer einzigen Einheit kombiniert werden. Kapselung hilft Programmierern, einen modularen Ansatz für die Softwareentwicklung zu verfolgen – jedes Objekt hat seinen eigenen Satz von Methoden und Variablen und erfüllt seine Funktionen unabhängig von anderen Objekten.

Q. Was sind die drei Arten von Schleifen?

Looping wird verwendet, um eine Anweisung oder einen Block von Anweisungen wiederholt auszuführen. Die drei Arten von Schleifen in Java sind:

  • Für Schleifen werden Anweisungen wiederholt für eine bestimmte Anzahl von Zeiten ausgeführt.
  • Während Schleifen verwendet werden, wenn bestimmte Anweisungen wiederholt ausgeführt werden müssen, bis eine Bedingung erfüllt ist. Die Bedingung wird vor der Ausführung von Anweisungen überprüft.
  • Do-while-Schleifen ähneln while-Schleifen, werden jedoch nach der Ausführung eines Blocks von Anweisungen überprüft.

Q. Wie wird eine Unendlichkeitsschleife deklariert?

Eine unendliche Schleife ist eine Befehlssequenz, die endlos schleift, wenn eine Terminationsbedingung nicht erfüllt ist. Sie kann gebrochen werden, indem jede Bruchlogik im Körper der Ausweisungsblöcke definiert wird.

Q. Was ist eine Ausnahme?

Eine Ausnahme ist ein Ereignis, das während der Programmausführung auftritt und den normalen Ablauf des Programms stört. Nachdem eine Methode eine Ausnahme ausgelöst hat, versucht das Laufzeitsystem, etwas zu finden, das sie behandeln kann. Wenn diese Ausnahme nicht verarbeitet werden kann, wird die Ausführung beendet, bevor die Aufgabe abgeschlossen ist.

Q. Welche Arten von Ausnahmen gibt es?

Es gibt zwei Arten von Ausnahmen: geprüft und nicht aktiviert. Geprüfte Ausnahmen werden vom Compiler zum Zeitpunkt der Kompilierung überprüft. Zum Beispiel Klassen, die die wurffähige Klasse erweitern (ohne Laufzeit-Ausnahme oder -fehler). Sie müssen entweder die Ausnahme mit dem Wurf-Schlüsselwort deklarieren oder von der entsprechenden Versuch/Fang umgeben werden:

  • IOException
  • SQLException
  • DataAccessException
  • ClassNotFoundException
  • InvocationTargetException
  • MalformedURLException

Ungeprüfte Ausnahmen werden vom Compiler zum Zeitpunkt der Kompilierung nicht überprüft. Diese Ausnahmen sind das Ergebnis schlechter Programmierung; daher gibt das Programm keinen Kompilierungsfehler aus. Alle ungeprüften Ausnahmen sind direkte Unterklassen der RuntimeException-Klasse:

  • NullPointerException
  • ArrayIndexOutOfBound
  • IllegalArgumentAusnahme
  • IllegalState-Ausnahme

Komplexe Java-Fragen

Nutze diese Fragen, um dein Verständnis fortgeschrittenerer Java-Konzepte einzuschätzen.

F. Java unterstützt keine Mehrfachvererbung. Wie konnte das das "Diamantenproblem" verhindern? Warum ist das nicht mehr der Fall?

Java erlaubt keine Mehrfachvererbung für Klassen, sondern nur für Schnittstellen. Früher verhinderte dies das "Diamantenproblem", das häufiger in C++ zu sehen ist: Es war nur möglich, eine Implementierung von der einzelnen Elternklasse zu erben. In Java 8, das 2014 erstmals erschien, und späteren Versionen kann eine Klasse eine Methodenimplementierung entweder von ihrer Elternklasse oder einer ihrer Schnittstellen erben. Dies erhöht die Wahrscheinlichkeit, dass der Compiler die Kompilierung ablehnt.

Q. Warum wird Reflexion verwendet?

Reflection ermöglicht es, Klassen, Schnittstellen, Felder und Methoden zur Laufzeit zu inspizieren, ohne die Namen der Klassen, Methoden usw. zur Kompilierungszeit zu kennen. Reflection beschreibt Code, der in der Lage ist, anderen Code im selben System zu inspizieren. Sie ermöglicht es auch, neue Objekte zu instanziieren, Methoden aufzurufen und Feldwerte mithilfe von Reflection zu erhalten/setzen. Reflection ermöglicht die Möglichkeit, während der Laufzeit Änderungen durch Introspektion vorzunehmen.

Q. Unterstützt Java Operator-Overloading?

Operator-Überladung wird in Java nicht unterstützt. Dies ist beabsichtigt, da die Java-Entwickler die Einfachheit bewahren und verhindern wollten, dass Menschen Operatoren auf verwirrende Weise verwenden. (Zum Beispiel, indem mehrere Bedeutungen für denselben Operator entstehen können.)

Q. Warum ist der String unveränderlich?

Ein unveränderliches Objekt ist ein Objekt, dessen interner Zustand nach der Erstellung konstant bleibt. Sobald das Objekt einer Variablen zugewiesen ist, kann das Objekt weder aktualisiert noch mutiert werden. Die unveränderliche Zeichenkette unterstützt und profitiert von mehreren Aktivitäten, darunter Caching, Sicherheit, Synchronisation und Leistung. Der Java String Pool ist der spezielle Speicherbereich, in dem starke Speicher vom JVM gespeichert werden. Da Strings unveränderlich sind, optimiert das JVM die zugewiesene Speichermenge, indem es nur eine einzige Kopie jeder Zeichenkette im Pool speichert und so wichtige Speicherressourcen bewahrt. Unveränderliche Zeichenketten sind auch aus Sicherheitsgründen sinnvoll, da es einfacher ist, mit sensiblem Code zu arbeiten, wenn sich die Werte nicht ändern. Betrachten Sie die Alternative: Wenn Zeichenketten veränderbar wären, können Sie bei Aktualisierungen die Sicherheit des Strings nicht gewährleisten, da sie zwischen Integritätsprüfungen kompromittiert worden sein könnte. Unveränderlichkeit macht den String automatisch sicher. Der String wird nicht verändert, wenn er von mehreren Threads aus aufgerufen wird. In Sammlungen, die Hash-Implementierungen verwenden, verbessert die Unveränderlichkeit deren Leistung.

Q. Wie überschreibt man die statische Methode in Java? Führt das Erstellen derselben Methode in der Unterklasse zu einem Kompilierungsfehler?

Java erlaubt keine Überschreibung der statischen Methode. Man kann die Methode jedoch mit derselben Signatur in der Unterklasse deklarieren. Dies gilt jedoch nicht als Überschreibung, da kein Laufzeitpolymorphismus vorliegt. Wenn eine abgeleitete Klasse eine statische Methode mit derselben Signatur wie eine statische Methode in der Basisklasse definiert, dann verbirgt die Methode in der abgeleiteten Klasse die Methode in der Basisklasse. Es wäre kein Kompilierungsfehler, exakt dieselbe Methode in einer Unterklasse zu deklarieren; dies wird als Methodenverstecken bezeichnet.

Q. Wie repariert man ein nicht-serialisierbares Mitglied innerhalb einer serialisierbaren Klasse?

Der Objektserialisierungsprozess wandelt ein Objekt in ein Binärformat um, das dann über das Netzwerk an jedes andere laufende JVM gesendet werden kann. Versuche, diese Klasse zu serialisieren, scheitern mit NotSerializableException. Wenn alle Felder in einer Klasse serialisierbar sind, fügen Sie einfach Implementen Serializable zur Klassendeklaration hinzu. Wenn nicht, können Sie den Prozess für die Klasse dieses Feldes im Objektgraphen wiederholen. Gibt es eine Klasse, die nicht serialisierbar gemacht werden kann oder sollte, fügen Sie das transient-Schlüsselwort zur Felddeklaration hinzu. Dies fordert die JVM auf, das angegebene Feld beim Serialisieren zu ignorieren.

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus ITOps & DevOps

Interessieren Sie sich für mehr von BMC?

The Brief ist unsere monatliche E-Mail zum Mainframe und zur Enterprise-Orchestrierung: Recherchen, Kundenberichte, Produktnachrichten, Events.

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Sie haben The Brief abonniert

Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.