Voltar para a lista de artigos Artigos
16 minutos de leitura

Perguntas da entrevista sobre SQL na Meta

As entrevistas de SQL da Meta são difíceis e você precisa aprimorar suas habilidades se quiser conseguir um emprego prestigioso e bem remunerado. Continue lendo para saber que tipo de perguntas de entrevista sobre SQL podem ser feitas em uma Meta, como se preparar melhor e como se destacar da multidão.

A Meta é uma empresa altamente orientada por dados, que utiliza uma ampla variedade de tecnologias de banco de dados. O MySQL é seu principal banco de dados, mas eles também têm bancos de dados para fins especiais para vários aplicativos.

Qualquer que seja a função para a qual esteja se candidatando, é provável que você tenha alguma interação com bancos de dados. É mais provável que a Meta inclua perguntas relacionadas a SQL nas entrevistas do que a maioria das empresas.

Se estiver pensando em se candidatar a um emprego na Meta, vale a pena dar uma olhada em exemplos de perguntas de entrevista sobre SQL da Meta e praticar o máximo que puder.

Se você ainda não está familiarizado com SQL, talvez queira se inscrever em nossa trilha de aprendizado SQL de A a Z. Esse conjunto de cursos leva você do nível iniciante até tópicos avançados de SQL. Você ganhará experiência prática trabalhando em mais de 700 exercícios guiados, além de se familiarizar com os conceitos de bancos de dados relacionais.

Se você tem alguma experiência com SQL, mas ainda não usou muitos de seus recursos avançados, nosso cursoSQL Avançado pode ser mais adequado para você. Em todas as nossas trilhas e cursos, você acessará um banco de dados por meio do navegador da Internet; não é necessário fazer download ou instalar nada. Além disso, há ajuda disponível em todas as etapas.

Agora, vamos supor que você saiba um pouco de SQL e esteja interessado em trabalhar na Meta. O que você deve esperar durante uma entrevista de emprego no Meta SQL?

O processo de recrutamento da Meta

Os recrutadores da Meta avaliarão sua formação técnica, suas habilidades de resolução de problemas e sua capacidade de trabalhar bem em equipe. É provável que todo o processo leve de dois a três meses e envolva várias rodadas de entrevistas.

Seu primeiro passo é criar um perfil de carreira na Meta. Se ainda não tiver feito isso, você pode visitar a página Criar um perfil de carreira para começar. No seu perfil, você pode ver as vagas recomendadas e criar alertas de vagas. Você também encontrará uma série de recursos úteis, incluindo guias de preparação para entrevistas e exercícios práticos.

Depois de se candidatar a um emprego, você receberá materiais de preparação específicos para a função por meio do seu perfil.

Vejamos os estágios de entrevista pelos quais você passará depois de enviar uma candidatura a uma vaga de emprego.

Chamada inicial com um recrutador

  • O que esperar: Você será questionado sobre seu histórico, experiência e objetivos. Também será perguntado por que você quer trabalhar na Meta. O recrutador lhe dará mais informações sobre a função e a equipe com a qual você trabalhará.
  • Como se preparar: Assim que você se candidatar à vaga, reserve um tempo para:
  • Certificar-se de que você está familiarizado com a descrição do cargo.
  • Revisar sua experiência relevante e pensar em como apresentá-la da melhor forma possível ao recrutador.
  • Fazer uma lista de perguntas a serem feitas ao recrutador.

Primeira entrevista

  • O que esperar: Essa entrevista pode ser feita por telefone ou (mais provavelmente) em uma plataforma de reuniões on-line. Você conhecerá alguns membros da equipe da Meta e saberá mais sobre a função e com quem trabalhará.
  • Como se preparar: O recrutador o ajudará a se preparar para essa entrevista e fornecerá todos os materiais necessários.

