So bestehst du das Java-Vorstellungsgespräch: Top-Fragen und Antworten

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Wie man ein Java-Vorstellungsgespräch besteht: Die Top-Fragen mit Beispielen analysiert



Ein Vorstellungsgespräch für eine Java-Entwicklerposition ist nicht nur eine Prüfung der Theorie, sondern auch eine Demonstration praktischen Denkens. Arbeitgeber wollen sehen, dass Sie nicht nur die Syntax auswendig gelernt haben, sondern verstehen, wie die virtuelle Maschine funktioniert, wie Collections aufgebaut sind und wie man threadsicheren Code schreibt. In diesem Artikel haben wir die wichtigsten Fragen zusammengestellt, die in technischen Interviews häufig gestellt werden, und detaillierte Antworten mit Java-Beispielen gegeben.



1. Fragen zu den Grundlagen von Java Core und OOP



Jedes Vorstellungsgespräch beginnt mit den grundlegenden Prinzipien. Der Interviewer prüft, wie tief Sie die Paradigmen der objektorientierten Programmierung und den Aufbau der Sprache verstehen. Hier sind die Top-3-Fragen aus dieser Kategorie.



Was ist der Unterschied zwischen einer abstrakten Klasse und einem Interface?

Das ist ein Klassiker. Eine abstrakte Klasse kann sowohl abstrakte als auch normale Methoden mit Implementierung sowie Felder und Konstruktoren enthalten. Ein Interface (vor Java 8) enthielt nur Methodensignaturen. Ab Java 8 kamen default- und static-Methoden in Interfaces hinzu, ab Java 9 private-Methoden. Der Hauptunterschied: Sie können nur eine abstrakte Klasse vererben, aber mehrere Interfaces implementieren.



// Abstrakte Klasseabstract class Animal {    String name;    abstract void sound();    void sleep() { System.out.println("Zzz"); }}

// Interfaceinterface Flyable { void fly(); default void glide() { System.out.println("Gliding..."); }}

class Bird extends Animal implements Flyable { @Override void sound() { System.out.println("Chirp"); } @Override public void fly() { System.out.println("Flying"); }}


Was ist Polymorphismus? Geben Sie ein Beispiel.

Polymorphismus ist die Fähigkeit eines Objekts, viele Formen anzunehmen. In Java wird er durch Vererbung und Interfaces realisiert. Das häufigste Beispiel ist das Überschreiben von Methoden.



List<String> list = new ArrayList<>();// Referenz vom Typ List, Objekt ist ArrayList.// Die Methode add() wird aus der Implementierung von ArrayList aufgerufen.list.add("Beispiel für Polymorphismus");


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

== vergleicht Referenzen (Speicheradressen), während equals() den logischen Inhalt vergleicht. Für Wrapper-Klassen (Integer, String) ist equals() überschrieben und vergleicht die Werte. Allerdings gibt es für Integer einen Cache von -128 bis 127, daher kann == unerwartet funktionieren.



Integer a = 100;Integer b = 100;System.out.println(a == b); // true (beide aus dem Cache)

Integer c = 200;Integer d = 200;System.out.println(c == d); // false (unterschiedliche Objekte)System.out.println(c.equals(d)); // true


2. Java-Collections: Datenstrukturen und Algorithmen



Collections sind das Herzstück jeder Java-Anwendung. Ohne ihr Verständnis ist es unmöglich, selbst ein Junior-Vorstellungsgespräch zu bestehen. Interviewer fragen gerne nach der Komplexität von Operationen und dem internen Aufbau.



Wie ist eine HashMap aufgebaut? Wie funktioniert Hashing?

Eine HashMap speichert Schlüssel-Wert-Paare in einem Array von "Buckets". Beim Hinzufügen eines Elements wird der Hash-Code des Schlüssels berechnet und darauf basierend die Bucket-Nummer bestimmt. Wenn sich im Bucket bereits Elemente befinden, wird eine verkettete Liste oder ein Baum verwendet (wenn es mehr als 8 Elemente sind). In Java 8+ wird die Liste bei Kollisionen zur Optimierung in einen Rot-Schwarz-Baum umgewandelt.



Map<String, Integer> map = new HashMap<>();map.put("Java", 1);map.put("Python", 2);// Wenn "Java" und "Python" denselben hashCode haben – kommt es zu einer Kollision.System.out.println(map.get("Java")); // O(1) im Durchschnitt


Was ist der Unterschied zwischen ArrayList und LinkedList? Wann verwendet man was?

ArrayList basiert auf einem dynamischen Array. Zugriff über Index ist O(1), Einfügen/Löschen in der Mitte ist O(n). LinkedList basiert auf einer doppelt verketteten Liste. Zugriff über Index ist O(n), Einfügen/Löschen am Anfang/Ende ist O(1).

Blogs

Buchempfehlungen