Domande generiche sul funzionamento di java Flashcards

1
Q

cosa sono i design pattern?

A

Sono delle soluzioni progettuali a problemi ricorrenti contribuendo a mantenere la manutenibilità e la comprensione del codice.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

come si suddividono i design pattern?

A
  • Pattern Creazionali
  • Pattern Architetturali
  • Pattern Strutturali
  • Pattern Comportamentali
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

quali sono i design pattern Creazionali?

A

Singleton
Builder
Prototype

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

quali sono i design pattern Architetturali?

A

MVC
Layer

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

quali sono i design pattern Strutturali?

A

Adapter
Questo pattern permette a classi con interfacce incompatibili di lavorare insieme. Si utilizza quando è necessario far funzionare insieme classi che altrimenti non potrebbero collaborare a causa di differenze nelle loro interfacce.
Il pattern Adapter è estremamente utile quando si desidera utilizzare classi esistenti in un nuovo contesto senza modificarle, permettendo al codice di essere più riutilizzabile e mantenibile.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

quali sono i design pattern Comportamentali?

A

Strategy
Consente inoltre di selezionare un algoritmo in modo dinamico al runtime, evitando di dover scrivere codice con strutture di controllo rigide come if o switch.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Descrivi il design pattern Singleton

A

Questo è utile quando si vuole che una classe abbia una sola istanza nell’intero ciclo di vita dell’applicazione.
L’implementazione del Singleton prevede che la classe abbia un costruttore privato, in modo che le istanze non possano essere create direttamente dall’esterno

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Descrivi il design pattern Prototype

A

Il design pattern Prototype si concentra sulla creazione di nuovi oggetti duplicando un oggetto esistente, chiamato prototipo. Questo è utile quando si desidera creare nuove istanze di oggetti con lo stesso stato di un oggetto esistente, ma senza dover passare attraverso il processo di inizializzazione e costruzione da zero.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Descrivi il design pattern MVC

A

Inoltre, MVC facilita la creazione di interfacce utente responsive, poiché le logiche di presentazione sono separate dalla logica di business.
1. Model (Modello): Il Model rappresenta la struttura dei dati dell’applicazione e le logiche per manipolarli. Si occupa dell’accesso ai dati, della loro validazione e delle operazioni aziendali. Il Model non è consapevole di come i dati vengano presentati all’utente o di come l’utente interagisce con essi. È responsabile di mantenere la coerenza dei dati e dell’implementazione delle operazioni core dell’applicazione.
2. View (Vista): La View è responsabile della presentazione dei dati all’utente. Mostra i dati contenuti nel Model in un formato comprensibile per l’utente. La View può essere una rappresentazione grafica o testuale dell’interfaccia utente. Importante, la View non manipola i dati direttamente; invece, ottiene i dati dal Model e li visualizza. Inoltre, può gestire eventi dell’utente come input da tastiera e clic del mouse.
3. Controller (Controllore): Il Controller funge da intermediario tra il Model e la View. Gestisce le interazioni dell’utente, interpreta gli input e trasmette le istruzioni al Model e alla View. Quando l’utente effettua azioni nell’interfaccia utente, il Controller determina quale View deve essere utilizzata per mostrare i dati aggiornati all’utente. indicando alla View di aggiornare la visualizzazione dei dati.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

cosa sono i Thread ?

A

In Java, un thread rappresenta un singolo flusso di esecuzione all’interno di un programma. Un’applicazione Java può contenere uno o più thread che lavorano in parallelo per eseguire attività diverse

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Cosa è il jdk?

A

JDK è un pacchetto software
con strumenti di sviluppo e compilazione.

JRE è un pacchetto software che produce il bytecode (Precompilato).

Bytecode Java è un formato intermedio di codice generato dal compilatore Java (javac) a partire dal codice sorgente Java. Questo bytecode non è eseguibile direttamente dalla CPU, ma è progettato per essere eseguito dalla Java Virtual Machine (JVM). Ecco un’analisi dettagliata del bytecode Java:

JVM: La componente di esecuzione che realmente interpreta ed esegue il bytecode Java.

