Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 5 » Allgemein
Inhaltsverzeichnis
Allgemein
Prüfung wurde im Büro von Dr. Wilke abgelegt, mit Beisitz von Prof. Brune. Die Prüfung wurde in einen Teil COBOL (durch Wilke geprüft) und den restlichen Teil Mainframe (durch Brune geprüft) gegliedert. Circa 8 Minuten von den 30 Minuten wurden durch Wilke gefragt, der Rest durch Brune. Es lag ein Blatt Papier sowie Stifte vor einem und eine Tastatur mit Anbindung an einen Computer, auf dem das TSO Terminal geöffnet war. Stift und Papier dienten zur Untermalung oder zum Zeichnen bei Fragen, Tastatur für den Computer für bspw. Eingaben im TSO.
Fragen
Wilke Herr Wilke startete mit der Frage, was allgemein in dem Kurs behandelt wurde.
Die 8 Blöcke aufgezählt und zu jedem Thema 1-2 Stichworte gesagt.
Anschließend wurde ich gefragt, wie ich denn Java Klassen in COBOL umsetzen könne.
Auf die Stufenhierarchie von COBOL eingegangen, dass damit im Endeffekt einzelne Elemente der Klasse abgebildet werden können.
Ich solle doch bitte mal eine Java Klasse hin schreiben.
Habe eine Klasse „student“ mit einem String Namen und einer ToString() Methode aufgeschrieben.
Ich solle diese Klasse doch nun bitte in COBOL übersetzen.
Habe anschließend die 3 Divisions, die hierfür gebraucht werden, aufgeschrieben (Habe einen Fehler gemacht, diesen aber noch selbst gemerkt und nach kurzer Zeit ausgebessert, war sehr gut!), die Variable angelegt (zuerst falsch, weil 77 nicht richtig ist, anschließend die richtige Stufe zugewiesen). Im Teil des Anlegens der Methode bin ich vollkommen aufgelaufen, weil ich nicht mehr wusste wie das ging, hier haben wir dann den COBOL Teil abgebrochen. Herr Wilke hat mir teilweise noch geholfen und mich bspw auf das MOVE gelenkt (ich habe den Begriff dann selbst genannt und noch fix erklärt), aber ich habe die Methode nicht mehr aufgeschrieben.
Es gab allgemein noch ein paar Fragen zur Umestzung, zB wieso in Java einfach nur „String name;“ steht, in COBOL jedoch „02 name PIC X(50).“ COBOL ist halt sehr alt und damals ging das mit dynamisch noch nicht so gut, weshalb man dem ganzen einen festen Wert zuweisen muss.
Ob ich denn das ganze dann so in Java modellieren könne?
Ja, indem ich aus dem String ein char[] mache und diesem die Länge 50 gebe.
Es waren im Grunde einfach ein paar Feinheitsfragen, die darauf abgezielt haben, ob man das ganze verstanden hat. Es war sogar relativ wurscht, dass ich die Variable in die Workage-section gepackt habe, ich musste halt einfach dazu sagen, dass die Variable jetzt temporär gebraucht wird und ich sie deshalb da rein packe (Also Begründung für das, was man tut, hat gereicht!).
Brune Herr Brune hat nach der versiebten Funktionsumsetzung übernommen, alleine schon weil die Zeit um war, und von hinten angefangen. Zuerst einmal solle ich erklären, was denn Java Beans sind.
3 Arten genannt
Was sind denn Entity Beans und wie verwendet man sie?
Darauf eingegangen, dass sie inzwischen nicht mehr verwendet werden und nur noch Entities verwendet werden und das sie im Endeffekt nutzerbezogene Informationen bspw darstellen.
Wie ich denn Entity Beans in Java kennzeichnen würde?
Per Annotation in/über der Klasse.
Okay, ich solle bitte einmal eine Klasse (diktierte mir die Klasse) hinschreiben und aus dieser eine Session Bean machen.
Klasse hingepinselt, Fehler gemacht, weil die Session Beans nur als @Stateless oder @Stateful dargestellt werden.
Wieso ist denn diese Klasse (War irgendetwas mit einer Buchung, nur die Klasse und eine Methode ohne Variablen) Stateless?
Weil die Methode alle wichtigen Parameter bekommt und das damit generierte Objekt danach sofort wieder vernachlässigt werden kann. Die Klasse selbst hat keine eigenen Variablen.
Was bringen mir denn diese Beans?
Kapselungsschicht, die es für den Entwickler wesentlich leichter macht. Transaktionen werden dadurch leicht umsetzbar.
– Den Teil des Gesprächs weiß ich nicht mehr genau, er hat darauf abgezielt, dass in den Beans alles eine einzelne Transaktion ist, diese automatisch ACID erfüllen und der Entwickler sich um nichts kümmern muss. Wir sind dann auf verteilte Transaktionen gekommen Verteilte Transaktionen, wie funktionieren die denn?
Erklärt, dass das lauter kleine Transaktionen auf Komponenten sind, man etwas wie einen CICS braucht um diese gut zu organisieren. Der CICS schaut zB, dass der 2-Phasen-Commit durchgeführt wird.
Wie funktioniert denn der 2-Phasen-Commit?
BoT, Datenoperationen, Prepare for commit (habe ich sehr genau erklärt), EoT
Sehr gut, dann machen wir mal weiter mit USS, was ist das denn?
Erklärt, dass es ein Wrapper ist, um UNIX ähnliches (habe zuerst Linux gesagt, shame on me…) Dateisystem bereitzustellen und UNIX Befehle interpretieren zu können.
Wie funktioniert das denn? Zeigen sie mir das mal.
Ich habe mich per MOVS (Oder wie auch immer der Befehl heißt…) im TSO angemeldet. Habe dann gesagt, dass wir hier jetzt eine UNIX ähnliche Oberfläche haben mit Befehlen (Habe demonstrativ „ls“ eingegeben) die auch so funktioniert.
Wie würde ich hier denn jetzt etwas unter Java erstellen?
Naja, wir haben hier jetzt kein Java drauf, weil keine Dateien drauf sind, aber ich würde mir eine entsprechende Klasse erstellen und aus dem Java Ordner den Kompiler benutzen.
Wie würde ich denn jetzt eine neue Java Klasse hier anlegen?
Keine Ahnung… (Habe etwas von Editor, was richtig war, gefaselt, aber bin nicht auf die richtige Antwort gekommen, welchen Editor ich nehme, bzw wie ich die Klasse wirklich anlege).
Okay, kommen wir zur Mainframe Architektur. Da haben wir ja den z/OS Kernel. Was kann der denn?
Hier wusste ich zuerst überhaupt nichts auf die Frage. Er hat mir ein bisschen geholfen, indem er verallgemeinert hat, was denn jeder Kernel können muss. Somit bin ich auf CPU Scheduling, Peripherie steuern, Adressraumverwaltung usw gekommen (War dann noch zufriedenstellend die Antwort).
Ob ich ihm denn mal den Aufbau vom z/OS aufmalen könne?
Habe die Grafik aus dem z/OS Überblick aufgemalt mit dem Kernel ganz unten, den Access Methods darüber und dem USS/TSO/JES/CICS auf oberster Ebene (und dazu natürlich bisschen erzählt)
Wofür denn das TSO verwendet wird?
Wurde damals für den Multinutzerbetrieb entworfen, mehrere Entwickler konnten hier gleichzeitig entwickeln, was eine Neuerung war. Inzwischen einfach nur noch als bspw. Zwischenoberfläche für den ISPF um auf dem Mainframe entwickeln zu können.
Und das JES?
Offline Stapelverarbeitung. Bin zurück auf die Beans gekommen, die ja online und mit Webservern agieren und habe das ganze gegenübergestellt.
(Die folgende Überleitung zu diesem Thema hin weiß ich nicht mehr. Es ging im Endeffekt um die BCD Arithmetik, dass diese gesondert auf den Prozessoren durch ihre ALU umgesetzt ist) Wie ist denn eine PU aufgebaut?
(Das folgende war im Endeffekt meine Paradedisziplin, die glaube ich viel ausgemacht hat) Habe ihm das Bild von den Registern hingemalt und gesagt dass darüber die ALU liegt für die BCD Operationen bzw das Steuerwerk.
Was ist denn das PSW? Und die anderen Register?
Kurz erklärt, aktueller Punkt im Programm steht im PSW, also der gerade auszuführende Befehl, die Flags dazu im PSW Flags Register usw und so fort.
Als letztes kommen wir noch zu den Befehlssätzen. Was ist denn das besondere bei Mainframe Prozessoren?
Unterschied RISC und CISC erklärt, wieso CISC damals verwendet wurde und heute noch wird auf dem Mainframe (Abwärtskompatibilität und Redundanz von Befehlen (Bsow 2x genau der gleiche Befehl implementiert, aber wegen den Adressräumen die erweitert wurden, minimal anders sind).
Wieso denn die Redundanz bei den Befehlen?
Alte Architekturen in den Zusammenhang mit der jetztigen Situation gebracht, damals verschiedene Wortbreiten, mit denen Befehle ausgeführt wurden und die Adressierung dazu.
Wieso benutzten wir damals CISC?
Speicher war knapp
Nebenfrage, welche Prozessoren nutzen denn RISC?
ARM
Thema Speicher, wie funktioniert denn das mit dem Speicher beim Mainframe?
Komplette Addressauflösung auswendig aufgeschrieben mit dem Segment Table, Page Table, Displacement (War ein kleiner Fehler drinnen) und erklärt wie das ganze funktioniert.
Wie funktioniert das dann mit dem ESA?
Das leitet halt nochmal auf einen speziellen Data Only Adressbereich.
Wo war das mit ESA?
Bei der ESA, also der Maschine von '80.
Dann war die Zeit um. Es sind leider nicht mehr alle Fragen, aber ein sehr großer Teil. Es waren auch mal kleine Zwischenfragen drinnen, bei denen er genau einen Begriff hören wollte (Bspw BCD-Arithmetik, oder wo ESA genau vorkoam).
Vorbereitung
Zur Vorbereitung auf die Klausur bin ich sämtliche Vorlesungsvideos von Herrn Brune noch einmal durchgegangen. COBOL ein bisschen selbst programmiert. Knapp eine Woche hat sehr gut gereicht, aber auch nur weil ich mit Komilitonen gelernt habe und wir uns gegenseitig circa 3 Tage lang nur noch abgefragt haben.
Prüfung Allgemein & Bewertung
Die Prüfung allgemein war sehr angenehm, die Einstiegsfrage vollkommen in Ordnung, keine arg fiesen Fragen oder ähnliches, manchmal sehr spezifisches tiefes Wissen, aber absolut kein Problem wenn man bereits 95% vom Themengebiet wusste, solch eine Kleinigkeit nicht zu wissen (hat sich ergo nicht auf die Note ausgewirtkt). Wenn Herr Brune gemerkt hat, dass ich bei einem Themengebiet nicht 100% sicher bin, oder eventuell nicht weiter weiß, wurde das Thema gewechselt, oder die entsprechende Hilfe/Zeit zum überlegen gegeben, sodass man von selbst noch auf die Lösung kommen konnte, was ich sehr nett fand. Ähnliches galt für Herrn Wilke, der einen korrigierte und Hilfe zur Selbsthilfe anbot (außer man wusste WIRKLICH nicht mehr weiter, siehe COBOL ToString Programm). Zur Bewertung ist zu sagen, dass sie absolut fair war. Es wurde viel Wissen verlangt, aber auch dementsprechend vergütet, wenn man mal irgendwo eine kleine Lücke hatte und nicht alles 100% wusste. Ich habe bei der ein oder anderen Sache gesagt „Ich habe keine Ahnung, tut mir Leid“ und trotzdem eine 1,3 bekommen, die auch nur durch das Versagen im COBOL Teil begründet war. Es war in meinen Augen überaus fair, nicht sehr tief auf die Schwächen einzugehen und auch ein „Ich kann das leider nicht perfekt“ gelten zu lassen und die Punkte in anderen Themen (bei mir bspw die Speicherverwaltung) wieder rein holen zu lassen, bzw. die entsprechende Hilfestellung zu gewährleisten um noch auf die Lösung zu kommen. Man kann halt nicht immer alles wissen :)
Weitere Fragen & Wichtiges
Theoretisch hätte von Herrn Brune wirklich alles dran kommen können. Meine Komilitonen wurden zu komplett anderen Themen gefragt. Auch mein COBOL Teil war anders im Gegensatz zu meinen Komilitonen. Ich habe den COBOL Teil sogesehen selbst gesteuert, indem ich einen String in meiner Java Klasse angelegt habe. Hätte ich einen int angelegt, hätte ich die bytezahl wissen müssen und wie ich diesen korrekt in COBOL übersetze. Es schien Herrn Brune und Herrn Wilke besonders darauf anzukommen, dass man auf eine Frage eine kleine Einleitung hat, den Hauptteil entsprechend erklärt und eine Art Ausblick am Ende gibt. Ein Beispiel hierfür wären die Beans: Auf die Frage „Was sind denn Java Enterprise Beans“ wäre eine gute Antwort „Es gibt 3 Arten von Java Beans, die Entity, Session und Message Driven Beans. Diese dienen zur leichteren Erstellung von Transaktionen durch den Entwickler.“ Man hat hierbei auf die Frage eingeleitet, darauf geantwortet, und Herr Brune kann anschließend mit Transaktionen als Thema fortfahren.