Qual è la differenza tra una variabile locale e una variabile di istanza?
Una variabile locale è dichiarata all'interno di un metodo e accessibile solo all'interno di quel metodo.
Una variabile di istanza è dichiarata all'interno di una classe ma al di fuori dei metodi e appartiene a un'istanza specifica della classe.
Cos'è l'Inversion of Control (IoC) in Spring?
L'Inversion of Control (IoC) è un principio secondo cui il controllo della creazione e gestione degli oggetti viene spostato dal programmatore a Spring.
Spring gestisce i bean all'interno di un IoC Container, che inietta le dipendenze automaticamente.
Qual è la differenza tra REST e SOAP?
REST è leggero, basato su HTTP e JSON, semplice da usare e scalabile.
SOAP (Simple Object Access Protocol) è più complesso, usa XML e richiede più overhead.
REST è preferito per le API web moderne, mentre SOAP è usato in applicazioni aziendali con esigenze avanzate di sicurezza e transazioni.
Cosa sono i microservizi?
I microservizi sono un'architettura software in cui un'applicazione è suddivisa in piccoli servizi indipendenti, ognuno con una responsabilità specifica. Ogni servizio è autonomo, può essere sviluppato, distribuito e scalato separatamente dagli altri.
Cosa è un database e quali sono i tipi principali?
Un database è un sistema per archiviare, organizzare e gestire dati in modo strutturato. I principali tipi sono:
Relazionali (SQL) → Strutturati in tabelle con relazioni (es. MySQL, PostgreSQL).
Non Relazionali (NoSQL) → Dati memorizzati in documenti, chiave-valore o grafi (es. MongoDB, Redis, Cassandra).
Cosa sono i tipi primitivi in Java? Puoi elencarne alcuni? (almeno 5)
I tipi primitivi in Java sono tipi di dati di base che non sono oggetti e hanno una dimensione fissa in memoria. Esempi:
byte, short, int, long (numeri interi)
float, double (numeri decimali)
char (caratteri)
boolean (true/false)
Quali sono i principali moduli di Spring? (almeno 3)
Spring Framework è suddiviso in vari moduli, tra cui:
Spring Core → Gestisce IoC e DI
Spring MVC → Framework per applicazioni web
Spring Boot → Configurazione automatica per app Spring
Spring Data → Semplifica l’accesso ai database
Spring Security → Autenticazione e autorizzazione
Spring Cloud → Microservizi e architetture distribuite
Cos'è un endpoint REST?
Un endpoint REST è un URL che espone una risorsa o un insieme di risorse tramite HTTP.
Esempio di endpoint:
GET https://api.example.com/users → Restituisce tutti gli utenti.
POST https://api.example.com/users → Crea un nuovo utente.
GET https://api.example.com/users/1 → Restituisce l'utente con ID 1.
Quali sono i vantaggi dei microservizi rispetto a un'architettura monolitica?
I principali vantaggi dei microservizi includono:
✅ Scalabilità indipendente (si scala solo il servizio necessario)
✅ Deploy autonomo (aggiornamenti senza impattare l’intera applicazione)
✅ Manutenibilità migliorata (codice più semplice e suddiviso)
✅ Flessibilità tecnologica (ogni microservizio può usare linguaggi e database diversi)
✅ Resilienza (un problema in un servizio non blocca l'intera applicazione)
Cosa sono SQL e NoSQL?
SQL (Structured Query Language): Usa tabelle, relazioni e schema fisso (es. MySQL, Oracle, PostgreSQL).
NoSQL (Not Only SQL): Flessibile, usato per grandi volumi di dati (es. MongoDB, DynamoDB, Redis).
Come si crea un oggetto in Java e qual è il ruolo del costruttore?
Un oggetto si crea utilizzando la parola chiave new, seguita dal costruttore della classe. Esempio:
ClasseOggetto obj = new ClasseOggetto();Il costruttore è un metodo speciale che ha lo stesso nome della classe e viene eseguito automaticamente alla creazione dell'oggetto per inizializzare i suoi attributi.
Cos'è un Controller in Spring MVC?
Un Controller in Spring MVC gestisce le richieste HTTP e restituisce le risposte.
Esempio di REST Controller:
javaCopiaModifica
Come si inviano dati in una richiesta REST?
I dati possono essere inviati in diversi modi:
Query parameters (per filtri o parametri di ricerca):
Path parameters (identificano una risorsa specifica):
Body (per dati strutturati in POST/PUT/PATCH), solitamente in JSON:
Headers (per metadati, come il tipo di contenuto o token di autenticazione):
Come comunicano tra loro i microservizi?
I microservizi possono comunicare tramite:
🔹 REST API (HTTP/JSON) → semplice, ma introduce latenza
🔹 gRPC (Protocol Buffers) → più veloce e ottimizzato per le prestazioni
🔹 Messaggistica asincrona (RabbitMQ, Kafka) → migliore per eventi e resilienza
Cos’è una chiave primaria e una chiave esterna?
Chiave Primaria (Primary Key) → Identifica in modo univoco una riga in una tabella.
Chiave Esterna (Foreign Key) → Collega una tabella a un’altra per mantenere relazioni.
Qual è la differenza tra un'interfaccia e una classe astratta?
Interfaccia: contiene solo metodi astratti (default e static esclusi) e costanti. Una classe può implementare più interfacce.
Classe astratta: può avere sia metodi astratti che metodi concreti. Una classe può estendere solo una classe astratta.
Cos'è Spring JPA e come si usa?
Spring JPA (Java Persistence API) è un modulo che semplifica l'interazione con database relazionali.
Esempio di Entity + Repository con Spring Data JPA:
@Repository
public interface UtenteRepository extends JpaRepository<Utente, Long> {
List<Utente> findByNome(String nome);
}
Cosa sono le CORS (Cross-Origin Resource Sharing) e perché sono importanti nelle API REST?
Le CORS (Cross-Origin Resource Sharing) sono una politica di sicurezza dei browser che impedisce a un sito web di fare richieste a un'API situata su un dominio diverso.
Per abilitare CORS in un'API Spring Boot, si può aggiungere:
@CrossOrigin(origins = "https://example.com")
@RestController
public class UserController { // API methods here
}
Oppure configurare CORS globalmente:
Cos'è API Gateway e a cosa serve?
L'API Gateway è un punto di accesso unico per i client verso i microservizi.
🔹 Funzioni principali:
✔️ Instrada le richieste ai servizi giusti
✔️ Autenticazione e autorizzazione
✔️ Rate limiting (protezione da overload)
✔️ Logging e monitoraggio
Esempio con Spring Cloud Gateway:
Cos’è un’operazione CRUD nei database?
CRUD è l'acronimo delle operazioni fondamentali sui dati:
Create → Creazione di un nuovo record
Read → Lettura di dati esistenti
Update → Modifica di dati esistenti
Delete → Eliminazione di dati
La stream e una operazione sulle Collector essa puo contenere metodi intermedi e metodi terminali
Qual è la differenza tra @Component, @Service e @Repository?
Risposta:
@Component: Generico, indica un bean gestito da Spring.
@Service: Usato per la logica di business di un'applicazione.
@Repository: Usato per la gestione della persistenza dei dati, con supporto aggiuntivo per la gestione delle eccezioni legate al database.
Cosa significa che REST è "stateless"?
Un'API REST è stateless perché ogni richiesta HTTP è indipendente e non mantiene lo stato tra una richiesta e l'altra. Tutte le informazioni necessarie per elaborare una richiesta devono essere incluse in essa (es. token di autenticazione).
Cos'è il Service Discovery e perché è importante nei microservizi?
Il Service Discovery permette ai microservizi di individuarsi dinamicamente senza conoscere gli indirizzi fissi.
🔹 Esempi di tool:
✔️ Eureka (Spring Cloud Netflix)
✔️ Consul
✔️ Zookeeper
Esempio di registrazione con Eureka:
Cos’è la replica nei database e perché è utile?
La replica copia i dati da un database a un altro per ridondanza e scalabilità.
✔️ Master-Slave → Un database principale (Master) replica i dati a uno o più secondari (Slave).
✔️ Master-Master → Due database si aggiornano a vicenda (più complesso ma utile per carichi elevati).
Esempio in MySQL: