Skip to main content
AI EducademyAIEducademy
🌳

KI-Grundlagen

🌱
AI Seeds

KI-Kompetenz für die reale Welt

🌿
AI Sprouts

Die Grundlagen intelligenter Systeme

🌳
AI Branches

Bauen Sie mit den heutigen KI-Funktionen

🏕️
AI Canopy

Entwickeln Sie zuverlässige GenAI-Systeme

🌲
AI Forest

Versenden Sie KI-Produkte verantwortungsbewusst

🔨

KI-Meisterschaft

✏️
AI Sketch

Technische Grundlagen für KI-Entwickler

🪨
AI Chisel

Muster zur Lösung schwierigerer Probleme

⚒️
AI Craft

Entwerfen Sie Systeme, die KI skalieren

💎
AI Polish

Kommunizieren und führen Sie im KI-Zeitalter

🏆
AI Masterpiece

Der Schlussstein Ihrer Produktions-KI

🚀

Karrierebereit

🚀
Interview-Startrampe

Navigieren Sie durch den Arbeitsmarkt für KI-Ingenieure

🌟
Verhaltensinterview-Meisterschaft

Erzählen Sie die Geschichte, wie Sie Wirkung erzielen

💻
Technische Interviews

Unter Druck lösen, entwerfen und kommunizieren

🤖
AI- & ML-Interviews

Bereiten Sie sich auf moderne ML- und GenAI-Interviews vor

🏆
Angebot & Karriere

Machen Sie einen selbstbewussten und informierten nächsten Schritt

Alle Programme anzeigen→

Labor

7 Experimente geladen
🧠Neuronales Netz Spielplatz🤖KI oder Mensch?💬Prompt Labor🎨Bildgenerator😊Stimmungsanalyse💡Chatbot-Baukasten⚖️Ethik-Simulator
🎯ProbeinterviewLabor betreten→
LernreiseArtikel
🎯
Über uns

KI-Bildung für alle zugänglich machen, überall

❓
Häufige Fragen

Häufige Fragen beantwortet

🧰
KI-Tools

Sorgfältig ausgewählte Tools, die wir nutzen und empfehlen

✉️
Kontakt

Nehmen Sie Kontakt mit uns auf

⭐
Quelloffen

Öffentlich auf GitHub entwickelt

Preise
Loslegen
AI EducademyAIEducademy

© 2026 AI Educademy. Alle Rechte vorbehalten.

Lernen

  • Programme
  • Lektionen
  • Labor
  • KI-Starterkit
  • Preise

Gemeinschaft

  • GitHub
  • Mitwirken
  • Verhaltenskodex
  • Über uns
  • Häufige Fragen

Unterstützung

  • Kauf mir einen Kaffee ☕
  • Nutzungsbedingungen
  • Datenschutzerklärung
  • Kontakt
  • Sitemap
KI & Engineering Programme›💻 Technische Interviews›Lektionen›Datenstrukturen für Interviews
📊
Technische Interviews • Fortgeschritten⏱️ 20 Min. Lesezeit

Datenstrukturen für Interviews

🤖

Diese Lektion wurde automatisch ins Deutsche übersetzt und noch nicht von einem Menschen geprüft. Falls etwas seltsam klingt, gilt die englische Fassung.

Datenstrukturen für Interviews

Hier ist ein Geheimnis, für dessen Erlernen Top-Interview-Coaches keine 500 US-Dollar verlangen: Ungefähr 90 % der Codierungsprobleme bei Interviews drehen sich um nur sieben Datenstrukturen. Wenn Sie genau verstehen, wann und warum Sie nach jedem einzelnen greifen müssen, haben Sie bereits die halbe Miete gewonnen. Die andere Hälfte ist Übung - aber ohne die richtigen mentalen Modelle ist Übung nur Auswendiglernen. In dieser Lektion erhalten Sie eine Übersicht, sodass sich jedes Problem, auf das Sie stoßen, wie vertrautes Terrain anfühlt.

