Prog2 Theorie Flashcards

1
Q

Welche Vorteile bietet ein System zur Versionverwaltung?

A

Versionverwaltungen sind dafür da um koordinierte Zusammenarbeit in Projekten zu vereinfachen. Sie ermöglichen es Änderungen im Code nachzuverfolgen, jederzeit auf ältere Codeversionen zurückgreifen zu können und das teilen von Dateien mit anderen Entwicklern.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was ist ein Git Repository?

A

Ein Git Repo speichert alle Dateien und Verzeichnisse eines Projektess sowie deren Historie. Es gibt ein lokales und ein remote (auf dem Server z.B. GitHub, GitLab etc.)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Welche Komponenten sind an einem Git Repository beteiligt?

A
  • Working Copy (Arbeitsverzeichnis) Ist der aktuelle Zustand des Projektes den man sieht und bearbeitet
  • Staging Area zwischengehaltener Bereich wo Änderungen gesammelt werden bevor man sie comittet
  • Repository entählt alle Metadaten und die gesamte Historie
  • Remote Repo Eine Kopie des Projekts die auf einem Server (GitHub, GitLab etc.) gespeichert ist und auf die andere zugreifen können
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wie interagieren die Komponenten in einem Git Repository untereinander?

A

Über Commands in der Console oder das GUI ?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Beschreiben Sie wichtige Git Kommandos und deren Auswirkung

A

git add - Verschiebt Änderungen in die Staging Area
git commit - verschiebt Datei in das lokale Repo
git log - zeigt die Historie an
git clone - erstellt eine kopie des repos
git push - pusht Dateien auf das remote Repo
git pull - pullt eine Kopie des remote repos auf das lokale (merge)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist der Unterschied zwischen Git und GitLab?

A

Git ist ein verteiltes Versionskontrollsystem das lokal auf dem Computer läuft und Änderungen an Dateien verfolgt.

GitLab ist eine webbasierte Plattform die git Repository-Hosting und viele zusätzliche Funktionen zur Teamzusammenarbeit und Automatisierung bietet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was versteht man unter einem Merge und wann wird eine Merge benötigt?

A

Bei einem Merge werden Änderungen von einem Repo in das andere Repo integriert, womit das eine repo den Stand bekommt vom anderen repo.
Es ist üblich bevor man mit seiner täglichen Arbeit anfängt, zu fetchen und einen merge vom überliegenden branch durchzuführen, damit das eigene repo auf dem aktuellsten stand ist (änderungen vom team die in der zwischenzeit gepusht worden)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was ist eine Exception?

A

Eine Ausnahme (Ereignis), die während der Ausführung des Programms auftritt und den normalen Programmablauf unterbricht

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wozu verwendet man Try/Catch Blöcke?

A

Zum reagieren auf Ausnahmesituationen. Sollte im überwachten Code (try) ein Fehler auftreten, fängt der catch Block den Fehler ab und gibt informationen darüber

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was ist der Unterschied zwischen geprüften und ungeprüften Ausnahmen (Checked vs Unchecked Exceptions)

A

Checked Exceptions werden vom Compiler noch vor kompilieren des Programms gemeldet und als fehler markiet das diese behandelt werden müssen

Unchecked Exception verhindern nicht das das programm kompiliert

!!!WICHTIG!!!
In beiden Fällen stürtzt das Programm ab wenn eine Exception nicht behandelt wird! Egal ob Checked oder Unchecked!

Checked Exceptions sollten verwendet werden, wenn der Aufrufer der Methode wahrscheinlich in der Lage ist, sich von der Ausnahme zu erholen oder sie sinnvoll zu behandeln.

Unchecked Exceptions sollten verwendet werden, wenn die Ausnahme auf einen Programmierfehler hinweist oder wenn es unwahrscheinlich ist, dass der Aufrufer sie sinnvoll behandeln kann.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Was ist ein Finally Block und wozu wird er typischerweise verwendet?

A

Ein Finally Block kann optional hinter catch block folgen und wird nach den catch blöcken IMMER ausgeführt. Er wird typischerweise für die freigabe von Ressourcen verwendet

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was sind die Vor- und Nachteile von zentralisiertem und lokalisiertem Exception Handling?