Entrevista de codificação

  • O que esperar: Se você se candidatou a funções como analista de dados ou analista de marketing, a linguagem de codificação pode ser SQL. A entrevista terá duração de 45 minutos, dos quais 35 são reservados para você resolver duas perguntas de codificação de média a difícil. Essa entrevista pode ser realizada pessoalmente ou on-line.
  • Como se preparar: O recrutador fornecerá material que o ajudará a se preparar para a entrevista. A melhor maneira de se preparar para essa entrevista é praticar, praticar e praticar ainda mais! Você também precisará se certificar de que está bem familiarizado com a linguagem de programação de destino.
  • O que o entrevistador está procurando: Você será avaliado quanto a:
  • Conhecimento técnico.
  • Habilidades de resolução de problemas.
  • Estilo de comunicação.
  • Capacidade de verificar sua solução com dados de teste relevantes.

Dicas e sugestões

O entrevistador está avaliando suas habilidades de comunicação, portanto, certifique-se de:

  • Faça perguntas antes de começar, para ter certeza de que entendeu o problema corretamente.
  • Esteja preparado para explicar ao entrevistador por que você escolheu essa abordagem para o problema.
  • Ouça com atenção os comentários do entrevistador: eles podem estar sugerindo que você está adotando a abordagem errada.
  • Pergunte ao entrevistador se não tiver certeza de que pode usar uma funcionalidade específica (por exemplo, funções não padrão) em sua solução.

Além disso, lembre-se disso:

  • O entrevistador também está tentando avaliar a maneira como você aborda os problemas, portanto, pense em voz alta enquanto trabalha.
  • Esteja ciente dos problemas de desempenho - por exemplo, é provável que sua solução seja lenta ou use muito espaço em tabelas temporárias?
  • Você não digitará sua solução em um banco de dados, portanto, não terá ajuda com a sintaxe e não poderá fazer testes. Se a entrevista for presencial, você escreverá a solução em um quadro branco; caso contrário, trabalhará em um editor de texto simples.
  • A sintaxe perfeita é menos importante do que demonstrar que você pode resolver problemas complexos.
  • Se você puder ver mais de uma solução para o problema, pergunte ao entrevistador se não há problema em escolher a que você preferir.
  • Se você já tiver visto a pergunta antes, diga isso. O entrevistador quer avaliar como você lida com um novo problema; será óbvio para ele se você já souber a resposta.

Por fim, não se esqueça de revisar os dados de amostra que você usará para testar sua solução.

Entrevista de design

Isso pode não se aplicar a algumas funções - por exemplo, os analistas de dados podem ter uma entrevista relacionada a conhecimentos estatísticos. Mas, nessa entrevista, você poderá ser solicitado a criar um projeto de alto nível para um aplicativo típico do mundo real.

Talvez seja necessário demonstrar sua compreensão dos conceitos de RDBMS, portanto, certifique-se de estar atualizado nessa área.

Entrevista comportamental

Esta entrevista avalia se você será uma boa opção para a equipe.

Quais funções na Meta exigem conhecimento de SQL?

A maioria das funções na Meta envolve uma certa quantidade de interações com bancos de dados. Aqui estão algumas das funções em que você poderá se deparar com perguntas de entrevista sobre SQL:

  • Cientista de dados
  • Analista de dados
  • Engenheiro de software
  • Analista de produtos
  • Analista de negócios
  • Engenheiro de aprendizado de máquina
  • Analista de marketing
  • Administrador de banco de dados
  • Gerente de programa técnico
  • Analista de crescimento

Preparando-se para sua entrevista com o Meta SQL

Antes de começar a se candidatar a um emprego na Meta, você deve se familiarizar com os produtos da empresa - por exemplo, Facebook, WhatsApp, Messenger e Instagram. Tente visualizar o que pode estar acontecendo nos bastidores e quais dados subjacentes esses produtos usam.

Leia sobre a cultura e as metas da empresa e faça o download do guia de preparação para entrevistas da Meta. Você também pode assistir ao vídeo de entrevista de codificação da Meta para ter uma ideia melhor do que esperar.

Você precisará de muita prática com o tipo de perguntas que podem ser feitas em uma entrevista com a Meta. Tente trabalhar apenas com um editor de texto simples para digitar suas respostas e pensar em voz alta enquanto resolve os problemas. Isso o ajudará a se acostumar com essa parte da entrevista técnica.

Antes de começar a praticar, talvez você queira fazer nossa Avaliação de habilidades em SQL para ter uma ideia melhor das áreas em que precisa melhorar. Também temos várias planilhas gratuitas para download que podem ser usadas para ajudá-lo a revisar seus conhecimentos:

