dezembro 21, 2025
18 min de leitura

Perguntas para Entrevista de Analista de Dados Sênior: Guia Completo

interview
career-advice
job-search
Perguntas para Entrevista de Analista de Dados Sênior: Guia Completo
MB

Milad Bonakdar

Autor

Domine a análise de dados avançada com perguntas essenciais para entrevistas, abrangendo SQL avançado, análise estatística, modelagem de dados, processos ETL, design de dashboards e gerenciamento de stakeholders para analistas de dados seniores.


Introdução

Espera-se que os analistas de dados seniores liderem projetos analíticos complexos, projetem soluções de dados robustas, otimizem processos de negócios e comuniquem insights que impulsionem decisões estratégicas. Essa função exige expertise em SQL avançado, análise estatística, modelagem de dados, processos de ETL e gestão de stakeholders.

Este guia abrangente cobre as principais perguntas de entrevista para Analistas de Dados Seniores, abrangendo técnicas avançadas de SQL, análise estatística, modelagem de dados, processos de ETL, otimização de painéis e estratégia de negócios. Cada pergunta inclui respostas detalhadas, avaliação de raridade e níveis de dificuldade.


SQL Avançado (6 Perguntas)

1. Explique funções de janela e dê exemplos.

Resposta: Funções de janela realizam cálculos em um conjunto de linhas relacionadas à linha atual sem colapsar o resultado.

  • Funções de Janela Comuns:
    • ROW_NUMBER(): Número sequencial único
    • RANK(): Classificação com lacunas para empates
    • DENSE_RANK(): Classificação sem lacunas
    • LAG/LEAD(): Acessa a linha anterior/seguinte
    • SUM/AVG/COUNT() OVER(): Totais/médias acumuladas
-- ROW_NUMBER: Atribui números únicos
SELECT 
    employee_id,
    first_name,
    salary,
    ROW_NUMBER() OVER (ORDER BY salary DESC) AS row_num
FROM employees;

-- RANK: Classifica funcionários por salário dentro de cada departamento
SELECT 
    department,
    employee_id,
    salary,
    RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS dept_rank
FROM employees;

-- LAG: Compara com a linha anterior
SELECT 
    year,
    revenue,
    LAG(revenue) OVER (ORDER BY year) AS prev_year_revenue,
    revenue - LAG(revenue) OVER (ORDER BY year) AS revenue_change
FROM annual_sales;

-- Total acumulado
SELECT 
    order_date,
    amount,
    SUM(amount) OVER (ORDER BY order_date) AS running_total
FROM orders;

-- Média móvel (últimos 3 meses)
SELECT 
    month,
    sales,
    AVG(sales) OVER (
        ORDER BY month 
        ROWS BETWEEN 2 PRECEDING AND CURRENT ROW
    ) AS moving_avg_3m
FROM monthly_sales;

Raridade: Muito Comum Dificuldade: Difícil


2. Como você otimiza consultas SQL lentas?

Resposta: A otimização de consultas melhora o desempenho e reduz o uso de recursos.

  • Técnicas:
    • Indexação: Crie índices em colunas frequentemente consultadas
    • *Evite SELECT : Selecione apenas as colunas necessárias
    • Use WHERE de forma eficiente: Filtre cedo
    • Otimize JOINs: Una em colunas indexadas
    • Evite subconsultas: Use JOINs ou CTEs em vez disso
    • Use EXPLAIN: Analise o plano de execução da consulta
    • Particione tabelas: Para tabelas muito grandes
    • Agregue de forma eficiente: Use GROUP BY apropriado
-- Ruim: SELECT * e subconsulta
SELECT * FROM orders
WHERE customer_id IN (
    SELECT customer_id FROM customers WHERE country = 'USA'
);

-- Bom: Colunas específicas e JOIN
SELECT o.order_id, o.order_date, o.amount
FROM orders o
INNER JOIN customers c ON o.customer_id = c.customer_id
WHERE c.country = 'USA';

-- Use EXPLAIN para analisar
EXPLAIN SELECT * FROM orders WHERE order_date > '2023-01-01';

-- Crie um índice para melhor desempenho
CREATE INDEX idx_order_date ON orders(order_date);

-- Use um índice de cobertura (inclui todas as colunas necessárias)
CREATE INDEX idx_orders_covering ON orders(customer_id, order_date, amount);