ATTENZIONE! da Java 9 (21 settembre 2017), la struttura delle distribuzioni di Java è stata modificata e la distinzione tradizionale tra JDK, JRE e JVM è stata semplificata la JRE non esiste più

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Differenza tra Oggetto ed Classe

A

Classe: Una classe è una struttura o un modello che definisce un tipo di oggetto. In altre parole, una classe è una descrizione astratta
Istanza di Classe (Oggetto): Un’istanza di classe è una rappresentazione concreta di un oggetto specifico basato sulla definizione di una classe.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

modificatore di accesso final

A
  • Quando una variabile è dichiarata final, il suo valore non può essere cambiato dopo essere stato assegnato
  • Un metodo dichiarato final non può essere sovrascritto (override) nelle sottoclassi.
  • Una classe dichiarata final non può essere estesa (ereditata).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Descrivi l’uso di finally e finalize

A
  • finally: La parola chiave finally è utilizzata in un blocco try-catch-finally per contenere codice che deve essere eseguito indipendentemente se si verifica o meno un’eccezione all’interno del blocco try. Il blocco finally viene sempre eseguito, sia che ci sia un’eccezione sia che non ci sia.
  • finalize: Il metodo finalize() è un metodo definito nella classe Object (la classe radice di tutte le classi in Java) che **viene chiamato dal sistema di garbage collection prima che un oggetto venga rimosso **dalla memoria. Tuttavia, l’uso di finalize() è considerato obsoleto e non è raccomandato. Invece, è meglio utilizzare i blocchi try-finally o
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Quali sono le differenze tra ArrayList e LinkedList?

A
  • ArrayList: Solitamente è più veloce per l’accesso casuale agli elementi e per le operazioni che coinvolgono iterazioni frequenti.
  • LinkedList: Solitamente è più veloce per le operazioni di inserimento e cancellazione frequenti in posizioni intermedie.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Descrivere il funzionamento dell’ HashMap

A

L’interfaccia Map
1. HashMap: Questa è una delle implementazioni più utilizzate di Map. Utilizza una tabella hash per archiviare le coppie chiave-valore. Le operazioni di inserimento, ricerca ed eliminazione sono generalmente molto veloci. Tuttavia, non garantisce un ordine specifico delle chiavi.
2. LinkedHashMap: Questa classe estende HashMap aggiungendo la caratteristica di mantenere l’ordine di inserimento delle coppie chiave-valore. Ciò significa che le iterazioni sulla mappa rifletteranno l’ordine in cui gli elementi sono stati inseriti.
**3.TreeMap: Questa implementazione mantiene le coppie chiave-valore in un ordine ordinato delle chiavi.
**
4. Utilizza un albero rosso-nero per garantire l’ordinamento delle chiavi. Di conseguenza, le iterazioni su una TreeMap produrranno coppie chiave-valore ordinate.

17
Q

HashSet

A

L’interfaccia Set in Java rappresenta una collezione di elementi unici, senza duplicati. Le implementazioni di questa interfaccia forniscono un modo per memorizzare e manipolare insiemi di dati senza la necessità di preoccuparsi di duplicati.
HashSet (no doppioni)
LinkedHashSet (no doppioni)
TreeSet (no doppioni)

18
Q

Spiega l’interfaccia Comparable e Comparator.

A

è importante quando si tratta di ordinare oggetti in Java.

19
Q

Differenza tra Web server ed Application server

A

In sintesi, un web server gestisce principalmente il servizio di file statici come pagine HTML e immagini, mentre un application server gestisce la logica di business delle applicazioni, processando richieste dinamiche e generando risposte basate su dati e logica dell’applicazione. Spesso, queste due componenti lavorano insieme all’interno di un’architettura web per fornire un’esperienza completa agli utenti, in cui il web server inoltra le richieste dinamiche all’application server per l’elaborazione e la generazione dei contenuti.
Web server: Apache HTTP Server
Application Server : Tomcat , WildFly,Oracle WebLogic Server

20
Q

Nota su tomcat Importante

A

