Sobes.tech

Моделирайте прост банкова система: - Таблица `accounts`: - `id`, - `owner_id`, - `currency`, - `created_at`. - Таблица `transactions`: - `id`, - `account_id`, - `amount`, - `created_at`. **Изисквания:** 1. Напишете SQL за създаване на схемата с необходимите ограничения (NOT NULL, FK, CHECK за ненулев `amount`). 2. Напишете заявка: - получете текущия баланс на сметката по `account_id` (сума `amount`). 3. Усложнение: поддържайте дебит/кредит (двойно записване). Почистване

Middle+
170

Общо впечатление от интервюто, ниво на кандидата, препоръки

Middle+
156

Как работи garbage collector-ът в Go? Опишете фазите и алгоритъма.

Middle+
143

Как да оптимизираме търсенето в база данни? Какво представляват индексите и каква е тяхната сложност?

Middle+
139

Какви са предимствата на goroutines пред OS нишките?

Middle+
139

Разкажете за планировчика на Go (scheduler). Как работи? Какво е hand-off?

Middle+
134

Какви примитиви за синхронизация има в Go? Каква е разликата между Mutex и RWMutex? Кога да използваме атомики?

Middle+
120

Как работи map в Go? Разкажете за вътрешната структура, buckets, колизии.

Middle+
100

3. Трудност: поддръжка на дебит/кредит (двойна регистрация). Почистване CREATE TABLE сметки ( id BIGSERIAL PRIMARY KEY, owner_id BIGINT NOT NULL, currency VARCHAR(3) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE TABLE транзакции ( id BIGSERIAL PRIMARY KEY, account_id BIGINT NOT NULL REFERENCES сметки(id), amount NUMERIC(18,2) NOT NULL CHECK (amount <> 0), created_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE INDEX idx_транзакции_account_id ON транзакции(account_id); SELECT COALESCE(sum(amount), 0) AS balance FROM транзакции WHERE account_id = :account_id; ALTER TABLE транзакции ADD COLUMN type VARCHAR(6) NOT NULL CHECK (type IN ('debit', 'credit')); ALTER TABLE транзакции DROP CONSTRAINT транзакции_amount_check, ADD CONSTRAINT транзакции_amount_check CHECK (amount > 0); SELECT COALESCE( SUM(CASE WHEN type = 'credit' THEN amount WHEN type = 'debit' THEN - amount ) AS balance FROM транзакции WHERE account_id = :account_id;

Middle+
100

Моделирайте прост банкова система: - Таблица `accounts`: - `id`, - `owner_id`, - `currency`, - `created_at`. - Таблица `transactions`: - `id`, - `account_id`, - `amount`, - `created_at`. **Изисквания:** 1. Напишете SQL за създаване на схемата с необходимите ограничения (NOT NULL, FK, CHECK за ненулев `amount`). 2. Напишете заявка: - да получите текущия баланс на сметката по `account_id` (сумата `amount`). 3. Усложнение: поддържайте дебит/кредит (двойна запис). Почистване.

Middle+
81