dicembre 21, 2025
8 min di lettura

Domande da colloquio per sviluppatore full stack junior

interview
career-advice
job-search
entry-level
Domande da colloquio per sviluppatore full stack junior
Milad Bonakdar

Milad Bonakdar

Autore

Preparati ai colloqui full stack junior con domande pratiche su HTML, CSS, JavaScript, React, Node.js, API, SQL, Git e debug.


Parti dalle basi full stack

Un colloquio full stack junior di solito verifica se sai spiegare come funziona una semplice app web dal browser al database: HTML e CSS strutturano la pagina, JavaScript aggiunge comportamento, React gestisce lo stato dell’interfaccia, Node.js esegue la logica server, le API collegano i livelli, SQL salva i dati e Git rende il lavoro revisionabile.

Usa questa guida per esercitarti prima con risposte brevi e chiare. Poi collega ogni risposta a un piccolo progetto che hai costruito. Per un ruolo junior raramente serve architettura avanzata, ma servono fondamentali solidi, buone abitudini di debug e spiegazioni oneste dei trade-off.

Come prepararti

  • Allenati a raccontare un progetto dall’evento UI alla richiesta API fino alla query sul database.
  • Parla degli errori che hai risolto, non solo delle funzionalità consegnate.
  • Mantieni le risposte pratiche: definizione, piccolo esempio e un errore comune da evitare.

HTML & CSS

1. Spiega il Box Model in CSS.

