Interviewfragen zu Algorithmen und Datenstrukturen mit Antworten
Big O, Arrays und Hashtabellen, Stacks, Queues und verkettete Listen, Sortieren und binäre Suche, Bäume, Heaps und Graphen, Rekursion, dynamische Programmierung und klassische Muster von Interviewaufgaben.
225 Fragen fürs Vorstellungsgespräch zu Algorithmen und Datenstrukturen mit Antworten und Erklärungen: Level Junior, Middle und Senior. Beispielfragen, Online-Tests und Programmieraufgaben.
- Big O
- Sortieren
- Hashtabellen
- Graphen
- Dynamische Programmierung
Fragen nach Level
Junior
Grundbegriffe und Syntax · 50 Fragen
Middle
Praxis, Feinheiten und Optimierung · 50 Fragen
Senior
Architektur, Interna, Randfälle · 50 Fragen
Beispielfragen
Ein paar Fragen aus jedem Level mit richtiger Antwort und Erklärung.
Algorithmen und Datenstrukturen · Junior
- Was beschreibt die O-Notation?
Antwort zeigen
Richtige Antwort: Wie Laufzeit oder Speicher mit der Größe der Eingabe wachsen
Die O-Notation beschreibt die Wachstumsrate: wie sich die Kosten ändern, wenn
nwächst, ohne Konstanten und Terme niedrigerer Ordnung. Über die absolute Zeit auf einer bestimmten Maschine sagt sie nichts: eine O(n)-Schleife kann bei kleinen Eingaben langsamer sein als eine O(n²)-Schleife. - Warum schreibt man O(2n + 10) einfach als O(n)?
Antwort zeigen
Richtige Antwort: Weil Konstanten und Terme niedrigerer Ordnung die Wachstumsrate nicht ändern
Die O-Notation beschreibt die Form des Wachstums für großes
n. Mal 2 oder plus 10 ändert nichts daran, dass die Kosten linear wachsen, daher fallen beide weg. In der Praxis zählen Konstanten trotzdem, deshalb gibt es Benchmarks. - Welche Komplexität wächst mit steigendem
nam langsamsten?Antwort zeigen
Richtige Antwort: O(log n)
Logarithmisches Wachstum ist sehr langsam: eine Verdopplung von
nfügt nur einen Schritt hinzu. Bei einer Million Elementen ist log₂ n etwa 20. O(n) und O(n log n) wachsen viel schneller. - Welche Komplexität hat das Lesen von
arr[i]aus einem JavaScript-Array?Antwort zeigen
Richtige Antwort: O(1)
Der Zugriff per Index braucht konstante Zeit: die Engine berechnet, wo das Element liegt, statt das Array zu durchlaufen. Das ist der Hauptvorteil von Arrays gegenüber verketteten Listen.
Algorithmen und Datenstrukturen · Middle
- Wie funktioniert Merge Sort?
Antwort zeigen
Richtige Antwort: Das Array halbieren, jede Hälfte sortieren und dann zusammenführen
Merge Sort teilt, bis einzelne Elemente übrig sind, und führt dann sortierte Hälften mit zwei Zeigern zusammen. Es ist in jedem Fall O(n log n) und stabil, braucht aber O(n) zusätzlichen Speicher fürs Zusammenführen.
- Was ist der Hauptnachteil von Merge Sort auf Arrays?
Antwort zeigen
Richtige Antwort: Es braucht O(n) zusätzlichen Speicher fürs Zusammenführen
Der Schritt des Zusammenführens schreibt in einen temporären Puffer. Die Zeit ist unabhängig von der Eingabe O(n log n), und die klassische Umsetzung ist stabil. Auf verketteten Listen geht Merge Sort ohne zusätzlichen Puffer.
- Was ist der schlimmste Fall von Quicksort, und wann tritt er ein?
Antwort zeigen
Richtige Antwort: O(n²), wenn Pivots das Array immer sehr ungleich teilen
Ist das Pivot immer das kleinste oder größte Element (etwa das erste Element eines sortierten Arrays), entfernt jede Aufteilung nur ein Element. Zufällige Pivots oder Median-of-three machen das unwahrscheinlich; der Durchschnitt ist O(n log n).
- Warum ist Quicksort in der Praxis oft schneller als Merge Sort, trotz gleichem Durchschnitt O(n log n)?
Antwort zeigen
Richtige Antwort: Es sortiert an Ort und Stelle und greift sequenziell auf Speicher zu
Das Aufteilen arbeitet im Array mit guter Cache-Lokalität und kleinen Konstanten. Sein schlimmster Fall ist sogar schlechter (O(n²)), und die übliche In-place-Version ist nicht stabil.
Algorithmen und Datenstrukturen · Senior
- Warum liefert Dijkstras Algorithmus mit negativen Kantengewichten falsche Ergebnisse?
Antwort zeigen
Richtige Antwort: Ein abgeschlossener Knoten könnte über eine negative Kante noch kürzer werden
Dijkstra nimmt an, dass kein späterer Weg kürzer sein kann, sobald der nächste Knoten aus der Queue genommen ist. Eine negative Kante bricht diese Annahme. Bellman-Ford behandelt negative Gewichte in O(V × E) und erkennt auch negative Zyklen.
- Welche zusätzliche Fähigkeit hat Bellman-Ford gegenüber Dijkstra?
Antwort zeigen
Richtige Antwort: Er kann negative Gewichte und erkennt negative Zyklen
Er relaxiert alle Kanten V - 1 Mal; verbessert ein V-ter Durchlauf noch eine Distanz, gibt es einen negativen Zyklus. Der Preis ist O(V × E), viel langsamer als Dijkstras O((V + E) log V).
- Wie unterscheidet sich A* von Dijkstras Algorithmus?
Antwort zeigen
Richtige Antwort: Er ergänzt eine Schätzung der verbleibenden Distanz
A* ordnet Knoten nach
g + h: den bekannten Kosten plus einer Schätzung bis zum Ziel, etwa die Luftlinie auf einer Karte. Überschätzthnie (zulässig), bleibt der Weg optimal, und es werden viel weniger Knoten erkundet. - Welche Komplexität hat Floyd-Warshall, und wann ist er eine vernünftige Wahl?
Antwort zeigen
Richtige Antwort: O(V³); für kürzeste Wege zwischen allen Paaren in kleinen, dichten Graphen
Es sind drei verschachtelte Schleifen über Knoten, die
dist[i][j]über jeden Zwischenknotenkaktualisieren. Einfach und mit negativen Kanten (ohne negative Zyklen) nutzbar, aber bei V = 10.000 sind es schon 10¹² Schritte.
Programmieraufgaben
Schreib die Lösung direkt im Browser, und Tests prüfen sie sofort. Klassiker aus Vorstellungsgesprächen zu JavaScript (debounce, deepClone, Promise.all, LRU-Cache), zu TypeScript (Generics, Narrowing und Utility Types, geprüft von einem echten Compiler), Backend-Logik in Node.js (Middleware, Rate Limits, Job-Queues), SQL-Abfragen in echtem PostgreSQL und zu React: Komponenten und Hooks wie eine Aufgabenliste, Tabs, useDebounce und useInterval.
Aufgaben öffnen →