TU Wien:Einführung in die Programmierung 2 VU (Puntigam)/Fragenkatalog 2. Test

From VoWi
Jump to navigation Jump to search

Beim Test bekommt man zufällig 5 Fragen mit je 5 Antwortmöglichkeiten. Um neue Fragen hinzuzufügen konvertiere sie mit dieser Website.







  

1

Welche der folgenden Aussagen treffen in Bezug auf Algorithmen und Datenstrukturen zu?

Absicherung gegen schlechte Datenverteilung kann die Laufzeit erhöhen.
Arrays sind sehr effizient wenn normale Arrayzugriffe ausreichen.
Bei unbekannter Datenverteilung gehen wir von Zufallsverteilung aus.
Ein AVL-Baum ist stets effizienter als ein einfacher Suchbaum.
Lineare Listen sind einfach zu implementieren.

2

Welche der folgenden Aussagen treffen auf die Ein- und Ausgabe über Streams in Java zu?

'new FileWriter(s)' erzeugt einen gepufferten Stream.
'new FileWriter(s)' wirft eine IOException wenn s schon existiert.
Ausgaben über gepufferte Streams gehen direkt an das Betriebssystem.
Puffer können als Wrapper vor nichtgepufferte Streams gehängt werden.
Viele Methoden von PrintStream werfen keine IOException.
Streams vom Typ Reader wandeln die Kodierung automatisch um.
Streams werden nach der Verwendung mittels close() geschlossen.
Gepufferte Streams sind meist effizienter als ungepufferte.

3

Welche der folgenden Aussagen treffen auf Schleifen und Schleifeninvarianten zu?

Die Abbruchbedingung kann nicht Teil einer Schleifeninvariante sein.
Durch Schleifeninvarianten werden Schleifen im Debugger iterierbar.
Eine Schleifeninvariante beschreibt, was jede Iteration ändert.
Schleifeninvarianten garantieren den Fortschritt jeder Iteration.
Schleifeninvarianten helfen dabei, Programme statisch zu verstehen.
Schleifeninvarianten müssen auch vor und nach der Schleife gelten.
Schleifeninvarianten müssen vor jedem Methodenaufruf erfüllt sein.
Termination muss unabhängig von Schleifeninvarianten geprüft werden.

4

Welche der folgenden Aussagen treffen auf das Testen großer Programme zu?

Anwender sind wegen möglicher Verfälschungen nicht einzubeziehen.
Auch intensives Testen kann nicht alle Fehler aufdecken.
Eine Code-Review hilft beim Auffinden von Fehlerursachen.
Experten für Softwaresicherheit sollen einbezogen werden.
Debugger eignen sich zum Aufdecken fast aller Fehlerursachen.
Regressions-Tests müssen fast immer händisch durchgeführt werden.
White-Box-Testen legt Testfälle vor der Implementierung fest.
White-Box-Testen leitet Testfälle aus der Implementierung ab.
Black-Box-Testen leitet Testfälle aus Anwendungsfällen ab.
Mit absichtlichen Fehlern ist die Qualität des Testens prüfbar.

5

public int median(int[] a) { return a[a.length / 2]; }

Welche der folgenden Aussagen können (jede für sich) als Vor- bzw. Nachbedingungen dieser Methode sinnvoll sein?

Nachbedingung: Gibt einen Eintrag etwa in der Mitte von a zurück.
Nachbedingung: Setzt voraus, dass a mindestens einen Eintrag hat.
Nachbedingung: Wirft eine Exception wenn a.length == 0.
Nachbedingung: Halbiert die Länge von a.
Vorbedingung: a != null
Vorbedingung: a ist absteigend sortiert.
Vorbedingung: a ist aufsteigend sortiert.
Vorbedingung: Gibt den Median zurück wenn a sortiert ist.
Vorbedingung: Greift auf einen Eintrag von a zu.
Vorbedingung: Wirft eine Exception wenn a == null.

6

Welche der folgenden Aussagen treffen auf Iteratoren in Java zu?

Lineare Listen sind meist einfacher iterierbar als Binärbäume.
Mehrere Iteratoren auf dem gleichen Objekt stören sich gegenseitig.
Iterator-Implementierungen sind eigene Klassen.
Iterator-Implementierungen bestimmen die Reihenfolge der Iterationen.
Iteratoren über Bäume sind häufig rekursiv implementiert.

7

Welche der folgenden Aussagen treffen auf die notwendige Überprüfung von Eingabedaten zu?

Alle Parameter einer Methode müssen in der Methode überprüft werden.
Die Validierung soll erst möglichst knapp vor der Ausgabe erfolgen.
Java-Objekte vom Typ Pattern lesen nur überprüfte Daten ein.
Plausibilitätsprüfungen sollen direkt nach der Eingabe erfolgen.
Reparaturversuche nicht plausibler Daten können gefährlich sein.
Unzureichende Prüfung kann z.B. zu einer SQL-Injection führen.
Nicht validierbare Daten reparieren wir direkt nach der Eingabe.
Reguläre Ausdrücke können Prüfungen von Datenformaten vereinfachen.

8

Welche der folgenden Aussagen treffen auf Klassen und Interfaces im Java-Collections-Framework zu?

Einträge in einem TreeSet<E> sind sortiert (über Iterator sichtbar).
Set<E> erweitert Collection<E>, verbietet aber mehrfache Einträge.
Map<K,V> implementiert Set<K> als balancierten binären Suchbaum.
ArrayDeque<E> erweitert ArrayList<E> um die Methoden von Deque<E>.
In eine Queue<E> kann man neben add auch mittels offer einfügen.
LinkedHashMap<K,V> ist sowohl Hash-Tabelle als auch lineare Liste.
LinkedList<E> implementiert Deque<E> als doppeltverkettete Liste.
LinkedList<E> implementiert Set<E> als einfachverkettete Liste.

9

Welche der folgenden Aussagen treffen auf die Einhaltung von Zusicherungen entsprechend Design-by-Contract zu?

Clients müssen für die Einhaltung von Invarianten sorgen.
Clients müssen für die Einhaltung von Nachbedingungen sorgen.
Clients können sich auf die Einhaltung von Nachbedingungen verlassen.
Invarianten müssen zu ausnahmslos jedem Zeitpunkt erfüllt sein.
Server müssen für die Einhaltung ihrer Nachbedingungen sorgen.
Server müssen für die Einhaltung ihrer Vorbedingungen sorgen.
Server müssen für die Einhaltung ihrer Invarianten sorgen.
Server können sich auf die Einhaltung ihrer Vorbedingungen verlassen.
Server können sich auf die Einhaltung ihrer Nachbedingungen verlassen.

10

Welche der folgenden Hoare-Tripel gelten (für Anweisungen in Java)?

{true} x = y<z ? y : z; {x>=y}
{y>0} while (x>0) x--; {y>0}
{true} x=0; {x>=0}
{x>0} while (x>0) x--; {x>0}
{true} x++; {x>=0}