Domande generiche sul funzionamento di java Flashcards
cosa sono i design pattern?
Sono delle soluzioni progettuali a problemi ricorrenti contribuendo a mantenere la manutenibilità e la comprensione del codice.
come si suddividono i design pattern?
- Pattern Creazionali
- Pattern Architetturali
- Pattern Strutturali
- Pattern Comportamentali
quali sono i design pattern Creazionali?
Singleton
Builder
Prototype
quali sono i design pattern Architetturali?
MVC
Layer
quali sono i design pattern Strutturali?
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.
quali sono i design pattern Comportamentali?
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.
Descrivi il design pattern Singleton
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
Descrivi il design pattern Prototype
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.
Descrivi il design pattern MVC
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.
cosa sono i Thread ?
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
Cosa è il jdk?
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ù
Differenza tra Oggetto ed Classe
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.
modificatore di accesso final
- 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).
Descrivi l’uso di finally e finalize
- 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
Quali sono le differenze tra ArrayList e LinkedList?
- 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.