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

Domande Orale Ferrari

[mod: Discussione fissata come annuncio per raccogliere nel tempo le domande per ripasso dell'orale con il Ferrari]

Quali sono le principali domande del Ferrari all'orale?

Domande 2016

Manutio
- Cos'è l'invariante di rappresentazione
- Mark & sweep e altri garbage collector
- stack a runtime di ocaml
- stack, heap, class area e tabella dei metodi in Java + record di attivazione

Sul progetto ti chiede in quale altro modo potevi fare determinate cose che a lui non sono piaciute e perché hai scelto quello

Domande 2017
unknown
L'orale con Ferrari non è troppo complicato, le domande sono sempre molto chiare e se non si sa rispondere lui fa ragionare.
Come tempo medio siamo sui 15 minuti ma può arrivare anche ad un'ora nel caso in cui non si sappia rispondere a qualche domanda dato che insiste molto sugli argomenti che non si sanno spiegare.

Del progetto chiede a tutti come potevano essere implementate delle parti che non sono fatte troppo bene.
Le domande più frequenti riguardano il runtime stack, il garbage collector, la tabella dei metodi e la class area. Qualche volta ha chiesto anche il principio di sostituzione e ha voluto sapere tutte le varie regole.
Non ha mai chiesto la parte del programma relativa ai punti fissi.

LorenzoCasalini
Orale del primo appello sessione invernale anno 2016/2017:
-Dimmi cosa accade a run time al momento della chiamata di una funzione.RISPOSTA:spiegare i concetti e i compiti di prologo ed epilogo( svolti dal chiamante) e spiegare la parte svolta dalla funzione chiamata.
-Dimmi la funzione di astrazione del progetto di Java
-Dimmi cosa fa la funzione x che hai scritto nel progetto di OCaml

Alberto Alberigi
Cosa è lo static link, quando non si usa (ad esempio in c non si usa perché le funzioni sono tutte dichiarate prima del main e quindi l'ambiente è uguale per tutti, ossia quello globale).
Garbage collector
Principio di sostituzione (in che senso la regola della precondizione indebolisce?)
E poi domande sul progetto, ti chiede di spiegare dei punti, ti fa vedere gli errori e cose che non gli sono piaciute e chiede in che altto modo potevi implementarle.

Domande 2018

Giulio Purgatorio
Aggiorno un po' visto che non si trovano info recenti a riguardo.
All'orale rimane una persona tranquilla, fa ragionare e dà tutto il tempo che serve per arrivare alla risposta.
Nella mia sessione ha chiesto praticamente a tutti l'invariante di rappresentazione ed i records di attivazione (cosa sono, come funzionano), in particolare poi ha indirizzato su Control Link e Static Link e come quest'ultimo viene calcolato, per poi parlare dei progetti e finire l'orale. Ad alcuni ha chiesto la Retention (il Retain dei records), ad altri ha chiesto la definizione formale della call-by-value / reference e così via ma sempre roba inerente agli errori commessi nello scritto. Un'altra domanda piuttosto gettonata è il Garbage Collector, e dopo ciò fine ^^

Giammarco Romagnoli
Secondo appello sessione estiva 2017/2018

L'orale non è particolarmente difficile. Viene dato tutto il tempo che serve per ragionare ma insiste molto sui concetti che non sono chiari. Il mio orale è durato circa 30 minuti e mi ha chiesto le seguenti cose:

- Run time di Java facendomi rifare l'esercizio che avevo sbagliato allo scritto. Quindi cosa sono root set, Object area, Method area, Class area ed in quale memoria risiedono.
- Principio di sostituzione con relative regole, come lo vorremmo e come si comporta Java. Perchè sarebbe utile avere degli argomenti più generici nella sottoclasse?
- Differenza di strutturazione dello stack a run time in C e in Java. Praticamente in C i riferimenti non locali vengono risolti nell'ambiente globale, mentre in Java vengono risolti nell'ambiente dove risiede l'oggetto e quindi al metodo bisogna passargli il "this".
- Differenza tra compilazione ed interpretazione mettendo a confronto il C con il Java. In particolare mi ha chiesto in che linguaggio è scritto il codice oggetto in C e se è possibile fare un interprete con il C (no perchè non ha il pattern-matching).
- Dimmi l'invariante di rappresentazione del progetto di Java.
- Altre domande sui progetti

Questo è il mio blocco appunti: https://1drv.ms/u/s!ArR1V6ArCBX6lkWrxOzg8jQDl8EH
Spero possa essere utile. Se trovate errori fatemelo presente.
Da Telegram:

chiede quasi sempre la share di java e l'applyover di caml, vuole che nella share ci sia l'eccezione se si prova a condividere un dato con se stessi (perché già la copy fa questa cosa. Per caml preferiva un dizionario ricorsivo ad un (ide.exp)list e ci tiene che nell'apply over la prima cosa che si valuti sia la chiusura della funzione


Ferrari avevo rotto le scatole a qualcuno sul fatto di :
1) password che potevano essere stringhe vuote oppure uguali a username
2) applyover che non controllava subito se l'argomento fosse una chiusura
3) username stringa vuota
4) eccezione per share fatta su se stesso

A ognuno chiede qualcosa diverso, a me ha chiesto di fargli vedere la share, l'invariante di rappresentazione e l'esecuzione dei test per il progetto in Java, per quello in ocaml mi ha chiesto di fargli vedere come valuto il dizionario e come funziona l'applyover
Aumenta di due punti a tutti comunque