- I colloqui tecnici nel settore adtech si concentrano su SQL intermedio, Python con pandas e capacità analitiche.
- È fondamentale padroneggiare JOIN, GROUP BY, subquery e funzioni finestra sia in SQL che nei loro equivalenti in pandas.
- La comprensione delle metriche di valutazione dei modelli, come l'accuratezza, il punteggio F1 o l'AUC ROC, apporta valore aggiunto nei ruoli di analisi avanzata.
- Una preparazione efficace combina la teoria, numerosi esercizi pratici e l'apprendimento di come spiegare il ragionamento ad alta voce.
Se ti stai preparando per un colloquio nel settore dell'adtech , dell'analisi digitale o dell'analisi dei dati , prima o poi dovrai affrontare il temuto test tecnico. È in questa fase che le aziende verificano se padroneggi davvero ciò che hai scritto nel tuo CV: SQL per estrarre dati, Python per elaborarli e analizzarli, e alcune capacità di pensiero analitico per non perderti tra tabelle e script.
La buona notizia è che i colloqui tecnici non sono una magia: di solito ruotano attorno agli stessi concetti fondamentali di SQL, Python e valutazione dei modelli . Se comprendi a fondo i principi di base, ti eserciti con esercizi pratici e impari a spiegare il tuo ragionamento, avrai un vantaggio significativo rispetto agli altri candidati.
Perché i colloqui tecnici fanno paura (e come affrontarli con maggiore serenità)
Nei ruoli di analista dati o di prodotto nel settore adtech, i colloqui tecnici in genere combinano domande concettuali con esercitazioni pratiche . Potrebbe esserti chiesto di spiegare la funzione di una clausola SQL o di risolvere un caso aziendale che coinvolge i dati delle campagne pubblicitarie programmatiche.
In genere, la valutazione si basa su tre aspetti: SQL di livello intermedio (JOIN, GROUP BY, subquery, funzioni finestra), Python orientato ai dati (pandas, pulizia dei dati, aggregazioni, merge) e capacità di interpretare i risultati e comunicarli . Non cercano un data scientist senior, ma piuttosto qualcuno in grado di lavorare con i dati in modo solido e affidabile.
L'errore tipico che molti candidati commettono è quello di concentrarsi sulla memorizzazione della sintassi e dimenticare di esercitarsi con esercizi completi , simili a quelli che si trovano su piattaforme come HackerRank, StrataScratch o nei test interni delle aziende. Il tuo obiettivo dovrebbe essere quello di arrivare al colloquio avendo già risolto decine di query e script molto simili.
Livello SQL generalmente richiesto nei colloqui per posizioni nel settore adtech e per analisti di dati.
Per un ruolo da analista in ambito adtech o marketing digitale, le aziende si aspettano che tu abbia una buona conoscenza del SQL relazionale classico : estrarre dati da più tabelle, combinarli, raggrupparli, filtrarli e creare metriche utili. Non saranno richieste competenze di amministrazione di database, ma dovresti essere a tuo agio con query di media complessità.
In genere, il test include query che combinano INNER JOIN, LEFT JOIN, filtri con clausole WHERE, aggregazioni con GROUP BY e alcune condizioni sulle aggregazioni tramite clausole HAVING. In livelli leggermente più avanzati, è molto comune trovare subquery e funzioni finestra per classifiche, totali cumulativi e confronti tra righe.
Nel settore dell'adtech, probabilmente ti troverai a rispondere a domande di business come "Quali campagne hanno un CTR superiore alla media del settore?" o "Quali editori stanno perdendo impressioni rispetto al mese scorso?". Risolvere questi problemi in modo efficiente richiede solitamente una conoscenza di base delle subquery correlate e delle funzioni finestra.
Domande di base su SQL che si presentano frequentemente (e come rispondere)
Quasi tutti i colloqui tecnici orientati ai dati includono una serie di domande di base sulla teoria SQL . Non cercano di metterti in difficoltà, ma piuttosto di accertarsi che tu abbia una solida preparazione di base.
Una delle domande più frequenti riguarda la differenza tra WHERE e HAVING . Il modo più chiaro per spiegarla è che WHERE filtra le singole righe prima del raggruppamento , mentre HAVING filtra i gruppi che sono già stati aggregati . Si può anche precisare che le condizioni che coinvolgono funzioni di aggregazione (COUNT, SUM, AVG, ecc.) devono essere inserite in HAVING, non in WHERE.
Un'altra domanda classica riguarda i tipi di JOIN esistenti e quando utilizzare ciascuno di essi: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN e, in alcuni casi, CROSS JOIN o self-join. Nell'analisi dei dati, il LEFT JOIN è ampiamente utilizzato quando si desidera conservare l'intero set di dati primario (ad esempio, tutti gli utenti) anche se non sono presenti record associati nella tabella secondaria (ad esempio, gli acquisti).
Esempi di query SQL di base e della loro logica
Per darti un'idea del livello "minimo ragionevole", dovresti essere in grado di scrivere query a memoria, ad esempio selezionando colonne specifiche, filtrando righe e ordinando i risultati . A un livello molto elementare, le domande tipiche includono: come estrarre tutte le colonne da una tabella, come selezionare solo alcune colonne o come applicare alias leggibili con AS.
È frequente anche ricevere domande sulla clausola WHERE con condizioni multiple che combinano AND, OR e NOT, o su come utilizzare gli operatori di confronto (<, <=, >, >=, =) sia per valori numerici che per date. Molte aziende sottolineano l'importanza dei filtri NULL , per i quali il semplice utilizzo del segno di uguale non è sufficiente; è necessario utilizzare IS NULL o IS NOT NULL.
Un altro metodo classico è il filtraggio basato sul testo con LIKE e pattern che utilizzano i caratteri jolly % e _. Ad esempio, è possibile trovare campagne i cui nomi contengono una parola specifica o utenti i cui indirizzi email terminano con un determinato dominio. È importante precisare che LIKE '%testo%' cerca il pattern in qualsiasi punto della stringa.
Infine, questa sezione di base di solito illustra come aggiornare i record con UPDATE e filtrare le righe da modificare con WHERE, nonché come eliminare le righe con DELETE FROM utilizzando condizioni chiare. È fondamentale sottolineare sempre l'importanza di utilizzare una clausola WHERE specifica per evitare di eliminare accidentalmente metà della tabella.
Query intermedie: GROUP BY, HAVING, subquery e UNION
Una volta superato il livello junior, quasi tutte le aziende iniziano a dare valore alla tua padronanza della combinazione di GROUP BY, funzioni di aggregazione e filtri sugli aggregati con HAVING . È ciò che userai quotidianamente per generare report sulle prestazioni di campagne, segmenti di pubblico e creatività.
Funziona così: GROUP BY raggruppa le righe in base a una o più colonne, e puoi applicare SUM, COUNT, AVG, MIN e MAX a questi gruppi per calcolare le metriche. Successivamente, HAVING permette di mantenere solo i gruppi che soddisfano una determinata condizione, ad esempio, i clienti con vendite superiori a una certa soglia.
Un altro tema ricorrente sono le subquery : una query all'interno di un'altra query. Vengono spesso utilizzate per filtrare in base a valori calcolati in una fase precedente, ad esempio per selezionare i clienti con vendite superiori alla media globale o le campagne con impressioni superiori al 90° percentile.
Viene spesso chiesto quale sia la differenza tra UNION e UNION ALL . UNION combina due set di risultati con lo stesso schema ed elimina i duplicati; UNION ALL fa la stessa cosa ma mantiene tutte le righe, anche se ripetute. Nell'analisi dei dati, spesso si preferisce UNION ALL per motivi di prestazioni e perché si desidera conservare tutti i record originali.
Funzioni finestra: il prossimo passo avanti in SQL
Le funzioni finestra sono diventate uno standard nei test tecnici a un certo livello, soprattutto per i ruoli legati all'adtech in cui è necessario analizzare tendenze nel tempo, classifiche delle campagne o totali degli investimenti.
L'idea chiave è che una funzione finestra calcola un valore su un insieme di righe correlate alla riga corrente , ma senza comprimere il risultato come fa GROUP BY. In altre parole, si visualizzano ancora tutte le singole righe, ma accompagnate da un valore aggregato calcolato su una "finestra" di dati.
La sintassi tipica prevede l'utilizzo della funzione (SOMMA, MEDIA, CLASSIFICA, ecc.) seguita da OVER, e all'interno di OVER definire la partizione (PARTITION BY) e l'ordinamento (ORDER BY). Ad esempio, per calcolare la classifica delle vendite per venditore o il numero cumulativo di impressioni al giorno.
Se vuoi dimostrare la tua competenza, dovresti familiarizzare con funzioni come RANK, DENSE_RANK, ROW_NUMBER, LAG e LEAD . Sono molto utili per classificare le campagne in base alle loro prestazioni, confrontare ogni periodo con quello precedente o identificare le variazioni anno su anno delle metriche chiave.
CTE, totali cumulativi e medie mobili
Nei moderni colloqui di lavoro, la leggibilità del codice SQL è molto apprezzata. Per questo motivo, spesso vengono poste domande sulle Common Table Expressions (CTE) . Una CTE è essenzialmente un tipo di tabella temporanea denominata, definita con clausole WITH, che esiste solo durante l'esecuzione della query.
Le CTE (Common Table Expression) vengono utilizzate per suddividere query complesse in blocchi logici e riutilizzare i risultati intermedi. Ad esempio, si calcolano prima le metriche giornaliere per campagna in una CTE e poi, nella query principale, si eseguono ulteriori aggregazioni o filtri su tale risultato.
Un altro esercizio molto comune è il calcolo di un totale progressivo utilizzando la funzione SOMMA come finestra. Negli ambienti adtech, è normale che vengano richiesti impressioni, clic o spesa cumulativi per valutare le prestazioni di una campagna nel tempo.
A questo proposito, troviamo le medie mobili , in cui la media viene applicata come funzione finestra su un intervallo di righe traslato (ad esempio, le due date precedenti e quella corrente). Questo è un metodo semplice per uniformare le serie temporali e individuare le tendenze senza dipendere eccessivamente dai picchi giornalieri.
Livello di Python generalmente richiesto per un analista di dati
Nella maggior parte dei ruoli di analista dati (incluso il settore adtech), le aziende non si aspettano che tu sia un guru del machine learning, ma si aspettano che tu abbia una buona conoscenza pratica di Python con pandas . In genere, ti verrà chiesto di caricare set di dati, pulirli, trasformarli e ottenere metriche o visualizzazioni semplici.
I test Python si concentrano in genere su operazioni come la lettura di dati da file CSV , l'ispezione di valori nulli e tipi di colonna, il filtraggio delle righe, la creazione di nuove colonne, le aggregazioni tramite groupby e le join tra DataFrame. In molti casi, la formulazione è quasi identica alla parte SQL, ma in formato pandas.
Non è frequente che in un test per analisti venga richiesto di costruire modelli complessi da zero, sebbene possano apprezzare la capacità di utilizzare scikit-learn per addestrare un modello di base e, soprattutto, la conoscenza delle metriche fondamentali per misurarne le prestazioni.
Operazioni di base di pandas che dovresti padroneggiare
Per completare con successo qualsiasi esercizio sui dati in Python, è necessario padroneggiare le operazioni di base sui DataFrame. Il primo passo consiste solitamente nel caricare un file utilizzando `read_csv` ed esplorarne la struttura con metodi come `head()`, `info()` o `describe()`.
Di solito compare anche la parte relativa alla pulizia dei valori nulli : si conta quanti valori nulli ci sono per colonna con isnull().sum(), si decide se eliminare intere righe o colonne con dropna() o riempire quelle mancanti con fillna(), ad esempio utilizzando la media o la mediana della colonna.
Per quanto riguarda i filtri, ti verrà chiesto di creare condizioni su colonne numeriche o categoriche, ad esempio selezionando le vendite superiori a un certo importo o le righe che soddisfano diverse condizioni combinate con & e |. La chiave è saper scrivere df senza esitazioni.
La spiegazione di `groupby` in pandas è quasi sempre inclusa, poiché è l'equivalente diretto di `GROUP BY` di SQL. Si raggruppa in base a una o più colonne e poi si applicano aggregazioni come `sum`, `mean`, `count`, ecc. La sintassi `groupby('colonna').agg()` è essenziale.
Esegue unioni e fusioni tra DataFrame
Così come padroneggiare le JOIN è fondamentale in SQL, padroneggiare pd.merge è obbligatorio in pandas . Le aziende vorranno verificare se sai come unire set di dati che condividono una chiave, ad esempio, una tabella di utenti con un'altra di eventi o acquisti.
La funzione merge accetta come parametri i due DataFrame da unire, la colonna chiave (on) e il tipo di join (how), che può essere 'left', 'right', 'inner' o 'outer', proprio come in SQL. Nell'analisi dei dati, il left join viene utilizzato principalmente per preservare il dataset principale e aggiungere attributi o metriche da tabelle secondarie.
Durante un colloquio, è consigliabile menzionare dettagli come cosa succede in presenza di chiavi duplicate su entrambi i lati o come gestire i conflitti di nomi di colonna con i suffissi dei parametri. Questo denota un livello di maturità superiore.
Domande tipiche e più teoriche su Python
Oltre a pandas, molti colloqui includono una breve sezione di domande generali su Python per verificare la comprensione del linguaggio. Si tratta solitamente di domande brevi su funzionalità, memoria, tipi di dati o piccoli dettagli sintattici.
Tra gli argomenti che ricorrono spesso c'è la gestione automatica della memoria in Python, basata su un heap privato a cui l'utente non accede direttamente e su un garbage collector responsabile della liberazione degli oggetti che non hanno più riferimenti.
È frequente che venga chiesto di confrontare Python con Java , non per decretare un vincitore, ma per dimostrare di comprenderne le differenze: Python è più dinamico, con una sintassi più concisa, perfetto per la prototipazione e la scienza dei dati, mentre Java tende a prevalere in ecosistemi più aziendali e ad alte prestazioni.
Altre domande tipiche riguardano le espressioni lambda (funzioni anonime per operazioni semplici), i processi di serializzazione/deserializzazione per convertire gli oggetti in byte e recuperarli, oppure la differenza tra liste e tuple, dove le prime sono mutabili e definite tra parentesi quadre e le seconde sono immutabili e definite tra parentesi tonde.
Maggiori concetti chiave di Python nei colloqui di lavoro
È frequente che venga chiesto come eliminare o copiare un oggetto in Python. Di solito, è sufficiente spiegare che si può usare l'istruzione `del` per rimuovere un riferimento e che le copie superficiali si effettuano con `copy.copy()`, mentre le copie profonde richiedono `copy.deepcopy()`.
Un altro concetto che potrebbe emergere, soprattutto nei profili di backend, è il cosiddetto effetto "dogpile" , che descrive lo scenario in cui molti utenti o processi attaccano contemporaneamente una risorsa (ad esempio, un sito web o una cache), saturando il sistema.
Nell'ambito dell'ecosistema, potresti anche imbatterti in domande sui database utilizzabili con Python . L'approccio più sensato è quello di menzionare alcuni dei più diffusi come MySQL, PostgreSQL, SQLite, MongoDB e Oracle, e sottolineare che Python in genere si integra bene con un'ampia varietà di motori di database relazionali e NoSQL.
Infine, spesso sorgono domande più semplici, come ad esempio come ordinare un dizionario utilizzando l'operatore sorted sugli elementi, cos'è un namespace e a cosa serve (associare nomi a oggetti in ambiti diversi), o come avviare un sottoprocesso utilizzando il modulo subprocess con funzioni come run() o Popen().
Metriche per la valutazione dei modelli in Python: il minimo indispensabile da sapere
Sebbene molte posizioni da analista non richiedano la progettazione di architetture di deep learning, è comune avere familiarità con le metriche di base per la valutazione dei modelli di classificazione , soprattutto se il ruolo prevede l'utilizzo di prodotti basati sui dati, l'attribuzione delle campagne o il rilevamento delle frodi nel settore dell'adtech.
Il punto di partenza è la matrice di confusione , che riassume i successi e i fallimenti di un classificatore binario o multiclasse. Nel caso binario, si suddivide in veri positivi (TP), veri negativi (TN), falsi positivi (FP) e falsi negativi (FN). Una comprensione approfondita di queste quattro categorie è fondamentale.
Dalla matrice si ricavano metriche quali l' accuratezza , che misura la percentuale di previsioni corrette sul totale; la precisione (veri positivi / previsioni positive); e il richiamo o la sensibilità (veri positivi / positivi effettivi). Queste ultime due sono particolarmente importanti quando le classi sono sbilanciate.
Il punteggio F1 combina accuratezza e richiamo utilizzando la media armonica, penalizzando i punteggi particolarmente bassi in entrambi i parametri. È una metrica comune in scenari in cui sia i falsi positivi che i falsi negativi sono costosi, come nel rilevamento delle frodi, nella valutazione dei lead o nella diagnosi di malattie.
Altre metriche avanzate: ROC-AUC, logloss, Jaccard e altre ancora.
Per le posizioni con una forte componente di data science o marketing analytics, le aziende valutano la padronanza di metriche più avanzate come ROC-AUC , che misura l'area sotto la curva ROC e riflette la capacità di un modello di separare le classi.
La curva ROC rappresenta la relazione tra il tasso di veri positivi (recall) e il tasso di falsi positivi (1 – specificità) per diverse soglie decisionali. Un modello casuale si troverebbe su una linea diagonale, mentre un buon modello sarebbe più vicino all'angolo in alto a sinistra. Maggiore è l'area sottesa alla curva, migliore è la capacità di discriminazione.
Un'altra metrica comune è la perdita logaritmica (logloss) , che valuta la qualità delle probabilità previste, penalizzando fortemente l'eccessiva sicurezza e gli errori. Un modello perfetto avrebbe una perdita logaritmica pari a 0 e, in generale, minore è la perdita logaritmica, migliore è il risultato.
Potrebbero anche chiederti dell'indice di Jaccard , che misura la somiglianza tra due insiemi come la dimensione dell'intersezione divisa per la dimensione dell'unione. Viene utilizzato per valutare classificatori, segmentazione e sistemi di raccomandazione, tra le altre cose.
In alcuni contesti, si fa riferimento ai grafici di guadagno e di incremento , che mostrano la percentuale di target raggiunti utilizzando solo una parte della popolazione (ad esempio, il 20% degli utenti con il punteggio più alto secondo il modello). Questo strumento è ampiamente utilizzato nel marketing per decidere a chi rivolgersi per primi.
Kolmogorov-Smirnov, coefficiente di Gini e valutazione approfondita
Se l'azienda è fortemente focalizzata su modelli di punteggio o di rischio, potrebbero comparire metriche come la statistica di Kolmogorov-Smirnov (KS) , che misura il grado di separazione tra le distribuzioni dei punteggi positivi e negativi.
Un valore KS vicino a 100 (in percentuale) indica che il modello separa le due popolazioni in modo quasi perfetto; un valore vicino a 0 implica che il modello non distingue meglio di quanto farebbe il caso. In pratica, i modelli reali si collocano in intervalli intermedi e vengono confrontati tra loro per selezionare il migliore.
Il coefficiente di Gini è un'altra metrica derivata dalla curva ROC-AUC utilizzando la formula Gini = 2 × AUC – 1. Molto diffuso nel settore del credito e delle assicurazioni, viene interpretato anche come una misura di disuguaglianza: maggiore è il valore di Gini, maggiore è la capacità del modello di concentrare i veri positivi a punteggi più elevati.
Nei colloqui più avanzati, potrebbe esserti chiesto di spiegare come queste metriche vengono implementate in Python utilizzando scikit-learn (ad esempio, confusion_matrix, accuracy_score, roc_auc_score, f1_score…) e di commentare quando useresti ciascuna di esse a seconda della natura del problema e dello squilibrio tra le classi.
Come strutturare le risposte durante il colloquio tecnico
Oltre al codice che scrivi, i selezionatori prestano molta attenzione al tuo modo di pensare e di esprimerti . Una risposta mal strutturata può farti apparire meno esperto di quanto tu non sia in realtà, anche se conosci la soluzione corretta.
Un approccio molto utile per rispondere a domande tecniche è il seguente: innanzitutto, spiegate il concetto in una frase , poi fornite un esempio concreto (idealmente collegato a uno dei vostri progetti) e, se pertinente, menzionate alternative o sfumature . Questo metodo funziona altrettanto bene per SQL, Python o metriche di modello.
Ad esempio, se ti chiedono a cosa serve una CTE, potresti dire che è una subquery temporanea denominata che migliora la leggibilità delle query complesse, aggiungere che la si usa quando è necessario riutilizzare più volte un risultato intermedio e menzionare che in alcuni casi potrebbe essere sostituita da subquery nidificate, anche se ciò risulta meno chiaro.
Pensare ad alta voce è fondamentale . Se ti blocchi, non rimanere in silenzio: verbalizza ciò che stai cercando di fare, quali informazioni ti mancano, quali presupposti stai facendo. Questo aiuta l'intervistatore a capire il tuo processo di pensiero e a volte ti fornisce persino indizi o chiarimenti che ti permettono di andare avanti più facilmente.
Gli errori più comuni nei colloqui tecnici sui dati
Molti candidati vengono scartati non per mancanza di competenze sufficienti in SQL o Python, ma a causa di una combinazione di scarsa preparazione ed errori di comunicazione . È fondamentale essere pienamente consapevoli delle insidie più comuni per poterle evitare.
Il primo errore è memorizzare senza capire . Conoscere la sintassi di RANK o di una funzione lambda non serve a molto se poi non si sa spiegare in quali casi si usano questi strumenti o perché sono preferibili ad altre alternative.
Un altro errore molto comune è quello di non valutare la qualità dei dati durante gli esercizi. Se vi viene fornito un dataset, prima di iniziare l'aggregazione, è consigliabile verificare la presenza di valori nulli, duplicati o outlier che potrebbero falsare l'analisi. Questo dimostra buon senso ed esperienza pratica.
È inoltre estremamente dannoso evitare di porre domande di chiarimento . In un business case relativo a campagne pubblicitarie, ad esempio, è perfettamente logico chiedere informazioni sulla stagionalità, sul periodo di riferimento, se si cercano metriche per utente o per impressione, e così via. Rimanere in silenzio e fare supposizioni spesso porta a soluzioni che non sono in linea con ciò che l'intervistatore aveva in mente.
Infine, evitate l'approccio dell'"overcoding": creare soluzioni inutilmente complesse quando la query o lo script potrebbero essere più semplici. Negli ambienti di lavoro reali, ciò che conta sono la chiarezza, la manutenibilità e l'efficienza , non soluzioni che sembrano un puzzle.
Piano di preparazione intensivo in due settimane
Se hai poco tempo prima del colloquio, puoi seguire un piano condensato che copra le tre aree chiave: SQL, Python con pandas e applicazione pratica. Non farai miracoli in 14 giorni, ma potrai arrivare con un solido livello di competenza e una ragionevole sicurezza.
Nei primi giorni, è consigliabile concentrarsi su SQL di livello principiante e intermedio : ripassare la sintassi di base, le JOIN, le GROUP BY, le subquery e le funzioni finestra più comuni. Dedicare del tempo sia alla lettura degli esempi che alla scrittura delle proprie query.
In una seconda fase, concentratevi su pandas : caricamento, pulizia e filtraggio dei dati, raggruppamento, unione e visualizzazione rapida con matplotlib o seaborn. Non è necessario creare dashboard complesse, ma dovete essere in grado di replicare in Python le stesse trasformazioni che eseguireste in SQL.
Dedicate poi alcuni giorni a esercitazioni pratiche su piattaforme come HackerRank o su repository di colloqui tecnici. L'obiettivo è abituarsi al formato, ai vincoli di tempo e alla pressione di scrivere codice in un ambiente controllato.
Infine, provate a cimentarvi in una o due simulazioni complete di colloquio : prendete un dataset pubblico, ponete domande aziendali pertinenti, risolvetele con SQL o Python e spiegate a voce alta tutto il vostro ragionamento, dall'esplorazione iniziale alle conclusioni finali.
Grazie a un buon mix di ripasso teorico, pratica guidata ed esercizi realistici, arriverai al colloquio con una solida preparazione in SQL intermedio, Python per l'analisi dei dati e metriche dei modelli , ovvero esattamente ciò che la maggior parte delle aziende nel settore dell'adtech e dell'analisi dei dati si aspetta di trovare.
