Wie interviewen Sie einen Datenbankprogrammierer / Administrator?


12

Während des Interviews stelle ich grundlegende Fragen zum Datenbankdesign. Normalisierung (Wann-Warum) ist eines meiner Anliegen, wenn es um Datenbankdesign geht. Einige Szenarien auf meiner Website, die synchronisierte Server betreffen, und welche / warum / wie sie die damit verbundenen Probleme berücksichtigen; Sicherheitsfragen und so weiter.

  1. Würden Sie sie nach dem Kontext eines bestimmten Datenbanksystems (z. B. Oracle) fragen, das sie bevorzugen?
  2. Welche technischen Fragen würden Sie ihnen stellen?
  3. Welche Szenarien würden Sie veröffentlichen und wonach würden Sie als Antwort auf diese Szenarien suchen?
  4. Wie würden Sie herausfinden, ob sie sich mit Sicherheitsfragen auskennen?
  5. Andere verwandte Fragen. (zB DB Restore / Backup)

Vielen Dank.

Antworten:


15

Hier sind meine 10 wichtigsten Interviewfragen für leitende Datenbankadministratoren und hier die 10 wichtigsten Fragen von Tom LaRock für Junior-DBAs.

Es ist mir aufgefallen, dass andere Personen vorschlagen, dass der Kandidat Fehler auf einem Server beheben sollte. Verwenden Sie in diesem Fall eine virtuelle Maschine mit einem Snapshot. Richten Sie einen Server auf eine bestimmte Art und Weise mit bestimmten Konfigurations- oder Leistungsproblemen ein, erstellen Sie einen Snapshot und führen Sie nach jedem Interview einen Rollback zum Snapshot durch.

Wenn Sie dies tun, beschränken Sie die Aufgaben auf die Art von Aufgaben, die Sie tatsächlich ausführen müssten. Fragen Sie keinen Produktions-DBA nach der Normalisierung, und fragen Sie keinen Entwicklungs-DBA, warum ein Knoten dem Cluster nicht beitritt.

Produktions-DBA-Aufgaben können sein:

  • Richten Sie Jobs für Sicherungen, Indexpflege und DBCCs ein. Überprüfen Sie, ob Sie gefragt werden, wie oft die Datenbank gesichert werden soll und ob die Sicherung lokal oder über das Netzwerk erfolgen soll. Fragen Sie sie nicht, wie sie eine bestimmte Bandsicherungssoftware konfigurieren sollen, es sei denn, sie befindet sich bereits in ihrem Lebenslauf.
  • Finden Sie heraus, warum Johnny sich nicht anmelden und seine Abfrage ausführen kann.
  • Jemand beschwert sich über eine langsame Abfrage. Zeigen Sie mir, wo Sie suchen würden, um herauszufinden, was los ist. Sagen Sie dann, sie haben gerade angerufen und gesagt, dass ihre Abfrage beendet ist, aber sie möchten sicherstellen, dass dies nicht noch einmal passiert.
  • Stellen Sie eine einzelne Tabelle aus dem Backup der letzten Nacht wieder her.

Entwicklungsaufgaben könnten sein:

  • Debuggen Sie diese gespeicherte Prozedur.
  • Interpretieren Sie diesen Ausführungsplan.
  • Erstellen Sie eine Ansicht, um Kunden mit Rechnungen zu verknüpfen.

Verwenden Sie das AdventureWorks-Schema. Vermutlich haben sie in letzter Zeit nicht damit gespielt, aber es ist zumindest leicht zu erklären.


3
"Ja wirklich?" Diese Liste der DBA-Nachwuchsfragen ist lächerlich. Das sind Fragen, auf die ich nach dem ersten Semester im College richtige Antworten von Entwicklern bekommen würde. Ich mag die Fragen von Sr. DBA viel mehr, mit Ausnahme der Frage "Ich bin ein Entwickler. Erkläre, warum ich einen eindeutigen Schlüssel für meinen Tisch benötige." Ich denke, das liegt daran, dass ich glauben möchte, dass Entwickler das bereits wissen. Ich bin ein Entwickler und kenne niemanden, der nicht mindestens eine Jr. DBA-Rolle übernehmen kann: o
Gromer

5
Du wärest überrascht. Ich habe Dutzende von DBA-Kandidaten für sechsstellige Jobs interviewt, die keine Antwort auf Toms Fragen hatten.
Brent Ozar