Die 7 Datenstrukturen, die man kennen muss

Jedes technische Interview schöpft aus derselben Quelle. Hier sind die Strukturen, denen Sie begegnen werden, sortiert nach Häufigkeit:

| Datenstruktur | Interviewhäufigkeit | Kernbetrieb | Wenn Interviewer es erwarten | |---|---|---|---| | Arrays / Strings | ★★★★★ | Auf O(1) zugreifen, O(n) durchsuchen, O(n) einfügen | Fast jedes Problem beginnt hier | | Hash-Maps/Sets | ★★★★★ | O(1) einfügen, O(1) suchen, O(1) löschen | „Optimieren Sie dies von O(n²) auf O(n)“ | | Verknüpfte Listen | ★★★★☆ | O(1) einfügen, O(1) löschen, auf O(n) zugreifen | Zeigermanipulation, Zykluserkennung | | Stapel und Warteschlangen | ★★★★☆ | Push/Pop O(1), Enqueue/Dequeue O(1) | Parsen, BFS, Rückgängigmachen von Vorgängen | | Bäume (Binär, BST) | ★★★★☆ | O(log n) suchen, O(log n) einfügen | Hierarchische Daten, sortierte Operationen | | Grafiken | ★★★☆☆ | Hängt von der Darstellung ab | Beziehungen, Wege, Konnektivität | | Haufen | ★★★☆☆ | O(log n) einfügen, min O(log n) extrahieren | „Finde die k größten/kleinsten“ |

💡
Wenn Sie nur eine Woche Zeit für die Vorbereitung haben, konzentrieren Sie sich auf Arrays, Hash-Maps und Bäume. Diese drei stellen den Großteil der Interviewfragen bei Unternehmen auf FAANG-Ebene dar.

Arrays und Strings - Ihre Grundlage

Arrays sind der Ausgangspunkt für fast jedes Interviewproblem. Die wichtigste Erkenntnis ist, dass es bei den meisten Array-Problemen nicht wirklich um Arrays geht, sondern um das Erkennen von Mustern wie zwei Zeigern, Schiebefenstern oder Präfixsummen.

# Two Sum - the most classic interview problem
# "Given an array and target, find two numbers that add to target"
def two_sum(nums, target):
    seen = {}  # Hash map to store complement
    for i, num in enumerate(nums):
        complement = target - num
        if complement in seen:
            return [seen[complement], i]
        seen[num] = i
    return []

# Time: O(n), Space: O(n) - trading space for time

Beachten Sie, dass selbst dieses „Array“-Problem in Wirklichkeit ein Hash-Map-Problem ist. Dieses Muster wiederholt sich ständig: Die Brute-Force-Methode verwendet verschachtelte Schleifen über ein Array, und die optimale Lösung führt eine Hash-Map ein.

Lektion 1 von 80% abgeschlossen
←Zurück zum Programm
Weiter: Algorithmusmuster und -strategien→

Diskussion

Anmelden um an der Diskussion teilzunehmen

Bearbeitung vorschlagen

Hash Maps - Das Interview mit dem Schweizer Taschenmesser

Wenn Sie bei einem Problem nicht weiterkommen und die rohe Gewalt O(n²) ist, fragen Sie sich: „Kann eine Hash-Map dies auf O(n) reduzieren?“ Die Antwort lautet überraschend oft „Ja“.

Hash-Maps glänzen, wenn Sie Folgendes benötigen:

  • Häufigkeiten zählen - Zeichenanzahl, Wortanzahl, Elementhäufigkeiten
  • Gesehene Elemente verfolgen - Duplikaterkennung, Zwei-Summen-Stilprobleme
  • Gruppenelemente - Anagrammgruppierung, Kategorisierung
  • Cache-Berechnungen - Memoisierung in der dynamischen Programmierung
