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
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 funcionaPerguntas 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