28th Feb 2025 Tempo di lettura: 15 minuti Domande di intervista su Meta SQL Jill Thornhill domande per un colloquio su sql lavori e carriera Indice Il processo di reclutamento di Meta Colloquio iniziale con il selezionatore Primo colloquio Colloquio di codifica Suggerimenti e consigli Colloquio di progettazione Colloquio comportamentale Quali ruoli di Meta richiedono conoscenze di SQL? Prepararsi al colloquio con Meta SQL Domande del colloquio Meta SQL: Teoria Domanda 1: SQL JOIN Domanda 2: WHERE vs. HAVING Domanda 3: Vincoli Domanda 4: Transazioni Domanda 5: Procedure memorizzate vs. funzioni Domanda 6: Iniezione SQL Domande del colloquio sul Meta SQL: Pratica Domanda 1: Statistiche di utilizzo Riflessione Esempio di risposta Domanda 2: Identificare gli host di eventi attivi Pensare bene Esempio di risposta Domanda 3: Trovare i top power user Riflessioni Esempio di risposta Domanda 4: Analizzare l'attività degli utenti anno per anno Riflessioni Esempio di risposta Trovare risorse per la preparazione al colloquio Meta SQL I colloqui SQL di Meta sono difficili e dovete affinare le vostre capacità se volete ottenere un lavoro prestigioso e ben retribuito. Continuate a leggere per scoprire che tipo di domande SQL vi potrebbero essere poste in un Meta, come prepararsi al meglio e come distinguersi dalla massa. Meta è un'azienda fortemente orientata ai dati, che utilizza un'ampia varietà di tecnologie di database. MySQL è il loro database principale, ma hanno anche database speciali per varie applicazioni. Qualunque sia il ruolo per cui vi candidate, è probabile che dobbiate interagire con i database. Meta è più propensa della maggior parte delle aziende a includere domande relative all'SQL nei colloqui. Se state pensando di candidarvi per un posto di lavoro in Meta, vale la pena di consultare esempi di domande SQL di Meta e di fare più pratica possibile. Se non avete ancora familiarità con l'SQL, potreste iscrivervi al nostro percorso formativo SQL dalla A alla Z. Questa serie di corsi vi porterà dal livello principiante fino agli argomenti più avanzati di SQL. Potrete acquisire esperienza pratica grazie a più di 700 esercizi guidati e familiarizzare con i concetti di database relazionale. Se avete già un po' di esperienza con SQL ma non avete usato molte delle sue funzioni avanzate, il nostro corsoSQL avanzato potrebbe essere più adatto a voi. In tutti i nostri percorsi e corsi, accederete a un database attraverso il vostro browser Internet, senza dover scaricare o installare nulla. Inoltre, l'assistenza è disponibile a ogni passo. Supponiamo che conosciate un po' di SQL e che siate interessati a lavorare per Meta. Cosa dovete aspettarvi durante un colloquio di lavoro in Meta SQL? Il processo di reclutamento di Meta I selezionatori di Meta valuteranno il vostro background tecnico, la vostra capacità di risolvere i problemi e la vostra abilità di lavorare bene all'interno di un team. L'intero processo durerà probabilmente due o tre mesi e comporterà diversi cicli di colloqui. Il primo passo è creare un profilo di carriera su Meta. Se non l'avete ancora fatto, potete visitare la pagina Crea un profilo di carriera per iniziare. All'interno del vostro profilo, potrete visualizzare le offerte di lavoro consigliate e creare avvisi di lavoro. Troverete anche una serie di risorse utili, tra cui guide di preparazione ai colloqui ed esercizi pratici. Una volta che vi siete candidati per un lavoro, riceverete il materiale di preparazione specifico per il ruolo tramite il vostro profilo. Vediamo le fasi del colloquio che affronterete una volta presentata la domanda di lavoro. Colloquio iniziale con il selezionatore Cosa aspettarsi: Vi verranno chieste informazioni sul vostro background, sulla vostra esperienza e sui vostri obiettivi. Vi verrà anche chiesto perché volete lavorare in Meta. Il selezionatore vi parlerà del ruolo e del team con cui lavorerete. Come prepararsi: Non appena vi siete candidati, prendetevi il tempo necessario per: Assicurarsi di conoscere la descrizione del lavoro. Rivedere le vostre esperienze rilevanti e pensare a come mostrarle al meglio al selezionatore. Fare un elenco di domande da porre al selezionatore. Primo colloquio Cosa aspettarsi: Questo colloquio può avvenire per telefono o (più probabilmente) tramite una piattaforma di incontri online. Incontrerete alcuni membri del team Meta e conoscerete meglio il ruolo e le persone con cui lavorerete. Come prepararsi: Il vostro selezionatore vi aiuterà a prepararvi per questo colloquio e vi fornirà tutto il materiale necessario. Colloquio di codifica Cosa aspettarsi: Se vi siete candidati per ruoli come analista di dati o analista di marketing, il linguaggio di codifica potrebbe essere SQL. Il colloquio durerà 45 minuti, 35 dei quali dedicati alla risoluzione di due domande di codifica di media difficoltà. Il colloquio può essere condotto di persona o online. Come prepararsi: Il vostro selezionatore vi fornirà del materiale che vi aiuterà a prepararvi per il colloquio. Il modo migliore per prepararsi a questo colloquio è fare pratica, pratica e ancora pratica! Dovrete anche assicurarvi di avere una buona dimestichezza con il linguaggio di programmazione di destinazione. Cosa cerca l'intervistatore: Sarete valutati in base a: Competenza tecnica. Capacità di risolvere i problemi. Stile di comunicazione. Capacità di verificare la vostra soluzione con dati di test pertinenti. Suggerimenti e consigli L'intervistatore sta valutando le vostre capacità di comunicazione, quindi assicuratevi di: Fare domande prima di iniziare, in modo da assicurarsi di aver compreso correttamente il problema. Siate pronti a spiegare all'intervistatore perché avete scelto quell'approccio al problema. Ascoltate attentamente i commenti dell'intervistatore: potrebbero farvi intendere che state adottando l'approccio sbagliato. Chiedete all'intervistatore se non siete sicuri di poter utilizzare una specifica funzionalità (ad esempio, funzioni non standard) nella vostra soluzione. Inoltre, ricordate che: L'intervistatore sta anche cercando di valutare il modo in cui affrontate i problemi, quindi pensate ad alta voce mentre lavorate. Siate consapevoli dei problemi di performance: ad esempio, è probabile che la vostra soluzione sia lenta o che utilizzi troppo spazio nelle tabelle temporanee? Non inserirete la vostra soluzione in un database, quindi non avrete alcun aiuto per la sintassi e non potrete fare prove. Se il colloquio è di persona, scriverete la soluzione su una lavagna; altrimenti, lavorerete con un semplice editor di testo. La sintassi perfetta è meno importante della dimostrazione di saper risolvere problemi complessi. Se vedete più di una soluzione al problema, chiedete all'intervistatore se va bene scegliere quella che preferite. Se avete già visto la domanda, ditelo. L'intervistatore vuole valutare il modo in cui affrontate un nuovo problema; se conoscete già la risposta, per lui sarà ovvio. Infine, non dimenticate di esaminare i dati di esempio che userete per testare la vostra soluzione. Colloquio di progettazione Questo potrebbe non essere applicabile ad alcuni ruoli: ad esempio, gli analisti di dati potrebbero invece sostenere un colloquio relativo alle conoscenze statistiche. Tuttavia, in questo colloquio potrebbe esservi chiesto di creare un progetto di alto livello per un'applicazione tipica del mondo reale. Potreste dover dimostrare la vostra comprensione dei concetti RDBMS, quindi assicuratevi di essere aggiornati in questo campo. Colloquio comportamentale Questo colloquio valuta se il candidato è adatto al team. Quali ruoli di Meta richiedono conoscenze di SQL? La maggior parte dei ruoli in Meta prevede una certa quantità di interazioni con il database. Ecco alcuni dei ruoli in cui è possibile incontrare domande di colloquio sull'SQL: Scienziato dei dati Analista di dati Ingegnere software Analista di prodotto Analista aziendale Ingegnere di apprendimento automatico Analista di marketing Amministratore di database Manager di programmi tecnici Analista della crescita Prepararsi al colloquio con Meta SQL Prima di iniziare a candidarvi per un lavoro presso Meta, dovreste familiarizzare con i suoi prodotti, ad esempio Facebook, WhatsApp, Messenger e Instagram. Cercate di visualizzare cosa potrebbe accadere dietro le quinte e quali dati di base utilizzano questi prodotti. Leggete la cultura e gli obiettivi dell'azienda e scaricate la guida di Meta per la preparazione al colloquio. Potete anche guardare il video del colloquio di codifica di Meta per avere un'idea più precisa di cosa vi aspetta. Dovrete fare molta pratica con il tipo di domande che potrebbero esservi poste durante un colloquio con Meta. Provate a lavorare con un semplice editor di testo per inserire le vostre risposte e a pensare ad alta voce mentre risolvete i problemi. Questo vi aiuterà ad abituarvi a questa parte del colloquio tecnico. Prima di iniziare a esercitarvi, potreste voler fare il nostro SQL Skills Assessment per avere un'idea più precisa delle aree in cui dovete migliorare. Abbiamo anche diversi fogli di calcolo gratuiti e scaricabili che possono essere utilizzati per aiutarvi a rivedere le vostre conoscenze: Cheatsheet per il colloquio SQL Cheatsheet sulle giunzioni SQL Window Functions (Funzioni Finestra) Cheatsheet Domande del colloquio Meta SQL: Teoria Vediamo ora alcune domande di pratica che vi daranno un'idea di cosa aspettarvi a un colloquio Meta SQL. Le domande si dividono in due tipi: teoriche e pratiche. Le domande teoriche possono essere poste durante uno dei colloqui verbali. Oppure gli argomenti possono emergere durante la discussione delle soluzioni nel colloquio di progettazione. Le domande pratiche sono simili ai problemi che vi verrà chiesto di risolvere durante il colloquio di codifica. Domanda 1: SQL JOIN Qual è la differenza tra una INNER JOIN e una OUTER JOIN in SQL? Una INNER JOIN restituisce solo le righe che hanno una corrispondenza in entrambe le tabelle. Una OUTER JOIN include nel risultato le righe non corrispondenti secondo le seguenti regole: LEFT JOIN restituisce tutte le righe della tabella di sinistra insieme alla riga corrispondente della tabella di destra o a null. RIGHT JOIN restituisce tutte le righe della tabella di destra insieme alla riga corrispondente della tabella di sinistra o a null. FULL JOIN restituisce tutte le righe di entrambe le tabelle. Domanda 2: WHERE vs. HAVING Qual èdifferenza tra l'uso della clausola WHERE e della clausola HAVING? La clausola WHERE filtra le singole righe per determinate condizioni, mentre la clausola HAVING filtra gruppi di righe per condizioni aggregate. Pertanto, HAVING può essere utilizzata solo con la clausola GROUP BY. Domanda 3: Vincoli Descrivete tre tipi di vincoli vincoli SQL. I vincoli impongono regole che si applicano quando le righe vengono inserite, aggiornate o eliminate nel database; vengono definiti quando viene creata una tabella. Esistono diversi tipi di vincoli, quindi si può scegliere uno dei tre seguenti: NOT NULL specifica che una colonna non può contenere null. UNIQUE Specifica che i valori di questa colonna non possono essere duplicati all'interno della tabella. PRIMARY KEY specifica che questa colonna sarà usata come chiave primaria della tabella, cioè i valori devono essere unici e non nulli, in modo da poter identificare ogni riga. FOREIGN KEY specifica che questa colonna sarà collegata alla chiave primaria di un'altra tabella. Questo rafforza l'integrità referenziale. CHECK definisce una condizione per consentire solo valori specifici in questa colonna. DEFAULT specifica un valore che verrà utilizzato se non viene specificato alcun valore quando si inseriscono dati in questa colonna. AUTO_INCREMENT specifica che la colonna verrà automaticamente impostata al numero successivo in sequenza durante un inserimento. Domanda 4: Transazioni Spiegate cosa si intende per transazione in SQL. Cosa succede se il server si blocca a metà di una transazione? Una transazione è un gruppo di aggiornamenti che devono essere eseguiti come un'unità: o tutti gli aggiornamenti devono essere eseguiti o nessuno. Un esempio potrebbe essere l'acquisto di un cliente, che aggiorna la tabella customer la tabella sales tabella, la tabella stock tabella e il libro cassa. Tutti questi aggiornamenti devono essere eseguiti con successo se si vuole che la transazione abbia successo. Una volta che tutti gli aggiornamenti sono stati eseguiti, è possibile eseguire il commit della transazione e il database sarà aggiornato in modo permanente. In alternativa, è possibile eseguire il rollback della transazione, nel qual caso non verrà apportata alcuna modifica al database. Se il sistema si blocca, nessuno degli aggiornamenti viene reso permanente e il database non riflette la transazione. Domanda 5: Procedure memorizzate vs. funzioni Qual è la differenza tra una stored procedure e una funzione in SQL? Fornite un esempio di quando ognuna di esse può essere utilizzata. Una stored procedure è un insieme di istruzioni SQL predefinite che eseguono un compito. Le stored procedure possono restituire facoltativamente uno o più valori e possono accettare parametri. Vengono invocate con l'istruzione CALL. Ad esempio, possono estrarre i dati per un report o eseguire procedure di liquidazione di fine anno. Anche le funzioni sono un insieme di istruzioni SQL predefinite, ma restituiscono sempre esattamente un oggetto. L'oggetto può essere un valore o una tabella. Le funzioni possono accettare parametri e possono essere utilizzate all'interno di istruzioni SQL come le colonne del database. Tra gli esempi vi sono l'esecuzione di calcoli per incorporare regole aziendali e l'esecuzione di formattazioni personalizzate. Domanda 6: Iniezione SQL Che cosaSQL injection (SQLi)? Descrivete due modi in cui un programmatore può difendersi da un attacco SQLi. L'iniezione SQL è un modo per iniettare codice dannoso in un'istruzione SQL, di solito per aggiornare in modo fraudolento il database. Immaginate un programma che costruisce un'istruzione SQL come una stringa di testo. Quando i clienti effettuano richieste online, forniscono i dati che verranno utilizzati nel codice SQL. Per fare un esempio molto semplice, il programma potrebbe costruire un'istruzione SQL a partire dal testo SELECT * FROM customer WHERE account_no = seguito dal numero di conto corrente inserito dal cliente. Se il cliente inserisce il numero di conto come 12404; UPDATE customer SET balance_owing = 0 WHERE account_no = 12404, l'istruzione di aggiornamento dannosa viene iniettata nel database. Due modi in cui un programmatore potrebbe difendersi da questa situazione sono: Eseguire alcuni controlli sull'istruzione SQL risultante prima di eseguirla. Utilizzare istruzioni preparate, in modo che il numero di conto sia usato come parametro e non per costruire l'istruzione. Domande del colloquio sul Meta SQL: Pratica Ai fini delle domande pratiche del colloquio SQL, ipotizziamo un database con le seguenti tabelle e colonne. Table nameUsersPostsEventevent_activityinteractions containsuser_idpost_idevent_idevent_act_idinter_id thenameuser_idHostevent_idaction rows:locationdatetime_posteddatetime_eventuser_iduser_id date_joineddetailsDetailsdatetime_acttarget_type response_typetarget_id Domanda 1: Statistiche di utilizzo Calcolare la percentuale di utenti che non hanno postato quest'anno. Riflessione La domanda può essere affrontata in diversi modi. Il più semplice è probabilmente quello di utilizzare un'espressione di tabella comune (CTE) per contare il numero di utenti distinti nella tabella in cui la porzione di anno della data posts in cui la parte di anno della data è uguale alla parte di anno della data corrente. È quindi possibile scrivere una semplice query per contare il numero di utenti nella tabella. users unirla alla tabella CTE ed eseguire un calcolo per ottenere la percentuale. Esempio di risposta WITH posting_users AS ( SELECT COUNT(DISTINCT user_id) AS posting_users FROM posts WHERE year(datetime_posted) = year(current_date) ) SELECT 100 - (posting_users / COUNT(*) * 100) AS percent_inactive FROM users JOIN posting_users; Domanda 2: Identificare gli host di eventi attivi Elencare l'utente ID utente, nome utente, numero di eventi e numero totale di partecipanti agli eventi per tutti gli utenti che hanno programmato più di 10 eventi quest'anno. Informazioni aggiuntive: Le accettazioni sono righe nella tabella event_activity che hanno il tipo di risposta "Going". L'host nella tabella events può essere abbinato all'ID utente nella tabella users per trovare l'utente che ha programmato l'evento. Pensare bene È necessario unire la tabella event tabella, la tabella event_activity e la tabella users per ottenere tutte le informazioni corrette. La tabella event_activity dovrebbe utilizzare un LEFT JOIN, poiché non è stato detto di escludere gli eventi che non hanno partecipanti. La join deve includere la condizione che la risposta sia "Going". Raggruppando per host, si può includere un conteggio distinto dell'ID dell'evento per ottenere il numero di eventi e un conteggio della tabella user_id per ottenere il numero di partecipanti. event_activity per ottenere il numero di partecipanti. È necessario includere una clausola HAVING per filtrare in base al numero di eventi. Esempio di risposta SELECT host, name, COUNT(DISTINCT e.event_id), COUNT(a.user_id) AS attendees FROM event e JOIN users u ON u.user_id = host LEFT JOIN event_activity a ON e.event_id = a.event_id AND response_type = 'Going' GROUP BY host, name HAVING COUNT(DISTINCT e.event_id) > 10 ORDER BY name Domanda 3: Trovare i top power user Individuare i 10 principali power user (classificati in base al numero totale di like ai loro post) ed elencare la loro posizione in classifica, l'ID utente, il nome e il numero totale di like. Informazioni aggiuntive: Per power user si intendono gli utenti che hanno pubblicato più di 500 post quest'anno e che hanno una media di più di 150 like per post. I "mi piace" sui post sono registrati nella tabella interactions con action contenente "Mi piace" e target_type contenente "Post". L'ID dell'obiettivo può essere utilizzato per unirsi alla tabella posts sulla base dell'ID del post. Riflessioni Per prima cosa è necessario trovare il numero di post e il numero di Mi piace di ciascun utente per l'anno in corso. È possibile farlo con una CTE. Nella query principale, è possibile unire la CTE con la tabella utenti per ottenere il nome dell'utente. Filtrare la CTE per estrarre solo i power user. È possibile utilizzare la funzione RANK() window per classificare gli utenti in base al numero di like e utilizzare la clausola LIMIT per limitare i risultati ai primi 10 power user. Esempio di risposta WITH user_posts AS ( SELECT p.user_id, COUNT(DISTINCT post_id) AS num_posts, COUNT(inter_id) AS likes FROM posts p LEFT JOIN interactions ON post_id = target_id AND target_type = 'POST' AND action = 'Like' WHERE year(datetime_posted) = year(current_date) GROUP BY user_id ) SELECT RANK() OVER (ORDER BY likes DESC) AS position, u.user_id, name, likes FROM users u JOIN user_posts p ON u.user_id = p.user_id WHERE num_posts > 500 AND likes/num_posts > 150 LIMIT 10; Domanda 4: Analizzare l'attività degli utenti anno per anno Per gli ultimi 5 anni, confrontare il numero di utenti attivi anno per anno. Mostrate l'anno, il totale degli utenti attivi e la variazione rispetto all'anno precedente. Informazioni aggiuntive: Gli utenti attivi hanno pubblicato almeno un post nel corso dell'anno. Riflessioni È necessario estrarre dalla tabella il conteggio del numero di utenti per anno. posts dalla tabella. Per motivi di leggibilità, è possibile farlo come CTE. Sarà poi necessario utilizzare la funzione LAG() per confrontare i risultati anno per anno. Esempio di risposta WITH activity AS ( SELECT year(datetime_posted) AS year, COUNT(distinct user_id) AS active_users FROM posts WHERE year(current_date) - year(datetime_posted) < 6 GROUP BY year(datetime_posted) ) SELECT year, active_users, (active_users - LAG(active_users) OVER (ORDER BY year) ) * 100/active_users AS percentage_change FROM activity; Trovare risorse per la preparazione al colloquio Meta SQL Il modo più importante per prepararsi è risolvere un'ampia gamma di problemi di pratica. Dovreste cercare di risolvere con sicurezza due domande di media difficoltà in 35 minuti. Ricordate di pensare ad alta voce mentre lavorate alla soluzione. Utilizzate un editor di testo o carta e penna per sviluppare la vostra soluzione e simulare la situazione del colloquio. Naturalmente, in seguito potrete provare le vostre soluzioni su un database reale per assicurarvi che funzionino. Durante il colloquio, probabilmente utilizzerete coderpad.io, quindi vale la pena di provarlo in anticipo. Prendetevi del tempo per esplorare l'hub di preparazione nel vostro profilo di carriera Meta. Troverete molto materiale utile, tra cui puzzle di codifica da utilizzare per esercitarvi. LearnSQL.it ha diverse risorse utili per la pratica e per i colloqui: Domande di colloquio avanzate Domande di intervista complicate Domande di colloquio su SQL per analisti di dati Forse la risorsa più preziosa per fare pratica è l'Advanced Practice Track di LearnSQL.it, dove è possibile lavorare su centinaia di esempi realistici. Potete provare le vostre soluzioni su un database reale e ricevere suggerimenti e consigli quando vi bloccate. Iniziate oggi stesso e superate il colloquio! Tags: domande per un colloquio su sql lavori e carriera