Modelar un sistema bancario simple: - Tabla `accounts`: - `id`, - `owner_id`, - `currency`, - `created_at`. - Tabla `transactions`: - `id`, - `account_id`, - `amount`, - `created_at`. **Requisitos:** 1. Escribir SQL para crear el esquema con las restricciones necesarias (NOT NULL, FK, CHECK en `amount` no nulo). 2. Escribir una consulta: - obtener el saldo actual de la cuenta por `account_id` (suma de `amount`). 3. Dificultad adicional: soportar débito/crédito (registro doble). Limpieza
Golang
¿Cómo funciona el recolector de basura en Go? Describe las fases y el algoritmo.
Impresión general de la entrevista, nivel del candidato, recomendaciones
¿Qué primitivas de sincronización existen en Go? ¿Cuál es la diferencia entre Mutex y RWMutex? ¿Cuándo usar atomics?
¿Cómo funciona un mapa en Go? Cuente sobre la estructura interna, buckets, colisiones.
¿Cuáles son las ventajas de las goroutines sobre los hilos del sistema operativo?
¿Cómo se puede optimizar la búsqueda en una base de datos? ¿Qué son los índices y cuál es su complejidad?
Cuéntenos sobre el planificador de Go (scheduler). ¿Cómo funciona? ¿Qué es el hand-off?
3. Complejidad: soportar débito/crédito (doble entrada). Limpieza CREATE TABLE cuentas ( id BIGSERIAL PRIMARY KEY, owner_id BIGINT NOT NULL, currency VARCHAR(3) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE TABLE transacciones ( id BIGSERIAL PRIMARY KEY, account_id BIGINT NOT NULL REFERENCES cuentas(id), amount NUMERIC(18,2) NOT NULL CHECK (amount <> 0), created_at TIMESTAMP NOT NULL DEFAULT now() ); CREATE INDEX idx_transacciones_account_id ON transacciones(account_id); SELECT COALESCE(sum(amount), 0) AS balance FROM transacciones WHERE account_id = :account_id; ALTER TABLE transacciones ADD COLUMN type VARCHAR(6) NOT NULL CHECK (type IN ('debit', 'credit')); ALTER TABLE transacciones DROP CONSTRAINT transacciones_amount_check, ADD CONSTRAINT transacciones_amount_check CHECK (amount > 0); SELECT COALESCE( SUM(CASE WHEN type = 'credit' THEN amount WHEN type = 'debit' THEN - amount ) AS balance FROM transacciones WHERE account_id = :account_id;
Modelar un sistema bancario simple: - Tabla `accounts`: - `id`, - `owner_id`, - `currency`, - `created_at`. - Tabla `transactions`: - `id`, - `account_id`, - `amount`, - `created_at`. **Requisitos:** 1. Escribir SQL para crear el esquema con las restricciones necesarias (NOT NULL, FK, CHECK en `amount` no nulo). 2. Escribir una consulta: - obtener el saldo actual de la cuenta por `account_id` (suma de `amount`). 3. Dificultad adicional: soportar débito/crédito (registro doble). Limpieza.