2
Das Gleiche gilt für Brent. Nachdem ich zahlreiche Interviews geführt hatte, kamen einige Kandidaten, die diese Junior-DBA-Fragen nicht beantworten konnten, trotz eines Lebenslaufs, der besagte, dass sie 10 Jahre Oracle und 5 Jahre SQL Server und ein OCP- und MCDBA-Zertifikat hatten.
K. Brian Kelley

3
Ich lache auch über Gromers Bemerkung, dass Entwickler bereits wissen wollen, dass sie einen eindeutigen Schlüssel für ihre Tische benötigen. Wenn ich für jeden Beratungsauftrag, bei dem ich reinkam, 1 USD hätte und Leistungsprobleme einfach durch Hinzufügen von Primärschlüsseln behoben hätte - oh, warte, das tue ich und es ist viel mehr als 1 USD. ;-)
Brent Ozar

1
Denken Sie daran, dass wir Entwickler aussortieren, die Sie NICHT einstellen. Klar, Sie haben es mit klugen Entwicklern zu tun - aber nur, weil Sie die Verlierer nicht eingestellt haben. Diese Fragen filtern die Verlierer heraus.
Brent Ozar

9

In meinem Software-Team testen wir im Rahmen des Interviews das Datenbankverständnis.

Wir präsentieren - ein sehr schlechtes Design (think CRM type application) und bitten sie, das Design nach ca. 30 Minuten Bedenkzeit zu verbessern.

Wir stellen ihnen dann weitere Fragen, basierend auf dem, worüber sie sprechen.

Wir suchen nach Verständnis für

  • Leistung V Normalistion
  • Schlüsseldesign und Referenzintegrität
  • Orte für Verbesserungen - die alternative DB-Struktur - Trigger, View, Procuedures
  • Bereiche, die im Design schwach sind - wie man viele bis viele Beziehungen überwindet
  • Wie sich dies auf den Server auswirkt - warten
  • Datensicherheitsprobleme
  • Anwendungssicherheitsprobleme

Wir als Team haben dann darüber nachgedacht, was wir als Junior / Senior / Architect-Antworten auf diese Art von Fragen betrachten würden.

Also für - Leistung gegen Normierung -

würde das Problem in erster Linie sehen und in der Lage sein zu diskutieren, warum (Junior)

Ich würde 4/5 NF empfehlen, aber das Problem mit der Leistung verstehen. Würden sie das Problem denormalisieren und verstehen, wie man es artikuliert. (Senior)

Würden sie einen anderen Designtyp empfehlen, z. B. ein Sternschema, und die Auswirkungen auf vielen Ebenen diskutieren (Architekt)?

  • Schlüsseldesign und referentielle Integrität

Würde sehen, dass die Ref-Integrität erforderlich ist, um Datenbeziehungen zu erzwingen und dies zu diskutieren, aber würde das Problem mit Key Choice und Design (Junior) nicht sehen

Erläutert Probleme im Zusammenhang mit Datenmengen und Datentypen, v sucht nach natürlichen Schlüsseln in den Daten und kann erläutern, warum sie diese untersuchen - und die Probleme, die mit der referenziellen Integrität verbunden sind. (Senior)

Konnte verschiedene Gesichtspunkte im Zusammenhang mit Schlüsseln und Integrität diskutieren und in der Lage sein, verschiedene aktuelle Modelle für schnelles Design zu entwickeln (Architekt)

Du bekommst das Bild.

Wenn du willst, dass ich mehr hinzufüge, dann schreibe einen Kommentar und werde detailliert beschreiben, was wir über den Rest denken.

Der Punkt ist, über die 1. Fragen nachzudenken. 2. Wir als Team haben uns dann Gedanken darüber gemacht, was wir als Junior / Senior / Architect-Antworten auf diese Art von Fragen ansehen würden.

Ich betone das Team, da der Kandidat und das Team zuversichtlich sein müssen, dass die Person, die hereinkommt, die richtigen Antworten auf die verschiedenen Ebenen findet. Die Person, die reinkommt, passt hoffentlich besser zum Team. Es gibt dem Team auch die Möglichkeit, die Wahl des Kandidaten zu beeinflussen. Sie benennen auch eine Person, die in der Fragetafel vertreten sein soll. Hilft viel beim Team-Buy-In.


5

Sie könnten eine fiktive Datenbank erstellen, in der es einige Normalisierungsprobleme gab, potenzielle Sicherheitslücken, die aber im Allgemeinen ziemlich typisch aussehen, wie eine Mitarbeiterdatenbank. Sie könnten dann anfangen, indem Sie dem Befragten einfache Fragen dazu stellen, wie bestimmte Daten in der Datenbank über Joins abgerufen werden, und sich dann auf schwierigere Fragen zu Normalisierungs- und Sicherheitsaspekten vorarbeiten.