// Group Anagrams - a classic hash map problem
public List<List<String>> groupAnagrams(String[] strs) {
    Map<String, List<String>> map = new HashMap<>();
    for (String s : strs) {
        char[] chars = s.toCharArray();
        Arrays.sort(chars);
        String key = new String(chars);
        map.computeIfAbsent(key, k -> new ArrayList<>()).add(s);
    }
    return new ArrayList<>(map.values());
}
🤔
Think about it:Welche Datenstruktur sollte Ihnen sofort in den Sinn kommen, wenn Sie auf ein Problem stoßen, bei dem Sie aufgefordert werden, „zu finden“, „zu zählen“ oder „zu prüfen, ob vorhanden“ zu sein? Wie würden Sie den Kompromiss zwischen der O(1)-Suche einer Hash-Map und der O(log n)-Binärsuche eines sortierten Arrays erklären?

Verknüpfte Listen - Zeigerbeherrschung

Probleme mit verknüpften Listen testen Ihre Fähigkeit, Zeiger zu manipulieren, ohne den Überblick über Knoten zu verlieren. Die drei Techniken, die Sie benötigen, sind:

  1. Zwei-Zeiger (schnell/langsam) - Zykluserkennung, Finden des mittleren Knotens
  2. Dummy-Kopfknoten - vereinfacht Randfälle, bei denen sich der Kopf ändern könnte
  3. Umkehrung - iterative Umkehrung ist ein Baustein für viele Probleme
# Detect a cycle in a linked list (Floyd's Algorithm)
def has_cycle(head):
    slow = fast = head
    while fast and fast.next:
        slow = slow.next
        fast = fast.next.next
        if slow == fast:
            return True
    return False
🤯
Floyds Zykluserkennungsalgorithmus, auch bekannt als „Tortoise and Hare“-Algorithmus, wurde 1967 veröffentlicht. Es ist einer der ältesten Algorithmen, die in modernen Programmieren-Interviews immer noch häufig gefragt werden - seit über 55 Jahren, Tendenz steigend.

Stapel und Warteschlangen - Ordnung ist wichtig

Stapel (LIFO) und Warteschlangen (FIFO) sind einfachere Strukturen, aber sie erschließen ganze Problemkategorien:

  • Stacks: Gültige Klammern, Ausdrucksauswertung, monotone Stack-Probleme, Rückgängigmachen/Wiederholen
  • Warteschlangen: BFS-Durchquerung, maximales Schiebefenster (mit Deque), Aufgabenplanung
# Valid Parentheses - classic stack problem
def is_valid(s: str) -> bool:
    stack = []
    matching = {')': '(', '}': '{', ']': '['}
    for char in s:
        if char in matching:
            if not stack or stack[-1] != matching[char]:
                return False
            stack.pop()
        else:
            stack.append(char)
    return len(stack) == 0

Bäume - Hierarchisches Denken

Baumprobleme beinhalten typischerweise Rekursion und eine von drei Durchlaufreihenfolgen (in-order, pre-order, post-order). Das zu entwickelnde mentale Modell lautet: „Was benötige ich vom linken Teilbaum, vom rechten Teilbaum und wie kombiniere ich sie am aktuellen Knoten?“

# Maximum depth of a binary tree - the template for tree recursion
def max_depth(root):
    if not root:
        return 0
    left_depth = max_depth(root.left)
    right_depth = max_depth(root.right)
    return 1 + max(left_depth, right_depth)

BST-Probleme (Binary Search Tree) fügen eine entscheidende Eigenschaft hinzu: Das Durchlaufen in der richtigen Reihenfolge liefert sortierte Elemente. Wenn Sie „sortiert“ und „Baum“ im selben Problem sehen, denken Sie sofort an BST.

Diagramme - Modellierung von Beziehungen

Diagrammprobleme wirken einschüchternd, aber die meisten lassen sich auf BFS oder DFS reduzieren, sobald Sie die Adjazenzliste erstellt haben. Die Schlüsselkompetenzen sind:

  • Aufbau des Diagramms aus Kantenlisten oder Matrizen
  • BFS für den kürzesten Weg in ungewichteten Diagrammen
  • DFS für Konnektivität, Zykluserkennung, topologische Sortierung