-- Particione tabelas grandes
CREATE TABLE orders_2023 PARTITION OF orders
FOR VALUES FROM ('2023-01-01') TO ('2024-01-01');

Raridade: Muito Comum Dificuldade: Difícil


3. O que são CTEs (Common Table Expressions) e quando você as usaria?

Resposta: CTEs criam conjuntos de resultados temporários nomeados que existem apenas durante a execução da consulta.

  • Benefícios:
    • Melhora a legibilidade
    • Permite recursão
    • Reutilização na mesma consulta
    • Melhor que subconsultas para lógica complexa
-- CTE básico
WITH high_earners AS (
    SELECT employee_id, first_name, salary
    FROM employees
    WHERE salary > 80000
)
SELECT * FROM high_earners
WHERE first_name LIKE 'J%';

-- CTEs múltiplas
WITH 
sales_summary AS (
    SELECT 
        product_id,
        SUM(quantity) AS total_quantity,
        SUM(amount) AS total_revenue
    FROM sales
    GROUP BY product_id
),
product_info AS (
    SELECT product_id, product_name, category
    FROM products
)
SELECT 
    p.product_name,
    p.category,
    s.total_quantity,
    s.total_revenue
FROM sales_summary s
JOIN product_info p ON s.product_id = p.product_id
ORDER BY s.total_revenue DESC;

-- CTE recursiva (hierarquia organizacional)
WITH RECURSIVE employee_hierarchy AS (
    -- Caso base: funcionários de nível superior
    SELECT employee_id, first_name, manager_id, 1 AS level
    FROM employees
    WHERE manager_id IS NULL
    
    UNION ALL
    
    -- Caso recursivo: funcionários reportando ao nível anterior
    SELECT e.employee_id, e.first_name, e.manager_id, eh.level + 1
    FROM employees e
    JOIN employee_hierarchy eh ON e.manager_id = eh.employee_id
)
SELECT * FROM employee_hierarchy
ORDER BY level, employee_id;

Raridade: Comum Dificuldade: Média


4. Explique a diferença entre UNION e UNION ALL.

Resposta: Ambos combinam resultados de múltiplas instruções SELECT.

  • UNION:
    • Remove linhas duplicadas
    • Mais lento (requer ordenação/comparação)
    • Use quando duplicatas devem ser eliminadas
  • UNION ALL:
    • Mantém todas as linhas, incluindo duplicatas
    • Mais rápido (sem deduplicação)
    • Use quando duplicatas são aceitáveis ou impossíveis
-- UNION - remove duplicatas
SELECT customer_id FROM orders_2022
UNION
SELECT customer_id FROM orders_2023;
-- Resultado: IDs de clientes únicos de ambos os anos

-- UNION ALL - mantém duplicatas
SELECT customer_id FROM orders_2022
UNION ALL
SELECT customer_id FROM orders_2023;
-- Resultado: todos os IDs de clientes (pode ter duplicatas)

-- Comparação de desempenho
-- UNION ALL é mais rápido quando você sabe que não há duplicatas
SELECT 'Q1' AS quarter, revenue FROM q1_sales
UNION ALL
SELECT 'Q2', revenue FROM q2_sales
UNION ALL
SELECT 'Q3', revenue FROM q3_sales
UNION ALL
SELECT 'Q4', revenue FROM q4_sales;

Raridade: Comum Dificuldade: Fácil


5. Como você lida com valores NULL em SQL?

Resposta: NULL representa dados ausentes ou desconhecidos e requer tratamento especial.

-- Verifique se há NULL
SELECT * FROM employees
WHERE manager_id IS NULL;  -- Não: = NULL

-- COALESCE: Retorna o primeiro valor não NULL
SELECT 
    first_name,
    COALESCE(middle_name, '') AS middle_name,
    COALESCE(bonus, 0) AS bonus
FROM employees;

-- NULLIF: Retorna NULL se os valores forem iguais
SELECT 
    product_name,
    NULLIF(discount, 0) AS discount  -- NULL se o desconto for 0
FROM products;

-- NULL em cálculos (NULL se propaga)
SELECT 
    salary,
    bonus,
    salary + bonus AS total  -- NULL se o bônus for NULL
FROM employees;

-- Lidar com NULL em agregações
SELECT 
    department,
    COUNT(*) AS total_employees,
    COUNT(manager_id) AS employees_with_manager,  -- Exclui NULLs
    AVG(COALESCE(bonus, 0)) AS avg_bonus
FROM employees
GROUP BY department;

