Wozu werden Wildcards in Verbindung mit Generics benötigt?
(VT24/25)
Wildcards (?) ermöglichen mehr Flexibilität bei der Verwendung generischer Typen, indem sie für einen unbekannten Typ stehen.
?
<?>
Erklären, ob der Graph gerichtet oder ungerichtet ist.
(VT24/25, VT25/26)
Ein Graph ist gerichtet, wenn die Kanten nur in eine Richtung verlaufen, z. B. A.addNeighbor(B). Ein Graph ist ungerichtet, wenn die Verbindung in beide Richtungen besteht, z. B. zusätzlich B.addNeighbor(A).
A.addNeighbor(B)
B.addNeighbor(A)
Erklären Sie die Unterschiede zwischen lokalen und anonymen Klassen
Eine anonyme Klasse ist nur zur einmaligen Verwendung gedacht, jedoch ohne Klassenname.
Anonyme Klase
//Anonyme Klasse, die Apfel erweitert
Apfel pinkladyApfel = new Apfel(false) {
Besteht aus Klassenname/Objektname ausgesuchterName = new Klassenname();
Lokale Klassen werden innerhalb eines Blocks { … } definiert ‐ Innerhalb einer Methode, Schleife oder if-Anweisung ‐ Gültig- und Verwendbarkeit entsprechend nur dort
Lokale Variablen des umgebenden Blocks können zugegriffen werden ‐ Müssen als final deklariert werden oder ‐ Dürfen nach der Initialisierung nicht mehr geändert werden
Erklären Sie was funktionale Interfaces sind und warum diese für Lambdas notwendig sind.
Bezeichnet Interfaces, die lediglich eine abstrakte Methode besitzen.
Es ist eine notwendige Voraussetzung um mit Lambda Ausdrücken zu arbeiten, da die eindeutige Zuordnung trotz fehlender Signatur möglich und somit kurze Ausdrücke machbar sind.
Was ist eine implizite Typumwandlung?
(VT24/25 Single Choice, Beispiele und ankreuzen)
Ein kleinerer Datentyp wird automatisch in einen größeren Datentyp umgewandelt.
int zahl = 10;
double wert = zahl;
byte → short → int → long → float → double
Explizite Typumwandlung
double x = 10.5;
int y = (int) x;
Mit welchen Schlüsselwort kann man verhindert, dass eine Funktion in einer abgeleiteten Klasse überschrieben werden kann?
Methoden nicht überschreibbar, wenn sie mit private, final oder static definiert wurden
final explizit bei Klassen
Welche Varianten von manuellen Sprüngen in Schleifen gibt es in Java?
break ;
und continue;
continue springt unmittelbar zur Schleifenbedingung, um den nächsten Durchlauf zu starten.
-> Damit können Anweisungen teilweise ausgeblendet werden.
break;
break verlässt unmittelbar jede Schleife, das Programm fährt mit der ersten Anweisung nach der Schleife fort
-> Sollte aber nur in Sonderfällen verwendet werden.
Nenne und beschreibe die Zugriffsmodifikaotren in Java
(VT24/25 SingleChoice, sagen welcher keiner ist)
regeln Sichtbarkeit von Membern und somit Zugriffsrechte von außen
private unsichtbar
default nur innerhalb eines Pakets sichtbar
protected nur innerhalb eines Pakets und in den Subklassen sichtbar
public: überall sichtbar
Wozu wird Vererbung in Java eingesetzt?
Vererbung wird dazu eingesetzt, dass mehrere Klassen von einer Oberklasse erben können und uns somit Eigenschaften nur einmal modelliert werden müssen.
Wiederverwendbarkeit, zentrale Fehlersuche und Korrektur
Reduzierter Programmieraufwand und Coderedundanz
Superklasse: Oberklasse
Subklasse : Unterklasse
-> Nachteile wahre Welt nicht immer hieraschich abbildbar
-> starke Kopplung
-> hohes Fehlerpotenzial
Welche sind die 4 Säulen der objektorientierten Programmierung?
(VT23/24, VT25/26)
Generalisierung -> bilden gemeinsame Schnittstellen
Vererbung ->
Kapselung
Polymorphismus -> Überladen von Methoden, gleiche Namen, andere Eigenschaften. Statisch (überladen) und Dynamisch (überschreiben)
-> bessere Abbildung der Wirklichkeit
Überladen->
Überschreiben -> Kugel spezialisiert Kreis
Welche Aussagen zur objektorientierten Programmierung gibt es?
(VT 25/26 SingleChoice, man sollte sagen welche falsch ist)
Übertragung der wahren Welt auf die virtuelle
Unterteilung des großes Problems in Teilprobleme
klare Struktur, einfache Aufteilung der Arbeit, gute Pfleg und Erweiterbarkeit, Teillösungen Wiedervwendung
Nenne und beschreibe die Arten von Schleifen in Java und ihre Unterschiede
(VT 25/26 Single Choice, VT 23/24 Theoriefrage)
Was macht sie und Aufbau
while
-> Initalisiert und schaltet fort. Führt Code aus, solange die Bedingung true ist.
while(Bedingung) {
Ausgabe;
0 - n Durchläufe
do while
-> Einmalige Ausführung, explizit.
-> führt erst den Code aus und prüft dann die Bedingung.
do{
Code;
Veränderung;
} while (Bedingung);
1- n Durchläufe
for Schleife
-> kompakt implizit
-> Durchlaufe und Zähle weiter, so lange die Bedingung nicht da ist.
-> Kombiniert den Start, Bedingung und Veränderung in einem Schleifenkopf.
for(Start; Bedingung; Veränderung) {
}
0 -> n durchläufe.
Welche Aussagen gibt es bezüglich Exceptions?
(VT25/26 Single Choice, sagen welche Aussage falsch ist)
Behandlung von Ausnahmesituation
checked und unchecked Exceptions
try Block -> Verusch
throw Anweisung -> Welche Exception
catch Block -> Behandlung
Unchecked RuntimeException, Compiler meldet das nicht.
-> Nicht so wie checked Exeptions.
Werden häufig nicht wie checkedExceptions behandelt.
Finally immer am Ende der Methode
Checked muss von Exception sein
try{
..
} catch oder throw new Exception();
} finally {
Welche Eigenschaften haben abstrakte Klassen in Java?
(VT 25/26)
Verhindert Initalisiertbarkeit
Können abstrakte und konkrete Methoden enthalten
Abstrakte Methoden haben keinen rumpf und müssen in Subklassen implemntiert werden.
abstractClass Name {
abstract void Methodenname ();
Nennen Sie zwei Vorteile von Generics
(VT25/26,
Es wird ein parametisierter Typ generiert, so kann beliebe Variabel festgelegt werden.
Generischeklasse <Typparameter T oder WrapperKlasse> listenname = new GenerischeKlasse <T oder Wrapperklasse >();
Übergebene Wert sind garantiert vom richtigen Typ
Flexibilität im Umgang mit verschiedenen Datentypen.
Keine Casts nötig
Erklären Sie den Begriff Shadowing
(VT25/26)
Shadowing liegt vor, wenn eine Variable in einem inneren Gültigkeitsbereich denselben Namen wie eine Variable im äußeren Gültigkeitsbereich besitzt. Die innere Variable verdeckt dann die äußere Variable.
Wann darf kein final benutzen werden?
(NT23/24)
Final darf nicht genutzt werden, wenn eine Methode überschreibar bleiben soll. Würde sonst das überschreiben in Unterklassen verhindern.
Was ist eine flache Kopie?
Kopieren eines Feldes mit dem Zuweisungsoperatur =, kopiert Verweis nicht den Inhalt
Tiefe Kopie:
new Operatur neuer Speicherbereich wird reserviert und elementweise kopiert.
Was ist ein String?
(NT 23/24 Single Choice)
Ein String ist ein Referenzdatentyp und wird immer groß geschrieben, er wird zum Speichern von Zeichenketten verwendet.
Klasse zur Verarbeitung von Zeichenketten.
Welcher ist der kleinste ganzzahlige primitive Datentyp in Java?
(NT 23/24)
Byte
Short
Int
Long
Nenne die 3 Traversierungsarten zu Bäumem
(NT 23/24 keine reine Theorie frage, sondern vom vorgegeben Code nennen)
PreOrder Wurzel Links Rechts
InOrder Links Knoten Rechts -> Wird bei der print() Aufgabe entweder aufsteigend oder absteigend ausgegeben.
PostOrder Links Rechts Rechts
Was sind lambdas und anonyme Klassen und wofür nutzt man sie?
(NT 23/24, VT23/24)
Lambdas können dazu verwendet werden Methoden Implementierungen in wenigen Zeien Code zu definieren.
x-> x*2
Anonyme Klassen sind Klassen ohne Klassenname.
Klassenname objektname = new Klassenname() {
Anonyme Klassen sind Klassen ohne eigenen Namen, die direkt bei der Objekterzeugung definiert werden.
Lambda-Ausdrücke ermöglichen eine kurze Implementierung der abstrakten Methode eines funktionalen Interfaces, ohne dafür eine anonyme Klasse ausschreiben zu müssen.
Beschreiben wie man Methoden in eine lokale Klasse umsetzen würde
Eine lokale Klasse in Java wird direkt innerhalb eines Methodenrumpfs, eines Konstruktors oder eines Code-Blocks deklariert. Sie ist nur innerhalb dieses umschließenden Blocks sichtbar, besitzt keinen Zugriffsmodifizierer (wie public oder private) und kann auf lokale Variablen der Methode zugreifen, sofern diese final oder effektiv final sind.
public
private
final
Erkläre was man tun muss, damit in einer Liste nicht nur double sondern alle die von Numbern erben in die Liste eingefügt werden können.
(VT 23/24)
Die Liste wird generisch gemacht und der generische Typ mit T extends Number auf Number und dessen Unterklassen beschränkt.
T extends Number
Number
Erkläfen Sie den Unterschied zwischen Filter-Streams und Mapping-Streams in Java Streams. Wann und warum würden Sie jede dieser Operationen verwenden?
(Probeklausur)
Filter Streams filtern anhand einer Bedingung die Daten aus.
.filter(x>10) behalte alle Zahlen die Größer 10 sind
Mapping Streams führen anhand einer Veränderung die Daten aus .map(x10) alle übriggebliebenen x werden * 10 gerechnet.
Was versteht man unter Terminal-Operationen in Bezug auf Java Streams? Geben Sie Beispiele für Terminal Operationen und erläutern Sie deren Zweck
Welche Vorteile bietet die Verwendung von Parallel Streams gegenüber sequenziellen Streams? Wann sollten Sie Parallel Streams in Betracht ziehen?
Probeklausur
Sequenziel
Wann ist die Verwendung einer ArrayList in Java sinnvoller als die Verwendung einer LinkedList,und warum?
ArrayList sind sinnvoller wenn wir direkt über einen Index auf das Array zugreifen müssen.
LinkedList ist sinnvoller, wenn häufig Elemente eingefügt oder entfernt werden und die entsprechende Position, Knoten bekannt sindf
Welche Vorteile bietet die Verwendung von Generics in Java im Zusammenhang mit Listen?
Typsicherheit, es können nur Elemente des Typens eingegeben werden zur Compilierzeit.
Vermeiden unnötige Cast/Typumwandlungen.
WelcheNachteile können auftreten,wenn Sie eine zu große ArrayList oder LinkedList erstellen?
ArrayList zu groß, unübersichtlichkeit um Daten aus der ArrayList zu bekommen.
Zur LinkedList, unübersichtlichkeit in über die Vererbung
Sehr große ArrayLists und LinkedLists können einen hohen Speicherverbrauch und Performanceprobleme verursachen. Bei ArrayLists kann das Vergrößern und Kopieren des internen Arrays aufwendig sein, während LinkedLists zusätzlichen Speicher für die Verknüpfungen der Knoten benötigen.
Wie können Sie sicherstellen,dass Ihre generische Liste korrekt sortiert ist,nachdem Sie Elemente hinzugefügt oder manipuliert haben?
Nach dem Hinzufügen oder Manipulieren von Elementen kann die Liste erneut sortiert werden, z. B. mit sort(). Die Elemente müssen dafür vergleichbar sein, beispielsweise durch Comparable oder einen Comparator.
sort()
Comparable
Comparator
Erklären Sie den Unterschied zwischen Klassen und Objekten in Java.
Klassen sind wie ein Bauplan der mögliche Daten und Verhalten vorgibt für ein Objekt. Beschreibt statische Struktur einer Sache
Objekte sind Instanzen einer Klasse mit konkreten Daten. Existieren nur während das Programm läuft.
Was ist Vererbung in Java und wie wird sie umgesetzt?
Die Unterklasse übernimmt Eigenschaften und Methoden von der Oberklasse oder einer Schnittstelle(Interface).
extends Oberklasse
implements Schnittstelle
Erklären Sie den Unterschied zwischen einer abstrakten Klasse und einem Interface.
Eine abstrakte Klasse kann abstrakte und konkrete Methoden sowie Attribute und Konstruktoren enthalten. Eine Klasse kann nur von einer Klasse erben (extends). Ein Interface definiert hauptsächlich einen Vertrag, den eine Klasse mit implements umsetzt. Eine Klasse kann mehrere Interfaces implementieren
extends
implements
Was ist der Unterschied zwischen final, finalize und finally?
final → Variable nicht neu zuweisen / Methode nicht überschreiben / Klasse nicht vererbenfinally → Exception-Behandlung (try-catch-finally)finalize() → veraltet, Garbage Collector
try-catch-finally
Was versteht man unter dem Begriff ”Polymorphismus” in Java und wie wird er umgesetzt?
Objekte können zur Laufzeit Verhalten ändern.
Überladen von Konstruktoren
Überschreiben von Methoden dynamischer Polymorphismus
Welche Unterschiede gibt es zwischen einer checked und einer unchecked Exception?
Checked Exceptions, sind Exceptions die zur Laufzeit stattfinden und mit try catch throw finally behandelt werden können.
-> Compiler erzwingt die Behandlung
Unchecked Exceptions, sind Runtime Exeptions, die meistens nicht als Fehler erkannt werden. -> Compiler zwingt einen nicht.
Was ist die Bedeutung des Schlüsselworts ”static” in Java?
static = gehört der Klasse.nicht static = gehört dem Objekt.
static
Wie funktionieren Generics in Java und wofür werden sie verwendet?
Sind Klassen mit einer Typvariable, Typen werden bei der Deklaration einer Variable festgelt.
Übergeben Werte sind garantiert vom richtigen Typ
Was sind die Unterschiede zwischen einem Stack und einer Queue in der Java Collections Framework?
Stack läuft nach dem FIFO Prinzip, welches besagt das dass Elemente das wir hinzufügen oben hinzugefügt wird, so wie auch oben entfernt.
Eine Queue kann man sich wie eine Warteschlange vorstellen und läuft nach dem LIFO Prinzip. In dessen hinten hinzugefügt wird und vorne entfernt wird.
Erklären Sie das Konzept der Lambda-Ausdrücke und geben Sie ein Beispiel für deren Verwendung.
Vereinfachendes Konzept zur Implementierung von Funktionalität
IOperation addition = new IOperation() { public int operation(int a, int b) { return a+b; } };
-> IOperation addition = (a,b) -> a+b;
Nennen SIe die primitven Datentypen in Java
int
double
float
char
boolean
Was ist ein Garbage Collector in Java?
Der Garbage Collector ist ein Prozess, bei dem automatisch nicht mehr genutze Objekte identifiziert und freigegeben werden
Was ist der größte und kleinste Index für ein Array mit der Größe n?
Der kleinste Index ist 0 und der größte index ist n-1.
Was versteht man unter Überladen in Java?
Probkeklausur
Überladen bezieht sich auf das Definieren von mehreren Methoden mit demselben Namen und in derselben Klasse, wobei die Methoden sich in der Anzahl oder dem Typ der Parameter unterscheiden können.
Was versteht man unter linearer Rekursion?
Bei linearer Rekurion wird von jedem Aufrufer höchstens ein weiterer Rekusiver Aufruf getätigt.
Was sind abstrakte Methoden?
Eine abstrakte Methode ist eine Methode ohne implementierung. Sie muss in einer abstrakten Klasse oder in einem Interface stehen. Unterklassen müssen sie dann implementieren.
Was ist der kleinste mögliche Datentyp für Zahlen in Java und wie viele Bits ist dieser groß?
Der kleinste Datentyp für Zahlen ist Byte, der 8 Bits groß ist.
Was sind funktionale Interfaces
Sind Interfaces mit nur einer Methode.
Entweder mit Parameter oder ohne
public interface IAusgabe {
public vod drucke();
oder
public interface IOperation {
public int operation(int a, int b);
Komische Klasse mit Unterklassen schreiben
-> Generics
public class UnsereKlasse extends Listentyp<Oberklasse> {
public <T extends ErlaubteKlasse> void addUnterklasse(T toNeu) {
toNeu.methodeVonUns();
add(toNeu);
if (toNeu instanceof Unterklasse2) {
((Unterklasse2) toNeu).methodeUnterklasse2();
} else if (toNeu instanceof Unterklasse3) {
((Unterklasse3) toNeu).methodeUnterklasse3();
} else {
toNeu.methodeOberklasse();
Worauf muss bei Stacks geachtet werden? Generics
private String [] elements ; -> private T[] elements;
elements = (T[]) new Object [capacity];
Last changed12 days ago