Domande orale ricci

Rispondi
fsrario
Messaggi: 6
Iscritto il: 20/07/2022, 15:44

La professoressa parla prima del progetto e poi fa domande di teoria.

Per prima cosa commenta i pro e i contro del progetto.
Nel caso di Hotelier, apprezza un algoritmo di ranking ben fatto, che mette in evidenza l'attualità di ogni singola recensione, invece di considerare solo la data dell'ultima.
L'errore in assoluto più comune è stato quello di non sincronizzare gli accessi a stdin e stdout nel client multithreaded.
In generale, vuole che le strutture dati siano le più efficienti possibile, e che sia facile scalare il programma ad un numero di dati maggiore. Ad esempio, è buona pratica usare le collection per fine-grained locking e tentare di implementare accesso in tempo costante. Nel caso di Hotelier, non rappresentare gli hotel con una lista unica ma sfruttare la divisione in città.
Se possibile, vuole che si utilizzino le soluzioni più "pulite", usando i meccanismi ad alto livello che si sono visti nel corso. Tutto quello che richiede si trova nelle slide o al più nelle correzioni degli assignment.

Per quanto riguarda la teoria, si concentra effettivamente sugli argomenti non coperti dal progetto. A chi non ha usato NIO chiede il funzionamento dei buffer e dei selector, a chi non ha usato ThreadPool fa domande a riguardo. Questo non significa che non chiederà niente dei costrutti usati, ad esempio può fare domande sulla concorrenza.

Ecco degli esempi di domande:
  • Quali tipi di iteratori ci sono, e quali sono le differenze?

    Che iteratori usano il wrapper synchronized, copyOnWriteArrayList, ConcurrentHashMap?

    Quali sono i parametri di un buffer (position, limit, mark, capacity)?

    Come funzionano le operazioni di rewind, flip ecc. di un buffer? Quali sono le differenze tra di loro?

    Come funziona il monitor?

    Cosa fanno i metodi wait, notify, notifyAll?

    Perché ci sono due code associate alla lock di un oggetto?(Entry set, wait set)

    Cosa sono le variabilii volatile? A cosa servono?

    Descrivi un esempio di utilizzo di una variabile volatile.

    Che metodi offrono le concurrent collection?

    Quali sono le differenze tra ArrayBlockingQueue e LinkedBlockingQueue?

    Quali sono i parametri di una threadPool e a cosa servono?

    Descrivi la CachedThreadPool.

    Perché si dovrebbe usare un blocco syncronized invece che un metodo synchronized?
In pratica fa domande sui concetti visti nelle slides. Non richiede di scrivere codice, ma ha richiesto di scrivere dello pseudocodice per spiegare come funziona wait, notify, notifyAll
Rispondi

Torna a “Reti e Laboratorio III”