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
Compartilhar:LinkedInXWhatsApp
# 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