-- NULL em JOINs
SELECT e.first_name, d.department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.department_id
WHERE d.department_id IS NULL;  -- Funcionários sem departamento

Raridade: Muito Comum Dificuldade: Média


6. O que são subconsultas e quando você as usaria em vez de JOINs?

Resposta: Subconsultas são consultas aninhadas dentro de outra consulta.

  • Tipos:
    • Escalar: Retorna um único valor
    • Linha: Retorna uma única linha
    • Tabela: Retorna múltiplas linhas/colunas
  • Use Subconsultas quando:
    • Precisa filtrar com base em dados agregados
    • Verificando a existência (EXISTS)
    • Comparando com valores agregados
  • Use JOINs quando:
    • Precisa de colunas de várias tabelas
    • Melhor desempenho (geralmente)
-- Subconsulta escalar
SELECT first_name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);

-- Subconsulta correlacionada (executa para cada linha)
SELECT e1.first_name, e1.salary
FROM employees e1
WHERE e1.salary > (
    SELECT AVG(e2.salary)
    FROM employees e2
    WHERE e2.department = e1.department
);

-- EXISTS (eficiente para verificar a existência)
SELECT c.customer_name
FROM customers c
WHERE EXISTS (
    SELECT 1 FROM orders o
    WHERE o.customer_id = c.customer_id
    AND o.order_date > '2023-01-01'
);

-- IN com subconsulta
SELECT product_name
FROM products
WHERE product_id IN (
    SELECT DISTINCT product_id
    FROM sales
    WHERE sale_date > '2023-01-01'
);

-- Alternativa JOIN (geralmente mais rápido)
SELECT DISTINCT p.product_name
FROM products p
INNER JOIN sales s ON p.product_id = s.product_id
WHERE s.sale_date > '2023-01-01';

Raridade: Muito Comum Dificuldade: Média


Análise Estatística (4 Perguntas)

7. Como você realiza uma análise de coorte?

Resposta: A análise de coorte agrupa usuários por características compartilhadas e rastreia o comportamento ao longo do tempo.

  • Casos de Uso Comuns:
    • Retenção de clientes
    • Engajamento do usuário
    • Tendências de receita por período de aquisição
-- Análise de coorte: Retenção mensal
WITH user_cohorts AS (
    SELECT 
        user_id,
        DATE_TRUNC('month', first_purchase_date) AS cohort_month
    FROM users
),
user_activities AS (
    SELECT 
        user_id,
        DATE_TRUNC('month', activity_date) AS activity_month
    FROM activities
)
SELECT 
    uc.cohort_month,
    ua.activity_month,
    COUNT(DISTINCT ua.user_id) AS active_users,
    COUNT(DISTINCT ua.user_id) * 100.0 / 
        COUNT(DISTINCT uc.user_id) AS retention_rate
FROM user_cohorts uc
LEFT JOIN user_activities ua ON uc.user_id = ua.user_id
GROUP BY uc.cohort_month, ua.activity_month
ORDER BY uc.cohort_month, ua.activity_month;

-- Análise de coorte de receita
SELECT 
    cohort_month,
    months_since_cohort,
    SUM(revenue) AS cohort_revenue,
    AVG(revenue) AS avg_revenue_per_user
FROM (
    SELECT 
        DATE_TRUNC('month', u.signup_date) AS cohort_month,
        EXTRACT(MONTH FROM AGE(o.order_date, u.signup_date)) AS months_since_cohort,
        o.revenue,
        u.user_id
    FROM users u
    JOIN orders o ON u.user_id = o.user_id
) cohort_data
GROUP BY cohort_month, months_since_cohort
ORDER BY cohort_month, months_since_cohort;

Raridade: Comum Dificuldade: Difícil


8. Explique a análise de teste A/B e a significância estatística.

Resposta: O teste A/B compara duas versões para determinar qual tem melhor desempenho.

  • Métricas Chave:
    • Taxa de conversão
    • Significância estatística (p-valor < 0,05)
    • Intervalo de confiança
    • Tamanho da amostra
  • Processo:
    1. Defina a hipótese
    2. Determine o tamanho da amostra
    3. Execute o teste
    4. Analise os resultados
    5. Tome uma decisão