# BFS shortest path in an unweighted graph
from collections import deque

def shortest_path(graph, start, end):
    queue = deque([(start, 0)])
    visited = {start}
    while queue:
        node, distance = queue.popleft()
        if node == end:
            return distance
        for neighbour in graph[node]:
            if neighbour not in visited:
                visited.add(neighbour)
                queue.append((neighbour, distance + 1))
    return -1  # Not reachable

Heaps - Das „Top K“-Signal

Wann immer ein Problem lautet: „Finde die K größten“, „K nächsten“ oder „K sortierte Listen zusammenführen“, ist ein Heap (Prioritätswarteschlange) mit ziemlicher Sicherheit die Antwort. In Python stellt heapq einen Min-Heap bereit; Negieren Sie für einen Max-Heap die Werte.

import heapq

# Find the K largest elements in an array
def k_largest(nums, k):
    return heapq.nlargest(k, nums)  # Uses a min-heap of size k internally
🧠Kurzer Check

Sie müssen den Median eines Zahlenstroms in O(log n) pro Einfügung ermitteln. Welche Datenstrukturkombination ist am besten geeignet?

Spickzettel zur Zeit- und Raumkomplexität

| Struktur | Zugriff | Suchen | Einfügen | Löschen | Raum | |---|---|---|---|---|---| | Array | O(1) | O(n) | O(n) | O(n) | O(n) | | Hash-Karte | - | O(1)* | O(1)* | O(1)* | O(n) | | Verlinkte Liste | O(n) | O(n) | O(1) | O(1) | O(n) | | Stapel/Warteschlange | O(n) | O(n) | O(1) | O(1) | O(n) | | BST (ausgeglichen) | O(log n) | O(log n) | O(log n) | O(log n) | O(n) | | Haufen | - | O(n) | O(log n) | O(log n) | O(n) |

* Durchschnittlicher Fall; Der schlimmste Fall ist O(n) aufgrund von Hash-Kollisionen.

Mustererkennung - Die richtige Struktur wählen

Entwickeln Sie diese mentale Checkliste, wenn Sie ein Problem lesen:

  • Benötigen Sie eine schnelle Suche? → Hash Map
  • Sortierte Reihenfolge erforderlich? → BST oder sortiertes Array + binäre Suche
  • FIFO-Verarbeitung erforderlich? → Warteschlange (BFS)
  • Benötigen Sie LIFO / Backtracking? → Stack (DFS)
  • Benötigen Sie Top-K oder Priorität? → Heap
  • Müssen Verbindungen modelliert werden? → Diagramm
  • O(1)-Zugriff über Index erforderlich? → Array
💡
Geben Sie in Ihrem Vorstellungsgespräch explizit an, für welche Datenstruktur Sie sich entscheiden und warum. Die Aussage „Ich verwende hier eine Hash-Map, weil wir O(1)-Suchen benötigen, um die verschachtelte Schleife zu vermeiden“ zeigt genau das technische Denken, das Interviewer sehen möchten.

Wichtige Erkenntnisse

  • Sieben Strukturen decken 90 % der Interviews ab: Arrays, Hash-Maps, verknüpfte Listen, Stapel/Warteschlangen, Bäume, Diagramme und Heaps.
  • Hash-Maps sind Ihr bester Freund: Im Zweifelsfall hilft wahrscheinlich eine Hash-Map.
  • Kennen Sie Ihre Komplexität kalt: Interviewer werden fragen: „Was ist die Zeitkomplexität?“ nach jeder Lösung.
  • Mustererkennung schlägt Auswendiglernen: Lernen Sie, Problemsignale („oberstes K“ → Heap, „kürzester Weg“ → BFS) der richtigen Struktur zuzuordnen.
  • Üben Sie bewusst: Lösen Sie 3-5 Probleme pro Datenstruktur und konzentrieren Sie sich dabei auf das Verständnis statt auf die Geschwindigkeit. Geschwindigkeit entsteht durch Verständnis.