SQL
Java
Design Pattern
Spring
Microservizzi
100

Cos'è SQL e a cosa serve?

SQL (Structured Query Language) è un linguaggio di programmazione usato per gestire e manipolare database relazionali. Serve per creare, modificare, interrogare e gestire i dati all'interno di un database.

100

Qual è la differenza tra "==" e "equals()" in Java?

  • == confronta i riferimenti in memoria degli oggetti.
  • equals() confronta il contenuto degli oggetti (se il metodo è sovrascritto).
100

Cos'è il Decorator Pattern e a cosa serve?

Il Decorator Pattern aggiunge dinamicamente nuove funzionalità a un oggetto senza modificare la sua classe.

100

Cos'è Spring Framework e quali sono i suoi vantaggi?

Spring è un framework Java open-source che facilita lo sviluppo di applicazioni aziendali. I suoi principali vantaggi sono:

  • Inversion of Control (IoC): gestione automatica delle dipendenze tramite Dependency Injection (DI)
  • Modularità: possibilità di usare solo i moduli necessari (Spring Boot, Spring MVC, Spring Security, ecc.)
  • Configurazione flessibile: supporta XML, annotazioni e Java-based configuration
  • Supporto per test: facilita il testing con strumenti integrati
100

Cosa sono i Microservizi e quali vantaggi offrono?

I Microservizi sono un'architettura software in cui un'applicazione è suddivisa in più servizi indipendenti, ognuno con una funzionalità specifica.

Vantaggi:
✅ Scalabilità indipendente dei servizi
✅ Maggiore manutenibilità e riusabilità
✅ Facilità di deploy e aggiornamenti senza impatti globali
✅ Resilienza: il fallimento di un servizio non blocca l’intera applicazione

200

Quali sono i principali comandi SQL per la gestione dei dati?

  • SELECT: per recuperare dati da una tabella
  • INSERT: per inserire nuovi dati
  • UPDATE: per modificare dati esistenti
  • DELETE: per eliminare dati da una tabella
200

Cos'è il polimorfismo in Java?

Il polimorfismo permette di usare lo stesso metodo in modi diversi. Esistono due tipi:

  • Polimorfismo di compilazione (overloading): stesso nome del metodo ma parametri diversi.
  • Polimorfismo di runtime (overriding): una sottoclasse ridefinisce un metodo della superclasse.
200

Cos'è l'Adapter Pattern e quando si usa?

L'Adapter Pattern converte l'interfaccia di una classe in un'altra aspettata dal client, permettendo la compatibilità tra classi che altrimenti non potrebbero lavorare insieme.

Esempio: una presa di corrente USA adattata per l'Europa.

200

Cos'è la Dependency Injection (DI) in Spring?

La Dependency Injection (DI) è un principio in cui le dipendenze di un oggetto vengono fornite dall'esterno invece di essere create all'interno della classe stessa. In Spring, questo permette di scrivere codice più modulare e testabile.

200

Qual è la differenza tra Monolite e Microservizi?

  • Monolite: tutta l'applicazione è un unico blocco. Se una parte fallisce, può compromettere l’intero sistema.
  • Microservizi: l’applicazione è divisa in più servizi indipendenti, che comunicano tra loro tramite API REST o gRPC.

Esempio:
🔹 Monolite: un'app di e-commerce ha un solo codice sorgente per ordini, pagamenti e utenti.
🔹 Microservizi: ogni funzionalità è un servizio separato (es. Order Service, Payment Service, User Service).

300

Cosa fa il comando SQL "JOIN" e quali tipi esistono?

  • INNER JOIN: restituisce solo le righe con corrispondenze in entrambe le tabelle
  • LEFT JOIN: restituisce tutte le righe della tabella di sinistra e le corrispondenti della destra
  • RIGHT JOIN: restituisce tutte le righe della tabella di destra e le corrispondenti della sinistra
  • FULL OUTER JOIN: restituisce tutte le righe quando c'è una corrispondenza in una delle due tabelle
300

Cos'è l'ereditarietà in Java?

L'ereditarietà permette a una classe di ereditare i metodi e gli attributi di un'altra classe. In Java si usa la parola chiave extends.

300

