Sobes.tech

Golang

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

Middle+
208

Cum funcționează garbage collector-ul în Go? Descrieți fazele și algoritmul.

Middle+
178

Impresia generală a interviului, nivelul candidatului, recomandări

Middle+
168

Ce primitive de sincronizare există în Go? Care este diferența dintre Mutex și RWMutex? Când să folosești atomici?

Middle+
162

Cum funcționează map în Go? Vorbește despre structura internă, buckets, coliziuni.

Middle+
153

Cum se poate optimiza căutarea într-o bază de date? Ce sunt indicii și care este complexitatea lor?

Middle+
150

Care sunt avantajele goroutines față de firele OS?

Middle+
150

Vorbiți despre planificatorul Go (scheduler). Cum funcționează? Ce este hand-off?

Middle+
143

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;

Middle+
119

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.

Middle+
118