As perguntas da entrevista sobre banco de dados em 2026 cobrem fundamentos de SQL, transações, indexação, normalização, NoSQL vs SQL e serviços de banco de dados em nuvem. Este guia aborda as perguntas mais comuns sobre banco de dados para funções de desenvolvedor back-end e engenheiro de dados.
Perguntas sobre o banco de dados principal
1. O que é normalização? Explique 1NF, 2NF, 3NF
Normalization: organize tables to reduce redundancy and improve integrity
1NF (First Normal Form):
- Each column contains atomic (indivisible) values
- No repeating groups or arrays in columns
BAD: users(id, name, phones="555-1234,555-5678")
GOOD: users(id, name) + phones(id, user_id, phone)
2NF (Second Normal Form):
- Must be in 1NF
- All non-key columns depend on the ENTIRE primary key (no partial dependency)
BAD: orders(order_id, product_id, product_name, qty)
product_name depends only on product_id, not full key
GOOD: orders(order_id, product_id, qty)
products(product_id, product_name)
3NF (Third Normal Form):
- Must be in 2NF
- No transitive dependencies (non-key columns depend only on key)
BAD: employees(emp_id, dept_id, dept_name)
dept_name depends on dept_id, not emp_id
GOOD: employees(emp_id, dept_id)
departments(dept_id, dept_name)
2. Quais são as propriedades ACID?
- Atomicidade: A transação é tudo ou nada – transferência de US$ 100: débito E crédito são bem-sucedidos ou ambos falham
- Consistência: O banco de dados vai de um estado válido para outro — o saldo nunca pode ser negativo
- Isolamento: as transações simultâneas não interferem — dois usuários que reservam o mesmo assento não têm sucesso
- Durabilidade: os dados confirmados sobrevivem a falhas — gravados no disco, não apenas na memória
3. Explique os níveis de isolamento e suas compensações
-- Isolation levels (weakest to strongest):
-- READ UNCOMMITTED: can read uncommitted data (dirty reads)
-- Rarely used, maximum performance
-- READ COMMITTED (default in PostgreSQL):
-- Only reads committed data. Prevents dirty reads.
-- Non-repeatable reads possible (same query returns different results)
-- REPEATABLE READ (default in MySQL):
-- Same rows return same data within transaction.
-- Phantom reads possible (new rows can appear)
-- SERIALIZABLE: full isolation, no phantoms
-- Slowest, all transactions run as if sequential
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-- In PostgreSQL
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- ...
COMMIT;
-- Common choice: READ COMMITTED for most apps
-- REPEATABLE READ for financial reporting
-- SERIALIZABLE for critical financial transactions
4. What is the difference between clustered and non-clustered indexes?
- Índice clusterizado: Linhas de dados armazenadas em ordem de índice. Um por mesa. InnoDB usa PRIMARY KEY como cluster.
- Não agrupado: estrutura separada apontando para linhas de dados. Vários por tabela.
-- Clustered: physical order of data = index order
-- PRIMARY KEY automatically creates clustered index in most DBs
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY, -- clustered index
email VARCHAR(255),
name VARCHAR(100)
);
-- Non-clustered: lookup structure → pointer to data
CREATE INDEX idx_email ON users(email); -- non-clustered
-- Covering index: includes all needed columns
-- Allows index-only scan (never touches data pages)
CREATE INDEX idx_user_lookup ON users(email) INCLUDE (id, name);
-- SELECT id, name FROM users WHERE email = 'alice@example.com'
-- Can be answered entirely from index — very fast!
5. Quando você escolheria NoSQL em vez de SQL?
| Escolha SQL quando | Escolha NoSQL quando |
|---|---|
| Relacionamentos complexos (JOINs) | Padrões de acesso simples (valor-chave) |
| Transações ACID necessárias | Escala massiva (fragmentação necessária) |
| Consultas complexas, agregações | Esquema flexível |
| Dados financeiros e de inventário | Alto rendimento de gravação |
| A equipe conhece SQL | Documentos JSON, dados aninhados |
6. Explique a fragmentação do banco de dados
Fragmentação: particione dados horizontalmente em várias instâncias de banco de dados.
Sharding strategies:
Range-based: shard by value range
Shard 1: user_id 1-1M
Shard 2: user_id 1M-2M
Pros: range queries efficient
Cons: hot spots (newest users all on last shard)
Hash-based: shard_num = hash(user_id) % num_shards
Even distribution
Cons: range queries hit all shards, resharding is hard
Directory-based: lookup table maps key → shard
Flexible, easy to rebalance
Cons: lookup overhead, single point of failure
Cross-shard challenges:
- JOINs must be done in application layer
- Distributed transactions are complex
- Global uniqueness (use UUIDs instead of auto-increment)
As entrevistas de banco de dados testam amplitude (SQL, normalização, ACID) e profundidade (otimização de consulta, estratégia de indexação). Saiba como usar EXPLAIN ANALYZE, entenda quando cada tipo de índice ajuda e explique claramente as compensações da fragmentação. As questões de produção geralmente abrangem pool de conexões, atraso de replicação e tratamento de consultas N+1.
🔗 Share this article
✍️ Leave a Comment