Perguntas da entrevista sobre Meta SQL: Teoria

Vejamos agora algumas perguntas práticas que lhe darão uma ideia do que esperar em uma entrevista sobre Meta SQL. Elas são divididas em dois tipos: teóricas e práticas. Você pode receber perguntas teóricas durante uma das entrevistas verbais. Ou os tópicos podem surgir quando você estiver discutindo suas soluções na entrevista de design. As perguntas práticas são semelhantes aos problemas que você deve resolver durante a entrevista de codificação.

Pergunta 1: Cláusulas JOIN em SQL

Qual é a diferença entre um INNER JOIN e um OUTER JOIN no SQL?

Um INNER JOIN retorna somente as linhas que são correspondentes em ambas as tabelas. Um OUTER JOIN inclui linhas não correspondentes no resultado de acordo com as seguintes regras:

  • LEFT JOIN retorna todas as linhas da tabela da esquerda junto com a linha correspondente da tabela da direita ou nulos.
  • RIGHT JOIN retorna todas as linhas da tabela da direita junto com a linha correspondente da tabela da esquerda ou nulos.
  • FULL JOIN retorna todas as linhas de ambas as tabelas.

Pergunta 2: WHERE vs. HAVING

Qual é a diferença's a diferença entre o uso da cláusula WHERE e da cláusula HAVING?

A cláusula WHERE filtra linhas individuais para determinadas condições, enquanto a cláusula HAVING filtra grupos de linhas por condições agregadas. Portanto, HAVING só pode ser usada com a cláusula GROUP BY.

Pergunta 3: Restrições

Descreva três tipos de restrições SQL.

As restrições impõem regras que se aplicam quando as linhas estão sendo inseridas, atualizadas ou excluídas no banco de dados; elas são definidas quando uma tabela é criada. Há vários tipos de restrições, portanto, você pode escolher quaisquer três das seguintes:

  • NOT NULL especifica que uma coluna não pode conter nulos.
  • UNIQUE especifica que os valores dessa coluna não podem ser duplicados na tabela.
  • PRIMARY KEY especifica que essa coluna será usada como chave primária da tabela, ou seja, os valores devem ser exclusivos e não nulos para que possam identificar cada linha.
  • FOREIGN KEY especifica que essa coluna será vinculada à chave primária em outra tabela. Isso reforça a integridade referencial.
  • CHECK define uma condição para permitir apenas valores específicos nessa coluna.
  • DEFAULT especifica um valor que será usado se nenhum valor for especificado quando os dados forem inseridos nessa coluna.
  • AUTO_INCREMENT especifica que a coluna será automaticamente definida para o próximo número em sequência em uma inserção.

Pergunta 4: Transações

Explique o que significa uma transação no SQL. O que acontecerá se o servidor travar na metade de uma transação?

Uma transação é um grupo de atualizações que devem ser executadas como uma unidade: todas as atualizações devem ser executadas ou nenhuma delas. Um exemplo poderia ser a compra de um cliente, que atualiza a tabela customer tabela, a tabela sales tabela, a tabela stock tabela e o livro-caixa. Todas elas devem ser atualizadas com êxito para que a transação seja bem-sucedida.

Depois que todos forem atualizados, você pode confirmar a transação e o banco de dados será permanentemente atualizado. Ou você pode reverter a transação e, nesse caso, nenhuma alteração será feita no banco de dados. Se o sistema travar, nenhuma das atualizações se tornará permanente e o banco de dados não refletirá a transação.

Pergunta 5: Procedimentos armazenados vs. funções

Qual é a diferença entre um procedimento armazenado e uma função no SQL? Dê um exemplo de quando cada um deles pode ser usado.

Um procedimento armazenado é um conjunto de instruções SQL predefinidas que executam uma tarefa. Os procedimentos armazenados podem, opcionalmente, retornar um ou mais valores e podem receber parâmetros. Eles são chamados usando a instrução CALL. Os exemplos podem incluir a extração de dados para um relatório ou a execução de procedimentos de compensação de fim de ano.

