Жай банктік жүйе моделін құрыңыз: - `accounts` кестесі: - `id`, - `owner_id`, - `currency`, - `created_at`. - `transactions` кестесі: - `id`, - `account_id`, - `amount`, - `created_at`. **Талаптар:** 1. Қажетті шектеулерімен схеманы құру үшін SQL жазыңыз (NOT NULL, FK, `amount` үшін CHECK). 2. Сұрау жазыңыз: - `account_id` бойынша ағымдағы балансын алу (сумма `amount`). 3. Қиындату: дебет/кредитті қолдау (екі жазба). Тазалау
Golang
Go-да garbage collector қалай жұмыс істейді? Фазалары мен алгоритмін сипаттаңыз.
Сұхбаттан жалпы әсер, кандидаттың деңгейі, ұсыныстар
Go тілінде қандай синхрондау құралдары бар? Mutex пен RWMutex арасындағы айырмашылық неде? Қашан атомиктерді қолдану керек?
Go-дағы map қалай құрылымдалған? Оның ішкі құрылымы, buckets, қақтығыстар туралы айтыңыз.
Goroutines-тың OS жіптерінен қандай артықшылықтары бар?
Дерекқорда іздеуді қалай оңтайландыруға болады? Индекстер дегеніміз не және олардың күрделілігі қандай?
Go жоспарлаушысы туралы айтыңыз. Ол қалай жұмыс істейді? Hand-off деген не?
3. Қиындату: дебет/кредитті қолдау (екі жазба). Тазалау CREATE TABLE accounts ( id BIGSERIAL PRIMARY KEY, owner_id BIGINT NOT NULL, currency VARCHAR(3) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE TABLE transactions ( id BIGSERIAL PRIMARY KEY, account_id BIGINT NOT NULL REFERENCES accounts(id), amount NUMERIC(18,2) NOT NULL CHECK (amount <> 0), created_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE INDEX idx_transactions_account_id ON transactions(account_id); SELECT COALESCE(sum(amount), 0) AS balance FROM transactions WHERE account_id = :account_id; ALTER TABLE transactions ADD COLUMN type VARCHAR(6) NOT NULL CHECK (type IN ('debit', 'credit')); ALTER TABLE transactions DROP CONSTRAINT transactions_amount_check, ADD CONSTRAINT transactions_amount_check CHECK (amount > 0); SELECT COALESCE( SUM(CASE WHEN type = 'credit' THEN amount WHEN type = 'debit' THEN - amount END) AS balance FROM transactions WHERE account_id = :account_id;
Қарапайым банктік жүйені моделдеңіз: - `accounts` кестесі: - `id`, - `owner_id`, - `currency`, - `created_at`. - `transactions` кестесі: - `id`, - `account_id`, - `amount`, - `created_at`. **Талаптар:** 1. Қажетті шектеулері бар схеманы құру үшін SQL жазыңыз (NOT NULL, FK, `amount`-тың нөлден басқа мәні үшін CHECK). 2. Сұрау жазыңыз: - `account_id` бойынша ағымдағы балансын алу (amount-тардың сомасы). 3. Қиындату: дебет/кредитті қолдау (екі жазба). Тазалау.