Basit bir banka sistemi modelleyin: - `accounts` tablosu: - `id`, - `owner_id`, - `currency`, - `created_at`. - `transactions` tablosu: - `id`, - `account_id`, - `amount`, - `created_at`. **Gereksinimler:** 1. Gerekli kısıtlamalarla (NOT NULL, FK, `amount` için CHECK) şema oluşturan SQL yazın. 2. Sorgu yazın: - `account_id` ile hesabın güncel bakiyesini alın (amount toplamı). 3. Zorluk ekleme: borç/alacak desteği (çift kayıt). Temizlik
Golang
Go'da çöp toplayıcı nasıl çalışır? Aşamaları ve algoritmayı açıklayın.
Görüşmenin genel izlenimi, adayın seviyesi, öneriler
Go'da hangi senkronizasyon primitive'leri var? Mutex ile RWMutex arasındaki fark nedir? Atomics ne zaman kullanılmalı?
Go'daki map nasıl çalışır? İç yapısı, buckets, çakışmalar hakkında bilgi verin.
Bir veritabanında aramayı nasıl optimize edebilirsiniz? İndeksler nedir ve karmaşıklıkları nedir?
Goroutine'lerin işletim sistemi thread'lerine göre avantajları nelerdir?
Go planlayıcısı (scheduler) hakkında bilgi verin. Nasıl çalışır? Hand-off nedir?
3. Zorluk: Borç/Alacak desteği (çift kayıt). Temizlik CREATE TABLE hesaplar ( id BIGSERIAL PRIMARY KEY, owner_id BIGINT NOT NULL, currency VARCHAR(3) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE TABLE işlemler ( id BIGSERIAL PRIMARY KEY, account_id BIGINT NOT NULL REFERENCES hesaplar(id), amount NUMERIC(18,2) NOT NULL CHECK (amount <> 0), created_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE INDEX idx_işlemler_account_id ON işlemler(account_id); SELECT COALESCE(sum(amount), 0) AS balance FROM işlemler WHERE account_id = :account_id; ALTER TABLE işlemler ADD COLUMN type VARCHAR(6) NOT NULL CHECK (type IN ('debit', 'credit')); ALTER TABLE işlemler DROP CONSTRAINT işlemler_amount_check, ADD CONSTRAINT işlemler_amount_check CHECK (amount > 0); SELECT COALESCE( SUM(CASE WHEN type = 'credit' THEN amount WHEN type = 'debit' THEN - amount ) AS balance FROM işlemler WHERE account_id = :account_id;
Basit bir banka sistemi modelleyin: - `accounts` tablosu: - `id`, - `owner_id`, - `currency`, - `created_at`. - `transactions` tablosu: - `id`, - `account_id`, - `amount`, - `created_at`. **Gereksinimler:** 1. Gerekli kısıtlamalarla (NOT NULL, FK, `amount` için CHECK) şema oluşturmak için SQL yazın. 2. Sorgu yazın: - `account_id` ile hesabın güncel bakiyesini alın (amount toplamı). 3. Zorluk: borç/alacak desteği (çift kayıt). Temizlik.