As funções também são um conjunto de instruções SQL predefinidas, mas sempre retornam exatamente um objeto. O objeto pode ser um valor ou uma tabela. As funções opcionalmente recebem parâmetros e podem ser usadas em instruções SQL da mesma forma que as colunas do banco de dados. Os exemplos incluem a realização de cálculos para incorporar regras comerciais e a realização de formatação personalizada.

Pergunta 6: Injeção de SQL

O que éé injeção de SQL (SQLi)? Descreva duas maneiras pelas quais um programador pode se proteger contra um ataque de SQLi.

A injeção de SQL é uma forma de injetar código malicioso em uma instrução SQL, geralmente para atualizar o banco de dados de forma fraudulenta.

Imagine um programa que constrói uma instrução SQL como uma string de texto. Quando os clientes fazem solicitações on-line, eles fornecem detalhes que serão usados no código SQL.

Como um exemplo muito simples, o programa pode criar uma instrução SQL a partir do texto SELECT * FROM customer WHERE account_no =   sufixado pelo número da conta inserido pelo cliente. Se o cliente inserir o número da conta como 12404; UPDATE customer SET balance_owing = 0 WHERE account_no = 12404, a instrução de atualização maliciosa será injetada no banco de dados.

Duas maneiras de um programador se proteger contra isso são:

  • Executar algumas verificações na instrução SQL resultante antes de executá-la.
  • Usar instruções preparadas, de modo que o número da conta seja usado como parâmetro e não para construir a instrução.

Perguntas da entrevista sobre Meta SQL: Prática

Para fins das perguntas práticas da entrevista sobre SQL, vamos supor um banco de dados que contém as seguintes tabelas e colunas.

Table nameUsersPostsEventevent_activityinteractions
containsuser_idpost_idevent_idevent_act_idinter_id
thenameuser_idHostevent_idaction
rows:locationdatetime_posteddatetime_eventuser_iduser_id
date_joineddetailsDetailsdatetime_acttarget_type
response_typetarget_id

Pergunta 1: Estatísticas de uso

Calcule a porcentagem de usuários que não postaram este ano.

Refletindo sobre o assunto

Você poderia abordar essa questão de várias maneiras diferentes. A mais simples provavelmente seria usar uma expressão de tabela comum (CTE) para contar o número de usuários distintos na tabela posts em que a parte do ano da data é a mesma que a parte do ano da data atual.

Em seguida, você pode escrever uma consulta simples para contar o número de usuários na tabela users juntá-la à tabela CTE e fazer um cálculo para obter a porcentagem.

Exemplo de resposta

WITH posting_users AS 
(
  SELECT 
    COUNT(DISTINCT user_id) AS posting_users 
  FROM posts
  WHERE year(datetime_posted) = year(current_date)
)
SELECT 
  100 - (posting_users / COUNT(*) * 100) AS percent_inactive
FROM users 
JOIN posting_users;

Pergunta 2: Identificar hosts de eventos ativos

Liste o usuário ID do usuário, nome do usuário, número de eventos e o número total de participantes do evento para todos os usuários que agendaram mais de 10 eventos este ano.

Informação adicional: As aceitações são linhas na tabela event_activity que têm o tipo de resposta "Going".

O host na tabela events pode ser comparado com o ID do usuário na tabela users para encontrar o usuário que agendou o evento.

Refletindo sobre o assunto

Você precisará unir a tabela event a tabela event_activity e a tabela users para obter todas as informações corretas. A tabela event_activity deve usar um LEFT JOIN, já que você não foi instruído a excluir eventos que não têm participantes. Essa união deve incluir a condição de que a resposta deve ser "Going" (Indo).

Agrupando pelo host, você pode incluir uma contagem distinta do ID do evento para obter o número de eventos e uma contagem do user_id na tabela event_activity para obter o número de participantes.

Você precisará incluir uma cláusula HAVING para filtrar pelo número de eventos.

Exemplo de resposta

SELECT 
  host, 
  name,  
  COUNT(DISTINCT e.event_id), 
  COUNT(a.user_id) AS attendees
FROM event e
JOIN users u ON u.user_id = host
LEFT JOIN event_activity a 
  ON e.event_id = a.event_id
  AND response_type = 'Going'