Risposta: Il CSS Box Model è il fondamento del layout sul web. Ogni elemento è rappresentato come una scatola rettangolare.

  • Content: Il testo o l'immagine effettiva.
  • Padding: Area trasparente intorno al contenuto (all'interno del bordo).
  • Border: Un bordo che circonda il padding e il contenuto.
  • Margin: Area trasparente all'esterno del bordo (crea spazio tra gli elementi).

Rarità: Molto Comune Difficoltà: Facile


2. Qual è la differenza tra display: block, inline e inline-block?

Risposta:

  • Block: Inizia su una nuova riga e occupa l'intera larghezza disponibile (ad esempio, <div>, <p>).
  • Inline: Non inizia su una nuova riga e occupa solo la larghezza necessaria. Le proprietà width e height non hanno effetto (ad esempio, <span>, <a>).
  • Inline-block: Come gli elementi inline, ma è possibile impostare width e height. Utile per griglie o menu di navigazione.

Rarità: Comune Difficoltà: Facile


3. Cos'è l'HTML semantico e perché è importante?

Risposta: HTML semantico significa utilizzare tag che trasmettono il significato del contenuto, non solo il suo aspetto.

  • Esempi: <header>, <nav>, <article>, <footer> invece di soli <div>.
  • Importanza:
    • Accessibilità: Gli screen reader utilizzano questi tag per aiutare gli utenti con problemi di vista a navigare.
    • SEO: I motori di ricerca comprendono meglio la struttura e l'importanza del contenuto.
    • Leggibilità: Il codice è più facile da capire per gli sviluppatori.

Rarità: Comune Difficoltà: Facile


4. Spiega Flexbox vs. CSS Grid.

Risposta:

  • Flexbox: Un modello di layout unidimensionale (riga O colonna). Ideale per allineare elementi all'interno di un contenitore o distribuire lo spazio (ad esempio, una barra di navigazione).
  • CSS Grid: Un modello di layout bidimensionale (righe E colonne). Ideale per definire il layout generale di una pagina (ad esempio, header, sidebar, contenuto principale, footer).

Rarità: Comune Difficoltà: Media


JavaScript

5. Qual è la differenza tra var, let e const?

Risposta:

  • var: Ambito a livello di funzione (o globale). Può essere ridichiarato e aggiornato. Subisce l'hoisting all'inizio del suo scope.
  • let: Ambito a livello di blocco (esiste solo all'interno di {}). Può essere aggiornato ma non ridichiarato nello stesso scope.
  • const: Ambito a livello di blocco. Non può essere aggiornato o ridichiarato. Deve essere inizializzato durante la dichiarazione. Usalo per impostazione predefinita a meno che tu non abbia bisogno di riassegnare.

Rarità: Molto Comune Difficoltà: Facile


6. Spiega async e await.

Risposta: async e await (introdotti in ES2017) fanno sembrare e comportare il codice asincrono più come codice sincrono.

  • async: Posto prima di una funzione, assicura che la funzione restituisca una Promise.
  • await: Usato all'interno di una funzione async, mette in pausa l'esecuzione fino a quando la Promise non viene risolta.
  • Vantaggio: Più pulito e leggibile rispetto all'incatenamento di .then() e .catch().

Rarità: Comune Difficoltà: Media


7. Cos'è il DOM?

Risposta: Il DOM (Document Object Model) è un'interfaccia di programmazione per documenti web. Rappresenta la pagina in modo che i programmi (JavaScript) possano modificare la struttura, lo stile e il contenuto del documento. Il DOM rappresenta il documento come nodi e oggetti.

Rarità: Comune Difficoltà: Facile


8. Qual è la differenza tra == e ===?

Risposta:

  • == (Uguaglianza debole): Confronta i valori dopo aver eseguito la type coercion (convertendoli in un tipo comune). Ad esempio, 5 == "5" è true.
  • === (Uguaglianza stretta): Confronta sia il valore che il tipo. Nessuna type coercion. Ad esempio, 5 === "5" è false.
  • Best Practice: Usa sempre === per evitare bug inaspettati.

Rarità: Comune Difficoltà: Facile


React

9. Cos'è il Virtual DOM?

Risposta: Il Virtual DOM è una copia leggera del DOM reale mantenuta in memoria.

  • Processo: Quando lo stato cambia, React aggiorna prima il Virtual DOM. Quindi confronta il nuovo Virtual DOM con quello precedente (diffing) e calcola il modo più efficiente per aggiornare il DOM reale (reconciliation).
  • Vantaggio: Riduce al minimo la manipolazione diretta del lento DOM reale, migliorando le prestazioni.

Rarità: Comune Difficoltà: Media


10. Cosa sono Props e State?

Risposta:

  • Props (Properties): Dati di sola lettura passati da un componente padre a un componente figlio. Consentono ai componenti di essere riutilizzabili e dinamici.
  • State: Dati gestiti all'interno del componente. Può cambiare nel tempo (ad esempio, input dell'utente, risposta API). Quando lo stato cambia, il componente viene renderizzato di nuovo.

Rarità: Molto Comune Difficoltà: Facile


11. Cosa sono gli Hook di React? Nomina alcuni di quelli comuni.

Risposta: Gli Hooks sono funzioni che permettono ai componenti funzionali di usare funzionalità React come state, context, refs ed effects.

  • useState: Salva lo stato locale del componente, per esempio il valore di un form o una tab selezionata.
  • useEffect: Sincronizza un componente con qualcosa fuori da React, come il caricamento dati o una sottoscrizione a un evento. Non va usato per ogni calcolo.
  • useContext: Legge un context condiviso senza passare manualmente props a ogni livello.
  • Consiglio da colloquio: Cita le Rules of Hooks: chiamare gli hook al livello superiore di un componente React o di un custom hook, non dentro cicli o condizioni.

Rarità: Comune Difficoltà: Media


Node.js & Backend

12. Cos'è Node.js e perché è single-threaded?

Risposta: Node.js è un runtime JavaScript basato sul motore V8. Esegue JavaScript su un thread principale, ma può gestire molte attività I/O perché l’event loop coordina il lavoro asincrono.

  • Thread principale: Esegue le callback JavaScript.
  • I/O non bloccante: Operazioni su file, rete e database possono essere delegate al sistema operativo o a libuv e riprese quando il risultato è pronto.
  • Limite importante: JavaScript molto pesante sulla CPU può comunque bloccare l’event loop. Per lavoro costoso, usa worker thread, una job queue o spostalo fuori dal percorso della richiesta.
  • Buon esempio: Un server API che attende molte chiamate a database o rete.

Rarità: Comune Difficoltà: Media


13. Cosa sono NPM e package.json?

Risposta:

  • NPM (Node Package Manager): Il gestore di pacchetti predefinito per Node.js. Ti permette di installare e gestire librerie (dipendenze).
  • package.json: Il file di manifesto per un progetto Node.js. Elenca i metadati (nome, versione) e le dipendenze (librerie necessarie per eseguire l'app).

Rarità: Comune Difficoltà: Facile


14. Spiega la differenza tra GET e POST.

Risposta:

  • GET: Recupera una risorsa. Dovrebbe essere safe, quindi non modificare intenzionalmente lo stato del server, e idempotente, cioè ripetere la stessa richiesta dovrebbe avere lo stesso effetto.
  • POST: Invia dati che il server deve elaborare, spesso per creare una risorsa o attivare un’azione. Non è garantito che sia idempotente, quindi ripetere un POST può creare duplicati se l’API non lo impedisce.
  • Esempio pratico: Usa GET per caricare una lista prodotti; usa POST per inviare un ordine o creare un commento.

Rarità: Comune Difficoltà: Facile


Database (SQL)

15. Cosa sono una Primary Key e una Foreign Key?

Risposta:

  • Primary Key: Una colonna (o insieme di colonne) che identifica univocamente ogni riga in una tabella. Non può essere NULL.
  • Foreign Key: Una colonna che si collega alla Primary Key di un'altra tabella. Stabilisce una relazione tra due tabelle.

Rarità: Comune Difficoltà: Facile


16. Spiega la differenza tra INNER JOIN e LEFT JOIN.

Risposta:

  • INNER JOIN: Restituisce i record che hanno valori corrispondenti in entrambe le tabelle.
  • LEFT JOIN (o LEFT OUTER JOIN): Restituisce tutti i record dalla tabella di sinistra e i record corrispondenti dalla tabella di destra. Se non c'è corrispondenza, il risultato è NULL sul lato destro.

Rarità: Molto Comune Difficoltà: Media


17. Cos'è la Normalizzazione?

Risposta: La normalizzazione è il processo di organizzazione dei dati in un database per ridurre la ridondanza e migliorare l'integrità dei dati.

  • Obiettivo: Dividere le tabelle più grandi in tabelle più piccole e collegarle utilizzando le relazioni.
  • Forme: 1NF, 2NF, 3NF (La terza forma normale è di solito sufficiente per la maggior parte delle applicazioni).

Rarità: Non Comune (per i Junior) Difficoltà: Media


Generale

18. Cos'è Git e perché lo usiamo?

Risposta: Git è un sistema di controllo della versione distribuito.

  • Utilizzo: Traccia le modifiche nel codice sorgente durante lo sviluppo del software.
  • Vantaggi: Consente a più sviluppatori di lavorare insieme (collaborazione), mantiene una cronologia delle modifiche (versioning) e consente di ripristinare gli stati precedenti se qualcosa si rompe.

Rarità: Comune Difficoltà: Facile


19. Cos'è un'API?

Risposta: API sta per Application Programming Interface. È un insieme di regole che consente a diverse applicazioni software di comunicare tra loro. Nello sviluppo web, di solito si riferisce a una REST API dove un frontend (Client) richiede dati da un backend (Server).

Rarità: Comune Difficoltà: Facile


20. Come fai il debug di un'applicazione web?

Risposta: Inizia riproducendo il problema e restringendo il punto in cui accade: browser, richiesta di rete, handler backend o database.

  • Frontend: Usa i DevTools del browser: Console per errori, Network per stato e payload delle API, Elements per HTML/CSS e React DevTools quando serve.
  • Backend: Controlla log strutturati, request ID, stack trace, variabili d’ambiente e query al database. Usa un debugger quando il flusso non è chiaro.
  • Buona risposta: Racconta un bug reale che hai corretto, cosa hai controllato per primo e come hai confermato la correzione.

Rarità: Comune Difficoltà: Facile

Newsletter subscription

Consigli di carriera settimanali che funzionano davvero

Ricevi le ultime idee direttamente nella tua casella di posta

Smetti di Candidarti. Inizia a Essere Assunto.

Trasforma il tuo curriculum in un magnete per colloqui con l'ottimizzazione basata sull'IA di cui si fidano i cercatori di lavoro in tutto il mondo.

Inizia gratis

Condividi questo post

Riduci il Tempo di Scrittura del Curriculum del 90%

La persona in cerca di lavoro media impiega più di 3 ore per formattare un curriculum. La nostra IA lo fa in meno di 15 minuti, portandoti alla fase di candidatura 12 volte più velocemente.