Modéliser un système bancaire simple: - Table `accounts`: - `id`, - `owner_id`, - `currency`, - `created_at`. - Table `transactions`: - `id`, - `account_id`, - `amount`, - `created_at`. **Exigences :** 1. Écrire un SQL pour créer le schéma avec les contraintes nécessaires (NOT NULL, FK, CHECK sur `amount` non nul). 2. Écrire une requête : - obtenir le solde actuel du compte par `account_id` (somme de `amount`). 3. Difficulté supplémentaire : supporter débit/crédit (enregistrement double). Nettoyage
Golang
Comment fonctionne le ramasse-miettes en Go ? Décrivez les phases et l'algorithme.
Impression générale de l'entretien, niveau du candidat, recommandations
Quelles primitives de synchronisation existent en Go ? Quelle est la différence entre Mutex et RWMutex ? Quand utiliser les atomics ?
Comment fonctionne une map en Go ? Parlez de la structure interne, des buckets, des collisions.
Quels sont les avantages des goroutines par rapport aux threads du système d'exploitation?
Comment optimiser la recherche dans une base de données ? Qu'est-ce que les index et quelle est leur complexité ?
Parlez-nous du planificateur de Go (scheduler). Comment fonctionne-t-il ? Qu'est-ce que le hand-off ?
3. Complexité : prendre en charge le débit/crédit (écriture double). Nettoyage CREATE TABLE comptes ( 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 comptes(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 ) AS balance FROM transactions WHERE account_id = :account_id;
Modéliser un système bancaire simple: - Table `accounts`: - `id`, - `owner_id`, - `currency`, - `created_at`. - Table `transactions`: - `id`, - `account_id`, - `amount`, - `created_at`. **Exigences:** 1. Écrire SQL pour créer le schéma avec les contraintes nécessaires (NOT NULL, FK, CHECK sur `amount` non nul). 2. Écrire une requête: - obtenir le solde actuel du compte par `account_id` (somme de `amount`). 3. Difficulté supplémentaire : supporter débit/crédit (enregistrement double). Nettoyage.