GROUP BY host, name
HAVING COUNT(DISTINCT e.event_id) > 10
ORDER BY name

Pergunta 3: Encontre os principais usuários avançados

Encontre os 10 principais usuários avançados (classificados pelo número total de curtidas em suas publicações) e liste sua classificação, ID de usuário, nome e número total de curtidas.

Informações adicionais: Os usuários avançados são definidos como usuários que fizeram mais de 500 publicações este ano e têm uma média de mais de 150 curtidas por publicação.

As curtidas nas publicações são registradas na tabela interactions com action contendo "Like" e target_type contendo "Post". O ID de destino pode ser usado para unir-se à tabela posts na tabela com o ID do post.

Pensando bem

Primeiro, você precisará encontrar o número de publicações e o número de curtidas de cada usuário para este ano. Você poderia fazer isso com um CTE.

Na consulta principal, você pode unir o CTE à tabela de usuários para obter o nome do usuário. Filtre o CTE para extrair apenas os usuários avançados.

Você pode usar a função de janela RANK() para classificar os usuários por número de curtidas e usar a cláusula LIMIT para limitar os resultados aos 10 principais usuários avançados.

Exemplo de resposta

WITH user_posts AS
(
  SELECT p.user_id,  COUNT(DISTINCT post_id) AS num_posts, 
  COUNT(inter_id) AS likes
  FROM posts p
  LEFT JOIN interactions ON post_id = target_id
    AND target_type = 'POST'
    AND action = 'Like'
  WHERE year(datetime_posted) = year(current_date)
  GROUP BY user_id
)
SELECT 
  RANK() OVER (ORDER BY likes DESC) AS position,
  u.user_id, 
  name, 
  likes
FROM users u
JOIN user_posts p ON u.user_id = p.user_id
WHERE num_posts > 500 
  AND likes/num_posts > 150
LIMIT 10;

Pergunta 4: Analisar a atividade do usuário ano a ano

Nos últimos 5 anos, compare o número de usuários ativos ano a ano. Mostre o ano, o total de usuários ativos e a mudança em relação ao ano anterior.

Informações adicionais: Os usuários ativos fizeram pelo menos uma publicação durante o ano.

Refletindo sobre o assunto

Você precisará extrair uma contagem do número de usuários por ano da tabela posts da tabela. Para facilitar a leitura, você pode fazer isso como um CTE. Em seguida, você precisará usar a função de janela LAG() para comparar os resultados ano a ano.

Exemplo de resposta

WITH activity AS
(
  SELECT year(datetime_posted) AS year, 
  COUNT(distinct user_id) AS active_users
  FROM posts 
  WHERE year(current_date) - year(datetime_posted) < 6
  GROUP BY year(datetime_posted)
)
SELECT 
  year, 
  active_users,
  (active_users - 
     LAG(active_users) OVER (ORDER BY year) ) * 100/active_users AS percentage_change
FROM activity;

Como encontrar recursos para sua preparação para a entrevista com o Meta SQL

A maneira mais importante de se preparar é resolver uma grande variedade de problemas práticos. Seu objetivo deve ser resolver com confiança duas questões de dificuldade média a alta em 35 minutos.

Lembre-se de pensar em voz alta enquanto trabalha em sua solução. Use um editor de texto ou caneta e papel para desenvolver sua solução e simular a situação da entrevista. Obviamente, você pode testar suas soluções em um banco de dados real depois para ter certeza de que funcionam.

Na entrevista, você provavelmente usará o coderpad.io, portanto, vale a pena testá-lo com antecedência.

Reserve um tempo para explorar o centro de preparação em seu perfil de carreira na Meta. Você encontrará muitos materiais úteis, inclusive quebra-cabeças de codificação que podem ser usados para praticar.

LearnSQL.com.br O site Meta.io tem vários recursos úteis para prática e entrevistas:

Talvez o recurso de prática mais valioso seja o Advanced Practice Track do site LearnSQL.com.br, onde você pode trabalhar com centenas de exemplos realistas. Você pode testar suas soluções em um banco de dados real e obter dicas e sugestões quando tiver dificuldades.

Comece hoje mesmo e seja um craque na entrevista!