Jakie są pytania dotyczące testowania znajomości języka SQL przez programistów? [Zamknięte]

14

Jakie są pytania dotyczące testowania znajomości języka SQL przez programistów? Jaka jest odpowiedź na pytanie? A co oznaczałby brak poprawnej odpowiedzi pod względem czasu, który mógłby zrozumieć pojęcie (a) związane z pytaniem?

GOOGLED: wyzwanie sql

błędy
źródło
2
Na pewno podam prawdziwy przykład na żywo i poproszę o napisanie złożonego zapytania. Na przykład poproś o wybranie najbardziej rentownego miesiąca dla każdego z ostatnich 10 lat, jeśli masz tabelę zakupów. ALE, ponieważ pytasz również o pytania i odpowiedzi, prawdopodobnie oznacza to, że nie jesteś ekspertem i nie możesz osądzać. W takim przypadku możesz wypróbować usługę testowania strony trzeciej, przynajmniej jako wstępny filtr przed rozmową kwalifikacyjną. Sugerowałbym testy4geeks.com . Mają test SQL.
Dhaval Patel

Odpowiedzi:

20

To zależy od tego, jak trudne to ma być. Poza tym nieufnie udzielam odpowiedzi, ponieważ większość problemów z SQL ma wiele akceptowalnych sposobów działania, a także istnieją sposoby rozwiązywania problemów z SQL w niechlujny sposób, który spowoduje inne problemy. Osoba „oceniająca” odpowiedź zdecydowanie musi być w stanie rozwiązać ją samodzielnie.

To powiedziawszy, oto kilka wymyślonych przeze mnie z czubka głowy.

Niezwykle łatwy poziom:
Biorąc pod uwagę tabelę pracowników z kolumnami EmpID, Imię, Nazwisko, HireDate i TerminationDate:
Napisz zapytanie, aby zwrócić wszystkich pracowników nadal pracujących dla firmy o nazwiskach zaczynających się od „Smith” posortowanych według nazwiska, a następnie imienia.

Łatwy poziom
Biorąc pod uwagę powyższą tabelę pracowników oraz nową tabelę „Przegląd roczny” z kolumnami EmpID i Data przeglądu:
Napisz zapytanie, aby zwrócić wszystkich pracowników, którzy nigdy nie mieli oceny posortowanej według HireDate.

Poziom średni Biorąc pod uwagę powyższą tabelę pracowników, napisz zapytanie, aby obliczyć różnicę (w dniach) między najbardziej i najmniej zatrudnionym pracownikiem, który nadal pracuje w firmie?

Poziom trudny
Biorąc pod uwagę powyższą tabelę pracowników, napisz zapytanie, aby obliczyć najdłuższy (w dniach) okres, w którym firma przeszła bez zatrudniania lub zwalniania z pracy.

Trudniejszy poziom
Ponownie, używając tych samych tabel, napisz zapytanie, które zwraca każdego pracownika, a dla każdego wiersza / pracownika należy podać największą liczbę pracowników, którzy pracowali dla firmy w dowolnym momencie ich kadencji oraz datę pierwszego osiągnięcia maksymalnego. Dodatkowe punkty za nieużywanie kursorów.

JohnFx
źródło
Fajna odpowiedź - naprawdę podoba mi się ewolucja pytań. Dlaczego osoba zadająca pytania musi być w stanie na nie odpowiedzieć? Dlaczego nie napisać testu jednostkowego na podstawie danych wyjściowych i czasu wykonywania? A co byś powiedział, ile tygodni łącznych postępów w opanowaniu koncepcji SQL zajęłoby przeciętnemu programistowi osiągnięcie najtrudniejszego poziomu podanego przez ciebie? Czy wierzysz też, że programista, który potrafi odpowiedzieć na najtrudniejsze pytanie, byłby w stanie skutecznie rozwiązać bardzo dużą większość zadań związanych z SQL?
błąka się
3
Powodem, dla którego chciałbym, aby pytający (a przynajmniej „równiarka”) mógł odpowiedzieć na nie, jest to, że podejście może powiedzieć ci tyle samo co wynik. Martwię się również o to, że ankieter, który nie jest technologiem, ma wcześniej napisaną odpowiedź i nie przyjmuje innych potencjalnie poprawnych odpowiedzi (karta mówi „Moop”).
JohnFx,
Co do tego, czy pytania te pokazują zdolność do wykonania bardzo dużej większości zadań związanych z SQL. Jeśli ich zadaniem będzie pisanie zapytań, prawdopodobnie tak. Jeśli oczekujesz, że będą administrować serwerem DB, musisz zadać konkretne pytania.
JohnFx,
Dzięki za wyjaśnienia, ankieter bez technologii w tym przypadku nie byłby osobą, ale systemem, stąd test jednostkowy i środowisko wykonawcze. Oczywiste jest, że systemy nie piszą ani nie odczytują kodu, ludzie, ale na świecie jest tak wielu programistów, a moim zdaniem potrzeba posiadania ich na miejscu jest w najlepszym wypadku ograniczona. Zgadnij, jeśli ktoś nie przejdzie testu, ale pomyśli, że ma rację, zawsze może oznaczyć go jako poprawny.
błądzi
I tak, celem pytań będzie programista, a nie administrator bazy danych.
wpadki
4

Zasadniczo siedzę na wywiadach dla specjalistów od danych, więc moje pytania są zwykle trudne. Ale jedna rzecz, której wymagałbym od każdego, kto będzie pisał SQL, to znajomość złączeń i kiedy używać złączenia lewego lub wewnętrznego. Każdy, kto tego nie rozumie, nie ma żadnej firmy, która zapyta o bazę danych w jakikolwiek sposób.

Chciałbym też upewnić się, że rozumieją, jak wykonać GROUP BY i korzystać z funkcji agregujących.

Różnica między UNION a UNION ALL wyeliminowała wielu biednych kandydatów na moim stanowisku.

HLGEM
źródło
2

Chciałbym zapytać „Dlaczego i jak należy zdezynfekować wartości wejściowe podane od użytkownika, które zostaną użyte w zapytaniu SQL?”

Jest to konieczne, aby zapobiec zastrzyki SQL, i jest w stanie odpowiedzieć na to pytanie wymaga dobrej znajomości składni i poleceń SQL (takie jak SELECT, UPDATE, DROP, DELETE, itd.), A także w jaki sposób te można obejść przy użyciu komentarze SQL złamać zapytanie i wstrzyknąć to, co złośliwy użytkownik może zrobić.

gablin
źródło
1
Czy nie jest odpowiedź: nigdy nie dezynfekuj danych wejściowych, użyj przygotowanego oświadczenia?
kevin cline
@Emmad Kareem, każdy, kto nie może odpowiedzieć na to pytanie, nie powinien pisać SQL.
HLGEM
@gablin, naprawdę nie rozumiem, dlaczego tak jest. Czy mógłbyś coś wyjaśnić? Ile książek SQL omawia ten temat?
NoChance,
2

Pomagałem w opracowaniu testu technicznego dla programistów baz danych. Pytania były moim zdaniem dość podstawowe: napisz instrukcje CREATE TABLE dla danej struktury tabeli; zrób kilka prostych zapytań; itp.

Większość kandydatów do pracy, którzy nazywali siebie ekspertami SQL, zaliczyła test. Jeden powiedział, że chociaż był programistą SQL od wielu lat, nigdy nie napisał instrukcji CREATE TABLE, ponieważ GUI zrobił to za niego.

Mamy podobne doświadczenia z innymi testami technicznymi. W przypadku personelu obsługi systemu Windows zadania są podobne do „utworzenia użytkownika domeny”, „dodania drukarki”, „zmiany uprawnień do pliku”. Większość ludzi nie może wykonywać tych zadań, szczególnie pod presją. Uważamy, że jeśli potrafisz robić nawet proste rzeczy, prawdopodobnie jesteś dość kompetentny.

Barry Brown
źródło
1
Obawiam się, że jestem po stronie programisty korzystającego z GUI. Możesz spędzić całą karierę bez regularnego pisania skryptów CREATE TABLE. Wiele osób opracowuje modele danych w narzędziach CASE, które automatycznie generują dla Ciebie DDL. Ogólnie rzecz biorąc,
unikam
+1 @Barry Brown: Zgadzam się, i to jest interesujący punkt.
błąka się
0

Jeśli wolisz zadawać bardziej otwarte pytania: zadawaj ogólne pytania dotyczące typów danych DATA, DATETIME ... Zapytaj o różnice między różnymi implementacjami / produktami różnych dostawców. Porozmawiaj o narzędziach z linii poleceń, programach ładujących, ładnych drukarkach ... może podczas rozmowy możesz nauczyć się nowej sztuczki.

knb
źródło