-- Análise dos resultados do teste A/B
WITH test_results AS (
    SELECT 
        variant,
        COUNT(*) AS visitors,
        SUM(CASE WHEN converted = 1 THEN 1 ELSE 0 END) AS conversions,
        SUM(CASE WHEN converted = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) AS conversion_rate
    FROM ab_test_data
    GROUP BY variant
)
SELECT 
    variant,
    visitors,
    conversions,
    ROUND(conversion_rate, 2) AS conversion_rate_pct,
    -- Calcula o lift
    ROUND((conversion_rate - LAG(conversion_rate) OVER (ORDER BY variant)) / 
          LAG(conversion_rate) OVER (ORDER BY variant) * 100, 2) AS lift_pct
FROM test_results;

-- Cálculo da significância estatística (teste qui-quadrado)
-- Normalmente feito em Python/R, mas pode calcular os componentes em SQL
SELECT 
    variant,
    conversions,
    visitors - conversions AS non_conversions,
    visitors
FROM ab_test_data
GROUP BY variant;

Raridade: Comum Dificuldade: Difícil


9. Como você calcula e interpreta percentis?

Resposta: Percentis dividem os dados em 100 partes iguais.

  • Percentis Comuns:
    • 25º (Q1), 50º (Mediana/Q2), 75º (Q3)
    • 90º, 95º, 99º para detecção de outliers
  • Casos de Uso:
    • Benchmarking de salários
    • Métricas de desempenho
    • Monitoramento de SLA
-- Calcula percentis
SELECT 
    PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY salary) AS p25,
    PERCENTILE_CONT(0.50) WITHIN GROUP (ORDER BY salary) AS median,
    PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY salary) AS p75,
    PERCENTILE_CONT(0.90) WITHIN GROUP (ORDER BY salary) AS p90,
    PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY salary) AS p95
FROM employees;

-- Percentil por grupo
SELECT 
    department,
    PERCENTILE_CONT(0.50) WITHIN GROUP (ORDER BY salary) AS median_salary,
    PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY salary) AS p75_salary
FROM employees
GROUP BY department;

-- Atribui classificação de percentil a cada linha
SELECT 
    employee_id,
    salary,
    PERCENT_RANK() OVER (ORDER BY salary) AS percentile_rank,
    NTILE(4) OVER (ORDER BY salary) AS quartile
FROM employees;

-- Intervalo Interquartil (IQR) para detecção de outliers
WITH quartiles AS (
    SELECT 
        PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY salary) AS q1,
        PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY salary) AS q3
    FROM employees
)
SELECT 
    e.*,
    CASE 
        WHEN e.salary < q.q1 - 1.5 * (q.q3 - q.q1) THEN 'Low Outlier'
        WHEN e.salary > q.q3 + 1.5 * (q.q3 - q.q1) THEN 'High Outlier'
        ELSE 'Normal'
    END AS outlier_status
FROM employees e
CROSS JOIN quartiles q;

Raridade: Comum Dificuldade: Média


10. O que é análise de séries temporais e como você lida com a sazonalidade?

Resposta: A análise de séries temporais examina pontos de dados coletados ao longo do tempo para identificar padrões.

  • Componentes:
    • Tendência: Direção de longo prazo
    • Sazonalidade: Padrões regulares (diários, semanais, anuais)
    • Cíclico: Flutuações irregulares
    • Aleatório: Ruído
  • Lidando com a Sazonalidade:
    • Médias móveis
    • Comparação ano a ano
    • Decomposição sazonal
    • Ajuste sazonal
-- Média móvel (suaviza a sazonalidade)
SELECT 
    date,
    sales,
    AVG(sales) OVER (
        ORDER BY date 
        ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
    ) AS moving_avg_7day
FROM daily_sales;

-- Comparação ano a ano
SELECT 
    EXTRACT(MONTH FROM sale_date) AS month,
    EXTRACT(YEAR FROM sale_date) AS year,
    SUM(amount) AS monthly_sales,
    LAG(SUM(amount), 12) OVER (ORDER BY sale_date) AS same_month_last_year,
    (SUM(amount) - LAG(SUM(amount), 12) OVER (ORDER BY sale_date)) / 
        LAG(SUM(amount), 12) OVER (ORDER BY sale_date) * 100 AS yoy_growth
FROM sales
GROUP BY EXTRACT(MONTH FROM sale_date), EXTRACT(YEAR FROM sale_date);