1

Siehe Intelligent und erledigt Dinge

... und fragen Sie sie, welche Bücher sie in letzter Zeit gelesen haben, welche Blogs sie lesen und welche Podcasts sie hören. Und fragen Sie, ob sie auf stackoverflow.com und serverfault.com teilnehmen ;-)


1
Machen Sie auch eine kriminalpolizeiliche Überprüfung, ob es sich um sensible Daten handelt. Sie wollen nicht, dass jemand klug ist, Dinge erledigt und böse ist ;-)
Chris W. Rea

1
Siehe Steve Yegges Blogpost über Joels Buch: steve-yegge.blogspot.com/2008/06/…
Nick Kavadias

Danke - Yegges Post hat Spaß gemacht und zum Nachdenken angeregt. Das gefiel mir besonders: "Du willst jemanden, der übermenschlich gottähnlich ist. Jemand, der dir eine Menge Dinge beibringen kann. Jemand, den du bewunderst und wünschst, du könntest es nachahmen, nicht jemand, von dem du denkst, er wird dich bewundern und nachahmen."
Chris W. Rea

1

Dies ist nicht unbedingt datenbankbezogen, aber Dinge, die ich gerne zu einem Interview hinzufüge, sind praktische Problemlösungen und ein Entwurfsszenario.

Besitzen Sie für das praktische Problem ein System oder Systeme, auf die die Person zugreifen kann, und lassen Sie sie ein offenes Problem beheben. Meine persönlichen Favoriten sind Performance-Probleme, da diese nicht unbedingt bei Bedarf für ein Interview reproduziert werden können und es selten eine richtige Antwort gibt. Stattdessen können Sie beobachten, wie der Kandidat seinen Fehlerbehebungsprozess durchläuft. Außerdem muss er mit Ihnen eine Diskussion eröffnen, um weitere Informationen zur Umgebung zu erhalten. Der Schlüssel ist, dass der Interviewer ehrlich mit dem Problem umgeht und das Szenario nicht in eine Ostereiersuche nach einer falsch konfigurierten Einstellung oder Ähnlichem verwandelt.

Für das Entwurfsszenario gebe ich dem Kandidaten einen allgemeinen Überblick über ein neues Projekt (dh keine Legacy-Abhängigkeiten) und fordere ihn auf, einen allgemeinen Entwurf in seinem speziellen Bereich (ob DBA, Systeme oder Netzwerk) zu erstellen, der die Projektziele erfüllt. Der Schlüssel besteht darin, das Projekt so klein zu halten, dass jemand das gesamte Szenario im Kopf behalten kann, und es dauert nicht länger als ein paar Minuten, um es zu erklären.

Ein Beispiel, das ich hier für meine System- und Netzwerkmitarbeiter verwende, ist die Beschreibung ihres Entwurfs für eine kleine Zweigstelle, die angesichts bestimmter Einschränkungen unseres Geschäfts eingerichtet wird. Verwenden Sie auf der DBA-Seite möglicherweise eine kleine / offensichtliche CRUD-Anwendung. In beiden Fällen suchen Sie nicht nach einem detaillierten Entwurf, sondern eher nach einer Übersicht, um festzustellen, ob der Kandidat nach den häufigsten Problemen sucht, die auftauchen.

Für beide Szenarien ist es wichtig, eine Diskussion über das Thema zu eröffnen und den Kandidaten die Diskussion mit eigenen Fragen leiten zu lassen. Es sollte klar sein, dass Sie auch nicht nach einer genauen Antwort fragen.

Wie Sie sich vorstellen können, mag ich keine Kleinigkeiten in Interviews, und ich denke, dies gibt mir ein viel tieferes Verständnis für die Fähigkeiten der Kandidaten.


0

lass sie / ihn reden. Fragen Sie nach früheren Erfahrungen, fragen Sie, auf welche Probleme er gestoßen ist und wie sie gehandhabt wurden. Was war die Motivation, dieses oder jenes zu wählen, um häufige Probleme zu lösen? Überwachung? Scaling-Out, Scaling-Up, Sicherheit].

Ich denke, man kann viel über die Person erzählen, wenn man nur zuhört.

mürrisch, wenn Sie auf einem bestimmten Gebiet nach Fachwissen suchen, stellen Sie detaillierte Fragen - der Vorschlag von Stefan Thyberg ist sehr gut.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.