Sì, Apache Tomcat può essere considerato un application server, ma con alcune limitazioni e differenze rispetto agli application server Java EE (Jakarta EE) più completi.
Inizialmente, Tomcat è stato sviluppato come un container per servlet e JSP (JavaServer Pages), che sono componenti specifici dell’architettura Java EE. Tuttavia, Tomcat non implementa completamente tutte le specifiche di Java EE come fanno altri application server come WildFly (JBoss), WebSphere e WebLogic.

21
Q

Cosa è il DAO?

A

è un design pattern utilizzato per separare la logica di accesso ai dati dal resto dell’applicazione, permettendo di gestire in modo più efficiente le operazioni di persistenza (lettura/scrittura su un database, per esempio).

22
Q

Descrivi la Dipendence Iniection

A

La Dependency Injection (DI) è un design pattern di progettazione che consente di gestire le dipendenze tra gli oggetti in un’applicazione. Invece di creare manualmente oggetti dipendenti all’interno di una classe, la DI permette di “iniettare” le dipendenze esternamente. Questo significa che un oggetto non deve preoccuparsi di creare o conoscere i dettagli delle sue dipendenze, ma può riceverle da un’entità esterna. L’obiettivo principale della DI è rendere le classi indipendenti dalle loro dipendenze, facilitando la manutenzione, il testing e la riduzione dell’accoppiamento tra i componenti.

23
Q

Architettura a strato

A

L’architettura a strati (o a livelli) è un modello di progettazione software che suddivide un sistema complesso in strati separati e gerarchici, ognuno con responsabilità specifiche.

Strato di Presentazione (Presentation Layer)
Strato di Applicazione (Application Layer)
Strato di Servizio (Service Layer)
Strato di Persistenza (Persistence Layer)
Strato di Database (Database Layer)

24
Q

Architettura SOA (SERVICE ORIENTED ARCHITETTURE)

A

In sintesi, l’architettura SOA è una metodologia di progettazione che mira a creare applicazioni scomponendo il software in componenti riutilizzabili e distribuiti, consentendo una maggiore flessibilità e facilità di gestione. È importante distinguere la SOA dai microservizi, che rappresentano una tecnologia più moderna per lo sviluppo di applicazioni cloud native.

25
Q

SOAP, acronimo di “Simple Object Access Protocol”

A

è un protocollo di MESSAGGISTICA utilizzato per lo scambio di messaggi tra applicazioni distribuite. È uno dei protocolli fondamentali utilizzati nel contesto delle architetture orientate ai servizi (SOA) per consentire la comunicazione tra servizi software attraverso reti eterogenee, come Internet. è stato creato da un gruppo di aziende leader del settore tecnologico nel 1998.
In sintesi, il protocollo SOAP incapsula i messaggi all’interno di documenti XML ben strutturati, consentendo la comunicazione tra applicazioni distribuite. La struttura standardizzata dei messaggi SOAP e la possibilità di includere intestazioni, corpi e sezioni di errore facilitano l’interpretazione e lo scambio di dati tra sistemi eterogenei.
Protocollo di Trasporto:
SOAP è indipendente dal protocollo di trasporto sottostante.
Può essere utilizzato su diversi protocolli di rete, ma è più comunemente associato a HTTP (Hypertext Transfer Protocol).
Quando SOAP viene utilizzato su HTTP, i messaggi SOAP vengono inviati come richieste POST o GET al server SOAP tramite URL specifici.
Altri protocolli conosciuti :
TCP/IP
FTP

26
Q

Quando cè stato il passagio da java Enterprise e Jacarta EE

A

dopo il febbraio 2018 cè stato il trasferimento a Eclipse Fondation ed ora si chiama Jakarta EE

27
Q

Cosa è Java Eterprise

A

La tecnologia Java Enterprise, spesso indicata anche come Java EE (Java Platform, Enterprise Edition), è un insieme di specifiche e standard sviluppati da Oracle (precedentemente Sun Microsystems) per la creazione e l’esecuzione di applicazioni aziendali complesse e scalabili utilizzando il linguaggio di programmazione Java.

