The forum of the Computer Science students of the University of Pisa

Domande orale Paganelli

Al mio orale sul progetto TURING ha chiesto:

- Come mai ho scelto I/O bloccante anziché non bloccante (domanda nata dalla giustificazione di questa mia scelta all'interno della relazione, che voleva chiarire a voce)
- Pregi e difetti di Java IO vs. Java NIO
- Come ho gestito tutta la concorrenza all'interno del server
- Scrivere uno pseudocodice del mio server utilizzando i selectors (riprendendo dalla prima domanda)
- Cosa significa avere un'interfaccia uniforme in REST, e non appena ho accennato al fatto che le risorse in alcuni casi si potessero creare sia col metodo PUT che col metodo POST, mi ha chiesto quando si utilizza uno anziché l'altro.

L'orale è durato circa 35 minuti circa, durante i quali mi ha fatto parlare a ruota libera, senza esprimere la minima emozione e senza commentare nulla; in pratica non capisci se stai andando bene o totalmente fuori strada.
La relazione era sottolineata in vari punti, quindi penso che la legga abbastanza attentamente (tranne le parti sul manuale di utilizzo che, nonostante fossero richieste, sono state snobbate alla grande, causandole problemi con gli indirizzi IPv4 nella chat).
Voto finale: 30.
Orale per il progetto Turing, appello di Settembre:

L'orale inizia, di solito, con una domanda per capire se si è davvero autori del progetto (chiede come è stata implementata un'operazione o una qualche specifica del progetto). Nel caso specifico del progetto Turing, da quel che ho sentito da altre 2 fonti so che:
- Se si è implementato il Server con multithreading, allora lei chiede come lo si sarebbe potuto implementare utilizzando il multiplexing dei canali (selettore)
- Se si è implementato il Server con multiplexing dei canali, allora lei chiede come lo si sarebbe potuto implementare utilizzando il multithreading
Poi fa domande di teoria, a me ha chiesto:
- Spiegare cos'è un threadpool
- Spiegare cos'è la serializzazione
- Cosa succede se si cerca di serializzare un oggetto contentente altri oggetti

L'orale può durare dai 15 ai 50 minuti. Dopo che si è risposto ad una domanda, lei non fa alcun commento, ma passa direttamente a quella successiva. Lei tiene molto in considerazione anche la relazione.
Orale per il progetto Turing, appello di novembre:

-come mai ho usato determinate strutture dati nel progetto piuttosto che altre
-filter streams
-a che servono BufferedInputStream e BufferedOutputStream
-come funziona un monitor
-vantaggi e svantaggi di monitor e lock esplicite
-differenza tra synchronized hashmap e concurrent hashmap
-RMI

L'orale è durato 40/45 minuti
Dal gruppo telegram:

Andrea Tosti:
Ti lascia parlare a ruota, e una volta che hai finito di spiegare non ti dice se hai risposto bene o male o se è contenta o meno, non riesci a capire quando devi fermarti nella spiegazione perché lei ti fissa tutto il tempo. Se puoi cerca di rispondere in modo preciso e meno vago possibile. Ci tiene particolarmente alla relazione e se trova un punto poco chiaro chiede di spiegare cosa intendevi.

2-3 domande su quello che si è visto nelle slides (rest, json, strutture dati, lock, ecc), potrebbe farne anche di più

Commenta la relazione (se ha visto che ti ci sei impegnato o meno), chiede di indicare come e dove sono state implementate le varie funzionalità nel codice, dice anche la sua sull'implementazione, fa domande del tipo "Hai usato NIO, come lo avresti implementato con Multithread?", quindi inizia a farti domande di teoria (quello che c'è sulle slide, ad esempio Lock, Monitor, esempi, formato JSON, come funziona RMI, ecc). In particolare aspetta che sia te a dargli la risposta, in particolare può continuare a fare domande mirate su quell'argomento o cambiare domanda. tipo REST, nessuno lo usa nel progetto, ma lo dovrebbe chiedere

Gabriele Tedeschi:
- Mi ha messo davanti il progetto, chiedendomi di spiegare cosa facessero e dove fossero certe altre
- ha letto il progetto, e anche a fondo, e voleva controllare che fossi io l'autore
Poi come domande orali mi ha chiesto:
- L'RMI callback
- Cosa è uno stub rmi
- Cosa si intende per "interfaccia uniforme" in REST
- Come avresti fatto il server tutto REST
- Come avresti fatto il server con un selector ma anche un threadpool

Simone:
Le domande che mi ha fatto sono state:
-Callback RMI, come funziona, ruolo del client e ruolo del server.
-Threadpool, cosa sono, come funzionano e che tipi ci sono in Java.
-Le domande sul progetto invece sono domande sulle strutture utilizzate, sulla gestione della sincronizzazione e su come viene gestita la sfida sia lato client che lato server.

Enrico Tomasi:
A me oggi ha chiesto:
- RMI callback
- REST
- Lock e var di condizione
- Synchronized
Sul progetto mi ha fatto domande relative a come ho strutturato la sfida, quali strutture dati ho utilizzato in generale è come ho gestito la concorrenza. Per quanto riguarda la parte di lab, mi ha chiesto:

- Java RMI
- Monitor
- Lock implicite e metodi synchronized
Ci tiene *tanto* alla relazione, la legge, la annota e la corregge, mi ha fatto fare una demo e ha chiesto come funzionavano alcune cose nel progetto (abbastanza nel dettaglio)

Domande:
- Synchronized vs Concurrent collections (differenze semantiche, performance, se conviene sempre usare concurrent)
- Serializzazione (come si può riserializzare un oggetto dopo averlo modificato)
- Perché RMI richiede synchronized
- Perché ho scelto NIO invece di multithreaded
- un bel po' di altra roba che non ricordo, ma era tutto nelle slides, fa domande sui macroargomenti, lascia parlare e eventualmente fa domande più mirate

Il voto mi è sembrato dipendere principalmente dalla relazione
Orale 21/02/2020

Mi ha fatto fare la demo del progetto, lasciandomi parlare e illustrare liberamente tutte le varie funzionalità. Poi mi ha fatto un paio di domande specifiche, su come ho gestito sincronizzazione, come funziona la sfida a livello di thread e di timeout (fondamentalmente mi ha chiesto di spiegarle l'implementazione della sfida nel dettaglio).
Poi domandina su Callback e sulla differenza tra concurrent e synchronized hashmap, con i metodi specifici (putIfAbsent, updateIfEqual...).
Tiene particolarmente alla relazione, come è già stato detto: ho visto annotazioni varie e la riguardava mentre parlavo.