Skip to content

Latest commit

 

History

History
21 lines (19 loc) · 11.1 KB

Q&A.md

File metadata and controls

21 lines (19 loc) · 11.1 KB

Questions and Answers for Lectures

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