Le applicazioni enterprise, o applicazioni aziendali, sono software progettati per soddisfare le esigenze delle organizzazioni di grandi dimensioni, come aziende, enti governativi e altre istituzioni complesse. Queste applicazioni sono caratterizzate da un’elevata scalabilità, affidabilità, sicurezza e gestione dei dati. Sono pensate per supportare processi aziendali critici e operazioni che coinvolgono un gran numero di utenti e un ampio volume di dati.

28
Q

principali componenti di Jakarta EE quali sono

A
  1. Servlet: I servlet sono componenti Java utilizzati per creare applicazioni Web. Forniscono la gestione delle richieste e delle risposte HTTP, consentendo lo sviluppo di pagine dinamiche e interattive.
  2. JSP (JavaServer Pages): JSP è una tecnologia per la creazione di pagine Web dinamiche che mescolano codice Java con codice HTML. Le JSP vengono tradotte in servlet durante la compilazione.
  3. EJB (Enterprise JavaBeans): Gli EJB sono componenti server-side (parte dell’applicazione che viene eseguita sul server remoto.) che forniscono funzionalità aziendali complesse come la gestione transazionale, la sicurezza e la scalabilità.
  4. JPA (Java Persistence API): JPA è una specifica per la gestione di dati persistenti nel database. Consente agli sviluppatori di creare applicazioni che interagiscono e manipolano il database in modo più astratto e standardizzato.
  5. JMS (Java Message Service): JMS è una API per la messaggistica asincrona che consente alle applicazioni di scambiare messaggi in modo affidabile e scalabile.
  6. CDI (Contexts and Dependency Injection): CDI è un framework per la gestione delle dipendenze e la creazione di contesti. Fornisce l’iniezione di dipendenze e la gestione del ciclo di vita dei componenti.
  7. JSF (JavaServer Faces): JSF è un framework per lo sviluppo di interfacce utente basate su componenti per le applicazioni Web.
  8. JTA (Java Transaction API): JTA fornisce supporto per la gestione delle transazioni distribuite, consentendo di mantenere la coerenza dei dati in applicazioni distribuite.
  9. JAX-RS (Java API for RESTful Web Services): JAX-RS è una specifica per la creazione di servizi Web RESTful in Java.
  10. JavaMail: JavaMail è una libreria per l’invio e la ricezione di messaggi di posta elettronica in applicazioni Java.

Stateless Session Beans: Non mantengono lo stato tra le invocazioni dei metodi. Ogni richiesta viene trattata indipendentemente.

Stateful Session Beans: Mantengono lo stato tra le invocazioni dei metodi, permettendo di memorizzare informazioni specifiche del client durante una sessione.

29
Q

Cosa significa REST ?

A

Rest approccio architetturale per la creazione di web API basate con il protocollo http le quali tengono conto delle seguenti caratteristiche:

  • Risorse accessibili tramite url
  • Utilizzo formato Json o Xml
  • Senza stato (stateless, come Http)
  • Impiego dei principali metodi http (get,post,put,delete)
    REST è lo stile architetturale
    RESTFUL è il webservice basato su tale architettura.

Quando si dice che un sistema è “senza stato” significa che ogni richiesta del client al server è indipendente e non conserva informazioni sullo stato tra una richiesta e l’altra. In altre parole, il server non memorizza alcuna informazione sulle interazioni precedenti con il client. Ogni richiesta viene trattata come nuova, senza contare su dati o contesti di richieste precedenti.

30
Q

Come mantenere lo stato in un servizio rest?

A

Utilizzo di autenticazione e token: Puoi utilizzare meccanismi di autenticazione, come token JWT (JSON Web Token), per includere informazioni sullo stato dell’utente o dell’applicazione all’interno del token. In questo modo, il server può interpretare il token per comprendere il contesto dell’utente e fornire risposte personalizzate.
Utilizzo di cookie: Anche se i cookie sono spesso associati alle applicazioni web basate su sessioni, è possibile utilizzarli anche in servizi REST. I cookie possono contenere dati che vengono inviati dal client al server con ogni richiesta, consentendo al server di mantenere alcune informazioni di stato tra le richieste.

