Aus unserem Fragenpool von 150 IHK-Prüfungsfragen nach offiziellem ZPA/AkA-Wortlaut. Bearbeiten Sie die Aufgaben und vergleichen Sie Ihre Antwort mit dem Erwartungshorizont:
Struktogramm Schleifentypen nach DIN 66261
6 Punkte
Zur Programmierung eines Algorithmus werden Schleifenstrukturen entworfen.
Vergleichen Sie eine kopfgesteuerte Schleife (WHILE) mit einer fußgesteuerten Schleife (DO-WHILE) hinsichtlich Ausführungslogik und Mindestanzahl von Durchläufen und skizzieren Sie die Darstellung nach Nassi-Shneiderman.
💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung
Kopfgesteuerte Schleife (abweisend): Die Bedingung wird VOR jedem Schleifendurchlauf geprüft. Ist die Bedingung von Beginn an falsch, wird der Rumpf 0-mal ausgeführt. Nassi-Shneiderman: Oberer horizontaler Balken mit Bedingung, der den Schleifenkörper links und unten umschließt. (3 Pkt.)
Fußgesteuerte Schleife (nicht abweisend): Die Bedingung wird NACH jedem Schleifendurchlauf am Fuß geprüft. Der Rumpf wird mindestens 1-mal garantiert ausgeführt. Nassi-Shneiderman: Unterer horizontaler Balken mit Bedingung, der den Schleifenkörper links und oben umschließt. (3 Pkt.)
Trace-Tabelle Quersumme Algorithmus
10 Punkte
Gegeben ist folgender Pseudocode zur Berechnung der Quersumme einer Zahl:
GANZZAHL zahl = 384
GANZZAHL quersumme = 0
SOLANGE zahl > 0 WIEDERHOLE:
quersumme = quersumme + (zahl MOD 10)
zahl = zahl DIV 10
ENDE_SOLANGE
Erstellen Sie eine vollständige Trace-Tabelle für alle Schleifendurchläufe mit den Spalten: Durchlauf, zahl, (zahl MOD 10), quersumme, (zahl DIV 10) und Bedingung (zahl > 0).
💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung
Initial: zahl=384, quersumme=0
Durchlauf 1: zahl=384 -> 384>0 (wahr) -> MOD 10 = 4 -> quersumme = 0 + 4 = 4 -> zahl = 384 DIV 10 = 38. (3 Pkt.)
Durchlauf 2: zahl=38 -> 38>0 (wahr) -> MOD 10 = 8 -> quersumme = 4 + 8 = 12 -> zahl = 38 DIV 10 = 3. (3 Pkt.)
Durchlauf 3: zahl=3 -> 3>0 (wahr) -> MOD 10 = 3 -> quersumme = 12 + 3 = 15 -> zahl = 3 DIV 10 = 0. (3 Pkt.)
Ende: zahl=0 -> 0>0 (falsch) -> Schleifenabbruch. Endergebnis quersumme = 15. (1 Pkt.)
Trace-Tabelle Lineare Suche
8 Punkte
Gegeben ist das Array werte = [14, 27, 42, 55, 68] und gesucht = 42.
GANZZAHL pos = -1
FÜR i VON 0 BIS 4 SCHRITT 1:
WENN werte[i] == gesucht DANN
pos = i
VERLASSE_SCHLEIFE
ENDE_WENN
ENDE_FÜR
Führen Sie die Trace-Tabelle bis zum Schleifenabbruch und geben Sie den Endwert von pos und die Anzahl der Vergleiche an.
💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung
Schritt i=0: werte[0]=14 == 42 ist FALSCH (1. Vergleich). (2 Pkt.)
Schritt i=1: werte[1]=27 == 42 ist FALSCH (2. Vergleich). (2 Pkt.)
Schritt i=2: werte[2]=42 == 42 ist WAHR (3. Vergleich). pos wird auf 2 gesetzt. Schleife wird abgebrochen. (3 Pkt.)
Endwert pos: 2; Gesamtanzahl Vergleiche: 3. (1 Pkt.)
UML-Klassendiagramm Sichtbarkeiten und Syntax
8 Punkte
Für eine IT-Asset-Management-Software soll die Klasse "Server" modelliert werden. Attribute: hostname (String, öffentlich), ipAdresse (String, privat), id (Integer, geschützt). Methoden: booten() (kein Rückgabewert, öffentlich), ping(ip: String) (Rückgabewert boolean, öffentlich).
Stellen Sie die Klasse als UML-Klassendiagramm nach DIN/OMG-Standard dar und beachten Sie die korrekten Sichtbarkeitssymbole.
💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung
Dreigeteilter Kasten:
Oberes Feld (Klassenname): Server (2 Pkt.)
Mittleres Feld (Attribute mit Sichtbarkeiten):
+ hostname : String
- ipAdresse : String
# id : Integer (3 Pkt.)
Unteres Feld (Methoden):
+ booten() : void
+ ping(ip : String) : Boolean (3 Pkt.)
UML Assoziation Aggregation vs Komposition
8 Punkte
In einem Objektmodell stehen die Klassen "Firma", "Abteilung" und "Mitarbeiter" in Beziehung zueinander.
Unterscheiden Sie Aggregation und Komposition anhand von grafischer Darstellung und Lebensdauer-Abhängigkeit und ordnen Sie die Beziehungen der Klassen begründet zu.
💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung
Komposition (ausgefüllte Raute): Strikte existenzielle Abhängigkeit (Teil-Ganzes-Beziehung). Das Teil kann ohne das Ganze nicht existieren. Beispiel: Firma <*-- Abteilung (Wird die Firma aufgelöst, hören ihre Abteilungen auf zu existieren). (4 Pkt.)
Aggregation (leere Raute): Lose Beziehung. Die Teile können auch unabhängig vom übergeordneten Ganzen fortbestehen. Beispiel: Abteilung o-- Mitarbeiter (Wird eine Abteilung aufgelöst, bleibt der Mitarbeiter weiterhin als Person/Arbeitnehmer bestehen). (4 Pkt.)
UML Sequenzdiagramm Lebenslinie und Nachrichten
8 Punkte
Ein Authentifizierungsprozess zwischen Client, Webserver und Datenbank soll visualisiert werden.
Erläutern Sie die Elemente eines UML-Sequenzdiagramms (Lebenslinie, Aktivierungsbalken, synchrone Nachricht, asynchrone Nachricht, Antwortnachricht).
💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung
Lebenslinie (Lifeline): Vertikale gestrichelte Linie, die das Vorhandensein eines Objekts über die Zeit darstellt. (2 Pkt.)
Aktivierungsbalken (Execution Occurrence): Schmaler vertikaler Kasten auf der Lebenslinie, der anzeigt, dass das Objekt gerade aktiv eine Operation ausführt. (2 Pkt.)
Synchrone Nachricht: Durchgezogene Linie mit ausgefüllter Pfeilspitze; der Aufrufer wartet blockierend auf die Antwort. (2 Pkt.)
Antwortnachricht (Reply Message): Gestrichelte Linie mit offener Pfeilspitze zur Rückgabe des Ergebnisses. (2 Pkt.)
Datenbank Normalisierung 1NF bis 3NF
12 Punkte
Gegeben ist eine unnormalisierte Tabelle: bestellungen(bestell_nr, datum, kunden_name, kunden_ort, artikel_liste, artikel_preise).
Definieren Sie die 1., 2. und 3. Normalform und überführen Sie das Schema schrittweise in die 3. Normalform.
💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung
1. Normalform (1NF): Alle Attribute sind atomar (jede Zelle enthält nur einen elementaren Wert; keine Wiederholgruppen). Tabelle aufteilen in Bestelldaten und einzelne Bestellpositionen (artikel_liste/preise auflösen). (4 Pkt.)
2. Normalform (2NF): Das Schema ist in 1NF und jedes Nichtschlüssel-Attribut ist vom gesamten Primärschlüssel voll funktional abhängig (keine Abhängigkeit von Teilen eines zusammengesetzten Schlüssels). Trennung von Bestellpositionen und Artikelstammdaten. (4 Pkt.)
3. Normalform (3NF): Das Schema ist in 2NF und es existieren keine transitiven Abhängigkeiten zwischen Nichtschlüssel-Attributen (Nichtschlüssel bestimmen keine anderen Nichtschlüssel). Auslagerung von Ort über die PLZ (kunden_name -> kunden_plz -> kunden_ort auflösen). (4 Pkt.)
ER-Modellierung Kardinalitäten
8 Punkte
Modellieren Sie die Beziehung zwischen "Projekt" und "Mitarbeiter": Ein Projekt kann von mehreren Mitarbeitern bearbeitet werden; ein Mitarbeiter kann in mehreren Projekten mitarbeiten. Zu jeder Mitarbeit wird die Anzahl der investierten Arbeitsstunden erfasst.
Geben Sie den Beziehungstyp (Kardinalität) an und erklären Sie, wie diese Beziehung in einem relationalen Datenbankschema aufgelöst wird.
💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung
Kardinalität: n:m-Beziehung (Many-to-Many). (2 Pkt.)
Auflösung im relationalen Schema: Eine n:m-Beziehung kann nicht direkt über Fremdschlüssel in den beiden Haupttabellen abgebildet werden. Es wird eine Zwischentabelle / Verknüpfungstabelle (z. B. projekt_mitarbeiter) benötigt. (3 Pkt.)
Struktur der Zwischentabelle: Enthält als Fremdschlüssel projekt_id und mitarbeiter_id (bilden gemeinsam den zusammengesetzten Primärschlüssel) sowie das Beziehungsattribut arbeitsstunden. (3 Pkt.)
SQL DDL CREATE TABLE mit Constraints
10 Punkte
Für eine Ticket-Verwaltung soll die Tabelle "ticket" per SQL angelegt werden: id (Ganzzahl, Primärschlüssel mit Autoinkrement), titel (Text, max. 100 Zeichen, Pflichtfeld), status (Text, Standardwert "OFFEN"), prioritaet (Ganzzahl, Werte nur von 1 bis 5 erlaubt), ersteller_id (Ganzzahl, Fremdschlüssel auf benutzer.id mit Kaskadierung beim Löschen).
Schreiben Sie das syntaktisch korrekte SQL-Statement nach ANSI/ISO-Standard.
💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung
CREATE TABLE ticket (
id INTEGER PRIMARY KEY AUTO_INCREMENT,
titel VARCHAR(100) NOT NULL,
status VARCHAR(20) DEFAULT 'OFFEN',
prioritaet INT CHECK (prioritaet BETWEEN 1 AND 5),
ersteller_id INT,
FOREIGN KEY (ersteller_id) REFERENCES benutzer(id) ON DELETE CASCADE
); (10 Pkt. - Abzug bei fehlendem NOT NULL, CHECK, DEFAULT oder FOREIGN KEY)
SQL DML Aggregation und GROUP BY mit HAVING
10 Punkte
Gegeben sind die Tabellen kunden (id, name, stadt) und bestellungen (id, kunde_id, betrag, datum).
Formulieren Sie eine SQL-Abfrage, die den Kundennamen und die Gesamtsumme aller Bestellungen für jeden Kunden ausgibt, dessen Gesamtbestellwert 10.000 EUR überschreitet. Das Ergebnis soll absteigend nach der Summe sortiert sein.
💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung
SELECT k.name, SUM(b.betrag) AS gesamtumsatz
FROM kunden k
INNER JOIN bestellungen b ON k.id = b.kunde_id
GROUP BY k.id, k.name
HAVING SUM(b.betrag) > 10000
ORDER BY gesamtumsatz DESC; (10 Pkt. - Abzug bei WHERE statt HAVING für Aggregatfunktion oder fehlendem GROUP BY)
SQL JOIN-Typen INNER vs LEFT vs FULL
6 Punkte
In einer Datenbank existieren mitarbeiter (id, name, abt_id) und abteilungen (id, bezeichnung). Einige Mitarbeiter haben keine Abteilung, und einige Abteilungen haben keine Mitarbeiter.
Erläutern Sie den Unterschied im Abfrageergebnis zwischen INNER JOIN und LEFT OUTER JOIN bezüglich der Ergebniszeilen.
💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung
INNER JOIN: Liefert ausschließlich Zeilen zurück, bei denen in beiden Tabellen ein übereinstimmender Wert vorliegt (Schnittmenge). Mitarbeiter ohne Abteilung und Abteilungen ohne Mitarbeiter werden vollständig verworfen. (3 Pkt.)
LEFT OUTER JOIN (mitarbeiter LEFT JOIN abteilungen): Liefert ALLE Datensätze der linken Tabelle (mitarbeiter), selbst wenn keine Übereinstimmung in abteilungen vorliegt. Die fehlenden Abteilungsspalten werden mit NULL aufgefüllt. (3 Pkt.)
SQL Transaktionen ACID-Eigenschaften
8 Punkte
Bei einer Banküberweisung von 500 EUR von Konto A auf Konto B wird ein Transaktionsblock ausgeführt.
Nennen und erläutern Sie die vier ACID-Eigenschaften und beschreiben Sie, was passiert, wenn nach dem Abbuchen von Konto A das Datenbanksystem abstürzt.
💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung
Atomarität (Atomicity): Alles-oder-Nichts-Prinzip. Eine Transaktion wird entweder ganz oder gar nicht ausgeführt. (2 Pkt.)
Konsistenz (Consistency): Nach Abschluss der Transaktion befindet sich die Datenbank in einem gültigen, integren Zustand. (2 Pkt.)
Isolation: Gleichzeitige Transaktionen beeinflussen sich nicht gegenseitig. (1 Pkt.)
Dauerhaftigkeit (Durability): Erfolgreich mit COMMIT bestätigte Änderungen bleiben dauerhaft im Speicher erhalten. (1 Pkt.)
Absturzfolge: Da die Buchung nicht durch COMMIT bestätigt wurde, greift beim Neustart ein automatisches Rollback (Undo-Logging). Die Abbuchung auf Konto A wird rückgängig gemacht. (2 Pkt.)
Python Exception Handling & Custom Errors
8 Punkte
In einem Python-Skript soll eine Division durchgeführt und Benutzereingaben validiert werden.
Erklären Sie die Funktionsweise von try, except, else und finally in Python und schreiben Sie einen Code-Ausschnitt, der eine Division durch Null sauber abfängt.
💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung
Erklärung:
- try: Enthält den fehleranfälligen Codeblock. (1 Pkt.)
- except: Fängt spezifische Ausnahmen ab und behandelt sie (z. B. ZeroDivisionError). (1 Pkt.)
- else: Wird nur ausgeführt, wenn im try-Block KEIN Fehler aufgetreten ist. (1 Pkt.)
- finally: Wird immer ausgeführt, egal ob ein Fehler auftrat oder nicht (z. B. zum Schließen von Dateien/Sockets). (1 Pkt.)
Code:
try:
ergebnis = a / b
except ZeroDivisionError:
print("Fehler: Division durch 0 nicht erlaubt!")
else:
print("Ergebnis:", ergebnis)
finally:
print("Berechnung abgeschlossen.") (4 Pkt.)
SQL Subqueries mit IN und EXISTS
8 Punkte
Gegeben sind die Tabellen kunden (id, name, land) und bestellungen (id, kunde_id, summe).
Formulieren Sie zwei SQL-Abfragen, die alle Kundennamen ausgeben, die mindestens eine Bestellung getätigt haben: Einmal unter Verwendung einer Subquery mit IN und einmal mit EXISTS.
💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung
Variante 1 (IN):
SELECT name FROM kunden WHERE id IN (SELECT kunde_id FROM bestellungen); (4 Pkt.)
Variante 2 (EXISTS / Korrelierte Unterabfrage):
SELECT k.name FROM kunden k WHERE EXISTS (SELECT 1 FROM bestellungen b WHERE b.kunde_id = k.id); (4 Pkt.)
SQL Window Functions ROW_NUMBER
8 Punkte
In einer Vertriebsdatenbank sollen die Top-3-Umsätze jedes Verkäufers ermittelt werden.
Erläutern Sie die Funktionsweise von SQL Window Functions gegenüber GROUP BY und erklären Sie die Syntax von ROW_NUMBER() OVER (PARTITION BY ... ORDER BY ...).
💡 Offizieller IHK-Erwartungshorizont & Punkteverteilung
Unterschied zu GROUP BY: GROUP BY fasst Zeilen zusammen und reduziert die Ergebnismenge auf eine einzige Zeile pro Gruppe. Eine Window Function führt Berechnungen über eine definierte Zeilenmenge (das Fenster / Window) durch, behält jedoch die individuelle Identität jeder einzelnen Zeile bei. (4 Pkt.)
Syntax-Erklärung:
- ROW_NUMBER(): Vergibt eine fortlaufende Zeilennummer (1, 2, 3...).
- PARTITION BY spalte: Teilt den Datensatz in logische Untergruppen (z. B. pro Verkäufer).
- ORDER BY spalte DESC: Bestimmt die Sortierreihenfolge innerhalb jeder Partition (z. B. höchster Umsatz zuerst). (4 Pkt.)