Jak przeprowadzić wywiad z programistą / administratorem bazy danych?


12

Podczas wywiadu zadaję podstawowe pytania dotyczące projektowania baz danych. Normalizacja (kiedy-dlaczego) jest jednym z moich problemów, jeśli chodzi o projektowanie baz danych. Niektóre scenariusze I strona, która obejmuje zsynchronizowane serwery i co / dlaczego / jak biorą pod uwagę powiązane problemy; problemy bezpieczeństwa i tak dalej.

  1. Czy zapytałbyś ich w kontekście konkretnego systemu baz danych (np. Oracle), który wolą?
  2. Jakie pytania techniczne byś im zadał?
  3. Jakie scenariusze umieściłbyś na stronie i czego szukałbyś jako odpowiedzi na te scenariusze?
  4. Jak dowiesz się, czy mają wiedzę na temat rozwiązywania problemów związanych z bezpieczeństwem?
  5. Inne powiązane pytania. (np. DB Restore / Backup)

Dziękuję Ci.

Odpowiedzi:


15

Oto moje 10 najczęściej zadawanych pytań podczas wywiadów dla starszych administratorów baz danych, a oto 10 najważniejszych pytań Toma LaRocka dla młodszych DBA.

Zauważyłem, że inni sugerują, że kandydat powinien rozwiązać problemy z serwerem. Jeśli zastosujesz to podejście, użyj maszyny wirtualnej z migawką. Skonfiguruj serwer w określony sposób z pewnymi problemami z konfiguracją lub wydajnością, zrób jego migawkę, a następnie po każdej rozmowie możesz przywrócić do migawki.

Jeśli to zrobisz, ogranicz zadania do zadań, które faktycznie masz. Nie pytaj produkcyjnego DBA o normalizację i nie pytaj DBA programistycznego, dlaczego jeden węzeł nie dołączy do klastra.

Produkcyjne zadania DBA mogą być:

  • Skonfiguruj zadania kopii zapasowych, konserwacji indeksów i DBCC. Sprawdź, czy pytają Cię, jak często chcesz tworzyć kopię zapasową bazy danych i czy chcesz, aby była ona tworzona lokalnie czy przez sieć. Nie pytaj ich, jak skonfigurować konkretne oprogramowanie do tworzenia kopii zapasowych na taśmach, chyba że jest już w ich CV.
  • Dowiedz się, dlaczego Johnny nie może się zalogować i uruchomić zapytania.
  • Ktoś narzeka na powolne zapytanie. Pokaż mi, gdzie będziesz szukać, aby dowiedzieć się, co się dzieje. Następnie powiedz, że właśnie zadzwonili i powiedzieli, że zapytanie zostało zakończone, ale chcą się upewnić, że to się więcej nie powtórzy.
  • Przywróć pojedynczy stolik z kopii zapasowej zeszłej nocy.

Zadania programistyczne mogą być:

  • Debuguj tę procedurę składowaną.
  • Zinterpretuj ten plan wykonania.
  • Utwórz widok, aby dołączyć klientów do faktur.

Użyj schematu AdventureWorks. Szanse są, że ostatnio nie grali z nim, ale przynajmniej łatwo to wytłumaczyć.


3
Naprawdę? Ta lista pytań dla młodzieży DBA jest niedorzeczna. To są pytania, na które otrzymam poprawne odpowiedzi od programistów po ich pierwszym semestrze na studiach. Bardzo lubię pytania siostry DBA, z wyjątkiem „Jestem programistą. Wyjaśnij, dlaczego potrzebuję unikalnego klucza na moim stole”. Chyba dlatego, że chcę wierzyć, że programiści już to wiedzą. Jestem programistą i nie znam żadnego, który nie mógłby przyjąć roli Jr. DBA: o
Gromer

5
Zdziwiłbyś się. Przeprowadziłem wywiad z dziesiątkami kandydatów DBA na sześciocyfrowe prace, którzy nie znali odpowiedzi na pytania Toma.
Brent Ozar