-- Cálculo do índice sazonal
WITH monthly_avg AS (
    SELECT 
        EXTRACT(MONTH FROM date) AS month,
        AVG(sales) AS avg_sales
    FROM daily_sales
    GROUP BY EXTRACT(MONTH FROM date)
),
overall_avg AS (
    SELECT AVG(sales) AS overall_avg
    FROM daily_sales
)
SELECT 
    m.month,
    m.avg_sales,
    o.overall_avg,
    m.avg_sales / o.overall_avg AS seasonal_index
FROM monthly_avg m
CROSS JOIN overall_avg o
ORDER BY m.month;

Raridade: Média Dificuldade: Difícil


Modelagem de Dados e ETL (4 Perguntas)

11. Explique esquema estrela vs esquema floco de neve.

Resposta: Ambos são padrões de design de data warehouse.

Loading diagram...
  • Esquema Estrela:
    • Tabela de fatos cercada por tabelas de dimensão desnormalizadas
    • Consultas simples (menos joins)
    • Desempenho de consulta mais rápido
    • Mais armazenamento (dados redundantes)
  • Esquema Floco de Neve:
    • Tabelas de dimensão normalizadas
    • Menos armazenamento (sem redundância)
    • Consultas mais complexas (mais joins)
    • Desempenho de consulta mais lento

Raridade: Comum Dificuldade: Média


12. O que é ETL e como você projeta um pipeline de ETL?

Resposta: ETL (Extrair, Transformar, Carregar) move dados de fontes para o destino.

  • Extrair: Puxe dados de fontes (bancos de dados, APIs, arquivos)
  • Transformar: Limpe, valide, agregue, enriqueça
  • Carregar: Insira no destino (data warehouse, banco de dados)
  • Considerações de Design:
    • Carga Incremental vs Carga Completa
    • Tratamento de erros e registro
    • Validação de dados
    • Otimização de desempenho
    • Agendamento e orquestração
-- Exemplo de carga incremental
-- Extrair: Obtenha registros novos/atualizados
CREATE TEMP TABLE staging_customers AS
SELECT *
FROM source_customers
WHERE updated_at > (
    SELECT MAX(last_updated) 
    FROM target_customers
);

-- Transformar: Limpe e padronize
UPDATE staging_customers
SET 
    email = LOWER(TRIM(email)),
    phone = REGEXP_REPLACE(phone, '[^0-9]', '', 'g'),
    country = UPPER(country);

-- Carregar: Upsert no destino
INSERT INTO target_customers
SELECT * FROM staging_customers
ON CONFLICT (customer_id) 
DO UPDATE SET
    email = EXCLUDED.email,
    phone = EXCLUDED.phone,
    updated_at = EXCLUDED.updated_at;

-- Registre a execução do ETL
INSERT INTO etl_log (table_name, records_processed, run_date)
VALUES ('customers', (SELECT COUNT(*) FROM staging_customers), CURRENT_TIMESTAMP);

Raridade: Muito Comum Dificuldade: Difícil


13. Como você garante a qualidade dos dados?

Resposta: A qualidade dos dados garante que os dados sejam precisos, completos e confiáveis.

  • Dimensões:
    • Precisão: Valores corretos
    • Completude: Sem dados ausentes
    • Consistência: Mesmo em todos os sistemas
    • Pontualidade: Atualizado
    • Validade: Conforme as regras
  • Técnicas:
    • Regras de validação de dados
    • Testes automatizados
    • Criação de perfil de dados
    • Detecção de anomalias
    • Auditorias regulares
-- Verificações de qualidade de dados
-- 1. Verifique se há NULLs em campos obrigatórios
SELECT COUNT(*) AS null_emails
FROM customers
WHERE email IS NULL;

-- 2. Verifique se há duplicatas
SELECT email, COUNT(*) AS duplicate_count
FROM customers
GROUP BY email
HAVING COUNT(*) > 1;

-- 3. Verifique se há formatos inválidos
SELECT COUNT(*) AS invalid_emails
FROM customers
WHERE email NOT LIKE '%@%.%';

-- 4. Verifique a integridade referencial
SELECT COUNT(*) AS orphaned_orders
FROM orders o
LEFT JOIN customers c ON o.customer_id = c.customer_id
WHERE c.customer_id IS NULL;

-- 5. Verifique se há outliers
SELECT COUNT(*) AS outlier_count
FROM orders
WHERE amount < 0 OR amount > 100000;

-- 6. Verifique o frescor dos dados
SELECT 
    MAX(updated_at) AS last_update,
    EXTRACT(EPOCH FROM (CURRENT_TIMESTAMP - MAX(updated_at))) / 3600 AS hours_since_update
