P
prepair.app
Interview starten →
EnglishУкраїнськаРусскийDeutsch

Junior Java BackendJava-Backend-Interviewfragen

Junior · keine Erfahrung / unter 1 Jahr

Java-Backend-Interviews drehen sich um die Kernsemantik der Sprache, Collections, Nebenläufigkeit, Spring und dein Verständnis der JVM. Die folgenden Fragen werden am häufigsten gestellt, jeweils mit einer Musterantwort. Junior: Grundlagentheorie, Definitionen und einfache Praxisfälle.

Probier es aus — kein Konto nötig
Deine Frage wird vorbereitet…

Themen zur Vorbereitung

Core Java und OOP
Collections Framework
Nebenläufigkeit und Threads
Spring Boot und Spring Data
JVM, GC und Speicher
SQL und Hibernate

10 Fragen auf Junior-Niveau mit Antworten

1

Was ist der Unterschied zwischen == und equals() bei Objekten?

Antwort

== vergleicht Referenzen — ob zwei Variablen auf dasselbe Objekt im Speicher zeigen. equals() vergleicht den Inhalt, sofern die Klasse es überschreibt; das Standard-Object.equals fällt auf == zurück. Deshalb liefert der Vergleich zweier zur Laufzeit gebauter Strings mit == false, mit equals() aber true — die mit Abstand häufigste Stolperfalle im Java-Interview.

2

Was unterscheidet ein Interface von einer abstrakten Klasse?

Antwort

Eine abstrakte Klasse kann Zustand und Konstruktoren besitzen und beschreibt, was etwas ist; eine Klasse kann nur von einer einzigen erben. Ein Interface beschreibt, was etwas kann, und eine Klasse kann viele davon implementieren. Seit Java 8 können Interfaces default-Methoden tragen, deshalb lautet die Faustregel: gemeinsamer Zustand bedeutet abstrakte Klasse, gemeinsame Fähigkeit bedeutet Interface.

3

Was ist Autoboxing, und wo wird es zur Falle?

Antwort

Autoboxing ist die automatische Umwandlung des Compilers zwischen primitiven Typen und ihren Wrapper-Klassen. Es wird an zwei Stellen zur Falle: Der Vergleich von Wrappern mit == funktioniert bei kleinen Werten zufällig wegen des Integer-Caches von -128 bis 127 und hört danach stillschweigend auf zu funktionieren, und das Unboxing eines null-Integer wirft eine NullPointerException an einer Zeile, die wie einfache Arithmetik aussieht.

4

Erkläre final, finally und finalize.

Antwort

Trotz ähnlicher Namen haben sie nichts miteinander zu tun. final macht eine Variable unveränderbar, eine Methode nicht überschreibbar oder eine Klasse nicht erweiterbar. finally ist der Block, der unabhängig davon ausgeführt wird, ob eine Exception geworfen wurde, und dient dem Aufräumen. finalize war eine Methode, die der Garbage Collector vor dem Entfernen eines Objekts aufrufen konnte; sie war unzuverlässig und ist deprecated — stattdessen nutzt man try-with-resources.

5

Was ist der Unterschied zwischen ArrayList und LinkedList?

Antwort

ArrayList kapselt ein größenveränderliches Array: Der Zugriff per Index ist O(1), aber Einfügen in der Mitte verschiebt alles Nachfolgende. LinkedList ist eine doppelt verkettete Liste: Einfügen an einem bekannten Knoten ist O(1), aber das Erreichen von Index n kostet n Schritte, und jedes Element trägt Pointer-Overhead. In der Praxis gewinnt fast immer ArrayList, weil Cache-Lokalität auf echter Hardware wichtiger ist als die große O-Notation.

6

Was bedeutet das Schlüsselwort static wirklich?

Antwort

Ein static-Member gehört zur Klasse und nicht zu einer Instanz, existiert also unabhängig von der Anzahl erzeugter Objekte genau einmal und ist auch ohne Objekt nutzbar. Die Konsequenz, die oft vergessen wird: Ein statisches Feld ist geteilter, veränderlicher Zustand für die ganze Anwendung — praktisch für Konstanten, aber eine Quelle hartnäckiger Bugs für alles, was sich ändert.

7

Was ist der Unterschied zwischen checked und unchecked Exceptions?

Antwort

Checked Exceptions erben von Exception, und der Compiler zwingt einen, sie zu fangen oder zu deklarieren; sie beschreiben Situationen, von denen sich ein Aufrufer sinnvoll erholen kann, etwa eine fehlende Datei. Unchecked erben von RuntimeException und signalisieren Programmierfehler — eine Null-Referenz, ein ungültiges Argument. unchecked für Bugs, checked sparsam, weil das erzwungene Behandeln meist zu leeren catch-Blöcken führt.

8

Wie lautet der Vertrag zwischen `equals()` und `hashCode()`?

Antwort

Sind zwei Objekte gleich, müssen sie denselben Hash-Code liefern; umgekehrt gilt das nicht. Verletzt man das, funktioniert eine HashMap nicht mehr — man legt ein Objekt ab, sucht mit einem gleichen und bekommt null, weil die Suche in einem anderen Bucket landet. Deshalb ist das Überschreiben von nur einer der beiden Methoden ein Bug und keine Stilfrage.

9

Warum ist `String` in Java immutable?

Antwort

Weil er geteilt wird. Literale liegen im String-Pool, und eine Instanz kann von vielen Stellen referenziert werden, sodass ein veränderlicher String es einem Halter erlauben würde, den Wert für alle anderen zu ändern. Immutability macht Strings außerdem ohne Synchronisation thread-safe, erlaubt es, den Hash-Code zu cachen, und hält sie sicher für Class Loading und Connection-Parameter, wo eine nachträgliche Änderung ein Sicherheitsloch wäre.

10

Kann man eine statische Methode überschreiben?

Antwort

Nein — man kann sie nur verdecken. Overriding wird zur Laufzeit anhand des Objekttyps aufgelöst, eine statische Methode dagegen zur Compile-Zeit anhand des Referenztyps. Eine Subklasse mit derselben statischen Signatur ersetzt die der Elternklasse also nicht: Welche ausgeführt wird, hängt vom deklarierten Typ ab, nicht vom tatsächlichen Objekt — genau deshalb rät man davon ab, statische Methoden über eine Instanzreferenz aufzurufen.

🦎

Antworten lesen reicht nicht

Im echten Interview sprichst du unter Druck. Cam stellt genau diese Fragen, bewertet jede Antwort und zeigt dir genau, was du verbessern musst.

Junior Java Backend-Interview üben →
Kostenlos · 3 Interviews im Monat

Weitere Level — Java Backend

Middle Java BackendSenior Java BackendAlle Java Backend-Fragen

Weitere Spezialisierungen

🔍Junior QA Manual🤖Junior QA Automation🐍Junior Python Backend🐘Junior PHP-Backend🦫Junior Go-Backend🟢Junior Node.js-Backend💎Junior Ruby on Rails🔷Junior C++🟨Junior JavaScript⚛️Junior React Frontend