31
Q

Descrivi la differenza tra JAX-WS e JAX-RS

A

JAX-WS (Java API for XML Web Services) e JAX-RS (Java API for RESTful Web Services) (RESTful si riferisce a un’architettura web che segue i principi del REST (Representational State Transfer). REST è uno stile architettonico progettato per sistemi distribuiti)sono due specifiche Java per lo sviluppo di servizi web, ma sono progettate per due diversi tipi di architettura di servizi web. Di seguito, una descrizione delle differenze principali tra JAX-WS e JAX-RS:
JAX-WS

  1. Protocollo:SOAP: JAX-WS è progettato per creare servizi web basati su SOAP (Simple Object Access Protocol), un protocollo di comunicazione basato su XML.
  2. Stile di comunicazione:RPC (Remote Procedure Call): I servizi SOAP utilizzano spesso un modello di chiamata a procedura remota, in cui le operazioni di servizio vengono esposte come metodi che possono essere chiamati dai client.
    Document/Literal: Supporta anche lo stile Document/Literal, in cui i messaggi sono basati su documenti XML.
  3. Trasporto:HTTP e altri: Anche se l’HTTP è comunemente usato, SOAP può essere trasportato su vari protocolli di trasporto come SMTP, JMS, ecc.
  4. Formato del messaggio:XML: SOAP utilizza XML come formato del messaggio, che è più verboso e autodescrittivo.
  5. Contratto (WSDL):WSDL (Web Services Description Language): JAX-WS utilizza WSDL per definire l’interfaccia del servizio web, il che significa che il servizio è strettamente tipizzato e descritto in modo formale.
  6. Sicurezza:WS-Security: SOAP supporta una varietà di specifiche di sicurezza come WS-Security per fornire messaggi sicuri.
  7. Uso tipico:Enterprise: JAX-WS è spesso usato in ambienti aziendali in cui sono richiesti contratti rigorosi, transazioni distribuite e sicurezza avanzata.

JAX-RS

  1. Protocollo:HTTP: JAX-RS è progettato per creare servizi web RESTful che sfruttano direttamente il protocollo HTTP.
  2. Stile di comunicazione:REST (Representational State Transfer): I servizi RESTful sono basati su risorse e operazioni CRUD (Create, Read, Update, Delete) mappate ai metodi HTTP (POST, GET, PUT, DELETE).
  3. Trasporto:HTTP: RESTful web services utilizzano esclusivamente HTTP come protocollo di trasporto.
  4. Formato del messaggio:Varie rappresentazioni: I messaggi REST possono essere rappresentati in vari formati come JSON, XML, YAML, testo semplice, HTML, ecc., offrendo maggiore flessibilità.
  5. Contratto:Nessun contratto formale: In genere, i servizi REST non richiedono un contratto formale come WSDL. L’interfaccia del servizio è definita tramite convenzioni URL e metodi HTTP.
  6. Sicurezza:HTTPS e OAuth: La sicurezza nei servizi REST è tipicamente gestita tramite HTTPS per la crittografia e OAuth per l’autenticazione e l’autorizzazione.
  7. Uso tipico:Web e Mobile: JAX-RS è ampiamente usato nello sviluppo di applicazioni web e mobile grazie alla sua leggerezza e flessibilità.
32
Q

Descrivi l’ approccio JAX-WS

A

JAX-WS (Java API for XML Web Services) è una tecnologia Java che permette di sviluppare e consumare servizi web basati su SOAP (Simple Object Access Protocol). Questa API fornisce un framework completo per la creazione di servizi web e client che comunicano utilizzando XML e SOAP.
Caratteristiche Salienti di JAX-WS

Supporto per SOAP e WSDL:
    JAX-WS supporta completamente il protocollo SOAP per la comunicazione tra servizi web e utilizza WSDL (Web Services Description Language) per descrivere l'interfaccia del servizio web.
33
Q

Descrivi il JAX-RS

A

