Java-Vorstellungsgespräch: Eine Checkliste, die Ihre Karriere rettet

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

Einleitung: Warum Java keine Schlamperei verzeiht

\n\n

Sie haben Ihren Lebenslauf geschickt, das HR-Screening bestanden, und nun – die Einladung zum technischen Vorstellungsgespräch. Wenn Sie diesen Artikel auf pythonlib.ru lesen, dann wechseln Sie entweder von Python zu Java oder bauen einfach Ihre „Wissensbasis“ auf. In jedem Fall – Sie sind auf dem richtigen Weg.

\n\n

Java ist nicht die Sprache, bei der man mit Charme „durchkommen“ kann. Die Enterprise-Ökosystem erfordert ein klares Verständnis: von der JMM (Java Memory Model) bis zur Funktionsweise des Garbage Collectors. Ein Java-Vorstellungsgespräch ist keine Prüfung, es ist ein Dialog. Aber ein Dialog, in dem Sie auf Herz und Nieren geprüft werden.

\n\n

In diesem Artikel habe ich eine echte Checkliste zusammengestellt: was Sie lernen, wie Sie antworten und – am wichtigsten – wie Sie sich beim Live-Coding nicht blamieren. Ohne überflüssige Informationen, nur Praxis.

\n\n

1. Java Core: Das Fundament, das Sie auswendig können müssen

\n\n

Beginnen wir mit der Basis. Ohne Java Core wird Ihnen einfach niemand zuhören. Hier ist eine Liste der Themen, die jeder Kandidat kennen muss:

\n\n

1.1. OOP (Objektorientierte Programmierung)

\n

Sie müssen in der Lage sein, Polymorphismus, Vererbung, Kapselung und Abstraktion einfach zu erklären. Und zwar mit Beispielen.

\n\n

Fallenfrage: „Was ist der Unterschied zwischen einer abstrakten Klasse und einem Interface?“

\n

Richtige Antwort: In Java 8+ haben Interfaces default-Methoden, aber eine abstrakte Klasse kann einen Zustand (Felder) haben, ein Interface nicht.

\n\n
// Beispiel: abstrakte Klasse\nabstract class Animal {\n    protected String name;\n    abstract void makeSound();\n}\n\n// Interface mit default-Methode\ninterface Movable {\n    default void move() {\n        System.out.println("Moving...");\n    }\n}
\n\n

1.2. Collections (Java Collections Framework)

\n

Das ist ein Must-have. HashMap, ArrayList, HashSet, TreeMap zu kennen – reicht nicht. Sie müssen verstehen:

\n
    \n
  • Wie HashMap funktioniert (Array + verkettete Liste + Rot-Schwarz-Baum seit Java 8)
  • \n
  • Der Unterschied zwischen fail-fast und fail-safe Iteratoren
  • \n
  • Wann man LinkedList anstelle von ArrayList verwendet (Spoiler: fast nie)
  • \n
\n\n

Tipp: Im Vorstellungsgespräch könnten Sie gebeten werden, Ihre eigene HashMap-Implementierung zu schreiben. Üben Sie das vorher.

\n\n

1.3. Exceptions

\n

Checked vs Unchecked – ein Klassiker. Denken Sie daran: RuntimeException und seine Unterklassen sind unchecked, alles andere ist checked. Und verwenden Sie niemals, hören Sie, niemals catch (Exception e) {} – das ist ein Anti-Pattern.

\n\n

2. Multithreading: Das Thema, bei dem 80% der Kandidaten durchfallen

\n\n

Java ist eine der wenigen Sprachen, bei denen Multithreading auf Sprachebene integriert ist. Im Vorstellungsgespräch werden Sie auf jeden Fall nach synchronized, volatile, AtomicInteger, Lock, Semaphore gefragt.

\n\n

2.1. Das Schlüsselwort volatile

\n

Die Hauptfrage: „Garantiert volatile Atomarität?“ Antwort: Nein. Es garantiert nur die Sichtbarkeit von Änderungen zwischen Threads.

\n\n
public class VolatileExample {\n    private volatile boolean flag = true;\n\n    public void stop() {\n        flag = false; // Ein anderer Thread sieht diese Änderung sofort\n    }\n}
\n\n

2.2. Deadlock und wie man ihn vermeidet

\n

Sie könnten gebeten werden, Code zu schreiben, der zu einem Deadlock führt, und ihn dann zu beheben.

\n\n
// Klassischer Deadlock\npublic class DeadlockExample {\n    private final Object lock1 = new Object();\n    private final Object lock2 = new Object();\n\n    public void method1() {\n        synchronized (lock1) {\n            synchronized (lock2) { /* ... */ }\n        }\n    }\n\n    public void method2() {\n        synchronized (lock2) {\n            synchronized (lock1) { /* ... */ }\n        }\n    }\n}
\n\n

Lösung: Sperren immer in der gleichen Reihenfolge erwerben oder tryLock() aus dem Paket java.util.concurrent.locks verwenden.

\n\n

3. Spring Fram

Blogs

Buchempfehlungen