Kaip veikia garbage collector Go? Aprašykite fazes ir algoritmą.
Golang
Modeliuoti paprastą banko sistemą: - `accounts` lentelė: - `id`, - `owner_id`, - `currency`, - `created_at`. - `transactions` lentelė: - `id`, - `account_id`, - `amount`, - `created_at`. **Reikalavimai:** 1. Parašykite SQL, kuris sukurs schemą su būtinomis apribojimais (NOT NULL, FK, CHECK `amount` ne nulis). 2. Parašykite užklausą: - gauti dabartinį sąskaitos balansą pagal `account_id` (suma `amount`). 3. Papildomas sudėtingumas: palaikyti debetą/kreditą (dvigubas įrašas). Valymas
Bendra įspūdžio apie pokalbį, kandidato lygis, rekomendacijos
Kokios yra goroutines pranašumai prieš OS gijas?
Kaip galima optimizuoti paiešką duomenų bazėje? Kas yra indeksai ir koks jų sudėtingumas?
Papasakokite apie Go (scheduler) planuotoją. Kaip jis veikia? Kas yra hand-off?
Kokios sinchronizacijos primitivas yra Go? Kuo skiriasi Mutex ir RWMutex? Kada naudoti atomics?
Kaip veikia žemėlapis Go? Papasakokite apie vidinę struktūrą, buckets, kolizijas.
3. Sudėtingumas: palaikyti debetą/kreditą (dviguba įrašas). Valymas CREATE TABLE sąskaitos ( id BIGSERIAL PRIMARY KEY, owner_id BIGINT NOT NULL, currency VARCHAR(3) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE TABLE operacijos ( id BIGSERIAL PRIMARY KEY, account_id BIGINT NOT NULL REFERENCES sąskaitos(id), amount NUMERIC(18,2) NOT NULL CHECK (amount <> 0), created_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE INDEX idx_operacijos_account_id ON operacijos(account_id); SELECT COALESCE(sum(amount), 0) AS balance FROM operacijos WHERE account_id = :account_id; ALTER TABLE operacijos ADD COLUMN type VARCHAR(6) NOT NULL CHECK (type IN ('debit', 'credit')); ALTER TABLE operacijos DROP CONSTRAINT operacijos_amount_check, ADD CONSTRAINT operacijos_amount_check CHECK (amount > 0); SELECT COALESCE( SUM(CASE WHEN type = 'credit' THEN amount WHEN type = 'debit' THEN - amount ) AS balance FROM operacijos WHERE account_id = :account_id;
Modeliuokite paprastą banko sistemą: - `accounts` lentelė: - `id`, - `owner_id`, - `currency`, - `created_at`. - `transactions` lentelė: - `id`, - `account_id`, - `amount`, - `created_at`. **Reikalavimai:** 1. Parašykite SQL, kad sukurtumėte schemą su būtinomis apribojimais (NOT NULL, FK, CHECK `amount` ne nulis). 2. Parašykite užklausą: - gauti dabartinį sąskaitos balansą pagal `account_id` (suma `amount`). 3. Papildomas sudėtingumas: palaikyti debetą/kreditą (dviguba įrašas). Valymas.