JAX-RS sta per JAVA API for XML: Restful. Questo è un servizio più flessibile rispetto a JAX-WS poiché utilizza diversi altri formati di lingua insieme a XML standard per comunicare con i dispositivi. Poiché i servizi di questo tipo sono generalmente considerati risorse Web, tutti hanno un URI (Unique Resource Identifier) allegato.
Una delle modalità di interazione più comunemente utilizzate è tramite JSON che sta per JavaScript Object Notation. Anche la comunicazione in HTML o tramite HTTP è spesso osservata con JAX-RS.

34
Q

Cosa è il WSDL?

A

E’ un file XML che viene utilizzato per DESCRIVERE il servizio WEB dentro a questo file vengono descritte:
Operazioni del servizio
Messaggi di input e Output
Tipo di comunicazione
WSDL fornisce una documentazione chiara e strutturata del servizio web, rendendo più facile per gli sviluppatori comprendere le operazioni disponibili e come interagirvi.

35
Q

descrivi la differenza tra WAR e JAR

A

Un file WAR (Web ARchive) è un formato di archiviazione utilizzato per imballare e distribuire applicazioni web Java EE (Java Platform, Enterprise Edition) o applicazioni basate su servlet. Un file WAR contiene tutte le risorse necessarie per eseguire l’applicazione web, inclusi servlet, pagine JSP, file HTML, CSS, JavaScript, file di configurazione e librerie Java.

Un file JAR (Java ARchive) è un formato di archiviazione utilizzato per raggruppare classi Java, risorse e altri file correlati in un’unica unità. I file JAR sono ampiamente utilizzati per condividere librerie, applicazioni e componenti Java tra diversi progetti.

36
Q

Cosa è Git?

A

Git è un Version Control System potente strumento che può essere utilizzato per gestire il codice sorgente di un progetto software.

Flusso di lavoro tipico

Clonare il repository: Copiare un repository remoto sul tuo computer locale. git clone https://github.com/utente/repository.git

Creare un nuovo branch: Creare un branch per lavorare su una nuova funzionalità o su una correzione di bug. git checkout -b nuovo-branch

Modificare i file: Apportare le modifiche necessarie ai file nel tuo editor di testo o IDE
Aggiungere i file all’area di staging: Preparare i file modificati per il commit.
git add nomefile

Fare un commit: Salvare uno snapshot delle modifiche nel repository.
git commit -m “Descrizione delle modifiche”
Sincronizzare con il repository remoto: Recuperare le modifiche dal repository remoto e risolvere eventuali conflitti.
Sincronizzare con il repository remoto: Recuperare le modifiche dal repository remoto e risolvere eventuali conflitti.
git pull origin main

37
Q

Descrivi L’ inversione di Controllo

A

In Spring, la DI viene implementata utilizzando un contenitore di inversione di controllo (IoC).Il contenitore Spring gestisce la creazione e la gestione degli oggetti all’interno dell’applicazione, fornendo automaticamente le dipendenze richieste. Questo avviene grazie all’uso delle annotazioni di Spring come @Autowired, @Inject o attraverso la configurazione XML o Java. Quando un oggetto richiede una dipendenza, il contenitore di Spring si occupa di fornire l’istanza corretta dell’oggetto richiesto.
L’Inversion of Control (IoC) è il principio chiave che sta dietro alla DI. Invece di essere il codice dell’applicazione a controllare la creazione e la gestione degli oggetti, l’IoC sposta questa responsabilità al contenitore di Spring. In pratica, l’applicazione “cede il controllo” al contenitore Spring, che si occupa di istanziare e collegare gli oggetti necessari.
L’utilizzo della DI e dell’IoC in Spring comporta diversi vantaggi:
* Riduzione dell’accoppiamento tra i componenti dell’applicazione.
* Miglioramento della modularità e della manutenibilità del codice.
* Maggiore facilità nel testare i componenti dell’applicazione in modo isolato.
* Possibilità di cambiare l’implementazione delle dipendenze senza dover modificare il codice sorgente.

38
Q

la sigla JSON cosa significa?

A
  • Java Script
  • Object
  • Notation