Modellieren Sie ein einfaches Banksystem: - Tabelle `accounts`: - `id`, - `owner_id`, - `currency`, - `created_at`. - Tabelle `transactions`: - `id`, - `account_id`, - `amount`, - `created_at`. **Anforderungen:** 1. Schreiben Sie SQL zum Erstellen des Schemas mit den erforderlichen Einschränkungen (NOT NULL, FK, CHECK auf `amount` ungleich Null). 2. Schreiben Sie eine Abfrage: - Erhalten Sie den aktuellen Kontostand nach `account_id` (Summe von `amount`). 3. Erhöhte Schwierigkeit: Unterstützung von Debit/Kredit (doppelte Buchung). Bereinigung
Golang
Wie funktioniert der Garbage Collector in Go? Beschreiben Sie die Phasen und den Algorithmus.
Gesamt Eindruck vom Vorstellungsgespräch, Kandidatenniveau, Empfehlungen
Was sind die Vorteile von Goroutines gegenüber OS-Threads?
Wie kann man die Suche in einer Datenbank optimieren? Was sind Indizes und wie ist ihre Komplexität?
Erzählen Sie uns vom Go-Planer (scheduler). Wie funktioniert er? Was ist der Hand-off?
Wie ist eine Map in Go aufgebaut? Erzählen Sie über die interne Struktur, Buckets, Kollisionen.
Welche Synchronisationsprimitive gibt es in Go? Was ist der Unterschied zwischen Mutex und RWMutex? Wann sollten Atomics verwendet werden?
3. Komplexität: Unterstützung von Debit/Kredit (Doppelte Buchführung). Bereinigung CREATE TABLE konten ( id BIGSERIAL PRIMARY KEY, owner_id BIGINT NOT NULL, currency VARCHAR(3) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE TABLE transaktionen ( id BIGSERIAL PRIMARY KEY, account_id BIGINT NOT NULL REFERENCES konten(id), amount NUMERIC(18,2) NOT NULL CHECK (amount <> 0), created_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE INDEX idx_transaktionen_account_id ON transaktionen(account_id); SELECT COALESCE(sum(amount), 0) AS balance FROM transaktionen WHERE account_id = :account_id; ALTER TABLE transaktionen ADD COLUMN type VARCHAR(6) NOT NULL CHECK (type IN ('debit', 'credit')); ALTER TABLE transaktionen DROP CONSTRAINT transaktionen_amount_check, ADD CONSTRAINT transaktionen_amount_check CHECK (amount > 0); SELECT COALESCE( SUM(CASE WHEN type = 'credit' THEN amount WHEN type = 'debit' THEN - amount ) AS balance FROM transaktionen WHERE account_id = :account_id;
Modellieren Sie ein einfaches Banksystem: - Tabelle `accounts`: - `id`, - `owner_id`, - `currency`, - `created_at`. - Tabelle `transactions`: - `id`, - `account_id`, - `amount`, - `created_at`. **Anforderungen:** 1. Schreiben Sie SQL zum Erstellen des Schemas mit den erforderlichen Einschränkungen (NOT NULL, FK, CHECK auf `amount` ungleich Null). 2. Schreiben Sie eine Abfrage: - um den aktuellen Kontostand nach `account_id` (Summe von `amount`) zu erhalten. 3. Schwierigkeit: Unterstützung von Debit/Kredit (doppelte Buchung). Bereinigung.