Use cookies apenas quando o servidor precisa do valor em toda requisição, e defina HttpOnly, Secure e SameSite para qualquer coisa sensível. Use sessionStorage para estado que deve morrer com a aba, localStorage para dados chave valor pequenos e síncronos que sobrevivem a reinícios, e IndexedDB para qualquer coisa grande, estruturada ou assíncrona. Nunca guarde tokens ou dados pessoais no localStorage, já que qualquer script na página consegue ler.
Por que os entrevistadores perguntam isso
Isso parece pergunta de trivia mas na verdade é pergunta de segurança. O entrevistador quer ver que você sabe que o localStorage é legível por qualquer script injetado, que localStorage é síncrono e portanto bloqueia a main thread, e que cookies custam banda em cada requisição. Saber quando o IndexedDB compensa a complexidade também sinaliza que você já construiu algo com suporte offline em vez de só telas de CRUD.
Como estruturar sua resposta
- Ordene as opções pelo que o servidor precisa versus o que só o cliente precisa.
- Destaque que localStorage é síncrono e legível na mesma origem.
- Enuncie a regra dos tokens e as flags de cookie que você define.
- Diga onde o IndexedDB justifica a complexidade.
Exemplo de resposta
Minha primeira pergunta é se o servidor precisa daquilo. Se precisa, é cookie, e leva HttpOnly, Secure e SameSite, o que também significa que não é algo que meu JavaScript lê. Se só o cliente precisa, aí depende de tempo de vida e tamanho. sessionStorage para coisas com escopo de aba, como o passo de um wizard ou uma posição de scroll que não quero vazando para outra aba. localStorage para preferências duráveis e pequenas, tema, último filtro usado, esse tipo de coisa, e mantenho pequeno porque é síncrono, então um JSON grande sendo parseado na inicialização aparece direto no meu time to interactive. IndexedDB quando o dado é grande ou estruturado, por exemplo uma lista de registros em cache para uso offline, normalmente atrás de um wrapper pequeno porque a API crua é desagradável. A regra que eu não flexibilizo é que tokens de acesso não vão para o localStorage, porque qualquer script injetado consegue lê los; esses vivem num cookie HttpOnly ou apenas em memória.
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
- Por que um cookie HttpOnly é mais seguro que localStorage para um token de sessão?
- Como você manteria duas abas abertas sincronizadas com o mesmo estado armazenado?
- Quais são os limites de armazenamento e as regras de despejo que você considera no planejamento?
Mais perguntas para Desenvolvedor Frontend
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