A

Zentralisiert: Exception Handling weit “oben” in der Anwendungslogik mit einer Reihe von catch Blöcken die alle möglichen Fehlerzustände abfangen

Vorteil: Exception Handling übersichtlich an einer Stelle zusammengefasst
Nachteil: Recovery erschwert wenn die Exception weit vertieft in einem Unterzweig ist

Lokalisiertes Eception Handling nahe an der Stelle in der Anwendungslogik, an der der Fehelr auftritt.

Vorteil: Erleichter das Recovery direkt in der Verarbeitungslogik
Nachteil: Kann Fehlerbehandlund umständlicher machen, da Error Handling über den Code verteilt ist

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Was versteht man unter defensiver Programmierung?

A

Defensive Progammierung ist ein Ansatz um Programme möglichst robust und zuverlässig zu machen. Dabei wird versucht auf unerwartete und unglütige Eingaben oder Zustände in vorhinein passend zu reagieren um Robusheit zu gewährleisten

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Was ist ein Breakpoint?

A

Ein Breakpoint ist ein Punkt den man im Programm an eine gewisse Stellt setzt an der man die Ausführung des Programms anhalten möchte um es Schritt für Schritt von diesem Punkt aus weiter auszuführen (Debugging)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Erläutern Sie die Softwareteststufen “Komponententest”, “Integrationstest” und “Systemtest” und Grenzen die Begriffe gegeneinander ab.

A

Komponententest - Definition:
Der Komponententest, auch als Unit Test bekannt, ist die niedrigste Teststufe und konzentriert sich auf das Testen einzelner Softwarekomponenten oder Module. Eine Komponente ist die kleinste testbare Einheit in der Software, z. B. eine einzelne Funktion oder Methode.

Integrationstest - Definition:
Der Integrationstest folgt auf den Komponententest und befasst sich mit dem Zusammenspiel mehrerer Komponenten. Hierbei wird überprüft, ob die Module korrekt zusammenarbeiten, insbesondere an den Schnittstellen zwischen den Modulen.

Systemtest - Definition:
Der Systemtest ist die umfassendste Teststufe und prüft das gesamte integrierte System als Ganzes. Er wird durchgeführt, nachdem alle Module integriert und die Integrationstests abgeschlossen sind.

Abgrenzung:

Komponententest vs. Integrationstest:
Komponententest: Testet einzelne Module isoliert.
Integrationstest: Testet das Zusammenspiel mehrerer Module.

Integrationstest vs. Systemtest:
Integrationstest: Fokussiert auf die Interaktion und Schnittstellen zwischen Modulen.
Systemtest: Fokussiert auf das gesamte integrierte System und prüft die Erfüllung der gesamten Systemanforderungen.

Komponententest vs. Systemtest:
Komponententest: Kleinste Testeinheit, überprüft einzelne Module auf ihre korrekte Funktion.
Systemtest: Umfassendste Teststufe, überprüft das gesamte System auf Erfüllung aller Anforderungen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Was versteht man unter Regressionstests?

A

Die Test die man durchführt, nachdem man an einer Stelle des Programms eine Änderung gemacht hat, nennt man Regressionstests. Sie dienen dazu Fehler durch die Änderung an unvorhergesehenen Stellen zu entdecken.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Erläutern Sie das Grundprinzip von Unit Testing.

A

Das Grundprinzip von Unit Testing (Komponententest) besteht darin, die kleinsten testbaren Einheiten einer Software, die sogenannten “Units” oder “Komponenten”, isoliert zu testen, um sicherzustellen, dass sie korrekt funktionieren. Diese Einheiten sind typischerweise einzelne Funktionen, Methoden oder Klassen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Erläutern Sie den Unterschied und die Verwendungsweise der Annotationen @BeforeEach und @BeforeAll.

A

BeforeEach:
Wird vor jedem Test ausgeführt, verwendet zur Vorbereitung des Ausgangszustands (z. B. Instanzen erstellen, Felder initialisieren)

BeforeAll:
Wird einmalig vor allen Tests durchgeführt, verwendet für aufwändige Initialisierungen (z. B. Herstellen von Datenbankverbindungen)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Was versteht man unter testgetriebener Entwicklung (TDD)?

