Não coloque cinquenta mil linhas no DOM. Virtualize para renderizar só a janela visível mais um pequeno excedente, mantenha a altura da linha previsível ou meça, e tire ordenação e filtragem da renderização levando para dados derivados memoizados ou para o servidor. Pagine ou traga os dados por streaming, mantenha o estado da linha em edição local para uma tecla não re renderizar a tabela, e teste com CPU limitada.
Por que os entrevistadores perguntam isso
Isso checa se você entende onde está o custo de verdade: quantidade de nós no DOM, layout e re renderizar a lista inteira a cada tecla. O entrevistador quer ver você separar o problema de dados do problema de renderização e considerar acessibilidade e comportamento de teclado, que uma virtualização ingênua quebra. Ir direto a uma biblioteca mantida é uma boa resposta se você souber explicar o que ela faz por você.
Como estruturar sua resposta
- Diga que a quantidade de nós no DOM é a restrição e virtualize.
- Separe a questão de dados da questão de renderização.
- Mantenha o estado de edição local para digitar não re renderizar tudo.
- Destaque os trade-offs de acessibilidade e busca que a virtualização cria.
Exemplo de resposta
A primeira coisa que digo é que cinquenta mil linhas nunca deveriam estar no DOM de uma vez, porque layout e memória escalam com a quantidade de nós por mais rápido que meu framework seja. Então eu virtualizo: renderizo as linhas na viewport mais um pequeno excedente, posiciono de forma absoluta dentro de um espaçador com a altura total, e reciclo conforme o usuário rola. Depois trato os dados como problema separado. Ordenar e filtrar cinquenta mil registros a cada tecla vai bloquear a main thread, então ou o servidor faz e eu peço uma página, ou eu memoizo o array derivado para ele só recalcular quando a chave de ordenação realmente mudar. Para edição inline mantenho o valor de rascunho no estado da própria linha e só levanto no commit, senão cada caractere re renderiza a tabela. As partes que as pessoas esquecem são acessibilidade e busca na página: leitores de tela e a busca do navegador só enxergam as linhas renderizadas, então defino explicitamente os atributos de contagem de linhas e ofereço uma caixa de busca de verdade em vez de depender da do navegador.
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ê lida com linhas de alturas variáveis?
- O que quebra na navegação por teclado numa tabela virtualizada?
- Quando você empurraria a ordenação para o servidor?
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