After Test Thread 2014WS

  • Aus dem tuwel Forum:


    Praktischer Teil:


    > Der Sample Test scheint mir etwas zu simpel
    Wie schon in den New beschrieben dient der Sample-Test nur zum kennenlernen der Testumgebung, also Eclipse in Verbindung mit Junit.

    > Mit was muss man beim Test wirklich rechnen?

    Der praktische Teil des richtigen Lab-Tests wird umfangreicher sein und das meiste abdecken was wir in Lab 1 und Lab 2 gemacht haben (e.g., TCP, UDP, 2PC, RMI, Streams, Security). Wobei Sie ein fertiges Framework (wie im Sample) vorgegeben bekommen und dann in einer Klasse mehrere Methoden (ca. 7-8) implementieren müssen. In jeder Methode ist genau beschrieben was Sie machen müssen und Sie können sofort Ihre Implementierung testen und sehen wieviele Punkte Sie schon erreicht haben!


    > Kommt Security im praktischen Teil auch?

    Ja, es wird auch ein kleines Beispiel zu Security geben. Dafür ist es aber ausreichend wenn Sie wissen wie Sie eine Nachricht codieren/decodieren, also die BouncyCastle Library verwenden (API ist vorhanden).



    Theoretischer Teil:

    Fragen und Beispiele sind eher auf der praktischen Seite und sollten gelöst werden können wenn Sie die Übungsbeispiele selber gelöst haben und sich mit den verwendeten Technologien etwas beschäftigt haben bzw. deren Funktion verstanden haben.

  • Theorie-Teil:
    Es kamen die Sachen, die man mehr oder weniger schon selbst beim Programmieren erfährt, z.B. bei wie vielen !nok und !ok der Initiator committet bzw. ein Rollback veranlasst (eine der leichteren Fragen). Es kamen auch einige Fragen zur Registry, auch etwas genauer. Man muss sich wirklich alles genauer anschauen (sowieso auch schon für's Abgabegespräch von Lab 2), auch wenn man bei diesem Teil nicht selbst mitprogrammiert hat. Ich empfand es auf jeden Fall als besser/leichter als in der VO, vor allem wahrscheinlich deswegen, weil man die Theorie vorher selbst angewandt hat.
    Bei der Bewertung läuft es so, dass falsche Antworten negative Punkte geben, allerdings wirken die sich, soweit ich verstanden habe, auf den gesamten Theorie-Teil aus, wobei man keine negativen Punkte bekommen kann. Hat man also -1 Punkt auf Frage 1 und 1 Punkt auf Frage 2, bekommt man 0 Punkte auf den Test. Falls etwas unklar ist, mich aber bitte nicht beim Wort deswegen nehmen, sondern am besten einen Tutor direkt dort fragen.


    Praxis-Teil:
    Es kam das, was angekündigt wurde (7 oder 8 Methoden):
    Socket verbinden/schließen (nur TCP), ServerSocket, Base64, Hash und RMI, aber kein 2PC, soweit ich gesehen habe.
    Was mich aber sehr geärgert hat, war gleich bei der ersten Methode (login, ist ja theoretisch leicht) und scheinbar war ich nicht der einzige mit dem Problem: Wenn er beim reader.readLine() hängen bleibt, muss man ein writer.flush() machen. Das wusste ich nicht und es war bei mir auch bei keinem der beiden Labs vorher direkt nötig. Ich habe deswegen ziemlich lang bei der einen Methode herumgetan und bin nachher zu kaum etwas Anderem gekommen.
    Es wurde zudem erst kurz vor Ende darauf hingewiesen, dass man nur noch 5 Minuten hat (es waren dann eh weniger), also unbedingt selbst auf die Uhrzeit schauen (die Endzeit von Tuwel wurde mehr oder weniger eingehalten)!
    Die Bewertung erfolgt über die JUnit-Tests, das heißt, es wird nur bewertet, was auch wirklich rennt, den Rest, der nicht funktioniert und bei dem JUnit hängen bleibt, soll man auskommentieren. Sollte man wollen, dass auch dieser Code dann angeschaut wird, soll man sich, laut der Tutoren dort, an die LVA-Leitung wenden. Deswegen aber am besten zuerst mit den Tutoren dort absprechen!

  • Juleru : du meinst wahrscheinlich writer.fush(), oder? und ich nehm mal an du hast bei deinem PrintWriter einfach das autoFlush nicht auf true gesetzt.


    also

    PHP
    1. new PrintWriter(socket.getOutputStream());

    statt

    PHP
    1. new PrintWriter(socket.getOutputStream(), true);


    is auf jeden fall nichts neues... aber ja, sowas kann grad im prüfungsstress ärgerlich sein.

  • Der MC-Test war eigentlich ganz einfach, bei ein oder zwei Fragen wars aber mehr zufall ob man beim Implementieren bzw. Anschauen der Dokus über die abgefragten Themen gestolpert ist oder nicht.


    Der Praxisteil ist auch nicht schwer gewesen. Aber mich hat das Flush() ziemlich aufgeschmissen, hat mich locker 15-20min gekostet. Dann sind auch noch 1 oder 2 Testläufe positiv durchgelaufen obwohl ich die noch garnicht implementiert gehabt habe, da hat auch der Tutor nicht weitergewusst. Als ich dann den nächsten Testfall implementiert habe, sind sie wieder negativ verlaufen. Ich weiß bis jetzt nicht wirklich was da falsch gelaufen ist, das hat mich dann fast die restliche Testzeit gekostet und am Schluss sind nur 7 von allen möglichen Punkten beim Programmieren rausgekommen, weil die hälfte einfach nicht fertig geworden ist. Mal schauen ob sich insgesamt ein 2er ausgeht.


    Insgesamt ist der Test wirklich einfach, wenns keine Probleme beim Testen gegeben hätte, wären bei mir locker genügend Punkte für einen Einser rausgekommen

    Tutor - CGUE SS 2016
    Tutor - EVC SS 2016

  • Was war beim RMI Teil zu erledigen?

    Aufgeteilt auf mehrere Methoden: Registry vom Server holen, Registry selbst erstellen, Registry lookup machen, Objekt exporten, Registry löschen (unexport) und ganz am Schluss dann einen String Base64 decodieren und mit dem byte[] ein Objekt erzeugen (war im Übungsbeispiel auch innerhalb der RMI Stage)


    Insgesamt fand ich den Test auch ganz angenehm, nur bisserl viel Fokus auf RMI im praktischen Teil (keine Security oder 2PC)

  • Oh stimmt, habe mich geirrt. Danke, hab's ausgebessert.
    Ja, genau solche Sachen sind extrem ärgerlich - wenn man dann einfach mal die Methode mit den falschen Parametern nimmt (wenn die Tutoren eh sehen, dass einige das Problem haben, wieso sagen sie es dann nicht einfach den anderen im Voraus?) oder den Methoden-Namen vergisst und einem Strg+Leer auch nicht hilft, weil man nur den zweiten Teil weiß. In der Prüfungssituation ist es einfach unrealistisch, wenn man nicht mal docs.oracle.com zur Verfügung hat, denn ansonsten kann man bei solchen Kleinigkeiten ja einfach nachschauen - ein reines Auswendiglernen soll ja auch nicht der Sinn der Sache sein!

  • Ich war gestern um 16:30 und er hat irgendwann mal den Hinweis an alle gegeben, dass man was extra machen muss damit beim PrintWriter wirklich rausgeschrieben wird. Wahrscheinlich weils da ein paar aufghaut hat davor.


    Was das auswendig lernen angeht: So viel wars dann meiner Meinung nach auch nicht. Hab mir vor dem Test eine kurze Übersicht der wichtigen Befehle geschrieben, womit ich auf zwei Seiten komme. Außerdem gabs ja die Java API und die bouncycastle API.


    Meine Befehlsübersicht häng ich mal an, vllt hilft sie ja irgendwem.