Cos'è il Singleton Pattern e quando viene usato?

Il Singleton garantisce che una classe abbia una sola istanza e fornisce un punto di accesso globale a

300

Cos'è Spring Boot e perché viene usato?

  • Configurazione automatica (Spring Boot AutoConfiguration)
  • Server embedded (Tomcat, Jetty)
  • File application.properties per configurazioni semplificate
300

Cos'è un API Gateway e a cosa serve?

L'API Gateway è un punto centrale che gestisce le richieste tra client e microservizi.

✅ Bilanciamento del carico
✅ Autenticazione e sicurezza
✅ Rate limiting (limitare il numero di richieste)

Esempio con Spring Cloud Gateway:

javaCopiaModifica

@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {    return builder.routes()        .route("order-service", r -> r.path("/orders/**")            .uri("lb://ORDER-SERVICE"))        .build(); }


400

Qual è la differenza tra DELETE e TRUNCATE?

  • DELETE: rimuove specifiche righe da una tabella e può essere usato con WHERE. Può essere annullato con ROLLBACK.
  • TRUNCATE: rimuove tutti i dati da una tabella in modo più veloce e non può essere annullato.
400

Cos'è un'interfaccia in Java e come si usa?

Un'interfaccia è un contratto che definisce metodi senza implementazione. Le classi che la implementano devono fornire un'implementazione per tutti i metodi.

400

Qual è la differenza tra Design Pattern e architettura software?

  • I Design Pattern forniscono soluzioni a problemi specifici della programmazione a livello di codice.
  • L'architettura software è un livello superiore che definisce la struttura globale di un sistema (es. MVC, Microservizi).
400

Qual è la differenza tra @RestController e @Controller?

  • @Controller: usato per restituire viste HTML (con Thymeleaf, JSP ecc.).
  • @RestController: è un controller specializzato per REST API. È equivalente a @Controller + @ResponseBody, restituendo direttamente JSON o XML.
400

Come si gestisce la configurazione nei Microservizi?

Si usa Spring Cloud Config per centralizzare le configurazioni.

🔹 I file di configurazione vengono salvati in Git o un server centrale.
🔹 I microservizi recuperano le configurazioni dinamicamente.

Esempio di configurazione centralizzata:

propertiesCopiaModifica

order-service.url=http://order-service/orders payment-service.url=http://payment-service/payments


500

Cosa fa la clausola GROUP BY?

GROUP BY raggruppa le righe con gli stessi valori in una o più colonne e permette di applicare funzioni di aggregazione come COUNT, SUM, AVG, MIN e MAX.

500

Che cos' é una stream e come viene usata

La Stream é una operazione su una Collection essa può eseguire diverse operazioni, queste sono Terminali o intermedie

  • Intermedie : sono operatori che hanno un ritorno e possono essere concatenati tra loro EX-> .map(), .sort(), .filter()
  • Terminali : sono operatori void che non possono essere concatenati e ci permettono di teminare la stream EX-> .forEach(), .collect(), .reduce()
500

Qual è la differenza tra Factory Pattern e Abstract Factory Pattern?

  • Factory Pattern: fornisce un metodo per creare un singolo tipo di oggetti.
  • Abstract Factory Pattern: fornisce un'interfaccia per creare famiglie di oggetti correlati senza specificarne la classe concreta.
500

Cosa sono i profili in Spring e come si usano?

I profili (@Profile) permettono di attivare configurazioni diverse in base all’ambiente (sviluppo, produzione, test).

500

Quali strumenti si usano per gestire i Microservizi?

DINNE ALMENO 3 

Alcuni strumenti comuni:

✅ Spring Boot + Spring Cloud (per creare microservizi)
✅ Docker + Kubernetes (per il deploy e l'orchestrazione)
✅ Eureka, Consul (per il Service Discovery)
✅ Kafka, RabbitMQ (per la comunicazione asincrona)
✅ Grafana + Prometheus (per il monitoring)

Esempio di deploy di un microservizio con Docker:

dockerfileCopiaModifica

FROM openjdk:17 COPY target/microservice.jar app.jar ENTRYPOINT ["java", "-jar", "/app.jar"]


M
e
n
u