Topic | Questions and Answers |
---|---|
Prologo ai Sistemi Distribuiti | - Cosa è un sistema distribuito? - Quali sono le motivazioni tecnologiche ai sistemi distribuiti? - Quali sono le motivazioni economiche ai sistemi distribuiti? - Cosa è la "legge" di Moore? - In che maniera un sistema distribuito permette di rispondere efficacemente al progresso tecnologico preservando le risorse legacy? - Cosa sono le "leggi" di Sarnoff / Metcalfe / Reed? |
Open Distributed Processing | - Cosa è un modello di riferimento (reference model) e a cosa/chi serve? - Cosa sono i requisiti non funzionali di un sistema? - Quale è la differenza sostanziale tra un sistema distribuito ed uno parallelo/concorrente? - Perché un sistema distribuito è concorrente, e perché la soluzione della concorrenza è più complessa rispetto ad un sistema centralizzato? - Che significa che in un sistema distribuito manca un clock globale, e che cosa comporta? - Cosa significa che un sistema distribuito può tollerare malfunzionamenti parziali? - Perché un sistema distribuito è eterogeneo? - Cosa significa che un sistema distribuito asseconda l'evoluzione aziendale? - Perché un sistema distribuito offre autonomia di gestione ai singoli nodi? - Cosa significa che un sistema distribuito deve: - essere aperto - essere integrato - essere flessibile - essere modulare - supportare la federazione di sistemi - essere facilmente gestibile - essere scalabile - essere trasparente - Cosa è la trasparenza di accesso? - Cosa è la trasparenza di locazione? - Cosa è la trasparenza di migrazione / replica e perché dipende da trasparenza di locazione e di accesso? - Cosa è la trasparenza alla persistenza e perché dipende dalla trasparenza di locazione? - Cosa è la trasparenza alle transazioni? - Cosa è la trasparenza alla scalabilità e perché dipende da trasparenza di migrazione e di replica? - Cosa è la trasparenza alle prestazioni e perché dipende da trasparenza di migrazione, di replica e di persistenza? - Cosa è la trasparenza ai malfunzionamenti e perché dipende dalla trasparenza alle transazioni? |
Socket | - Come funzionano i socket TCP in Java? - Quale è la differenza tra le classi ServerSocket e Socket in Java? - Cosa sono ed a cosa servono gli stream? - Cosa significa che gli stream vengono usati tipicamente come wrapper di altri stream? - Quali sono i metodi più importanti (e cosa fanno) di InputStream e di OutputStream? - Perché di solito i programmatori non usano InputStream o OutputStream direttamente? - Come si fa a usare gli stream che sono associati ad un socket? - Quali sono i metodi offerti da ObjectInputStream (e ObjectOutputStream) per leggere (scrivere) un oggetto dallo (sullo) stream? |
Thread_1 | - Quale è la differenza tra un processo ed un thread? E quali le somiglianze? - Quali sono esempi di applicazioni che hanno necessità di essere multithread? - Come usa un server il pool di thread per ottimizzare le prestazioni? - Illustrare il diagramma degli stati di un thread in Java - Come si può creare un thread in Java e quali sono i vantaggi e svantaggi delle due tecniche possibili? - Quando si invoca il metodo .start() su un thread cosa succede? - Quando si invoca il metodo .run() su un thread cosa succede? - Quando si invoca il metodo .start() su un thread, il thread viene eseguito: vero o falso? - Quando si invoca il metodo .run() su un thread, il thread viene eseguito: vero o falso? - Quale è la differenza tra un metodo run() e un metodo start() di un thread? - Cosa sono gli interrupt su un thread e quali metodi sono a disposizione per trattarli/gestirli? - Quali sono gli stati del diagramma di stato di un thread? - Un thread come passa dallo stato "New" a quello di "Runnable"? - Un thread come passa dallo stato "Runnable" a quello di "Timed Waiting" e come se ne esce? - Un thread come passa dallo stato "Runnable" a quello di "Waiting" e come se ne esce? - Un thread come passa dallo stato "Runnable" a quello di "Blocked" e come se ne esce? - Perchè lo stato "Runnable" è strutturato in due sottostati "Ready" e "Running" e come si passa dall'uno all'altro? - Quali sono i possibili tipi di errore che vengono generati dai thread? - Cosa è la interferenza tra thread? E come si risolve? - Cosa è la inconsistenza della memoria? E come si risolve? - Cosa è una race condition? - Perché i bug dovuti a race condition sono particolarmente complessi da trattare? - Cosa è la relazione "happens-before"? - Come faccio a stabilire una relazione "happens-before"? - Cosa significa che una variabile in memoria è dichiarata "volatile"? |
Thread_2 | - Perché è necessaria la sincronizzazione? - Perché è necessaria la sincronizzazione efficiente? - Cosa sono i metodi sincronizzati? - Cosa sono i metodi statici sincronizzati? - Che relazione (dal punto di vista dell'accesso esclusivo) hanno un metodo sincronizzato dell'istanza e un metodo sincronizzato statico? - Un thread che è in esecuzione di un metodo sincronizzato dell'istanza blocca l'esecuzione di: - un altro thread che esegue un metodo sincronizzato dell'istanza - un altro thread che esegue un metodo statico sincronizzato - un altro thread che esegue un metodo statico - un altro thread che esegue un metodo dell'istanza - tutti i thread in esecuzione sulla JVM - tutti i thread in esecuzione su tutte le JVM in esecuzione sulla vostra macchina - tutti i thread in esecuzione su tutte le JVM in esecuzione su tutti i vostri computer - tutti i thread in esecuzione su tutte le JVM in esecuzione su tutti i computer dell'Università - E' possibile con i lock impliciti simulare i metodi sincronizzati di istanza - E' possibile con i lock impliciti simulare i metodi sincronizzati statici - E' possibile con i metodi sincronizzati di istanza simulare i lock - E' possibile con i metodi sincronizzati statici simulare i lock - Cosa è una variabile volatile? - E' possibile usare una variabile volatile per eliminare l'interferenza tra thread (race condition)? - E' possibile usare una variabile volatile per eliminare i problemi di inconsistenza della memoria? - Operazioni atomiche sono estremamente più efficienti delle operazioni non atomiche: vero/falso.. e perché? - Se la variabile int a è volatile, allora la operazione a++ viene eseguita in mutua esclusione da parte di due thread: vero o falso.. e perché? - Cosa è il deadlock/livelock/starvation? - Quale è la differenza tra deadlock e livelock? |
Thread_3 | - Sull'esempio di SimpleThread e Example, completare lo studio del comportamento per metodi istanza/statici, synchronized/no-synchronized, invocazione dei due thread dello stesso metodo o di metodi diversi - A cosa serve il design pattern del Singleton? - Cosa è la lazy allocation? - La soluzione al Singleton con il metodo getInstance() sincronizzato è corretta? Se no, perché? Se si, allora perché ne studiamo delle altre? - Perché la soluzione al Singleton con un blocco synchronized subito dopo l'if non funziona? - Cosa è il double-checked locking? Perché non è corretto? Come si può modificare per renderlo corretto? |
Introduzione Java JEE | - Quali vantaggi si ottengono sfruttando i containers di Java EE? - Annotazioni e Deployment Descriptor: quali sono i vantaggi/svantaggi di entrambi gli approcci? |
JEE Context and Dependency Injection | - Qual è l'idea alla base del design pattern inversion of control? - Quali sono i vantaggi del "loose coupling, strong typing"? - In che modo il ciclo di vita di un bean differisce da quello di un POJO? - Quali sono i vantaggi derivanti dall'uso degli Interceptor? - In che modo è possibile definire una sorta di priorità nell'esecuzione di una catena di Interceptor? - In che modo è possibile realizzare disaccoppiamento nelle applicazioni Java enterprise? - Qual è il meccanismo che permette di scegliere fra due diverse implementazioni di uno specifico bean? - Perchè è stato introdotto il concetto di Interceptor Binding? - Qual è il vantaggio derivante dall'uso dei Decorator? - Qual è il vantaggio derivante dall'uso degli Eventi? |
Java Persistence API | - Qual è la differenza fra una entità ed un oggetto? - A cosa serve l'annotazione @GeneratedValue? - Qual è l'elemento discriminante per distinguere una entità da un POJO? - Qual è l'API fondamentale per la gestione delle operazioni sulle entità? - Quali sono le caratteristiche e le funzionalità più importanti della persistence unit? - Descrivere il ciclo di vita di una entità - Descrivere i tipi di relazioni in un database relazionale - Definizione e funzionalità di un Persistence Context - Descrivere i vari tipi di query definiti da JPQL |
Messaging | - Quali sono le principali differenze fra il modello Point-to-Point ed il modello Publish-Subscribe? - Cosa sono i Message-Driven Beans? - Cosa sono gli Administered Objects? - Qual è la differenza fra Synchronous Delivery e Asynchronous Delivery? - Quali sono i principali meccanismi di affidabilità? - Quali eccezioni si possono gestire con gli MDB? |
placeholder | - test |