A

TDD ist eine Methode der agilen Softwareentwicklung. Hierbei werden Tests konsequent VOR der zu testenden Komponente geschrieben

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Welches Interface beschreibt eine Collection, die keine Duplikat erlaubt?

A

Set

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Welches Interface beschreibt eine geordnete Collection, die Duplikate enthalten kann?

A

List

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Welches Interface beschreibt eine Zuordnung von Schlüsselwörtern (Key) zu Werten (Value)?

A

Map

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Beschreiben Sie drei verschiedene Wege, um über die Elemente einer List zu iterieren.

A

for-schleife
for-each-schleife
iterator

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Beschreiben Sie wichtige Methoden aus dem Interface Queue und erläutern Sie das FIFO-Prinzip.

A

add: fügt element am ende der schlange hinzu
offer: fügt element am ende der schlang hinzu, gib jedoch false zurück wenn es wegen Kapazitätsbeschränkung nicht hinzugefügt werden kann
remove: entfernt das element am kopf der schlange
element: ruft das element am kopf der schlange auf

FIFO-First In First Out
Das zuerst eingefügte Element ist auch das zuerst entfernte Element.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Nenne jeweils alle Collections der Interface: Set, List und Map

A

Set:
HashSet
LinkedHashSet
TreeSet

List:
ArrayList
LinkedList

Map:
HashMap
LinkedHashMap
TreeMap

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Erläutern Sie Vorteile durch die Verwendung von Generics.

A

Typensicherheit: Verhindert ClassCastException zur Laufzeit durch Typüberprüfung zur Kompilierzeit.

Erhöhung der Code-Wiederverwendbarkeit: Ermöglicht die Erstellung allgemeiner Klassen und Methoden für verschiedene Datentypen.

Konsistenz und Lesbarkeit: Klare Typangaben erleichtern das Verständnis und die Wartung des Codes.

Vermeidung von Duplikation: Reduziert Code-Duplikation durch generische Implementierungen.

Kompilierzeitüberprüfungen: Fehler werden frühzeitig beim Kompilieren erkannt, nicht erst zur Laufzeit.

Kompatibilität mit älterem Code: Abwärtskompatibilität mit nicht-generischen APIs durch Type-Erasure.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Was versteht man unter “Bounded Type Parameters”?

A

“Bounded Type Parameters” sind eine Erweiterung des Generics-Konzepts in Java, die es ermöglichen, die Typen, die als Parameter verwendet werden können, einzuschränken.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Warum existieren “Raw Types” und warum sollte man sie in neuem Code nicht verwenden?

A

Um sicherzustellen, dass älterer Code, der vor Generics geschrieben wurde, weiterhin funktioniert, wurden “Raw Types” beibehalten.

Typunsicherheit: “Raw Types” umgehen die Typüberprüfung zur Kompilierzeit, was das Risiko von ClassCastException zur Laufzeit erhöht.

Fehlende Dokumentation und Klarheit: Wenn der Typ nicht angegeben ist, ist es für andere Entwickler (oder für zukünftiges Selbst) schwerer zu verstehen, welche Art von Objekten in einer Collection gespeichert werden sollen oder welche Typen von Methoden akzeptiert werden.

Verlust der Vorteile von Generics: Generics bieten zahlreiche Vorteile wie Typensicherheit, Wiederverwendbarkeit und Flexibilität. Die Verwendung von “Raw Types” bedeutet, dass diese Vorteile nicht genutzt werden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Was versteht man unter “Type Erasure”?

A

Der Vorgang bei dem der Compiler sämtliche Typparameter durch die konkreten Datentypen oder Typschranken ersetzt (Type Erasure)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Erläutern Sie das Grundprinzip der Ein- und Ausgabe von Daten in Java.

A

Öffnen und Schließen von Streams: Streams sollten ordnungsgemäß geöffnet (open) und nach Gebrauch geschlossen (close) werden, vorzugsweise mit der try-with-resources-Anweisung, um sicherzustellen, dass Ressourcen ordnungsgemäß freigegeben werden.

Lesen und Schreiben von Daten: Daten werden entweder als Bytes oder Zeichen gelesen und geschrieben, abhängig von der Art des Streams und der Art der zu verarbeitenden Daten.