2
To samo dotyczy tego, co powiedział Brent. Po przeprowadzeniu wielu wywiadów pojawiło się całkiem sporo kandydatów, którzy nie mogli odpowiedzieć na pytania młodszych DBA, pomimo życiorysu, który mówi, że mieli 10 lat Oracle i 5 lat SQL Server oraz certyfikat OCP i MCDBA.
K. Brian Kelley

3
Mam też chichot z uwagi Gromera, że ​​chcę wierzyć, że programiści już wiedzą, że potrzebują unikalnego klucza na swoich stołach. Gdybym miał 1 $ za każde zadanie konsultingowe, w które wchodziłem i naprawiałem problemy z wydajnością, po prostu dodając klucze podstawowe - och, czekaj, robię, a to dużo więcej niż 1 $. ;-)
Brent Ozar

1
Pamiętaj, że mówimy o wykluczeniu programistów, których NIE zatrudniasz. Jasne, jesteś wokół inteligentnych programistów - ale tylko dlatego, że nie zatrudniłeś przegranych. Te pytania odfiltrowują przegranych.
Brent Ozar

9

W moim zespole ds. Oprogramowania w ramach wywiadu testujemy zrozumienie baz danych.

Prezentujemy - bardzo kiepski projekt (pomyśl aplikację typu CRM) i prosimy o ulepszenie projektu, po około 30 minutach namysłu.

Następnie zadajemy im więcej pytań w oparciu o to, o czym mówią.

Próbujemy zrozumieć

  • Performance V Normalistion
  • Kluczowy projekt i rzetelność referencyjna
  • Miejsca do ulepszenia -ie Alternatywna struktura DB - wyzwalacze, widok, procedury
  • Obszary słabe w projekcie - jak pokonać wiele do wielu relacji
  • Jak to wpływa na serwer - utrzymanie
  • Problemy z bezpieczeństwem danych
  • Problemy z bezpieczeństwem aplikacji

Jako zespół zastanawialiśmy się wtedy nad odpowiedziami na tego typu pytania, które uznalibyśmy za Junior / Senior / Architect.

So for - Performance v Normisalation -

zobaczy przede wszystkim ten problem i będzie mógł omówić, dlaczego (Junior)

poleciłby 4/5 NF, ale zrozumiałby problem z wydajnością, czy zdenormalizowałby i zrozumiałby, jak wyrazić problem (Senior)

czy zaleciliby inny rodzaj projektu, np. schemat gwiazd i omawiali implikacje na wielu poziomach (Architekt)

  • Kluczowy projekt i integralność referencyjna

Widziałby, że integralność referencyjna jest potrzebna do egzekwowania relacji danych i byłaby w stanie to omówić, ale nie dostrzegłaby problemu z Key Choice and Design (Junior)

Omówiłby kwestie związane z wolumenami danych i typami danych v szukającymi naturalnych kluczy w danych i byłby w stanie przedyskutować, dlaczego na nie patrzą - oraz problemy, które wynikają z integralnością referencyjną (Senior)

Może argumentować różne punkty widzenia związane z kluczami i integralnością i być w stanie wymyślić różne rzeczywiste modele do szybkiego projektowania (Architekt)

Dostajesz obraz.

Jeśli chcesz, żebym dodał więcej, dodaj komentarz i opisz szczegółowo, co myślimy o reszcie, ale po prostu uwzględniłem pierwsze dwa, aby dać ci wyobrażenie o tym, co myśleliśmy.

Chodzi o to, aby pomyśleć o 1. pytaniach 2. My, jako zespół , zastanawialiśmy się wtedy, co uważamy za odpowiedzi typu Junior / Senior / Architect na tego typu pytania.

Podkreślam, że zespół jako kandydat i zespół muszą być pewni umiejętności osoby wchodzącej, a jeśli wymyślą to, co postrzegają jako odpowiedzi na różne poziomy, osoba wchodząca będzie, mam nadzieję, lepiej pasować do zespołu. Daje także zespołowi możliwość wpływania na wybór kandydata. Wyznaczają również osobę, która będzie zasiadać w panelu pytań. Bardzo pomaga przy wpisowym do zespołu.


5

