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.
Orale teoria luglio 2020

Mi ha fatto fare due esercizi tramite documento condiviso OneNote.
Il primo era un grafico che indicava l'andamento nel tempo della dimensione della Congestion Window in TCP Reno, mi ha chiesto di spiegare in base all'andamento del grafico in che stato si trovasse il TCP e nei punti in cui cambiava l'andamento cosa fosse successo.
Nel secondo mi ha dato una topologia di rete (due sottoreti di tre host ciascuna collegate tramite switch a un router) e mi ha chiesto di scrivere la tabella ARP di due host.Durante lo svolgimento mi ha fatto domande su forwarding diretto e indiretto e come fosse nella topologia dell'esercizio.
Come ultima domanda di teoria mi ha chiesto cosa è un Autonomous System.


Altre domande che ho visto fare assistendo ad orali di altre persone:

Esercizi
- Dati i valori di cwnd=6MSS e ssthresh=7MSS calcolare i valori di cwnd e ssthresh e lo stato del TCP dopo i seguenti eventi in successione: ricezione di 5 ack duplicati, ricezione di 2 ack non duplicati
- Data una topologia di rete compilare la tabella di routing
- Si supponga che per il TCP di un dato host i valori stimati per il round trip time (estimatedRTT) e la deviazione dell'RTT (devRTT) siano rispettivamente di 370msec e 46msec. Si supponga inoltre che i tre successivi valori misurati di RTT siano 340, 350 e 200. Calcolare il nuovo valore di estimatedRTT, devRTT e TCP timeout dopo ciascuno dei tre valori misurati di RTT. Si ipotizzi alpha=0.125 e beta=0.25.
- Si consideri un DNS locale che utilizza la modalità ricorsiva per la traduzione.Supponiamo che un host client richieda la traduzione di un nome (ad es. serverweb.di.unipi.it) non presente nella cache di alcun DNS e che la traduzione del nome debba avvenire scorrendo tutta la gerarchia di DNS. Dire quali query vengono generate specificando, per ogni query, chi la genera (cliente) e a chi è diretta (servente).
- Si discuta se e come un host 192.168.10.10 possa prelevare un file da un server FTP di indirizzo 150.217.10.2. Che differenza c'è fra Active Mode e Passive Mode?

Domande di teoria
- In TCP Reno qual è l'evento più grave fra timeout e ricezione di 3 ack duplicati
- A cosa serve passare in fast recovery dopo aver ricevuto 3 ack duplicati
- Come si aggregano gli indirizzi con il classless addressing
- Passaggio da IPv4 a IPv6, motivazioni e tecniche
- Cos'è RTO
- A cosa serve la finestra di trasmissione TCP, come varia la sua dimensione
- Tabella NAT
- Descrivere ARP
- In HTTP a cosa serve il campo "if modified since"
Opinioni a caldo su orale laboratorio, giugno 2021, progetto WORTH:

Sembra che una GUI fatta bene e a supporto di un buon backend in qualche modo conti, ha detto di averla apprezzata in particolar modo. Conta veramente tantissimo la relazione e la annota in alcuni punti, che chiede di approfondire nel codice. Cercate di farla precisa, tecnica e ordinata. Lunghezza indicativa circa 10-15 pagine, con LaTeX.
Mi è stata fatta fare una demo sulla mia macchina, condividendo lo schermo con teams.

Domande Teoria:
  • Cosa è una threadpool e parlarne in generale. (risposta nelle slides)
  • Funzionamento di un'applicazione RMI, cosa è un registry RMI (vedi slides)
  • Cosa è la serializzazione e spiegare se e in che modo c'entra con RMI. (slides + gli oggetti remoti vengono passati per valore ad un metodo RMI remoto, utilizzando la serializzazione)
Durata orale circa 25 min.