Karteikarten im Karteikarten-Set

Noch nicht gestartet (20)

Wie funktioniert die Kommunikation zwischen einem Client und einem Server?

Ein Client muss eine http-Methode in Verbindung mit einer URI übergeben, um zur gewollten Ressource und dem gewünschtem Datenformat zu gelangen.

Konkurrierende Transaktionen ohne optimistische DB-Sync (Concurrency Konflikte)

1.Aktuelle Transaktion, 2. Konkurrierende schnellere Transaktion:

- UPDATE, UPDATE: Schnelleres Update wird von langsamem Update überschrieben (Lost-Update) -> Fehlerbehandlung

- UPDATE, DELETE: Ungültige ID oder aus Update wird Create (je nach Implementierung) -> Fehlerbehandlung

- DELETE, UPDATE: Datensatz wird gelöscht, unabhängig von Änderung -> Fehlerbehandlung oder ignorieren (je nach Use Case)

- DELETE, DELETE -> Meist ignorieren

Pessimistische DB Synchronisation

Bedeutet, dass während einer DB-Transaktion eine Schreibsperre für andere Clients besteht. Der Nachteil ist, dass unklar ist, wie lange der Benutzer schreibt und sperrt.

Welche Funktionalität implementiert die Annotation @Transactional

Für Funktionen, die DB-Transaktionen darstellen. Eine mit @Transactional annotierte Funktion führt bei erfolgreichen Funktionsdurchlauf ein commit und bei geworfener Exception ein rollback aus.

Erklären Sie E-Tags.

Entity Tag, ist ein Mechanismus in HTTP, um Ressourcen zu identifizieren und ihre Versionen zu verfolgen, um Caching zu optimieren und Konflikte bei Aktualisierungen zu vermeiden.

Was ist eine bedingte GET-Request?

Eine bedingte GET-Request enthält ein E-Tag im Header, um Änderungen an der angeforderten Ressource zu bestimmen, wodurch unnötige Datenübertragung vermieden wird.

Erklären Sie den Zusammenhang von E-Tags und if-none-match bei einem GET-Request und einem wiederholten GET-Request

If-None-Match wird im Header des Request mitgesendet. Sofern die aktuelle Versionsnummer der Ressource ungleich der mitgesendet ist, kommt im Header der Response der E-Tag mit aktueller Versionsnummer und Statuscode 200 („OK“) zurück. Falls beide Versionsnummern gleich sind, kommt der Statuscode 304 (Not Modified) mit E-Tag zurück.

Wichtige Portnummern

Java: 8080

Postgres: 5432

Wie erkennt ein Spring basierter Microservice fehlerhafte PUT-Requests?

Fehlerhafte Request werden bereits im Controller abgefangen und mit einem 4xx-Statuscode zurückgegeben.

Over-Fetching

Bedeutet, dass bei einer Datenabfrage mehr Daten liefert, als der Client benötigt. Dies kann zu erhöhter Netzwerkauslastung führen, da unnötig große Datenmengen übertragen werden.

Under-Fetching

Client erhält weniger Daten als benötigt. Führt dazu, dass zusätzliche Anfragen gestellt werden müssen. Weitere Request(s) sind notwendig (Waterfall Request).

Was ist der Unterschied zwischen Listen und Mengen?

Eine Liste ist eine Datenstruktur, in der Elemente mehrfach vorkommen können und jedes Element mithilfe eines Indexes zugänglich ist.

Eine Menge (Set) ist eine Datenstruktur, in der Elemente nicht mehrfach vorkommen können. Außerdem sind die Elemente nicht indexiert.

Datenstruktur von Set: Hash-Tabelle

Erklären Sie weshalb bei einer Liste, die eine 1-N- Beziehung darstellt, diese mit @OrderColumn annotiert werden muss

In Hibernate sichert @OrderColumn die Reihenfolge von Listenelementen durch eine zusätzliche Index-Spalte (idx), die beim Speichern und Abrufen verwendet wird und automatisch hochgezählt wird.

Was sind Tabellen in DB?

Strukturieren Daten in einem formatierten und strukturierten Format und definieren gleichzeitig die Relationen zwischen diesen Daten. 

Warum sollte man nur selten löschen?

Nur selten werden Daten gelöscht, da beispielsweise Mitarbeiter üblicherweise nicht gelöscht, sondern entlassen, und Bestellungen nicht gelöscht, sondern storniert werden.

Insolationslevel vs. Konsistenz 

Isolationslevel regelt die Unabhängigkeiten von Transaktionen

Konsistenz stellt sicherstellt, dass die Daten immer korrekt und gültig bleiben.

"Read Uncommitted": Keine Sperren, Dirty Read möglich

"Read Committed": Schreibsperren, Lost Updates möglich

"Repeatable Read": Lese- und Schreibsperren möglich, Phantom Reads möglich.

Was ist der Unterschied zwischen einem

Ausdruck

und einer

Anweisung?

Ausdrücke

sind

Code-Fragemente

, die einen Wert

zurückgeben

, welche entweder rechts von einem Vergleichsoperator stehen oder als Bedingung in einer if-Anweisung stehen können.

(int a = ...)


Anweisungen

sind

Code-Fragemente

, die eine

Aktion

ausführen, aber keinen Wert zurückgeben. (

print(...)

)

Was bedeutet “

you build it, you run it

” im Kontext der Entwicklung?

"You build it, you run it" bedeutet, dass Entwickler für das

Erstellen, Wartung

und den

Betrieb

ihrer Software verantwortlich sind.

KISS

„Keep it simple, stupid“: Einfacher, gut strukturierter Code

YAGNI

„You ain’t gonna need it.”: Fokus auf benötigte Funktionalität