Sobes.tech

Golang

Modelujte jednostavan bankarski sistem: - Tabela `accounts`: - `id`, - `owner_id`, - `currency`, - `created_at`. - Tabela `transactions`: - `id`, - `account_id`, - `amount`, - `created_at`. **Zahtevi:** 1. Napišite SQL za kreiranje šeme sa potrebnim ograničenjima (NOT NULL, FK, CHECK na nenull `amount`). 2. Napišite upit: - dobijte trenutni saldo računa po `account_id` (zbir `amount`). 3. Dodatna složenost: podrška za debet/kredit (dupli zapis). Čišćenje

Middle+
206

Kako radi garbage collector u Go? Opisati faze i algoritam.

Middle+
176

Општи утисак са интервјуа, ниво кандидата, препоруке

Middle+
166

Koje primitive za sinhronizaciju postoje u Go? Koja je razlika između Mutex i RWMutex? Kada koristiti atomike?

Middle+
162

Kako funkcioniše mapa u Go? Ispričajte o unutrašnjoj strukturi, buckets, kolizijama.

Middle+
151

Koje su prednosti goroutines u odnosu na OS niti?

Middle+
150

Kako optimizovati pretraživanje u bazi podataka? Šta su indeksi i koja je njihova složenost?

Middle+
147

Ispričajte o planera Go (scheduler). Kako radi? Šta je hand-off?

Middle+
143

Modelujte jednostavan bankarski sistem: - Tabela `accounts`: - `id`, - `owner_id`, - `currency`, - `created_at`. - Tabela `transactions`: - `id`, - `account_id`, - `amount`, - `created_at`. **Zahtevi:** 1. Napišite SQL za kreiranje šeme sa potrebnim ograničenjima (NOT NULL, FK, CHECK na nenultu `amount`). 2. Napišite upit: - da dobijete trenutni saldo računa po `account_id` (zbir `amount`). 3. Dodatno: podrška za debet/kredit (dupli zapis). Čišćenje.

Middle+
118

3. Složenost: podrška za debit/kredit (duplo knjiženje). Čišćenje CREATE TABLE računi ( id BIGSERIAL PRIMARY KEY, owner_id BIGINT NOT NULL, currency VARCHAR(3) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE TABLE transakcije ( id BIGSERIAL PRIMARY KEY, account_id BIGINT NOT NULL REFERENCES računi(id), amount NUMERIC(18,2) NOT NULL CHECK (amount <> 0), created_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE INDEX idx_transakcije_account_id ON transakcije(account_id); SELECT COALESCE(sum(amount), 0) AS balance FROM transakcije WHERE account_id = :account_id; ALTER TABLE transakcije ADD COLUMN type VARCHAR(6) NOT NULL CHECK (type IN ('debit', 'credit')); ALTER TABLE transakcije DROP CONSTRAINT transakcije_amount_check, ADD CONSTRAINT transakcije_amount_check CHECK (amount > 0); SELECT COALESCE( SUM(CASE WHEN type = 'credit' THEN amount WHEN type = 'debit' THEN - amount ) AS balance FROM transakcije WHERE account_id = :account_id;

Middle+
117