Behandlung von Ausnahmen: Das Java-Standardmuster zur Behandlung von E/A besteht darin, IOExceptions zu behandeln, die auftreten können, wenn Probleme beim Lesen oder Schreiben von Daten auftreten.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Was versteht man unter Character Encoding?

A

Über Character Encoding wird jedem Zeichen ein Zahlenwert zugeordnet und dieser gespeichert. Da Computer nur mit binären Daten (0s und 1s) arbeiten können, müssen Zeichen durch Zahlenwerte repräsentiert werden, die dann in Binärform gespeichert werden können.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

Wofür steht U+1F602? Was hat es damit auf sich?

A

U+1F602 repräsentiert ein Emoji, das durch den Unicode-Standard standardisiert wurde und in vielen digitalen Umgebungen verwendet wird. Es ist das “Lachende Gesicht mit Tränen der Freude”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

Was ist der wesentliche Unterschied zwischen den Klassen FileInputStream und FileReader? In welchem Fall verwenden Sie welche Klasse?

A

FileInputStream:
FileInputStream ist eine Klasse in Java, die dazu dient, binäre Daten (Bytes) aus einer Datei zu lesen.
Verwendung:
Verwendet, wenn man binäre Daten wie Bilder, Audiodateien, Videodateien oder andere Dateien liest, die nicht reinen Text darstellen.

FileReader:
FileReader ist eine Klasse in Java, die dazu dient, Zeichendaten (Characters) aus einer Datei zu lesen.
Verwendung:
Verwendet, wenn man Textdaten aus einer Datei lesen möchte, z.B. für Textdateien oder Dateien, die Zeichen-basierte Informationen enthalten.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

Was ist der Vorteil von Buffered Streams?

A

“Ungepuffert”
Jede Lese- und Schreiboperation führt zu einem (teuren) Zugriff (bspw. auf den Datenträger, das Netzwerk, etc.) Dadurch wird der Zugriff auf Streams ineffizient

Mit Buffered Streams:
Daten werden in einem (schnellen) Pufferspeicher innerhalb der JVM zwischengespeichert

(Teure) Lese- und Schreiboperationen durch das Betriebssystem erfolgen nur dann, wenn der Puffer gefüllt oder geleert (Flush) werden muss

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

Was versteht man unter einem try-with-resources Statement und welche Vorteile bietet es?

A

Ein try-with-resources Statement ist eine Java-Sprachkonstruktion, die eingeführt wurde, um sicherzustellen, dass Ressourcen wie Dateien, Datenbankverbindungen oder Netzwerkverbindungen ordnungsgemäß geschlossen werden, nachdem sie nicht mehr benötigt werden.

Vorteile:
Automatisches Schließen von Ressourcen

Vermeidung von Ressourcenlecks

Verbesserte Lesbarkeit und Klarheit des Codes

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

Was versteht man unter einer MVC-Architektur?

A

Die MVC-Architektur (Model-View-Controller) ist ein Designmuster, das zur Strukturierung von Softwareanwendungen verwendet wird, insbesondere in der Entwicklung von webbasierten Anwendungen, Desktopanwendungen und anderen Softwaresystemen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

Wofür ist die Klasse JFrame verantwortlich?

A

JFrame dient dazu, ein Fenster auf dem Bildschirm zu erstellen und zu verwalten, das als Container für andere GUI-Komponenten wie Buttons, Labels, Textfelder usw. dienen kann.
Es stellt das Hauptfenster einer Anwendung dar, in dem die Benutzeroberfläche angezeigt wird.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
38
Q

Was ist der Unterschied zwischen einem JFrame und einem JPanel?

A

JFrame repräsentiert das Hauptfenster einer Swing-Anwendung.

JPanel ist eine leichtgewichtige Containerkomponente, die dazu dient, andere Swing-Komponenten zu gruppieren und anzuordnen.
Es kann als Container für andere Komponenten wie Buttons, Textfelder, Labels usw. dienen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
39
Q

Welches Oberflächenelement würden Sie für einen Lautstärkeregler verwenden und warum?

A

JSlider
Ein JSlider stellt eine Schiebereglerkomponente dar, die visuell intuitiv ist und es dem Benutzer ermöglicht, die Lautstärke durch Ziehen des Reglers einzustellen.
Der Benutzer kann den Regler per Maus oder Tastatur bedienen, indem er ihn verschiebt oder den Wert direkt eingibt.

Gründe:
Ein JSlider bietet eine präzise Steuerung über den Wertebereich (z.B. von 0 bis 100), was ideal ist, um die Lautstärke auf einem kontinuierlichen Spektrum einzustellen.

Der JSlider zeigt eine visuelle Rückmeldung über den aktuellen Lautstärkewert durch die Position des Reglers auf der Leiste und möglicherweise auch durch Begleittext oder -grafiken.

JSlider kann nahtlos in andere Swing-Komponenten und Layouts integriert werden, z.B. in Fenster (JFrame), Panels (JPanel) oder Dialoge (JDialog).

39
Q

Wozu verwendet man Layoutmanager?

A

Layout-Manager in der Java Swing-Bibliothek dienen dazu, die Anordnung und Positionierung von GUI-Komponenten in einem Container, wie z.B. einem JFrame oder JPanel, zu verwalten.

39
Q

Was ist der Unterschied zwischen einem BorderLayout und einem FlowLayout?

A

BorderLayout
BorderLayout organisiert die Komponenten entlang der Ränder eines Containers und in dessen Zentrum.
Es gibt fünf Bereiche, in die Komponenten platziert werden können: Norden (BorderLayout.NORTH), Süden (BorderLayout.SOUTH), Osten (BorderLayout.EAST), Westen (BorderLayout.WEST) und Zentrum (BorderLayout.CENTER).

FlowLayout
FlowLayout ordnet die Komponenten nacheinander in der Reihenfolge an, in der sie hinzugefügt wurden, beginnend von der linken Seite des Containers.
Wenn der verfügbare Platz für eine Zeile nicht ausreicht, wird eine neue Zeile gestartet (ähnlich wie Text in einem Absatz).

40
Q

Welchen Event Handler muss man implementieren, um Veränderungen in einem Textfeld zu registrieren?

A

Um Veränderungen in einem Textfeld (JTextField) zu registrieren und darauf zu reagieren, muss man den DocumentListener implementieren.

40
Q

Was ist eine Listener-Klasse?

A

Eine Listener-Klasse ist eine spezielle Klasse in der Programmierung, die entweder ein Interface implementiert oder von einer Adapterklasse erbt, um auf Ereignisse oder Benutzeraktionen zu reagieren, die in einer Softwareanwendung auftreten können.

40
Q

Was versteht man unter Event Handling?

A

Event Handling bezieht sich auf die Verarbeitung von Ereignissen oder Benutzeraktionen in einer grafischen Benutzeroberfläche (GUI) oder in anderen Softwareanwendungen. Ereignisse können von Benutzerinteraktionen wie Mausklicks, Tastatureingaben, Bewegungen, Fensterereignissen usw. ausgelöst werden. Das Event Handling ermöglicht es der Anwendung, auf diese Ereignisse zu reagieren und entsprechende Aktionen auszuführen.

41
Q

Was ist der Unterschied zwischen inneren und anonymen Klassen?

A

Innere Klassen (Inner Classes)
Eine innere Klasse ist eine Klasse, die innerhalb einer anderen Klasse definiert ist. Es gibt verschiedene Arten von inneren Klassen.

Anonyme Klassen (Anonymous Classes)
Eine anonyme Klasse ist eine spezielle Art einer inneren Klasse, die ohne einen expliziten Klassennamen definiert wird.
Sie wird direkt dort erstellt, wo sie benötigt wird, normalerweise als Argument einer Methode oder eines Konstruktors, um ein bestimmtes Interface zu implementieren oder eine Klasse zu erweitern.

41
Q

Wozu verwendet man Lambda Ausdrücke?

A

Lambda-Ausdrücke sind eine Funktion von Java, die mit der Einführung von Java 8 eingeführt wurde und eine kompakte Möglichkeit bietet, Funktionen als Parameter zu übergeben

42
Q

Was ist ein Functional Interface?

A

Ein Functional Interface (funktionales Interface) ist ein spezielles Interface in Java, das genau eine abstrakte Methode definiert.

43
Q

Was ist der Unterschied zwischen einem modalen und einem nicht-modalen Dialog?

A

Modaler Dialog:
Ein modaler Dialog blockiert die Interaktion mit anderen Fenstern oder Dialogen in derselben Anwendung, solange er geöffnet ist.

Nicht-modalen Dialog:
Ein nicht-modaler Dialog erlaubt es dem Benutzer, mit anderen Teilen der Anwendung zu interagieren, auch wenn der Dialog geöffnet ist.

44
Q

Was ist das Java Properties Konzept und was ist der Haupteinsatzzweck?

A

Das Java Properties Konzept bezieht sich auf die Verwendung von Schlüssel-Wert-Paaren zur Konfiguration und Speicherung von Informationen in Java-Anwendungen. Es basiert auf der java.util.Properties-Klasse, die eine einfache und effiziente Möglichkeit bietet, Einstellungen, Konfigurationen und andere Daten zu speichern und zu laden.

45
Q

In welchem Format werden Java Properties Dateien typischerweise gespeichert?

A

Java Properties Dateien werden typischerweise im sogenannten “Properties File” Format gespeichert. Dieses Format ist einfach strukturiert und besteht aus Schlüssel-Wert-Paaren, die durch ein Gleichheitszeichen (=) oder einen Doppelpunkt (:) getrennt sind.

46
Q

Wie werden Daten aus einer Properties Datei in Java gelesen?

A

Mit einem FileReader

47
Q

Wie werden Daten in eine Properties Datei in Java geschrieben?

A

Properties Objekt erstellen
setProperty() Methode verwenden
Properties in einem File speichen mit der store() Methode

48
Q

Wie wird ein einzelner Property-Wert abgerufen?

A

Um einen einzelnen Property-Wert aus einer geladenen Properties-Instanz in Java abzurufen, verwendet man die Methode getProperty(String key).

49
Q

Wie wird ein einzelner Property-Wert gesetzt?

A

setProperty(String key, String value)

50
Q

Was sind „Nested Properties“ und wozu werden sie verwendet?

A

“Nested Properties” (verschachtelte Eigenschaften) beziehen sich auf die Verwendung von Properties-Dateien in Java, bei denen die Werte strukturiert oder hierarchisch organisiert sind. Das bedeutet, dass Schlüssel und Werte in der Properties-Datei so angeordnet sind, dass sie verschachtelt oder eingebettet sind, ähnlich wie bei der Struktur von JSON- oder XML-Dokumenten.

51
Q

Was ist ein Design Pattern?

A

Ein Design Pattern (Entwurfsmuster) ist eine bewährte Lösung für häufig auftretende Probleme beim Entwurf von Software

52
Q

Was enthält die Beschreibung eines Design Pattern?

A

Name
Problem
Motivation
Anwendbarkeit
Lösung
Struktur
Konsequenzen

53
Q

Was ist ein Anti-Pattern? Erklären Sie Anti-Pattern am Beispiel des “God Object”.

A

Ein Anti-Pattern ist das Gegenteil eines Design Patterns. Es beschreibt eine schlechte oder suboptimale Lösung für ein wiederkehrendes Problem in der Softwareentwicklung. Anti-Patterns sind Designentscheidungen oder Architekturansätze, die negative Auswirkungen auf die Softwarequalität haben können.

God Object
Das “God Object” ist ein bekanntes Anti-Pattern, das auftritt, wenn eine Klasse in einem System zu viele Verantwortlichkeiten oder Funktionen übernimmt. Hier sind einige Merkmale und Auswirkungen eines “God Objects”:

Übermäßige Verantwortlichkeiten
Schlechte Abstraktion

Schlechte Wartbarkeit und Erweiterbarkeit

Hohe Kopplung und geringe Kohäsion

54
Q

Was versteht man unter dem Open-Closed-Prinzip?

A

Das Open-Closed-Prinzip ist ein grundlegendes Prinzip der objektorientierten Programmierung.
Es besagt, dass Softwareentitäten (Klassen, Module, Funktionen, etc.) offen für Erweiterungen (Open for Extension) sein sollten, aber geschlossen für Modifikationen (Closed for Modification).

55
Q

Warum gibt es nur drei Kategorien an Design Patterns, obwohl es “Gang of Four” heißt?

A

Gang of Four bezieht sich auf die 4 Autoren des Buchs Design Patterns: Elements of Reusable Object Oriented Software und nicht auf die 3 Hauptkategorien der Design Patterns

55
Q

Was versteht man unter dem Single-Responsibility-Prinzip?

A

Das Single-Responsibility-Prinzip (SRP) ist ein Grundsatz aus der objektorientierten Softwareentwicklung, der besagt, dass eine Klasse nur eine einzige Verantwortung haben sollte.

56
Q

Nenne die 3 Hauptkategorien der Design Patterns

A

Erzeugungsmuster
Strukturmuster
Verhaltensmuster

57
Q

Lesen Sie sich in das Adapter Pattern ein und erläutern Sie die Funktionsweise!

A

Das Adapter Pattern ermöglicht die Anpassung der Schnittstelle einer Klasse an eine andere Schnittstelle, die der Client erwartet. Ein Adapter fungiert als Vermittler und übersetzt Aufrufe von der Target-Schnittstelle auf Methodenaufrufe des Adaptees. Dadurch können Klassen mit unterschiedlichen Schnittstellen zusammenarbeiten, ohne den vorhandenen Code zu ändern. Dies fördert Wiederverwendbarkeit, Entkopplung und Erweiterbarkeit in der Softwareentwicklung.

58
Q

Wofür stehen i18n und l10n und was hat es damit auf sich?

A

Die Abkürzungen “i18n” und “l10n” stehen für Internationalization und Localization.

Internationalisierung bezieht sich auf das Design und die Entwicklung von Softwareanwendungen, die leicht an verschiedene Sprachen und regionale Unterschiede angepasst werden können, ohne den Kerncode zu ändern.

Lokalisierung bezieht sich auf den Prozess, eine internationalisierte Anwendung für spezifische Sprachen und Kulturen anzupassen, indem lokal relevante Inhalte, Formate und Einstellungen integriert werden.

i18n (Internationalization): Design und Entwicklung von Software für globale Nutzung, unabhängig von Sprache und Region.
l10n (Localization): Anpassung einer internationalisierten Software für spezifische Sprachen und kulturelle Anforderungen, um die Benutzererfahrung zu verbessern.

59
Q

Was ist ein Locale?

A

Ein Locale ist ein Objekt in der Softwareentwicklung, das eine bestimmte kulturelle oder geografische Region repräsentiert. Es enthält Informationen über Sprache, Land und andere kulturelle Unterschiede, die benötigt werden, um eine Softwareanwendung internationalisiert und lokalisiert zu gestalten.

60
Q

Was ist ein Resource Bundle und wozu wird es verwendet?

A

Ein Resource Bundle ist ein Mechanismus in der Softwareentwicklung, der verwendet wird, um lokalisierte Ressourcen wie Texte, Bilder, Konfigurationsdaten oder andere Artefakte zu verwalten, die je nach Sprache oder Region variieren können. Resource Bundles werden typischerweise in internationalisierten Anwendungen eingesetzt, um die Lokalisierung (Localization, l10n) zu unterstützen.

61
Q

Was sind die Vorteile der Date/Time API gegenüber den älteren Calendar/DateKlassen?

A

Verbesserte API-Design und Benutzerfreundlichkeit

Unveränderlichkeit (Immutability)

Bessere Behandlung von Zeitzonen (Time Zones)

Klar definierte Klassen für verschiedene Anwendungen

Verbesserte Repräsentation von Intervallen und Perioden

Interoperabilität mit anderen APIs

Verbesserte Fehlerbehandlung

62
Q

Was versteht man unter dem “Year 2038 problem”?

A

Das “Year 2038 problem” bezieht sich auf eine potenzielle Zeitproblematik, die in Computersystemen auftreten könnte, die das Unix-Zeitformat verwenden. Dieses Format berechnet die Zeit als die Anzahl der Sekunden seit dem 1. Januar 1970 und speichert diese Information oft als eine 32-Bit-Ganzzahl.

63
Q

Was ist eine Exception

A

Ein Ereignis, dass den normalen Programmablauf unterbricht

64
Q

Für was wird ein finally block typischerweise verwendet

A

zur freigabe von ressourcen

65
Q

Welche der Aussagen ist richtig für Checked Exceptions
A:Sie werden zur Laufzeit von der JVM geprüft
B:Müssen mittels try-catch oder mit throws behandelt werden
C:Sie können ohne Behandlung ignoriert werden

A

B

66
Q

Von welcher Klasse müssen Unchecked Exceptions erben ?

A

Runtime Exception

67
Q

Wofür wird try-with-ressources in Java verwendet

A

Zur automatischen Freigabe von Ressourcen

68
Q

Welches Konzept wird im Java Collections Framework verwendet um Typsicherheit zu gewährleisten ?

A

Generics

69
Q

Was ist der Hauptvorteil von Java Generics

A

Type Safety zur Compile-Zeit

70
Q

Welches der folgenden Probleme wird durch die Verwendung von Generics vermieden.

A: Langsame Programmausführung
B:Übermaessige Nutzung von Ressourcen
C:Laufzeitfehler durch falsches Typ-Casting

A

C

71
Q

Was bewirkt der Einsatz des Diamond Operators <> in Java

A

Er leitet den Datentyp automatisch ab und vereinfacht die Syntax

72
Q

Welcher Prozess beschreibt das Entfernen von generischen Typinformationen durch den Java Compiler um Kompatibilität mit älterem Code sicherzustellen ?

A

Type Erasure

73
Q

Was ist der Befehl um ein neues Git Repo anzulegen?

A

git init

74
Q

Welche der folgenden Optionen sind Vorteile von Versionsmanagement-Systemen?

A:Nachverfolgung von Änderungen über die Zeit
B:Unbegrenzter Speicherplatz für Dateien
C:Automatische Fehlerkorrektur im Code

A

A

75
Q

Was beschreibt die Staging Area in Git

A

Ein Bereich für Änderungen die im nächsten Commit gespeichert werden

76
Q

Wie lautet der Befehl um den Status des aktuellen Repos zu überprüfen

A

git status

77
Q

Wofür steht der Befehl git clone

A

Zum kopieren eines Remote Repos auf den lokalen Computer

78
Q

Wie lautet der Befehl um Änderungen an eine Remote Repo zu übertragen?

A

git push

79
Q

Was ist der Hauptzweck von Java Streams

A

Daten zwischen einer Quelle und einem Ziel zu übertragen

80
Q

Welche Java Klasse wird verwendet um Byte-Daten aus einer Datei zu lesen?

A

FileInputStream

81
Q

Nennen Sie den Namen einer Methode die verwendet wird um einen Stream in Java zu schließen

A

close()

82
Q

Was beschreibt das Konzept des Character Encoding

A

Die Zuweisung eines numerischen Werts zu einem Zeichen

83
Q

Wie wird in JAva das Konzept genannt das automatisches Ressourcen-Management ermöglicht, insbesondere für Streams?

A

try-wih-ressources

84
Q

Welche der folgenden Optionen stellt eine effiziente Möglichkeit zur Fehlersuche in Code dar?

A:Debugger
B:Durchlesen des gesamten Codes
C:System.out.print()
D:Das manuelle Überprüfen jeder Variable

A

A

85
Q

Wie nennt man einen Breakpoint der die Asuführung des Programmes nru unter einer spezifischen BEdingung anhält?

A

Conditional Breakpoint

86
Q

Welcher Testtyp überprüft das Verhalten eines einzelnen Moduls oder einer Funktion?

A

Komponententest

87
Q

Welches Framework wird in Java vorrangig verwendet um automatisierte Komponententest durchzuführen ?

A

JUnit

88
Q

Wie nennt man die Methode bei der Softwaretests konsequent vor den zu testenden Komponenten erstellt werden?

A

TDD

89
Q

Welche JUnit Annotation markiert eine Methode als Test-Methode?

A

@Test

90
Q

Nennen Sie eine JUnit Annotation-Methode die verwendet wird um zu überprüfen ob eine bestimmte Bedingung wahr ist

A

assertTrue