Pergunta de entrevista para Desenvolvedor Full Stack

Desenhe um sistema de notificações que envia e-mails e alimenta um feed dentro do app.

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

Grave a notificação em uma tabela como fonte da verdade, depois enfileire um job de entrega por canal para um provedor de e-mail com problema nunca bloquear o feed no app. Faça os jobs idempotentes e com retentativas em backoff exponencial até uma fila de mensagens mortas. Sirva o feed a partir daquela tabela, empurrando atualizações por socket ou fazendo poll no foco. Adicione preferências por usuário e agrupamento em resumo para ninguém receber vinte e-mails por hora.

Por que os entrevistadores perguntam isso

Esta é uma pergunta de design que toca modelagem de dados, filas, falha de terceiros e julgamento de produto ao mesmo tempo, que é exatamente a superfície do full stack. O entrevistador quer ver você separar o registro da entrega, tratar falha parcial e pensar na experiência do usuário quanto ao volume. Mencionar preferências e resumos mostra que você considera o produto e não só os canos.

Como estruturar sua resposta

  • Separe o registro da notificação da entrega por canal.
  • Descreva a fila, as retentativas e o tratamento de falha.
  • Explique como o feed dentro do app lê e atualiza.
  • Cubra preferências, agrupamento e descadastro.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Eu modelaria uma tabela de notificações indexada por usuário com um tipo, um payload, um timestamp de criação e um timestamp de leitura, e trataria aquela linha como a verdade. Criar uma notificação é uma escrita só mais o enfileiramento dos jobs de entrega, um por canal, então se o provedor de e-mail está fora o feed no app continua funcionando e o e-mail tenta de novo depois. Cada job carrega uma chave de idempotência estável formada pelo id da notificação e pelo canal, então uma retentativa não consegue enviar duas vezes. As retentativas usam backoff exponencial e caem em uma fila de mensagens mortas depois de algumas tentativas, com um alerta, porque falha silenciosa de e-mail é o tipo de bug que você descobre por um cliente. O feed em si é uma leitura paginada simples naquela tabela, com contagem de não lidos em cache, e eu empurro itens novos por server sent events ou simplesmente busco de novo quando a aba recupera o foco. No lado do produto, as preferências ficam por usuário e por tipo, os tipos de alto volume são agrupados em um resumo diário, e todo e-mail carrega um descadastro de um clique que de fato escreve de volta naquelas preferências.

Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.

Veja como funciona

Perguntas de acompanhamento que você pode esperar

  • Como você deduplicaria dez eventos idênticos em um minuto?
  • Como você garante que um descadastro seja respeitado em todo lugar?
  • O que você usaria para a fila e por quê?

Mais perguntas para Desenvolvedor Full Stack

Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.

Prever minhas perguntas

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot