Quali sono le domande per testare una conoscenza dei programmatori di SQL? [chiuso]


14

Quali sono le domande per testare una conoscenza dei programmatori di SQL? Qual è la risposta alla domanda? E cosa significherebbe la mancanza di una risposta corretta in termini di tempo in grado di comprendere i concetti relativi alla domanda?

GOOGLED: sfida sql


2
Vorrei sicuramente dare un vero esempio dal vivo e chiedere di scrivere una query complessa. Ad esempio, chiedere di selezionare il mese più redditizio per ciascuno degli ultimi 10 anni, se si dispone della tabella degli acquisti. MA poiché fai anche domande e risposte, probabilmente significa che non sei esperto e non puoi giudicare. In questo caso puoi provare alcuni servizi di test di terze parti, almeno come filtro iniziale prima dell'intervista. Vorrei suggerire tests4geeks.com . Hanno un test SQL.
Dhaval Patel,

Risposte:


20

Dipende da quanto tu voglia che sia difficile. Inoltre, sono un po 'diffidente nel darti la risposta perché la maggior parte dei problemi SQL ha diversi modi accettabili per fare le cose e ci sono anche modi per risolvere i problemi SQL in modi sciatti che causeranno altri problemi. La persona che "classifica" la risposta deve sicuramente essere in grado di risolverla da sola.

Detto questo, eccone alcuni che mi sono venuti in mente.

Livello estremamente semplice:
data una tabella dei dipendenti con le colonne EmpID, FirstName, Lastname, HireDate e TerminationDate:
scrivere una query per restituire tutti i dipendenti che lavorano ancora per l'azienda con i cognomi che iniziano con "Smith", ordinati per cognome e poi nome.

Livello semplice
Data la tabella dei dipendenti sopra, più una nuova tabella "AnnualReviews" con le colonne EmpID e ReviewDate:
scrivere una query per restituire tutti i dipendenti che non hanno mai avuto una recensione ordinata per HireDate.

Livello medio Data la tabella dei dipendenti sopra, scrivere una query per calcolare la differenza (in giorni) tra il dipendente più o meno occupato che lavora ancora per l'azienda?

Livello difficile
Data la tabella dei dipendenti sopra, scrivere una query per calcolare il periodo più lungo (in giorni) in cui la società è andata senza assumere o licenziare nessuno.

Livello più difficile
Sempre utilizzando le stesse tabelle, scrivere una query che restituisca ciascun dipendente e per ogni riga / dipendente includere il maggior numero di dipendenti che hanno lavorato per l'azienda in qualsiasi momento durante il loro mandato e la prima data in cui è stato raggiunto il massimo. Punti extra per non usare i cursori.


Bello, rispondi - mi piace molto l'evoluzione delle domande. Perché la persona che pone le domande deve essere in grado di rispondere? Perché non scrivere semplicemente unit test in base a output e runtime? Inoltre, cosa diresti il ​​numero di settimane connettive di padronanza progressiva dei concetti SQL che il programmatore medio impiegherebbe per raggiungere il livello più difficile da te indicato? Crederesti anche che un programmatore in grado di rispondere alla domanda più difficile che farai sarebbe in grado di affrontare efficacemente una maggioranza molto elevata di attività relative a SQL?
errori

3
Il motivo per cui vorrei che il richiedente (o almeno il "selezionatore") fosse in grado di rispondere loro è che l'approccio può dirti tanto quanto il risultato. Mi preoccupo anche che un intervistatore non tecnico abbia una risposta pre-scritta e non accetti altre risposte potenzialmente corrette (La carta dice "Moop").
JohnFx,

Se queste domande dimostrano la capacità di affrontare una maggioranza molto elevata di attività correlate a SQL. Se il loro compito sarà scrivere query, probabilmente è così. Se ti aspetti che amministrino un server DB, dovrai porre domande specifiche.
JohnFx,

Grazie per i chiarimenti, l'intervistatore non tecnico in questo caso non sarebbe una persona, ma un sistema, quindi il test unitario e il tempo di esecuzione. Chiaramente i sistemi non stanno scrivendo o leggendo codice, lo sono gli umani, ma ci sono così tanti programmatori al mondo e la necessità secondo me di averli in loco è al massimo limitata. Indovina se una persona ha fallito il test, ma ha pensato di avere ragione, potrebbe sempre contrassegnare come corretto.
errori

E sì, l'obiettivo per le domande sarebbe un programmatore, non un amministratore di database.
errori

4

In genere intervengo solo su interviste per specialisti dei dati, quindi le mie domande tendono ad essere difficili. Ma una cosa che richiederei a chiunque scriverà SQL è la conoscenza dei join e quando utilizzare un join sinistro rispetto a un join interno. Chiunque non capisca che non ha attività di query di un database in alcun modo forma o forma.

Un'altra cosa che vorrei fare è assicurarmi che capiscano come fare un GROUP BY e usare le funzioni di aggregazione.

E la differenza tra UNION e UNION ALL ha eliminato molti candidati poveri nel mio lavoro.


2

Vorrei chiedere "Perché e come si dovrebbero disinfettare i valori di input forniti dall'utente che verranno utilizzati in una query SQL?"

Ciò è necessario per evitare che l'iniezione SQL, ed essere in grado di rispondere a questa richiede una buona conoscenza sulla sintassi e comandi (quali SQL SELECT, UPDATE, DROP, DELETE, ecc), così come quelli può essere aggirato utilizzando commenti SQL per rompere una query e iniettare ciò che l'utente maligno potrebbe voler fare.


1
Non è la risposta: non disinfettare mai gli input, usare un'istruzione preparata?
Kevin Cline,

@Emmad Kareem, chiunque non possa rispondere che non dovrebbe scrivere SQL.
HLGEM,

@gablin, non vedo davvero perché sia ​​così. Puoi spiegarci un po '? Quanti libri SQL parlano di questo argomento?
NoChance,

2

Ho avuto una mano nello sviluppo di un test tecnico per i programmatori di database. Le domande erano quelle che considero piuttosto basilari: scrivere le istruzioni CREATE TABLE per una data struttura di tabella; fare alcune semplici domande; eccetera.

La maggior parte dei candidati che si definivano esperti di SQL hanno bocciato il test. Uno ha affermato che sebbene fosse stato uno sviluppatore SQL per molti anni, non aveva mai scritto un'istruzione CREATE TABLE perché la GUI l'ha fatto per lui.

Abbiamo avuto esperienze simili con altri test tecnici. Per il personale di supporto di Windows, le attività sono simili a "creare un utente di dominio", "aggiungere una stampante", "modificare le autorizzazioni su un file". Molte persone non possono svolgere questi compiti, specialmente sotto pressione. Pensiamo che se riesci a fare anche le cose semplici, probabilmente sei abbastanza competente.


1
Temo di essere dalla parte dello sviluppatore usando la GUI. Puoi trascorrere un'intera carriera senza scrivere regolarmente script CREATE TABLE. Molte persone sviluppano modelli di dati negli strumenti CASE che generano automaticamente il DDL per te. In generale, evito qualsiasi test che si basa principalmente sulla memorizzazione della sintassi, a favore di quelli che
mettono

+1 @Barry Brown: sono d'accordo, ed è un punto interessante.
errori

0

Se si preferisce porre domande più aperte: porre domande generali sui tipi di dati DATE, DATETIME .... Chiedi informazioni sulle differenze tra le diverse implementazioni / prodotti del fornitore. Parla di strumenti da riga di comando, caricatori di massa, stampanti carine ... forse puoi imparare un nuovo trucco durante l'intervista.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.