Was ist Polling in der Informatik und welche Vor- und Nachteile hat es?
Polling ist ein Verfahren, bei dem ein Prozessor oder ein Programm in regelmäßigen Abständen aktiv prüft, ob ein bestimmtes Ereignis eingetreten ist (z. B. ob ein Gerät Daten bereitstellt).
Beispiel: Eine CPU fragt regelmäßig ein Eingabegerät ab, ob neue Daten vorliegen.
Vorteile:
Einfach zu implementieren
Keine Interrupt-Steuerung nötig
Nachteile:
Ineffizient bei seltenen Ereignissen (verbraucht CPU-Zeit)
Kann zu Verzögerungen führen
Nicht geeignet für Echtzeitanwendungen
Vergleich: Polling ist das Gegenteil von Interrupts, bei denen das Gerät den Prozessor informiert, wenn es bereit ist.
Was ist ein Interrupt in der Informatik und wie funktioniert er?
Ein Interrupt (Unterbrechung) ist ein Signal, das den Prozessor dazu veranlasst, seine aktuelle Tätigkeit zu unterbrechen, um eine wichtige Aufgabe sofort zu bearbeiten – z. B. das Eintreffen von Daten.
Funktionsweise:
Gerät sendet Interrupt-Signal an die CPU
CPU unterbricht aktuellen Prozess (speichert Zustand)
Führt Interrupt-Service-Routine (ISR) aus
Danach Rückkehr zum ursprünglichen Prozess
Effizient: CPU wird nur bei Bedarf unterbrochen
Schnelle Reaktion auf Ereignisse
Ressourcen schonender als Polling
Komplexere Programmierung
Mögliches Risiko von Race Conditions oder Prioritätsproblemen
Vergleich: Im Gegensatz zum Polling reagiert die CPU beim Interrupt ereignisgesteuert, nicht durch ständiges Abfragen.
Was ist ein Embedded System?
Ein Embedded System (eingebettetes System) ist ein spezieller Computer, der in ein größeres technisches System integriert ist und dort spezifische Aufgaben übernimmt.
Abgrenzung: Im Gegensatz zu PCs sind Embedded Systems nicht allgemein programmierbar – sie erledigen meist nur eine Aufgabe.
Was ist ein RTOS und wie unterscheidet es sich von einem klassischen Betriebssystem?
Ein RTOS (Real-Time Operating System) ist ein Betriebssystem, das speziell für echtzeitkritische Anwendungen entwickelt wurde. Es garantiert, dass bestimmte Aufgaben innerhalb definierter Zeitgrenzen ausgeführt werden.
Merkmale:
Deterministisches Verhalten (vorhersagbare Reaktionszeiten)
Prioritätsbasierte Tasksteuerung
Unterstützung für Multitasking & Interprozesskommunikation (z. B. Semaphoren, Queues)
Minimale Latenzzeiten
Ressourcenoptimiert (speziell für Embedded Systems)
Beispiele für RTOS: FreeRTOS, VxWorks, Zephyr, µC/OS, QNX
Unterschied zum normalen OS (z. B. Windows, Linux):
RTOS: Reaktionszeit ist kritisch – z. B. in Medizintechnik oder Automobilen
Klassisches OS: Optimiert für Durchsatz und Benutzerfreundlichkeit – z. B. auf PCs
=> Harte Echtzeit
Was bedeutet „noncompliant“ in der IT?
„Noncompliant“ bedeutet, dass ein
System, Prozess oder Verhalten
nicht
den geltenden Vorschriften, Gesetzen, Richtlinien oder Standards entspricht
– also regelwidrig ist.
Was bedeutet „compliant“ in der IT?
„Compliant“ bedeutet, dass
ein System, Prozess oder Verhalten
den geltenden Vorschriften, Gesetzen, Richtlinien und Standards entspricht
(z. B. DSGVO, ISO 27001, Unternehmensrichtlinien).
Was ist imperative Programmierung?
Ein Programmierparadigma, bei dem der Programmierer dem Computer Schritt für Schritt sagt, wie etwas zu tun ist. Der Fokus liegt auf Anweisungen und Zustandsveränderungen.
Welche Merkmale hat die imperative Programmierung?
Befehle ändern den Zustand des Programms
Nutzung von Variablen und Zuweisungen
Kontrollstrukturen wie Schleifen und Bedingungen
Linearer Ablauf (wie ein Kochrezept)
Was ist prozedurale Programmierung?
Ein Untertyp der imperativen Programmierung, der Programme in Prozeduren/Funktionen gliedert.
Fokus liegt auf der Strukturierung des Codes in wiederverwendbare Blöcke.
Was ist deklarative Programmierung?
Ein Paradigma, bei dem der Programmierer beschreibt, was das Programm tun soll – nicht wie. Die Ausführung übernimmt das System.
Was sind Merkmale deklarativer Programmierung?
Fokus auf Zielbeschreibung statt Ablaufsteuerung
Kein oder wenig interner Zustand
Häufig in Datenbankabfragen, funktionaler Programmierung, logischer Programmierung
Unterschied imperativ vs. deklarativ?
Imperativ: beschreibt wie etwas zu tun ist
Deklarativ: beschreibt was das Ziel ist
Was bedeutet „deterministisch“ in der Informatik?
Deterministisch bedeutet, dass ein System oder Algorithmus bei gleichen Eingaben immer dasselbe Ergebnis liefert und sein Verhalten vorhersehbar ist.
Keine Zufallsfaktoren oder unvorhersehbare Zustände
Feste Ablaufreihenfolge
Gleiche Eingabe → gleiche Ausgabe
Beispiele:
Ein deterministischer Algorithmus sortiert immer gleich
Ein deterministisches Endlicher Automat (DEA) folgt immer einem klaren Pfad
Gegenteil: Nicht-deterministisch = Verhalten kann variieren, z. B. durch Zufall oder parallele Prozesse.
✅ Merksatz: Deterministisch heißt: Immer das gleiche Ergebnis bei gleichen Bedingungen.
Was ist ein Client in der IT und welche Rolle spielt er?
Ein Client ist ein Gerät oder Programm, das Dienste oder Ressourcen von einem Server anfragt und nutzt.
Wichtige Merkmale:
Fordert Leistungen vom Server an (Request)
Führt meist Benutzerinteraktionen durch (z. B. Webbrowser, E-Mail-Client)
Kann Software (Client-Software) oder Hardware sein (PC, Smartphone)
Arbeitet in Client-Server-Architekturen
Webbrowser (z. B. Chrome) fordert Webseiten vom Webserver an
E-Mail-Programm ruft Nachrichten vom Mailserver ab
Datei-Explorer auf dem PC greift auf Netzwerkdateien zu
Abgrenzung:
Client = Anfrager
Server = Anbieter von Diensten/Ressourcen
✅ Merksatz:Clients fragen an, Server liefern aus – zusammen bilden sie verteilte Systeme.
——
Ein Server kann gleichzeitig auch als Client agieren, wenn er selbst Dienste von einem anderen Server anfragt.
Beispiel:
Ein Webserver (Server für Webseiten) fragt Daten bei einer Datenbank ab (hier ist er Client der Datenbank).
In Microservices-Architekturen ist ein Service oft Server für andere Services, aber Client beim Abrufen von Daten von anderen Services.
Fazit: Die Rollen Client und Server sind kontextabhängig und können von einem System gleichzeitig oder abwechselnd übernommen werden.
Was ist ein Webserver und welche Aufgaben hat er?
✅ Webserver – Definition: Ein Webserver ist Software (oder auch ein Gerät), das HTTP-Anfragen von Clients (z. B. Browsern) entgegennimmt und passende HTTP-Antworten zurücksendet – z. B. Webseiten, Bilder, Videos.
🔧 Hauptaufgaben:
Bereitstellen statischer Inhalte (HTML, CSS, JS, Bilder)
Ausliefern dynamischer Inhalte (z. B. via PHP, Python, Node.js)
Protokollierung von Anfragen (Logging)
Verwaltung von Verbindungen (z. B. Keep-Alive, SSL/TLS)
Weiterleitung von Anfragen (Reverse Proxy)
🌐 Beispiele für Webserver-Software:
Nginx
Apache HTTP Server
Microsoft IIS
Caddy
🚀 In der Praxis: Webserver sind ein zentraler Bestandteil jeder Website und vieler Webanwendungen. In modernen Architekturen oft kombiniert mit Load Balancing, Caching und Containerisierung.
Ist ein Webserver das gleiche wie ein Backend-Server?
❌ Nein – sie sind nicht dasselbe.
✅ Webserver:
Nimmt HTTP-Anfragen von Clients (z. B. Browsern) entgegen
Gibt statische Inhalte zurück (HTML, CSS, JS, Bilder)
Oder leitet Anfragen weiter (z. B. an einen Backend-Server)
Beispiele: Nginx, Apache
✅ Backend-Server:
Führt Geschäftslogik und Datenverarbeitung aus
Arbeitet meist im Hintergrund
Generiert dynamische Inhalte (z. B. aus Datenbanken)
Beispiele: Anwendungen in Node.js, Django (Python), Spring Boot (Java)
🔄 Zusammenspiel:
Der Webserver nimmt die Anfrage entgegen
Leitet sie ggf. an den Backend-Server weiter
Dieser verarbeitet die Anfrage → sendet Antwort zurück über den Webserver
📌 Merksatz:
Webserver = Türsteher
Backend-Server = Koch in der Küche
Was ist ein Reverse Proxy und was sind seine Vorteile?
✅ Reverse Proxy Ein Server, der Anfragen von Clients entgegennimmt und sie an einen oder mehrere Backend-Server weiterleitet.
🔄 Funktionsweise: Client → Reverse Proxy → Zielserver Antwort → Reverse Proxy → Client
🛠️ Hauptvorteile:
Lastverteilung (Load Balancing)
Sicherheit (versteckt interne Server)
SSL/TLS-Terminierung (z. B. HTTPS-Handling zentral)
Caching zur Leistungsverbesserung
Zentrale Zugriffskontrolle
Was ist ein Forward Proxy und was sind seine Vorteile?
✅ Forward Proxy (Client-seitiger Proxy) Ein Server, der stellvertretend für Clients Anfragen an das Internet stellt.
🔄 Funktionsweise: Client → Forward Proxy → Internet Antwort → Forward Proxy → Client
Anonymisierung der Client-IP
Zugriffskontrolle (z. B. Internetfilter in Firmen/Schulen)
Zwischenspeicherung (Caching)
Bypassing von Geoblocking / Firewalls
Worin unterscheiden sich Webserver und Reverse Proxy?
✅ Webserver
Software oder Gerät, das HTTP-Anfragen direkt verarbeitet.
Liefert Webseiten, Bilder, Videos oder andere Inhalte direkt an den Client.
Führt ggf. serverseitige Skripte aus (PHP, Python etc.).
Beispiel: Nginx, Apache, IIS.
✅ Reverse Proxy
Nimmt HTTP-Anfragen im Auftrag von Webservern entgegen.
Leitet Anfragen an einen oder mehrere Backend-Webserver weiter.
Verbirgt interne Server vor dem Client (Sicherheitsfunktion).
Erlaubt Lastverteilung, SSL-Terminierung, Caching, zentrale Zugriffskontrolle.
🧱 Kurz gesagt:
Webserver liefert Inhalte direkt an Nutzer.
Reverse Proxy vermittelt zwischen Nutzer und Webserver(n).
Zusammenhang & Unterschiede: Webserver, Backend-Server, Reverse Proxy
📌 "Empfangshalle" – verarbeitet oder leitet weiter
Empfängt HTTP-Anfragen von Clients (Browser, API-Clients).
Kann statische Inhalte direkt liefern (HTML, CSS, Bilder).
Kann Anfragen an Backend-Server weiterleiten, wenn Inhalte dynamisch erzeugt werden müssen.
Optional: Auch als Reverse Proxy einsetzbar (z. B. Nginx).
🛠️ Typische Software: Nginx, Apache HTTPD, Caddy, IIS
Apache HTTPD
IIS
➡️ Er kann sowohl direkt antworten (z. B. mit einer HTML-Seite) als auch nur durchreichen (Reverse Proxy oder Weiterleitung an Backend).
📌 "Küche" – verarbeitet Logik & Daten
Verarbeitet Geschäftslogik, z. B. Bestellungen, Benutzeranfragen, etc.
Erzeugt dynamische Inhalte – oft mit Hilfe von Datenbanken oder APIs.
Wird meist nicht direkt vom Client angesprochen, sondern nur über den Webserver oder Reverse Proxy.
🛠️ Typische Technologien: Node.js, Django, Spring Boot, Rails, Flask, etc.
Node.js
Django
Spring Boot
Rails
Flask
➡️ Antwortet auf Anfragen vom Webserver mit JSON, HTML, etc.
📌 "Vermittler" – intelligente Weiterleitung & Schutz
Steht vor Webservern oder Backend-Servern.
Leitet Anfragen an den passenden Server weiter (z. B. Webserver 1, Webserver 2…).
Bietet Lastverteilung, SSL-Termination, Sicherheit, zentralen Zugangspunkt.
🛠️ Typische Software: Nginx, HAProxy, Traefik, Envoy
HAProxy
Traefik
Envoy
➡️ Er leitet Anfragen weiter, antwortet aber meist nicht selbst.
Client (Browser)
↓
[Reverse Proxy] ← optional
[Webserver]
[Backend-Server]
Browser ruft https://example.com/user/123 auf.
https://example.com/user/123
Reverse Proxy empfängt die Anfrage, entscheidet: → Webserver 1 zuständig.
Webserver (z. B. Nginx): Erkennt, dass /user/123 dynamisch ist → leitet an Backend-Server weiter.
/user/123
Backend-Server (z. B. Django-App): Holt User-Daten aus Datenbank, generiert HTML oder JSON.
Antwort geht zurück über Webserver → ggf. über Reverse Proxy → an den Client.
Webserver = Türsteher → entscheidet, ob er reinlässt (statisch) oder an die Küche weiterleitet (Backend).
Backend-Server = Koch → bereitet alles frisch zu (dynamische Inhalte).
Reverse Proxy = Empfang & Dispatcher → entscheidet, wer überhaupt angesprochen wird, und schützt das Haus.
Was ist der Unterschied zwischen Controller und Service in einer typischen Anwendung (z. B. Spring)?
Controller (Präsentationsschicht):
Nimmt HTTP-Anfragen entgegen
Parst Eingaben (z. B. @RequestBody, @PathVariable)
@RequestBody
@PathVariable
Ruft die entsprechende Service-Methode auf
Gibt das Ergebnis als HTTP-Antwort zurück (z. B. JSON)
🔹 Service (Geschäftslogik):
Enthält die Business-Logik
Führt Berechnungen, Validierungen, Datenverarbeitung etc. aus
Kann mehrere Repositorys oder andere Services aufrufen
Ist unabhängig von HTTP – kann auch in Tests oder anderen Anwendungen verwendet werden
🧠 Merksatz:
Controller = „Was tun wir bei einem HTTP-Request?“ Service = „Wie genau wird das gemacht?“
📦 Annotationen in Spring:
@RestController oder @Controller → Controller
@RestController
@Controller
@Service → Service-Komponente (wird automatisch als Bean verwaltet)
@Service
Typen von Echtzeitsystemen
Harte Echtzeit: Verspätung = Systemversagen (z. B. Airbag-Steuerung)
Weiche Echtzeit: Verspätung = Qualitätseinbußen (z. B. Video-Streaming)
Ziele von IT-Compliance
Datenschutz und Datensicherheit gewährleisten
Gesetzliche Vorgaben einhalten
Reputationsschutz und Kundenvertrauen
Rechtliche und finanzielle Risiken vermeiden
Nenne ein Beispiel für „compliant“ in der IT.
Ein Unternehmen verschlüsselt alle Kundendaten nach DSGVO-Anforderungen und dokumentiert den Zugriff.
Nenne ein Beispiel für „noncompliant“ in der IT.
Mitarbeiter speichern sensible Kundendaten unverschlüsselt auf privaten USB-Sticks.
Welche Folgen kann „noncompliance“ haben?
Hohe Geldstrafen,
rechtliche Konsequenzen,
Imageschäden,
Verlust von Kundenvertrauen,
Sicherheitsrisiken.
Warum ist Compliance in der IT besonders wichtig?
Weil Unternehmen sensible Daten verarbeiten, die durch Gesetze geschützt sind, und weil IT-Systeme Grundlage für Sicherheit und Geschäftsbetrieb sind.
Was ist funktionale Programmierung?
Ein Programmierparadigma, das auf mathematischen Funktionen basiert. Programme werden als Auswertung von Funktionen ohne Seiteneffekte formuliert.
Welche Merkmale kennzeichnen funktionale Programmierung?
Funktionen als „First-Class Citizens“
Keine oder wenige Seiteneffekte
Starke Nutzung von Rekursion statt Schleifen
Immutabilität (unveränderliche Daten)
Nenne Beispiele für funktionale Programmiersprachen.
Haskell, Lisp, Erlang, F#.
Was ist logische Programmierung?
Ein deklaratives Programmierparadigma, das Probleme durch Fakten und Regeln beschreibt. Programme bestehen aus logischen Aussagen, und die Lösung wird durch Schlussfolgerung (Inferenzen) berechnet.
Nenne ein Beispiel für eine logische Programmiersprache.
Prolog
Wie hängen funktionale und logische Programmierung mit deklarativer Programmierung zusammen?
Sowohl funktionale als auch logische Programmierung sind Unterformen der deklarativen Programmierung.
Sie beschreiben das Was statt das Wie.
Was ist ein verteiltes System?
Ein System aus mehreren unabhängigen Computern, die über ein Netzwerk miteinander kommunizieren und nach außen wie ein einheitliches System wirken.
Nenne typische Beispiele für verteilte Systeme.
Cloud-Services (z. B. AWS, Azure), Web-Anwendungen, Peer-to-Peer-Netzwerke, Blockchain, Microservices-Architekturen.
Was sind die Hauptziele verteilter Systeme?
Ressourcen teilen
Skalierbarkeit
Ausfallsicherheit
Transparenz für den Nutzer
Welche Arten von Transparenz gibt es in verteilten Systemen?
Zugriffstransparenz (gleicher Zugriff auf lokale und entfernte Ressourcen)
Standorttransparenz (Ort von Ressourcen spielt keine Rolle)
Replikationstransparenz (Nutzer merkt nicht, dass es Kopien gibt)
Fehlertoleranztransparenz
Was bedeutet Skalierbarkeit in verteilten Systemen?
Die Fähigkeit, die Leistung durch Hinzufügen neuer Ressourcen (z. B. Server, Knoten) zu steigern, ohne das System grundlegend zu verändern.
Was ist das CAP-Theorem?
Ein Theorem, das besagt, dass ein verteiltes System nie gleichzeitig Konsistenz (Consistency), Verfügbarkeit (Availability) und Partitionstoleranz vollständig garantieren kann.
Welche Herausforderungen treten bei verteilten Systemen häufig auf?
Netzwerkausfälle
Synchronisation und Konsistenz
Fehlertoleranz
Sicherheit
Lastverteilung
Was bedeutet Fehlertoleranz in verteilten Systemen?
Die Fähigkeit, trotz Ausfällen einzelner Komponenten korrekt weiterzuarbeiten.
Nenne Beispiele für Kommunikationsarten in verteilten Systemen.
Client-Server (z. B. Web-Requests)
Peer-to-Peer (z. B. BitTorrent)
Message Passing (z. B. RabbitMQ, Kafka)
Remote Procedure Calls (RPC)
Was unterscheidet zentrale von dezentralen Systemen?
Zentral: Ein Knoten übernimmt die Hauptaufgaben (z. B. Server-Client-Modell).
Dezentral: Aufgaben und Daten sind auf viele Knoten verteilt (z. B. Blockchain, P2P).
Was macht der Befehl mklink in Windows?
mklink
Mit mklink können symbolische Links oder Hardlinks erstellt werden. Diese verweisen auf Dateien oder Verzeichnisse, ähnlich wie Verknüpfungen, aber auf Dateisystem-Ebene.
Symbolischer Link: Verweis wie eine „echte“ Verknüpfung (kann auch auf andere Laufwerke zeigen).
Hardlink: Verweist direkt auf die gleiche Datei im Dateisystem (nur für Dateien, nicht für Verzeichnisse, und nur auf demselben Laufwerk).
Kann ein Backend-Server HTTP-Anfragen direkt entgegennehmen – und braucht man dann noch einen Webserver?
✅ Ein Backend-Server kann technisch HTTP-Anfragen direkt verarbeiten (z. B. Node.js, Django, Spring Boot).
❌ Trotzdem ist ein Webserver oft sinnvoll, weil er:
Statische Inhalte (HTML, CSS, JS, Bilder) schneller liefert
TLS/HTTPS-Termination & Sicherheitsfunktionen bereitstellt
Lastverteilung, Reverse Proxy und Caching übernimmt
Mehr Stabilität & Performance bei vielen Anfragen bietet
💡 Merksatz: Backend-Server = Koch (verarbeitet Anfragen) Webserver = Türsteher + Butler (nimmt Anfragen entgegen, leitet weiter, liefert schnelle Snacks)
Ist ein Webserver im Browser vorprogrammiert oder wie wird er bereitgestellt?
❌ Ein Webserver ist nicht im Browser enthalten.
Browser kennt nur das HTTP-Protokoll und weiß, wie Anfragen gesendet werden.
Webserver läuft auf einem Server (z. B. Nginx, Apache oder eingebauter HTTP-Server von Node.js/Django).
Webserver wird vom Anwendungsbetreiber installiert und kann Inhalte liefern oder Anfragen an das Backend weiterleiten.
Der Browser (Client) stellt nur die Anfrage, das Backend kann optional HTTP selbst bedienen.
Forward Proxy vs. Reverse Proxy
Forward Proxy: Wird vom Client genutzt, um auf das Internet zuzugreifen
Reverse Proxy: Wird vom Server genutzt, um Anfragen zu verteilen
🧠 Merksatz: 🔁 Forward Proxy schützt den Client, 🔄 Reverse Proxy schützt den Server
Ist Java prozedural?
Java ist primär eine objektorientierte Sprache, nicht prozedural – aber es unterstützt prozedurale Programmierung, besonders im kleinen Maßstab.
Objektorientiert => eher imperativ
Welche Sprachen gehören zu imperativer Programmierung – und wo werden sie jeweils eingesetzt?
Sprachen:
C, Java, Python, JavaScript
Einsatzgebiete:
Allgemeine Softwareentwicklung, Systemprogrammierung
Welche Sprachen gehören zu prozeduraler Programmierung – und wo werden sie jeweils eingesetzt?
C, Pascal, Fortran
Eingebettete Systeme, wissenschaftliches Rechnen, Legacy-Systeme
Welche Sprachen gehören zu deklarativen Programmierung – und wo werden sie jeweils eingesetzt?
SQL, HTML, Prolog, Haskell
Datenbankabfragen, Webentwicklung, KI, Funktionale Programmierung
Welche Merkmale zeichnen ein Embedded System aus?
Speziell für eine bestimmte Funktion entwickelt
Meist ressourcenbeschränkt (CPU, RAM, Energie)
Echtzeitverhalten oft erforderlich
Häufig kein klassisches Betriebssystem oder nur ein kleines (RTOS)
Hohe Zuverlässigkeit und Stabilität nötig
Eingebettet in Geräte wie Waschmaschinen, Autos, Medizintechnik, IoT-Geräte
Nenne Beispiele für den Einsatz von Embedded Systems
ABS-Steuerung im Auto
Herzschrittmacher
Smartwatches
Industrieroboter
API-Kommunikationsstile
REST → Ressourcen-orientiert, Kommunikation über HTTP (GET, POST, PUT, DELETE)
GraphQL → Abfrage-orientiert, Clients holen genau die Daten, die sie benötigen
gRPC → Prozedur-orientiert, Kommunikation über Remote Procedure Calls mit Protobuf
Ziel von ESM?
Effizientes, sicheres und einheitliches Management von IT-Systemen, um Verfügbarkeit, Performance und Sicherheit zu gewährleisten.
Wichtige Aufgaben von ESM?
Überwachung von Systemen & Netzwerken
Incident- und Problemmanagement
Change- und Configuration-Management
Automatisierung von IT-Prozessen
Reporting & Compliance
Wichtige Komponenten von ESM?
Monitoring-Tools
Ticket- & Helpdesk-Systeme
IT-Asset-Management
Service-Level-Management
Was bedeutet es, „ESM-kompatibel“ zu sein?
Ein System/Tool ist so gebaut, dass es sich nahtlos in ein ESM-Framework integrieren lässt, d. h.:
Es unterstützt Standard-Schnittstellen (z. B. REST, SOAP, SNMP).
Es kann Daten für Monitoring, Tickets oder Reporting bereitstellen.
Es erfüllt Governance-, Sicherheits- und Compliance-Anforderungen.
Es lässt sich in zentrale Dashboards und Automatisierungen einbinden
Was ist IntelliSense?
Eine Code-Vervollständigungs- und Hilfefunktion in Entwicklungsumgebungen, die während des Tippens Vorschläge, Parameterinfos und Fehlerhinweise anzeigt.
Was ist eine Blockchain?
Eine Blockchain ist eine dezentrale, digitale Datenbank, die Informationen in chronologisch verknüpften Blöcken speichert.
Daten in Blöcken gespeichert werden, die wie eine Kette (Chain) miteinander verbunden sind.
Eine Art digitales Notizbuch, das jeder einsehen kann. Darin stehen alle wichtigen Infos hintereinander, und niemand kann alte Seiten heimlich ändern.
Wie funktioniert die Verkettung der Blöcke?
Jeder Block enthält einen Hash (eine Art Fingerabdruck) des vorherigen Blocks. Dadurch können Blöcke nicht unbemerkt verändert werden.
Was macht Blockchain sicher?
Kryptografische Hashfunktionen
Dezentralität (Daten liegen nicht an einem Ort)
Konsensmechanismen (z. B. Proof of Work oder Proof of Stake)
Was ist ein Hash?
Eine mathematische Funktion, die Daten in einen eindeutigen Code (Hashwert) umwandelt. Schon kleinste Änderungen führen zu einem völlig neuen Hash.
Was ist ein Konsensmechanismus?
Ein Verfahren, mit dem sich alle Teilnehmer im Netzwerk auf den aktuellen Stand der Blockchain einigen.
Beispiele für Konsensmechanismen?
Proof of Work (PoW): Rechenleistung entscheidet.
Proof of Stake (PoS): Anteil (Stake) am System entscheidet.
Welche Vorteile hat Blockchain?
Fälschungssicherheit
Transparenz
Keine zentrale Kontrollinstanz nötig
Wo wird Blockchain eingesetzt?
Kryptowährungen (z. B. Bitcoin, Ethereum)
Supply Chain Management
Digitale Identitäten
Smart Contracts
Was ist ein Webhook?
Ein Webhook ist ein Mechanismus, bei dem eine Anwendung automatisch Daten an eine andere Anwendung sendet, sobald ein Ereignis eintritt – per HTTP-Request (meist POST).
Was sind ECMAScript Modules (ESM)?
ESM ist der offizielle JavaScript-Standard für Module, der mit import und export arbeitet, um Code wiederverwendbar und strukturiert zu machen.
import
export
Wodurch unterscheidet sich ESM von CommonJS (CJS)?
ESM: import / export, statisch analysierbar, asynchrones Laden möglich.
CJS: require() / module.exports, dynamisch, synchron geladen.
require()
module.exports
Welche Vorteile hat ESM gegenüber CommonJS?
Tree-Shaking möglich (nur benötigte Teile werden gebündelt).
Bessere Performance durch statische Analyse.
Offizieller Standard → unterstützt in Browsern ohne Transpiler.
Warum nutzen moderne Frameworks ESM?
Native Unterstützung in Browsern
Schnellere Buildzeiten (kein extra Bundling nötig in manchen Fällen)
Saubere Abhängigkeitserkennung
Was ist „Tree-Shaking“ in Verbindung mit ESM?
Automatisches Entfernen ungenutzter Exports beim Bundling, um kleinere Builds zu erzeugen.
Welche Einschränkungen gibt es bei ESM?
äuft standardmäßig nur in modernen Browsern / Node.js (ab v12+).
import ist asynchron, was manche Patterns (wie dynamische bedingte Imports) einschränkt.
Unterschiedliche Auflösungslogik von .js / .mjs / package.json-Feldern (type: module).
.js
.mjs
package.json
type: module
Was ist ein Remote Procedure Call (RPC)?
Ein RPC ist ein Protokoll/Mechanismus, mit dem ein Programm Funktionen/Prozeduren auf einem entfernten Rechner so aufrufen kann, als wären sie lokal.
Was ist der Unterschied zwischen RPC und REST?
RPC (Remote Procedure Call):
Fokus: Aktionen / Funktionen
Man ruft entfernte Methoden so auf, als wären sie lokal (z. B. createUser(), deleteInvoice()).
createUser()
deleteInvoice()
Schnittstelle beschreibt, welche Aktionen ausgeführt werden können.
Typisch für gRPC, JSON-RPC, XML-RPC.
REST (Representational State Transfer):
Fokus: Ressourcen / Objekte
Jede Ressource hat eine eindeutige URL (z. B. /users/123).
/users/123
HTTP-Methoden (GET, POST, PUT, DELETE) definieren, was mit der Ressource passiert.
Typisch für Web-APIs (z. B. /users mit POST = neuen User anlegen).
/users
👉 Kurz gesagt:
RPC = "Was soll passieren?" (Aktion)
REST = "Mit welchem Objekt arbeiten wir?" (Ressource)
Regex
is a sequence of characters that specifies a match pattern in text
Domain
a domain name is a string that identifies a realm of administrative autonomy, authority or control. Domain names are often used to identify services provided through the Internet, such as websites, email services and more.
Serialisiert
Die Serialisierung ist in der Informatik eine Abbildung von strukturierten Daten auf eine sequenzielle Darstellungsform. Serialisierung wird hauptsächlich für die Speicherung von Objekten in Dateien und für die Übertragung von Objekten über das Netzwerk bei verteilten Softwaresystemen verwendet.
Expression
The term "expression" means a computer program statement that evaluates to some value.
A Boolean expression would evaluate to either true or false.
Batch Service
Typically, batch processing is bulk-oriented, non-interactive, and long running—and might be data- or computation-intensive.
Batch jobs can be run on schedule or initiated on demand
Parsen
maschinenlesbare Daten analysieren, segmentieren und codieren
Reaktive Programmierung
Reaktive Programmierung ist ein Programmierparadigma, das sich auf die asynchrone Datenverarbeitung konzentriert, bei der die Verarbeitung als Reaktion auf Ereignisse erfolgt. Es ermöglicht die Erstellung von Systemen, die besser auf asynchrone und ereignisgesteuerte Umgebungen reagieren können. In Java und Spring Boot wird reaktive Programmierung oft mit Frameworks wie Project Reactor oder RxJava implementiert, wobei Monos und Fluxes die zentralen Bausteine sind.
Mono, Flux
Mono und Flux sind Konzepte aus der reaktiven Programmierung, die im Spring-Framework, insbesondere in Spring Boot und Spring WebFlux, verwendet werden.
Mono: Repräsentiert einen asynchronen Wert oder null, d.h. eine einzelne mögliche Antwort oder einen Fehler.
Flux: Repräsentiert eine asynchrone Sequenz von 0 bis N Elementen.
Beide sind Teil des Project Reactor, der die Basis für reaktive Programmierung in Spring Boot bildet.
Regressionstests
Unter einem Regressionstest versteht man in der Softwaretechnik die Wiederholung von Testfällen, um sicherzustellen, dass Modifikationen in bereits getesteten Teilen der Software keine neuen Fehler verursachen.
Bus / Eventbus
Ein Bus bzw. Eventbus in der IT ist eine Architekturkomponente, die verwendet wird, um Nachrichten (Events) zwischen verschiedenen Komponenten eines Systems asynchron zu übertragen.
Eventbus: Er ermöglicht es, dass verschiedene Teile einer Anwendung (z.B. Services oder Module) Ereignisse senden und empfangen können, ohne direkt miteinander gekoppelt zu sein. Ein Sender veröffentlicht ein Event, und alle interessierten Empfänger (Subscriber) können darauf reagieren.
Vorteil: Lose Kopplung der Komponenten, bessere Skalierbarkeit und Flexibilität bei der Kommunikation.
Camunda vs BPMN
BPMN ist der Modellierungsstandard, Camunda die Software zur Ausführung dieser Modelle.
Domänobject
Ein Domänenobjekt (oder Domain Object) repräsentiert in der Softwareentwicklung ein Objekt aus der realen Welt oder dem Geschäftskontext, das Teil der Fachlogik einer Anwendung ist. Es enthält Attribute und Methoden, die die Eigenschaften und das Verhalten dieses Objekts beschreiben. Domänenobjekte sind zentrale Bausteine in der Domain-Driven Design (DDD)-Architektur.
UPSERT
Upsert = Update + Insert
Eine Datenbankoperation, bei der:
Ein Datensatz aktualisiert wird, falls er bereits existiert
Ein neuer Datensatz eingefügt wird, falls er nicht existiert
Typische Verwendung:
Vermeiden doppelter Einträge
Synchronisation von Daten
Effiziente Schreiboperationen ohne vorherige Existenzprüfung
Beispiele (konzeptuell):
SQL: INSERT ... ON CONFLICT DO UPDATE (PostgreSQL)
INSERT ... ON CONFLICT DO UPDATE
SQL Server: MERGE
MERGE
MongoDB: updateOne({filter}, {update}, {upsert: true})
updateOne({filter}, {update}, {upsert: true})
Vorteil:
Atomare Operation → verhindert Race Conditions
Virtual Scrolling
Virtual Scrolling = Rendern nur des sichtbaren Bereichs einer großen Datenliste
Prinzip:
Nur die aktuell sichtbaren Elemente (plus kleiner Puffer) werden im DOM/UI dargestellt.
Beim Scrollen werden Elemente dynamisch hinzugefügt und entfernt („virtueller Viewport“).
Hohe Performance, besonders bei sehr großen Listen (Tausende/ Millionen Einträge)
Reduzierter Speicherverbrauch
Flüssigeres Scrolling
Einsatzbereiche:
Tabellen, Listen, Infinite Scrolling
Web-Frameworks: Angular CDK, React Window, React Virtualized, Vue Virtual Scroll List
Wichtig:
Elemente müssen meist fixe oder berechenbare Höhe haben
Scroll-Positionsverwaltung ist entscheidend
Graceful Degradation
Graceful Degradation = „Würdevolle Verschlechterung“
Anwendungen werden für moderne, leistungsfähige Umgebungen entwickelt
Wenn Funktionen nicht unterstützt werden, fällt das System kontrolliert auf eine einfachere Version zurück
Die App bleibt benutzbar, auch wenn manche Features fehlen
Eine Web-App mit 3D-Animationen zeigt bei älteren Browsern statische Bilder
Hochauflösende Videos werden bei schlechter Verbindung in niedriger Qualität abgespielt
Webfeatures (z. B. WebGL) werden durch einfache Fallbacks ersetzt
Unterschied zu Progressive Enhancement:
Graceful Degradation: Von „voll“ → nach unten
Progressive Enhancement: Von „Basis“ → nach oben
Ziel:
Robustheit, Fehlertoleranz und breite Kompatibilität
Progressive Enhancement
Progressive Enhancement = „Schrittweise Verbesserung“
Eine Anwendung wird zunächst als robuste Basisversion entwickelt, die auf allen Geräten funktioniert.
Auf moderneren Browsern/Umgebungen werden dann zusätzliche Features schrittweise aktiviert.
Jeder Nutzer bekommt eine funktionierende Version – bessere Umgebungen bekommen mehr Komfort.
Eine Website liefert zuerst HTML + CSS aus; JavaScript-Features werden nur aktiviert, wenn unterstützt.
Formulare funktionieren serverseitig; Client-side Validierung kommt als Enhancement hinzu.
Moderne CSS-Features (Grid, Animations) werden über Feature Detection aktiviert.
Unterschied zu Graceful Degradation:
Graceful Degradation: Von „Vollversion“ → nach unten
Ziele:
Robustheit, Zugänglichkeit, breite Kompatibilität
Fire and Forget Pattern
Fire and Forget = „Absenden und nicht mehr darüber nachdenken“
Beschreibung:
Eine Operation wird gestartet, aber der Aufrufer wartet nicht auf das Ergebnis.
Kein Rückgabewert, kein Feedback, keine Erfolg-/Fehlerbestätigung.
Einsatz:
Hintergrundprozesse
Logging
Monitoring
Versand von E-Mails oder Webhooks
Asynchrone Tasks, bei denen das Ergebnis für den Aufrufer irrelevant ist
Entkoppelt den Aufrufer
Erhöht Reaktionsgeschwindigkeit
Reduziert Abhängigkeiten
Keine Garantie, dass die Operation erfolgreich lief
Fehler sind schwer zu erkennen
Debugging komplexer
Typisch in:
Asynchronen Systemen
Messaging-Systemen (z. B. RabbitMQ, Kafka)
Web-APIs mit "accepted" Responses (HTTP 202)
Last changed4 days ago