Modelați un sistem bancar simplu: - Tabelul `accounts`: - `id`, - `owner_id`, - `currency`, - `created_at`. - Tabelul `transactions`: - `id`, - `account_id`, - `amount`, - `created_at`. **Cerinte:** 1. Scrieți SQL pentru crearea schemei cu restricțiile necesare (NOT NULL, FK, CHECK pe `amount` nenul). 2. Scrieți o interogare: - obțineți soldul curent al contului după `account_id` (suma `amount`). 3. Dificultate suplimentară: suport pentru debit/credit (înregistrare dublă). Curățare
Golang
Cum funcționează garbage collector-ul în Go? Descrieți fazele și algoritmul.
Impresia generală a interviului, nivelul candidatului, recomandări
Ce primitive de sincronizare există în Go? Care este diferența dintre Mutex și RWMutex? Când să folosești atomici?
Cum funcționează map în Go? Vorbește despre structura internă, buckets, coliziuni.
Cum se poate optimiza căutarea într-o bază de date? Ce sunt indicii și care este complexitatea lor?
Care sunt avantajele goroutines față de firele OS?
Vorbiți despre planificatorul Go (scheduler). Cum funcționează? Ce este hand-off?
3. Complexitate: suport pentru debit/credit (înregistrare dublă). Curățare CREATE TABLE conturi ( id BIGSERIAL PRIMARY KEY, owner_id BIGINT NOT NULL, currency VARCHAR(3) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE TABLE tranzacții ( id BIGSERIAL PRIMARY KEY, account_id BIGINT NOT NULL REFERENCES conturi(id), amount NUMERIC(18,2) NOT NULL CHECK (amount <> 0), created_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE INDEX idx_tranzacții_cont_id ON tranzacții(account_id); SELECT COALESCE(sum(amount), 0) AS balance FROM tranzacții WHERE account_id = :account_id; ALTER TABLE tranzacții ADD COLUMN type VARCHAR(6) NOT NULL CHECK (type IN ('debit', 'credit')); ALTER TABLE tranzacții DROP CONSTRAINT tranzacții_amount_check, ADD CONSTRAINT tranzacții_amount_check CHECK (amount > 0); SELECT COALESCE( SUM(CASE WHEN type = 'credit' THEN amount WHEN type = 'debit' THEN - amount ) AS balance FROM tranzacții WHERE account_id = :account_id;
Modelați un sistem bancar simplu: - Tabelul `accounts`: - `id`, - `owner_id`, - `currency`, - `created_at`. - Tabelul `transactions`: - `id`, - `account_id`, - `amount`, - `created_at`. **Cerinte:** 1. Scrieți SQL pentru crearea schemei cu restricțiile necesare (NOT NULL, FK, CHECK pe `amount` nenul). 2. Scrieți o interogare: - obțineți soldul curent al contului după `account_id` (suma `amount`). 3. Dificultate suplimentară: suport pentru debit/credit (înregistrare dublă). Curățenie.