FROM customers;

-- Crie um painel de qualidade de dados
CREATE VIEW data_quality_metrics AS
SELECT 
    'customers' AS table_name,
    COUNT(*) AS total_records,
    SUM(CASE WHEN email IS NULL THEN 1 ELSE 0 END) AS null_emails,
    SUM(CASE WHEN email NOT LIKE '%@%.%' THEN 1 ELSE 0 END) AS invalid_emails,
    MAX(updated_at) AS last_updated
FROM customers;

Raridade: Muito Comum Dificuldade: Média


14. O que é normalização de dados e quando você desnormalizaria?

Resposta:

  • Normalização: Organizar dados para reduzir a redundância
    • 1NF, 2NF, 3NF, BCNF
    • Benefícios: Integridade dos dados, menos armazenamento
    • Desvantagem: Mais joins, consultas mais lentas
  • Desnormalização: Adicionar intencionalmente redundância
    • Benefícios: Consultas mais rápidas, SQL mais simples
    • Desvantagens: Mais armazenamento, anomalias de atualização
    • Use para: Data warehouses, relatórios, sistemas de leitura pesada
-- Normalizado (3NF)
-- Tabela de pedidos
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    product_id INT,
    quantity INT
);

-- Requer joins para relatórios
SELECT 
    c.customer_name,
    p.product_name,
    o.quantity
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
JOIN products p ON o.product_id = p.product_id;

-- Desnormalizado (para relatórios)
CREATE TABLE orders_denormalized (
    order_id INT PRIMARY KEY,
    customer_id INT,
    customer_name VARCHAR(100),  -- Desnormalizado
    customer_email VARCHAR(100),  -- Desnormalizado
    product_id INT,
    product_name VARCHAR(100),  -- Desnormalizado
    product_category VARCHAR(50),  -- Desnormalizado
    quantity INT,
    unit_price DECIMAL(10,2)  -- Desnormalizado
);

-- Consulta mais simples e rápida
SELECT customer_name, product_name, quantity
FROM orders_denormalized;

Raridade: Comum Dificuldade: Média


Painel e Visualização (3 Perguntas)

15. Como você projeta um painel eficaz?

Resposta: Painéis eficazes fornecem insights acionáveis ​​de relance.

  • Princípios:
    • Conheça seu público: Executivos vs analistas
    • Concentre-se em KPIs: As métricas mais importantes primeiro
    • Use visualizações apropriadas: Gráfico certo para o tipo de dados
    • Mantenha a consistência: Cores, fontes, layout
    • Habilite a interatividade: Filtros, drill-downs
    • Otimize o desempenho: Pré-agregue dados
    • Conte uma história: Fluxo lógico
  • Layout:
    • Topo: Principais métricas/KPIs
    • Meio: Tendências e comparações
    • Inferior: Detalhes e detalhamentos

Raridade: Muito Comum Dificuldade: Média


16. Como você otimiza o desempenho do painel?

Resposta: Painéis lentos frustram os usuários e reduzem a adoção.

  • Técnicas de Otimização:
    • Agregação de dados: Pré-calcule as métricas
    • Visualizações materializadas: Armazene os resultados da consulta
    • Atualização incremental: Atualize apenas os novos dados
    • Limite os dados: Use filtros, intervalos de datas
    • Otimize as consultas: Índices, SQL eficiente
    • Extraia dados: Mova para uma fonte de dados mais rápida
    • Reduza as visualizações: Menos gráficos por painel
    • Use extrações: Extrações do Tableau/Power BI
-- Crie uma visualização materializada para o painel
CREATE MATERIALIZED VIEW daily_sales_summary AS
SELECT 
    DATE_TRUNC('day', order_date) AS date,
    product_category,
    region,
    COUNT(*) AS order_count,
    SUM(amount) AS total_revenue,
    AVG(amount) AS avg_order_value
FROM orders
GROUP BY DATE_TRUNC('day', order_date), product_category, region;

-- Crie um índice para filtragem mais rápida
CREATE INDEX idx_daily_sales_date ON daily_sales_summary(date);

-- Atualize a visualização materializada (tarefa agendada)
REFRESH MATERIALIZED VIEW CONCURRENTLY daily_sales_summary;

-- Consulta do painel (rápida, usa dados pré-agregados)
SELECT * FROM daily_sales_summary
WHERE date >= CURRENT_DATE - INTERVAL '30 days'
AND region = 'North America';