Możesz stworzyć fikcyjną bazę danych, w której było kilka problemów z normalizacją, potencjalne usterki bezpieczeństwa, ale ogólnie rzecz biorąc wygląda to dość typowo, jak baza danych pracowników. Następnie możesz zacząć od zadawania rozmówcy prostych pytań, takich jak uzyskanie pewnych danych w bazie danych za pomocą połączeń, pracując nad trudniejszymi pytaniami dotyczącymi normalizacji i bezpieczeństwa.


1

Zobacz Smart and Gets Things Done

... i zapytaj ich, jakie książki ostatnio czytają, jakie blogi czytają i jakich podcastów słuchają. I zapytaj, czy uczestniczą w stackoverflow.com i serverfault.com ;-)


1
Dokonaj również sprawdzenia przeszłości kryminalnej, jeśli mają oni do czynienia z poufnymi danymi. NIE chcesz kogoś, kto jest mądry,
Chris W. Rea

1
Zobacz post na blogu Steve'a Yegge na temat książki Joelsa
Nick Kavadias

Dzięki - post Yegge był zabawny i pobudzał do myślenia. Szczególnie podobało mi się to: „Chcesz kogoś, kto jest nadludzko podobny do boga. Kogoś, kto może nauczyć cię wielu rzeczy.
Chris W. Rea

1

To niekoniecznie jest związane z bazą danych, ale rzeczy, które lubię dodawać do wywiadu, to praktyczne rozwiązywanie problemów i scenariusz projektowy.

W przypadku problemu praktycznego należy mieć system lub systemy, do których dana osoba może uzyskać dostęp, i poprosić ich o rozwiązanie problemu otwartego. Moimi osobistymi ulubionymi tutaj są problemy z wydajnością, ponieważ niekoniecznie jest to coś, co można odtworzyć na żądanie w celu przeprowadzenia wywiadu i rzadko jest jedna poprawna odpowiedź. Zamiast tego możesz obserwować, jak kandydat przechodzi przez proces rozwiązywania problemów, a także będzie musiał otworzyć z tobą dyskusję, aby uzyskać dodatkowe informacje na temat środowiska. Kluczem do sukcesu jest, aby osoba przeprowadzająca wywiad była szczera w kwestii problemu, a nie zamieniała scenariusz w polowanie na jajka wielkanocne dla jednego źle skonfigurowanego ustawienia lub coś w tym rodzaju.

W scenariuszu projektowym przedstawiam kandydatowi ogólny zarys nowego projektu (tj. Brak zależności od starszych wersji) i proszę o wymyślenie ogólnego projektu w ich konkretnym obszarze (DBA, systemów lub sieci), który spełnia cele projektu. Kluczem jest utrzymanie projektu na tyle małym, aby ktoś mógł zachować cały scenariusz w głowie, a wyjaśnienie nie zajmuje więcej niż kilka minut.

Przykładem, którego używam tutaj dla moich systemów i pracowników sieci, jest opisanie ich projektu dla małego oddziału, który jest tworzony, biorąc pod uwagę pewne ograniczenia naszej działalności. Po stronie DBA, może użyj małej / oczywistej aplikacji CRUD. W obu przypadkach nie szukasz szczegółowego projektu, ale bardziej ogólny przegląd i sprawdź, czy kandydat szuka typowych problemów, które się pojawiają.

Ważnym punktem dla obu tych scenariuszy jest otwarcie dyskusji na ten temat i umożliwienie kandydatowi poprowadzenia dyskusji własnymi pytaniami. Powinno być jasne, że nie pytasz o dokładną odpowiedź na którekolwiek z nich.

Jak możesz sobie zobrazować, bardzo nie lubię ciekawostek podczas wywiadów i myślę, że to pozwala mi na głębsze zrozumienie umiejętności kandydatów.


0

pozwól jej mówić. zapytaj o wcześniejsze doświadczenia, zapytaj, jakie problemy napotkał i jak sobie poradzili. jaka była motywacja do wyboru tego lub innego rozwiązania typowych problemów [backup? monitorowanie? skalowanie, skalowanie, bezpieczeństwo].

myślę, że możesz wiele powiedzieć o tej osobie, po prostu słuchając.

niestety, jeśli szukasz specjalistycznej wiedzy w danej dziedzinie, zadaj szczegółowe pytania - sugestia Stefana Thyberga jest bardzo dobra.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.