Todos os artigos
Tecnologia e Stack
SQL para Entrevistas de Desenvolvedor: Queries que Aparecem em Big Tech
Prepare-se para os desafios de SQL em entrevistas de Big Tech: JOINs avancados, window functions, CTEs e como evitar o problema N+1. Exemplos praticos e explicacoes claras.
Alexandre Queiroz27 de março de 202656 leituras
# SQL para Entrevistas de Desenvolvedor: Queries que Aparecem em Big Tech
SQL e uma daquelas habilidades que desenvolvedores backend subestimam ate chegar na entrevista. Amazon, Meta, Stripe, Shopify — todas testam SQL em algum momento do processo seletivo. E o nivel exigido vai muito alem de `SELECT * FROM tabela`.
## JOINs: Muito Alem do INNER JOIN
**INNER JOIN**: retorna apenas registros com correspondencia em ambas as tabelas.
**LEFT JOIN**: retorna todos os registros da tabela esquerda, com NULL onde nao ha correspondencia. Muito usado para encontrar registros orfaos:
```sql
-- Usuarios que nunca fizeram um pedido
SELECT u.id, u.nome
FROM usuarios u
LEFT JOIN pedidos p ON u.id = p.usuario_id
WHERE p.id IS NULL;
```
**SELF JOIN**: uma tabela fazendo join com ela mesma. Classico para hierarquias:
```sql
-- Funcionarios e seus gerentes
SELECT
f.nome AS funcionario,
g.nome AS gerente
FROM funcionarios f
LEFT JOIN funcionarios g ON f.gerente_id = g.id;
```
## Window Functions: O Nivel que Separa Seniors
Window functions fazem calculos em um conjunto de linhas relacionadas sem colapsar o resultado em um grupo.
### ROW_NUMBER, RANK e DENSE_RANK
```sql
SELECT
vendedor,
regiao,
total_vendas,
ROW_NUMBER() OVER (PARTITION BY regiao ORDER BY total_vendas DESC) AS posicao_unica,
RANK() OVER (PARTITION BY regiao ORDER BY total_vendas DESC) AS posicao_rank,
DENSE_RANK() OVER (PARTITION BY regiao ORDER BY total_vendas DESC) AS posicao_densa
FROM vendas;
```
Diferenca importante: RANK pula numeros apos empates (1, 2, 2, 4), DENSE_RANK nao (1, 2, 2, 3).
### LAG e LEAD: Comparando Linhas Adjacentes
```sql
SELECT
data,
receita,
LAG(receita) OVER (ORDER BY data) AS receita_dia_anterior,
receita - LAG(receita) OVER (ORDER BY data) AS variacao
FROM faturamento_diario;
```
## CTEs: Queries Legiveis e Manteniveis
```sql
WITH pedidos_recentes AS (
SELECT usuario_id, COUNT(*) AS total
FROM pedidos
WHERE criado_em >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY usuario_id
),
usuarios_ativos AS (
SELECT id, email FROM usuarios WHERE status = 'ativo'
)
SELECT
ua.email,
COALESCE(pr.total, 0) AS pedidos_ultimo_mes
FROM usuarios_ativos ua
LEFT JOIN pedidos_recentes pr ON ua.id = pr.usuario_id
ORDER BY pedidos_ultimo_mes DESC;
```
## O Problema N+1: Reconhecer e Resolver
O N+1 ocorre quando voce faz 1 query para buscar uma lista e depois N queries (uma por registro) para buscar dados relacionados.
**Solucao**: eager loading com JOIN na query original:
```sql
SELECT posts.titulo, usuarios.nome AS autor
FROM posts
INNER JOIN usuarios ON posts.usuario_id = usuarios.id;
```
Saber identificar N+1 pelo codigo, explicar o impacto em producao e propor a solucao e uma resposta de nivel senior.
## Como Praticar
Plataformas como LeetCode (secao banco de dados) e HackerRank tem problemas excelentes. Classicos: second highest salary, department top three salaries, employees earning more than managers.
Ao se preparar para vagas internacionais, recursos como o **VagaNaGringa.dev** ajudam a entender o que cada tipo de empresa valoriza e como apresentar suas habilidades no contexto certo.
## Conclusao
SQL solido e um multiplicador de carreira para desenvolvedores backend. JOINs bem escolhidos, window functions quando necessario, CTEs para legibilidade e sensibilidade ao N+1 — esses sao os sinais que entrevistadores de empresas serias buscam.
Prepare-se para vagas internacionais com IA
Começar Gratuitamente#SQL#banco de dados#entrevista tecnica#desenvolvedor backend#Big Tech