Raridade: Comum Dificuldade: Média


17. Quais métricas você rastrearia para diferentes funções de negócios?

Resposta: Departamentos diferentes precisam de métricas diferentes.

  • Vendas:
    • Receita, taxa de conversão, tamanho médio do negócio
    • Duração do ciclo de vendas, taxa de ganho
    • Custo de aquisição de clientes (CAC)
  • Marketing:
    • ROI, custo por lead, taxa de conversão de lead
    • Tráfego do site, taxa de engajamento
    • Valor vitalício do cliente (CLV)
  • Operações:
    • Tempo de atendimento do pedido, taxa de erro
    • Giro de estoque, utilização da capacidade
    • Taxa de entrega no prazo
  • Finanças:
    • Margem de lucro, fluxo de caixa, taxa de queima
    • Crescimento da receita, EBITDA
    • Envelhecimento de contas a receber
  • Sucesso do Cliente:
    • Satisfação do cliente (CSAT), Net Promoter Score (NPS)
    • Taxa de rotatividade, taxa de retenção
    • Tempo de resolução do ticket de suporte

Raridade: Comum Dificuldade: Fácil


Estratégia de Negócios e Comunicação (3 Perguntas)

18. Como você prioriza projetos de análise?

Resposta: A priorização garante o máximo impacto nos negócios.

  • Estrutura:
    • Impacto: Valor potencial para os negócios
    • Esforço: Tempo e recursos necessários
    • Urgência: Sensibilidade ao tempo
    • Alinhamento das partes interessadas: Apoio executivo
  • Matriz de Priorização:
    • Alto Impacto, Baixo Esforço: Faça primeiro
    • Alto Impacto, Alto Esforço: Planeje cuidadosamente
    • Baixo Impacto, Baixo Esforço: Ganhos rápidos
    • Baixo Impacto, Alto Esforço: Evite
  • Perguntas a Fazer:
    • Qual problema de negócios isso resolve?
    • Qual é o ROI esperado?
    • Quem são as partes interessadas?
    • Quais dados estão disponíveis?
    • Quais são as dependências?

Raridade: Comum Dificuldade: Média


19. Como você lida com requisitos conflitantes das partes interessadas?

Resposta: Gerenciar as partes interessadas é crucial para analistas seniores.

  • Abordagem:
    • Entenda as necessidades: Faça perguntas esclarecedoras
    • Encontre um terreno comum: Objetivos compartilhados
    • Priorize: Com base no impacto nos negócios
    • Comunique as compensações: Explique as restrições
    • Proponha alternativas: Soluções ganha-ganha
    • Escale se necessário: Obtenha alinhamento executivo
    • Documente as decisões: Registro claro
  • Exemplo:
    • O marketing deseja um painel em tempo real
    • A TI diz que o tempo real é muito caro
    • Solução: Quase em tempo real (atualização de 15 minutos) equilibra as necessidades e o custo

Raridade: Comum Dificuldade: Média


20. Como você mede o sucesso do seu trabalho de análise?

Resposta: Demonstrar valor é essencial para o crescimento na carreira.

  • Métricas:
    • Impacto nos Negócios:
      • Aumento da receita
      • Redução de custo
      • Melhoria de eficiência
      • Melhor tomada de decisão
    • Adoção:
      • Uso do painel
      • Distribuição do relatório
      • Feedback das partes interessadas
    • Qualidade:
      • Precisão dos dados
      • Pontualidade
      • Capacidade de ação dos insights
  • Documentação:
    • Rastreie projetos e resultados
    • Quantifique o impacto quando possível
    • Colete depoimentos
    • Apresente estudos de caso

Raridade: Média Dificuldade: Média


Newsletter subscription

Dicas de carreira semanais que realmente funcionam

Receba as últimas ideias diretamente na sua caixa de entrada

Decorative doodle

Sua Próxima Entrevista Está a Apenas um Currículo de Distância

Crie um currículo profissional e otimizado em minutos. Não são necessárias habilidades de design—apenas resultados comprovados.

Criar meu currículo

Compartilhar esta publicação

Supere a Taxa de Rejeição de 75% do ATS

3 em cada 4 currículos nunca chegam a um olho humano. Nossa otimização de palavras-chave aumenta sua taxa de aprovação em até 80%, garantindo que os recrutadores realmente vejam seu potencial.