Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 2 » Allgemeines: (Übersicht)
no way to compare when less than two revisions
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
— | pruefungen:hauptstudium:ls2:ueb3-2019-03-6_2 [07.03.2019 13:49] (aktuell) – angelegt katzenwal | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | === Allgemeines: | ||
+ | Prüfer: Professor Philippsen\\ | ||
+ | Beisitzer: Patrick Kreutzer, Marius Kamp\\ | ||
+ | Ergebnis: 1.0\\ | ||
+ | |||
+ | Die Fragen wurden von den Beisitzern gestellt, Philippsen hat wie gewohnt nur mitgeschrieben. | ||
+ | Die Atmosphäre war sehr angenehm, es wurde nicht unnötig nachgebohrt wenn man gesagt hat, dass man etwas nicht weiß. | ||
+ | |||
+ | Kein Anspruch auf Vollständigkeit, | ||
+ | |||
+ | * F: Frage (einer der Beisitzer) | ||
+ | * A: Antwort | ||
+ | |||
+ | === Teil 1: Fragen zum Blockpraktikum === | ||
+ | |||
+ | * F: Was haben wir im Praktikum gemacht? | ||
+ | * A: VM mit JIT programmiert. Zuerst nur Interpreter, | ||
+ | |||
+ | * F: Wie funktioniert Interpretation? | ||
+ | * A: Einfache Interpretation, | ||
+ | |||
+ | * F: Was haben wir bei JIT1 gemacht? | ||
+ | * A: Vorteile von nativer Übersetzung erklärt. Trampolinfunktion. | ||
+ | * F: Wozu benötigt man die Trampolinfunktion? | ||
+ | * A: Kompilierung der Methode anstoßen, ggf. Optimierungen durchführen. | ||
+ | |||
+ | * F: Danach haben wir Registervergabe gemacht... | ||
+ | * A: Linear Scan statt Registerfärben. Finden von SCCs mittels Kosarajus. | ||
+ | * F: Was ist er Nachteil von SCCs? | ||
+ | * A: Keine Löcher, Kontrollflussunabhängigkeit (hier wollten sie ein Beispiel, mir ist keines eingefallen. Gemeint war, wenn eine Variable z.B. nur in einem kleinen Teil einer Schleife lebendig ist, wird sie mit SSCs für die gesamte Schleife als lebendig erkannt) | ||
+ | * F: Warum kann man die SSCs direkt verwenden? | ||
+ | * A: Topologisch sortiert | ||
+ | * F: Was machen wir mit den Lebensspannen? | ||
+ | * A: Linear Scan erklärt. | ||
+ | * F: Welche anderen Heuristiken gibt es noch? | ||
+ | * A: z.B. Variablen in Schleifen oder Variablen, die als nächstes benötigt werden, bevorzugen | ||
+ | |||
+ | * F: Was haben wir dann gemacht? | ||
+ | * A: Inlining, besonders bei kleine Funktionen sinnvoll. | ||
+ | * F: Was muss dabei alles verändert/ | ||
+ | * A: Anpassen von Sprungzielen (vor/nach dem Inling, in der geinlinten Funktion), Returns durch Mov+Sprung ersetzen | ||
+ | * F: An welche Stelle haben wir das gemacht? Warum? | ||
+ | * A: TVM-Bytecode. Vorteile gegenüber E2: Vorzeitige Returns einfach, keine Umbenennung von Variablen notwendig. Vorteile gegenüber Assembler: Flexibler, weniger plattformabhängige Sachen, auf die man achten muss (z.B. Aufbau/ | ||
+ | |||
+ | === Teil 2: Fragen zur Vorlesung === | ||
+ | |||
+ | == Funktionale Programmierung == | ||
+ | * F: E2 soll eine funktionale Programmiersprache werden: Was muss dabei beachtet werden? | ||
+ | * A: Besonderheiten von FP erklärt | ||
+ | * F: In funktionalen Sprachen können Typen erkannt werden, obwohl sie nicht explizit hingeschrieben werden. Wie geht das? | ||
+ | * A: Typinferenz und Unifikation erklärt | ||
+ | * F: Was ist die Besonderheit bei Funktionsaufrufen? | ||
+ | * A: PAP, Speichern des Kontext in Closures (auf dem Heap) | ||
+ | |||
+ | == Garbage Collection == | ||
+ | * F: Welche Garbage Collection Verfahren gibt es? | ||
+ | * A: Reference Counting, Mark/Sweep, Kopierendes Bereinigen | ||
+ | * F: Was ist der Hauptnachteil von allen Verfahren? | ||
+ | * A: Verlangsamung/ | ||
+ | * F: Wie kann man das lösen? | ||
+ | * A: Generationenkonzept erklärt | ||
+ | * F: Was kann hier passieren/ | ||
+ | * A: Zeiger von der alten in die neue Generation, darf nicht übersehen werden. Verfahren dafür erklärt (Erinnerungsmengen, | ||
+ | * F: Wieso ist das andersum (Zeiger von junge in alte Generation) kein Problem? | ||
+ | * A: GC der alten und neuen Generation werden gemeinsam durchgeführt. | ||
+ | |||
+ | == Aspekte == | ||
+ | * F: Wie funktioniert das mit Aspekten? | ||
+ | * A: Einweben von Aspekten mit Advices und Pointcuts erklärt | ||
+ | * F: Welche Typen von Advices gibt es? Warum muss man sie unterschiedlich behandeln? | ||
+ | * A: Before/ | ||
+ | * F: Was muss man bei Around Advices besonders beachten? | ||
+ | * A: Speichern des Kontextes. Ansprung des Originalcode mittels proceed. | ||
+ | * F: Wie macht das AspektJ genau? //(wusste ich nicht)// | ||
+ | * F: Bei AspektJ gibt es dynamischen und statischem Kontext. Was ist der Unterschied? | ||
+ | |||
+ | == Exceptions (kurz vor Schluss) == | ||
+ | * F: Wie funktionieren Statische Tabellen? | ||
+ | * A: // | ||