Modelēt vienkāršu bankas sistēmu: - `accounts` tabula: - `id`, - `owner_id`, - `currency`, - `created_at`. - `transactions` tabula: - `id`, - `account_id`, - `amount`, - `created_at`. **Prasības:** 1. Rakstiet SQL, lai izveidotu shēmu ar nepieciešamajiem ierobežojumiem (NOT NULL, FK, CHECK uz `amount`). 2. Rakstiet vaicājumu: - iegūt pašreizējo konta bilanci pēc `account_id` (summa `amount`). 3. Papildu grūtības: atbalstīt debetu/kredītu (divkāršs ieraksts). Tīrīšana
Golang
Kā darbojas garbage collector Go? Aprakstiet fāzes un algoritmu.
Kopējā iespaids no intervijas, kandidāta līmenis, ieteikumi
Kādi sinhronizācijas primitīvi ir Go? Kāda ir atšķirība starp Mutex un RWMutex? Kad izmantot atomics?
Kā darbojas karte Go? Pastāstiet par iekšējo struktūru, buckets, kolīzijām.
Kādi ir goroutines priekšrocības salīdzinājumā ar OS pavedieniem?
Kā optimizēt meklēšanu datu bāzē? Kas ir indeksi un kāda ir to sarežģītība?
Pastāstiet par Go (scheduler) plānotāju. Kā tas darbojas? Kas ir hand-off?
3. Sarežģītība: atbalsts debetam/kreditam (divkārša ieraksta). Tīrīšana CREATE TABLE konti ( id BIGSERIAL PRIMARY KEY, owner_id BIGINT NOT NULL, currency VARCHAR(3) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE TABLE transakcijas ( id BIGSERIAL PRIMARY KEY, account_id BIGINT NOT NULL REFERENCES konti(id), amount NUMERIC(18,2) NOT NULL CHECK (amount <> 0), created_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE INDEX idx_transakcijas_account_id ON transakcijas(account_id); SELECT COALESCE(sum(amount), 0) AS balance FROM transakcijas WHERE account_id = :account_id; ALTER TABLE transakcijas ADD COLUMN type VARCHAR(6) NOT NULL CHECK (type IN ('debit', 'credit')); ALTER TABLE transakcijas DROP CONSTRAINT transakcijas_amount_check, ADD CONSTRAINT transakcijas_amount_check CHECK (amount > 0); SELECT COALESCE( SUM(CASE WHEN type = 'credit' THEN amount WHEN type = 'debit' THEN - amount ) AS balance FROM transakcijas WHERE account_id = :account_id;
Modelējiet vienkāršu bankas sistēmu: - `accounts` tabula: - `id`, - `owner_id`, - `currency`, - `created_at`. - `transactions` tabula: - `id`, - `account_id`, - `amount`, - `created_at`. **Prasības:** 1. Rakstiet SQL, lai izveidotu shēmu ar nepieciešamajiem ierobežojumiem (NOT NULL, FK, CHECK uz `amount`, lai tas nebūtu nulle). 2. Rakstiet vaicājumu: - iegūt pašreizējo konta bilanci pēc `account_id` (summa `amount`). 3. Papildu grūtības: atbalstīt debetu/kredītu (divkāršs ieraksts). Tīrīšana.