Computer Science, 2014-02-18

Module: 
Computer Science
Examiner: 
Vornberger
Assessor: 
Pulvermüller
Date: 
Tue, 2014-02-18

VORBEREITUNG

Was hast du zur Prüfungsvorbereitung benutzt?

Informatik A Skript + Vorlesungsaufzeichnungen
Informatik B Skript

PRÜFUNG

Prüfungsdatum: 18.02.2014
Wiederholungsprüfung? nein
Note: <1.0> Bereiche nach Zeit: <15/15>

Fragensammlung: wie lauteten die Fragen im einzelnen?

Info A

Vornberger: Was können Sie mir denn zu Graphen erzählen?
Ich: Knoten, Kanten, evtl. Gewichtungsfunktion, ungerichtet, gerichtet.
Vornberger: Wie könnte man die denn implementieren?
Ich: Adiazenzliste, Adjazenzmatrix.
Vornberger: Wann ist denn welche Implementierung sinnvoll?
Ich: Matrix: schneller Zugriff auf Kanten, dicht besetzt, etc. - Liste: Nachbarn, dünn besetzter Graph, etc.
Vornberger: Dann beschreiben Sie doch mal einen Algorithmus, für einen Graphen der über eine Adjazenzliste implementiert ist.
Ich: Ja da gibt es zum Beispiel den Algorithmus von Dijkstra für das single source shortest path problem. (Alles erklärt usw.)
Vornberger: Welchen Algorithmus kennen Sie denn für ungerichtete Graphen?
Ich: Minimum Spanning Tree, erkläre
Vornberger: Wie kann ich denn jetzt feststellen, dass zwei Knoten im selben Baum sind?
Ich: Stand erst kurz auf dem Schlauch bis er mir das Stichwort Chef gibt, komme dann auf die Lösung.
Vornberger: Wie viele Kanten hab ich denn dann mindestens?
Ich: N-1
Vornberger: Gut, dann erzählen Sie doch mal über das chinese postman Problem.
Ich: (Ich war leicht überrascht, dass er bei den Graphen so tief nachbohrte, hatte mich da nicht mit alen Details wirklich beschäftigt, konnte mich aber an den Eulergraph erinnern) Erzähle also, wie der chinesische Briefträger alle Straßen abklappern muss und dass das beim Eulergraph alles easy ist. Dann will er wissen, wie man das machen kann, wenn man keinen Eulergraph hat. Ich komme nicht direkt drauf, er malt mir einen hin (bis dahin hatte ich nur ganz kurz einen Graphen skizziert um zu erklären, was das ist). Komme dann darauf, dass man mit einem matching die doppelt zu laufenden Kanten findet, die am günstigsten sind.

Info B

Pulvermüller: Erzählen Sie mir doch mal was zum Substitutionsprinzip
Ich (völlig geschockt): Male erst mal Klassen Person, Student, Dokument und Buch auf und versuche daran die Begriffe Kovarianz, Kontravarianz und Invarianz zu erklären, stottere dabei alles ab, an was ich mich erinnern kann.
Pulvermüller: Wieso macht das denn jetzt Sinn?
Ich: Verstehe nicht sofort, was sie meint, erinnere mich dann dunkel an die Formulierung des Prinzips aus dem Skript und formuliere es noch mal aus, das reicht ihr.
Pulvermüller: Gut, dann erklären Sie doch mal das Observer-Pattern.
Ich: Male UML-Diagramm und erkläre.
Pulvermüller: Wieso macht das denn Sinn mit den Interfaces und diesen zwei Ebenen, die Sie da haben?
Ich: Schnittstellen, Wiederverwendbarkeit, usw.
Pulvermüller: Gut und dann zum Schluss erzählen Sie mir doch noch was zu Nebenläufigkeit und Synchronisation.
Ich: Erzähle von synchronized Blöcken und Methoden, Monitor-Objekten, Locks, dirty reads and lost updates, etc.
Pulvermüller: Schreiben Sie doch mal ein bisschen Code für einen synchronisierten Block.
Ich: Schreibe Methode mit einem synchronized-Block, erkläre was passiert etc.

Fertig.

Was mußte schriftlich gelöst werden?

Ich hätte direkt einen Graph malen sollen, dann wäre das Erklären sicher leichter gefallen, auch wenn er nicht danach gefragt hatte.

UML Diagramm für das Observer Pattern, synchronized Block

Persönlicher Kommmentar, Was war toll? Was war doof? Was war auffällig?

Herr Vornberger hat die ganze Zeit sehr kritisch geguckt, war am Ende aber dann doch begeistert. Frau Pulvermüller hat relativ offene Fragen gestellt und war umso begeisterter, umso mehr Zusatzinfos man erzählt hat. Beide waren sehr nett und helfen auch mal eben auf die Sprünge, wenn man nicht sofort weiß, was gemeint ist.