tema
SQL e banco de dados
Entrevistas de SQL testam se você pensa em conjuntos, não em loops. Espere perguntas sobre JOINs, agregações, índices, normalização e otimização de queries lentas — geralmente com uma tabela na tela e um problema real para resolver ao vivo.
Simuladores de SQL e banco de dados
Principais perguntas de SQL e banco de dados
ver todas →Diferença entre INNER JOIN, LEFT JOIN e FULL JOIN
INNER exige match nos dois lados; LEFT mantém tudo da esquerda; FULL mantém tudo dos dois lados.
FácilJúniorWHERE vs HAVING em uma query com GROUP BY
WHERE filtra antes de agrupar; HAVING filtra depois, sobre valores agregados.
FácilJúniorQuando criar um índice — e quando ele atrapalha
Índices aceleram leitura filtrada mas custam em cada escrita — não crie por reflexo.
MédioPlenoNormalização e quando desnormalizar de propósito
Normalizar evita redundância; desnormalizar troca redundância por menos JOINs em leitura pesada.
MédioPlenoNíveis de isolamento de transação no PostgreSQL
Read Committed (padrão) → Repeatable Read → Serializable, cada um fechando mais tipos de anomalia.
DifícilSêniorCenário: uma query que ficou lenta em produção
Rode EXPLAIN ANALYZE primeiro; suspeite de sequential scan por falta de índice ou estatística desatualizada.
DifícilSêniorPara que serve uma foreign key
Garante integridade referencial no nível do banco, não só documenta a relação.
FácilJúniorWindow functions vs. GROUP BY
GROUP BY colapsa linhas em grupos; window functions calculam agregados mantendo cada linha.
MédioPlenoÍndice clustered do InnoDB e a escolha da primary key
A tabela é a B-tree da PK (linhas ordenadas pela PK; secundários apontam pela PK). UUID v4 aleatório espalha inserções → fragmentação e page splits. Use auto-incremento ou UUID v7/ULID.
DifícilSêniorDiferenças práticas entre MySQL e PostgreSQL
Isolamento padrão (REPEATABLE READ x READ COMMITTED), DDL transacional (Postgres sim), tipos e índices mais ricos no Postgres (JSONB, arrays, GIN, parciais), VACUUM x undo logs.
MédioPlenoREPEATABLE READ como padrão no InnoDB
Leituras snapshot repetíveis dentro da transação (sem non-repeatable read). Surpresa: leituras com lock (FOR UPDATE/UPDATE) veem a versão atual, não o snapshot; next-key locks evitam phantoms mas geram deadlock.
DifícilSêniorPor que `WHERE coluna = NULL` não funciona
Comparar com NULL dá UNKNOWN, e o WHERE só passa o que é verdadeiro. Use `IS NULL` / `IS NOT NULL`. Cuidado com `NOT IN` e NULL, e com `COUNT(coluna)` que ignora NULLs.
FácilJúnior`COUNT(*)` x `COUNT(coluna)` x `COUNT(DISTINCT coluna)`
`COUNT(*)`: todas as linhas. `COUNT(coluna)`: linhas com a coluna não-nula. `COUNT(DISTINCT coluna)`: valores distintos não-nulos.
FácilJúniorLer um EXPLAIN ANALYZE
Estimado vs real (divergência → ANALYZE); Seq Scan em tabela grande; o nó mais caro por actual time e loops; Rows Removed by Filter alto; BUFFERS pra cache vs disco.
DifícilSênior`jsonb` no PostgreSQL: quando usar e como indexar
jsonb pra dados semiestruturados/variáveis por linha (payloads, atributos por categoria). Campos estáveis → colunas normais. Indexe com GIN (contenção `@>`, existência `?`) ou B-tree numa expressão pra um campo.
MédioPlenoMVCC, bloat e o papel do VACUUM
MVCC não apaga na hora: UPDATE/DELETE deixam versões mortas que o VACUUM recolhe. Autovacuum atrasado + escrita alta ou transação longa → tabelas/índices incham (bloat) → scans lentos e disco cheio.
DifícilSêniorCovering index e a ordem das colunas num índice composto
Índice composto serve queries pelo PREFIXO das colunas na ordem (regra ESR). Covering index: contém todas as colunas que a query usa (WHERE + SELECT), então responde sem tocar a tabela (`Using index` no EXPLAIN).
DifícilSênior`utf8` x `utf8mb4` e collation
`utf8` do MySQL é 3 bytes — não cabe emoji/vários CJK. Use `utf8mb4`. Collation = regras de comparação/ordenação (case/accent sensitivity, ordem por idioma); misturar collations num JOIN quebra índice.
MédioPlenoCenário: deadlock intermitente no InnoDB
Transações se esperando por locks em ordem oposta. InnoDB mata uma — a app deve fazer retry. Reduza: acessar linhas sempre na mesma ordem, transações curtas, índices que travam menos linhas.
DifícilSênior
Perguntas frequentes
O que os entrevistadores mais avaliam em sql e banco de dados?
Entrevistas de SQL testam se você pensa em conjuntos, não em loops. Espere perguntas sobre JOINs, agregações, índices, normalização e otimização de queries lentas — geralmente com uma tabela na tela e um problema real para resolver ao vivo.
Quanto tempo leva pra treinar sql e banco de dados até me sentir pronto?
Depende do seu ponto de partida, mas a maioria sente diferença depois de 2-3 simulações completas com revisão das perguntas erradas — é aí que os padrões que se repetem em entrevista real ficam visíveis.