Personalvermittler bitten Sie nicht mehr, die sechs normalen Formen zu rezitieren. Sie wollen dich hören Grund Über Daten um 2 Uhr morgens, wenn der primäre Shard heiß ist und der CFO auf die Stakeholder reagiert. Die Fragen, die Sie in diesem Artikel begegnen, wurden aus echten Interviews bei Google, Amazon, Stripe, Snowflake und einer Handvoll YC -Einhörnern geerntet. Jede Antwort ist lang genug, um das SQL -Muskelgedächtnis zu erfüllen, kurz genug, um in das Konversationsfenster zu passen, bevor der Interviewer nickt oder unterbricht. Verwenden Sie diese DBMS-Interviewfragen als Checkliste und dabei nicht exexhustiv.
Metrik für die Trennung
Ich habe die Fragen in drei Kategorien eingeteilt. Jede Kategorie ist auf ein bestimmtes Erfahrungsniveau zugeschnitten und steigt allmählich an. Die Liste enthält eine Mischung aus theoretischen Fragen, die während eines Interviews gestellt werden, und einige praktische Ergänzungen, um sich um die Pragmatik zu kümmern.

Anfänger
Diese Fragen sind für diejenigen related, die noch die Seile lernen.
Q1. Was ist ein Primärschlüssel und warum können wir nicht einfach verwenden? ROWID?
A. Ein Primärschlüssel ist a logisch, Einzigartige Kennung vom Designer ausgewählt. ROWID (oder ctid, _id usw.) ist a physisch Der vom Motor gehaltene Locator und kann sich nach Wartungsvorgängen wie Vakuum, Cluster-Nachbestellung oder Shard-Wiederausgleich ändern. Das Enthüllen eines physischen Zeigers würde in dem Second, in dem die Speicherschicht Seiten neu organisiert, auf dem neuesten Stand der Fremdschlüssel brechen. Ein Primärschlüssel ist dagegen unveränderlich und tragbar über Speichermotoren hinweg, was genau das ist, was die Referenzintegrität benötigt.
Q2. Erklären Sie logische Datenunabhängigkeit im Vergleich zur physikalischen Datenunabhängigkeit.
A. Logische Datenunabhängigkeit bedeutet, dass Sie die ändern können Logisches Schema (z. B. Hinzufügen von Attributen oder neuen Tabellen) ohne Umschreiben von Anwendungsprogrammen. Physikalische Datenunabhängigkeit bedeutet, dass Sie die ändern können Lagerstruktur (z. B. Indizes, Dateiorganisation), ohne das logische Schema oder die Abfragen zu beeinflussen.
Q3. Definieren Sie 1NF, 2NF und 3NF in einem Absatz und sagen Sie mir dann, welches Sie zuerst für Analytics entspannen würden.
A. 1nf: Jede Spalte enthält atomare, unteilbaren Werte (keine Arrays oder verschachtelten Tabellen). 2nf: 1nf Plus Jede Nicht-Style-Spalte ist vollständig von der abhängig gesamte Primärschlüssel (keine partielle Abhängigkeit). 3nf: 2nf Plus Keine transitive Abhängigkeit-Non-Key-Spalten hängen möglicherweise nicht von anderen Nicht-Schlüssel-Spalten ab. In Stern-Schema-Analysen lassen wir normalerweise zuerst 3NF fallen: Wir duplizieren den Segmentnamen des Kunden in der Faktentabelle gerne, um einen Be a part of zu sparen und Aktualisierungsanomalien für die Lesegeschwindigkeit zu akzeptieren.
This autumn. Was ist der Unterschied zwischen einem Schema und einer Instanz in einem DBM?
A. Die Schema ist das Gesamtdesign der Datenbank (ihre Blaupause), die normalerweise festgelegt und selten verändert wird. Der Beispiel ist der tatsächliche Inhalt der Datenbank zu einem bestimmten Zeitpunkt. Das Schema ist stabil; Die Instanz ändert sich jedes Mal, wenn Daten aktualisiert werden.
Q5. Geben Sie die vier Säureeigenschaften an und geben Sie eine Ein-Sekunden-Kriegsgeschichte, die gegen jeden verletzt.
A. Atomizität: Ein Debitposten, aber der Kredit verschwindet und das Geld verschwindet. Konsistenz: Ein negatives Gleichgewicht ist geschrieben; Die Überprüfungsbeschränkung feuert und die gesamte Transaktion rollt zurück. Isolierung: Zwei gleichzeitige Buchungen nehmen den letzten Sitz; Beide begehen und führen zu einem überverkauften Flug. Haltbarkeit: Commit Returns Success, Energy Fail, Write-Forward-Protokoll befindet sich auf der beschädigten SSD, was zu Datenverlust führt.
Q6. Was sind die verschiedenen Arten von Datenmodellen in DBMs?
A. Häufige Modelle umfassen:
- Objektorientiertes Modell (Objekte, Klassen, Vererbung).
- Hierarchisches Modell (Baumstruktur, Eltern-Form).
- Netzwerkmodell (durch Hyperlinks verbundene Datensätze).
- Relationales Modell (Tabellen, Schlüssel, Beziehungen).
- Entitätsbeziehungsmodell (Konzeptionaler Ebenen).
Sie haben einige Erfahrungen mit Datenbanken.
Q7. Was ist ein Impasse in DBMs? Wie kann es behandelt werden?
A. Impasse tritt auf, wenn zwei Transaktionen jeweils eine Ressource enthalten und auf die Ressource des anderen warten und für immer blockieren. Lösungen:
- Vermeidung (Banker -Algorithmus).
- Prävention (Sperrbestellung, Zeitüberschreitungen).
- Erkennung (Wait-for-Diagramm, Zykluserkennung).
Q8. Was ist Checkpointing in der DBMS -Wiederherstellung?
A. Ein Kontrollpunkt ist ein Marker, bei dem die DBMs Spült schmutzige Seiten und Protokolle zum stabilen Speicher. Während der Absturzwiederherstellung kann das System vom letzten Kontrollpunkt aus starten, anstatt das gesamte Protokoll zu scannen, was die Wiederherstellung schneller macht.
Q9. Was macht der Optimierer während eines wirklich? Kostenbasiert Schließen Sie sich der Wahl zwischen verschachteltem Schleifen, Hash und Zusammenführen an?
A. Es schätzt die Kardinalität jedes Kindes, konsultiert Spaltenstatistiken (häufigste Werte, Histogramme), berücksichtigt den verfügbaren Speicher (Work_MEM), Indizes und Sorten. Wenn die äußere Seite winzig ist (nach Filtern) und die innere Seite einen selektiven Index hat, gewinnt der verschachtelte Schleifen. Beide Seiten sind groß und ungeortiert, wodurch eine In-Reminiscence-Hash-Tabelle (Hash-Be a part of) erstellt wird. Wenn beide bereits sortiert sind (Index-Scan oder vorheriger Sortierschritt), ist Merge-Be a part of O (N+M) und Speichercheap. Die endgültige Kostenzahl ist I/O + CPU, gewichtet durch empirische Konstanten, die in pg_statisticist oder mysql.column_stats.
Q10. Erklären Phantom lesen und welches Isolationsniveau es verhindert.
A. Transaktion A läuft SELECT SUM(quantity) WHERE standing="PENDING" zweimal; Zwischen den Läufen fügt die Transaktion B eine neue ausstehende Zeile ein. A sieht eine andere Gesamtsumme – Phantom. Nur serialisierbare (oder Snapshot -Isolierung mit Prädikatsperrs) verhindert Phantome; Wiederholbares Lesen tut nicht (entgegen Folklore in Mysql).
Fortschrittlich
Sie haben Produktionsdaten gelöscht und dies durchlebt.
Q11. Ihr 2 TB -Tisch muss geschützt werden. Gib das genau Shard-Key-Entscheidungsbaum Sie würden sich gegen die CTO verteidigen.
A. 1: Hear Sie die Prime 10 Abfragen nach Frequenz und Bandbreite auf – Shard muss beides erfüllen.
2: Wählen Sie eine Hochkardinalität, gleichmäßig verteilte Säule (user_idnicht country_code).
3: Stellen Sie sicher, dass die Spalte in jeder Multi-Reihen-Transaktion angezeigt wird. Ansonsten wird zweiphasige Commit unvermeidlich.
4: Überprüfen Sie, ob Sie das Scorching-Spot-Risiko (z. B. ein Promi-Benutzer)-Hash-Shard + professional Shard AutoIncrement, nicht die Reichweite verwenden.
5: Beweisen Sie, dass Sie on-line mit logischer Replikation neu schützen können. Präsentieren Sie ein Dry-Run-Lower-Over-Skript. Erst wenn alle fünf Kästchen angekreuzt werden, unterschreiben Sie das Design -Dokument.
Q12. Führe mich durch die internen Schritte, die PostgreSQL von nimmt INSERT Aussage zu einem dauerhaften Scheiben -Byte.
A. 1: Parser → Uncooked Parse Tree.
2: Analysator → Baum mit Typen abfragen.
3: Planer → One-Node ModifyTable Plan.
4: Ausführender greift auf der Zielseite einen Pufferstift, fügt das Tupel ein und legt Xmin/Xmax -Systemspalten fest.
5: Wal -Rekord in gemeinsame Puffer eingefügt in Erinnerung.
6: Commit schreibt Wal über XLogwrite-jetzt Crash-Secure.
7: Hintergrundautor spülen später schmutzige Datenseiten; Wenn der Server vorher stirbt, wiederholen Sie die Wiederherstellung von Wal. Die Haltbarkeit ist in Schritt 6 garantiert, nicht Schritt 7.
Q13. Entwerfen Sie einen bitemporalen Tisch, der sich hält gültige Zeit (wenn die Tatsache in der Realität wahr struggle) und Transaktionszeit (als die Datenbank es wusste). Schreiben Sie den Primärschlüssel und den SQL, um eine rückwirkende Preisänderung zu korrigieren.
A. Primärschlüssel: (product_id, valid_from, transaction_from). Korrektur ist ein nur anhängen Einfügen mit einer neuen Transaktion einfügen. Keine Updates.
INSERT INTO worth(product_id, worth, valid_from, valid_to, transaction_from, transaction_to)
VALUES (42, 19.99, '2025-07-01', '2025-12-31', now(), '9999-12-31');
Um die vorherige falsche Behauptung zu beenden:
UPDATE worth SET transaction_to = now()
WHERE product_id = 42 AND valid_from <= '2025-07-01' AND valid_to > '2025-07-01'
AND transaction_to = '9999-12-31';
Wählt jetzt verwendet FOR SYSTEM_TIME AS OF Und BETWEEN valid_from AND valid_to Um die richtige zeitliche Scheibe abzurufen.
Abschluss
Die Liste besteht aus einer vielseitigen Mischung aus Fragen von praktisch bis rein theoretisch. Dies bedeutet wirklich, dass Sie auf DBMS-Denken, nicht auf Syntax getestet werden: Schlüssel und Normalisierung, Säure- und Isolationsanomalien, Abfrageplanung, Wiederherstellung und Wal, Deadlocks, Shard-Kee-Strategie, Postgres-Interna und bitemporale Modellierung. Ziel ist es, Kompromisse, Invarianten, Fehlermodi und operatives Urteilsvermögen zu ermitteln.
Auswendiglernen Klauseln überspringen. Zeigen Sie, warum Primärschlüsse Rowids überleben, wenn wiederholbare Lesen immer noch Phantome durchlaufen, warum ein Hash -Beitritt zu verschachtelten Loops und wie Sie ohne Ausfallzeiten neu gestellt würden. Wenn Sie diese Entscheidungen laut durchgehen können, werden Sie als Ingenieur für Datensysteme auftreten.
Wenn Sie in einem Interview mit einem Datenbankingenieur wirklich alles durchmachen möchten, durch die folgenden Ressourcen:
Melden Sie sich an, um weiter zu lesen und Experten-Kuratinhalte zu genießen.
