Interviewfragen zu Datenbanken (Middle) mit Antworten
75 Fragen fürs Vorstellungsgespräch zu Datenbanken (Middle) mit richtigen Antworten, Erklärungen und Links zur Dokumentation.
Diesen Test machen- 1.Welche Datenstruktur nutzt ein Standardindex in PostgreSQL?
- 2.Es gibt einen Index auf
(last_name, first_name). Welche Abfrage kann ihn effizient nutzen? - 3.Es gibt einen Index auf
created_at. Warum ignoriertWHERE date(created_at) = '2026-11-01'ihn eventuell? - 4.Warum kann ein normaler B-Baum-Index
WHERE name LIKE '%son'nicht beschleunigen? - 5.Was ist ein partieller Index?
- 6.Was ist ein abdeckender Index und ein Index-Only Scan?
- 7.Warum wählt PostgreSQL eventuell einen sequenziellen Scan, obwohl ein Index existiert?
- 8.Was bringt
CREATE INDEX CONCURRENTLY? - 9.Welcher Indextyp passt zur Suche in einer
jsonb-Spalte, etwaWHERE data @> '{"tags": ["sale"]}'? - 10.Warum können zufällige UUIDs (v4) als Primärschlüssel Einfügungen in großen Tabellen bremsen?
- 11.Was ist der Unterschied zwischen
EXPLAINundEXPLAIN ANALYZE? - 12.In
EXPLAIN ANALYZEschätzte der Planer 10 Zeilen, bekam aber 500.000. Worauf deutet das hin? - 13.Welche Join-Algorithmen kann PostgreSQL nutzen?
- 14.Warum kann
SELECT COUNT(*) FROM big_tablein PostgreSQL langsam sein? - 15.Wie findet man in Produktion die Abfragen, die insgesamt die meiste Zeit verbrauchen?
- 16.Was ist die Standard-Isolationsstufe für Transaktionen in PostgreSQL?
- 17.Was ist ein „Non-Repeatable Read“?
- 18.Was ist ein „Lost Update“, und wie verhindert man es?
- 19.Was macht
SELECT ... FOR UPDATE? - 20.Was ist ein Deadlock, und was macht PostgreSQL dagegen?
- 21.Wie funktioniert optimistisches Sperren?
- 22.Was macht
INSERT ... ON CONFLICT (email) DO UPDATE? - 23.Warum sind lang laufende Transaktionen in PostgreSQL schädlich?
- 24.Was ist ein Savepoint?
- 25.Was macht eine Fensterfunktion wie
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC)? - 26.Was ist der Unterschied zwischen
RANK()undDENSE_RANK()? - 27.Wie berechnet man eine laufende Summe der Zahlungen pro Nutzer?
- 28.Wofür ist eine CTE (
WITH ...) gut? - 29.Was erlaubt
WITH RECURSIVE? - 30.Warum kann
WHERE id NOT IN (SELECT user_id FROM bans)gar keine Zeilen liefern? - 31.Was erlaubt
LEFT JOIN LATERAL? - 32.Wofür nutzt man
COUNT(*) FILTER (WHERE status = 'paid')? - 33.Wann sollte man in PostgreSQL
jsonb-Spalten nutzen? - 34.Was bietet die Volltextsuche von PostgreSQL gegenüber
ILIKE '%word%'? - 35.Was ist das N+1-Abfrageproblem?
- 36.Warum ist Keyset-Paginierung (Cursor) für tiefe Seiten schneller als
OFFSET? - 37.Warum nutzen Anwendungen einen Connection Pool?
- 38.Wie fügt man im modernen PostgreSQL einer riesigen Tabelle eine
NOT NULL-Spalte mit Standardwert ohne lange Sperren hinzu? - 39.Wie benennt man eine Spalte sicher um, die eine laufende Anwendung nutzt?
- 40.Was ist eine Materialized View?
- 41.Was ist ein häufiger Nachteil, Geschäftslogik in Triggern unterzubringen?
- 42.Was macht Row-Level Security (RLS) in PostgreSQL?
- 43.Wo sollte eine Regel „eindeutige E-Mail“ durchgesetzt werden?
- 44.Wie fügt man 10.000 Zeilen effizient ein?
- 45.Was bedeutet MVCC in PostgreSQL?
- 46.Was macht VACUUM?
- 47.Warum schreibt ein
UPDATEin PostgreSQL eine ganz neue Zeilenversion? - 48.Wann sollten in MongoDB zusammengehörige Daten in ein Dokument eingebettet statt referenziert werden?
- 49.Was ist die Aggregation Pipeline von MongoDB?
- 50.Unterstützt MongoDB Transaktionen über mehrere Dokumente?
- 51.Welcher Redis-Datentyp passt zu einer Bestenliste?
- 52.Was ist der schwierigste Teil beim Cachen von Datenbankergebnissen?
- 53.Was passiert, wenn Redis seine Grenze
maxmemoryerreicht? - 54.Was ist ein zentraler Unterschied beim Skalieren von SQL und NoSQL, wie er meist beschrieben wird?
- 55.Was ist grob die dritte Normalform (3NF)?
- 56.Wie speichert man wechselnde Abo-Pläne eines Nutzers so, dass die Historie sichtbar ist?
- 57.Was ist eine polymorphe Assoziation, und was ist ihr Problem?
- 58.Wie speichert man Tags an Artikeln in einer relationalen Datenbank meist?
- 59.Warum speichert man den Preis einer Bestellung zum Kaufzeitpunkt, statt immer den aktuellen Produktpreis zu joinen?
- 60.Wofür nutzt man eine Read Replica?
- 61.Was ist Point-in-Time Recovery (PITR)?
- 62.Warum kann
ALTER TABLEan einer viel genutzten Tabelle die ganze Anwendung einfrieren? - 63.Wofür nutzt man einen Datenbank-Seed?
- 64.Warum bevorzugt man oft Integrationstests gegen eine echte Datenbank (etwa in Docker) statt die Datenbank zu mocken?
- 65.Was ist ein „Phantom Read“?
- 66.Was muss eine Anwendung tun, wenn sie in PostgreSQL die Isolationsstufe Serializable nutzt?
- 67.Was liefert
SELECT DISTINCT ON (user_id) * FROM orders ORDER BY user_id, created_at DESC? - 68.Was ergänzt
GROUP BY ROLLUP (country, city)im Ergebnis? - 69.Was ist eine generierte Spalte?
- 70.Was sind die Kompromisse eines PostgreSQL-Typs
ENUMfür eine Statusspalte? - 71.Warum kann
ORDER BY created_at DESC LIMIT 10auf einer riesigen Tabelle sehr schnell sein? - 72.Was ist ein „Bitmap Heap Scan“ in einem
EXPLAIN-Plan? - 73.Wogegen schützt
statement_timeout? - 74.Warum passt Redis
INCRgut zu einem einfachen Rate Limiter? - 75.Was macht ein Fremdschlüssel mit
ON DELETE RESTRICT(oder dem StandardNO ACTION), wenn man eine referenzierte Zeile löscht?