Frontend
Como vamos a visualizar o histórico de mensagens se for muito grande? Como implementar a paginação?
Quão importante era cumprir os requisitos de segurança da aplicação? Havia ameaças comuns contra as quais era necessário proteger-se?
É correto um formulário, que o utilizador nem sequer começou a editar, já ter gerado um erro de validação?
Qual é a diferença entre Promise.any e Promise.race?
Fale sobre os métodos Promise: Promise.all, Promise.allSettled, Promise.race, Promise.any — em que eles diferem uns dos outros?
Que métodos de isolamento de CSS conheces?
O que é o mecanismo de Injeção de Dependências no Angular e como o aplicou? Em que níveis e onde, além de serviços, pode usá-lo?
Em que cenários usas useEffect e quando usas outros hooks?
Como avalia a sua experiência com Spring Boot? Até que ponto teve que aprofundar-se na sua estrutura interna?
Por que podem surgir problemas de reatividade ao usar splice no Vue 2, e como isso é resolvido no Vue 3?
Por que escolheu o TanStack Query em vez do RTK Query?
O que é useId e para que é utilizado?
Que HTML será enviado pelo Next.js antes da hidratação?
Quais são as vantagens e desvantagens do TypeScript em comparação com o JavaScript?
Qual é a diferença entre cookies e localStorage? Qual é o tamanho máximo de cookies e localStorage? Como difere o tempo de vida?
Fale sobre os tipos em JavaScript: quais existem, em que duas grandes subgrupos se dividem e como podemos compará-los entre si?
O que fazer para que, com o valor padrão roles = [], o array não seja recriado a cada renderização?
Por que uma função em JavaScript é considerada um objeto, embora typeof retorne "function" para ela?
Por que usar setTimeout(fn, 0) ajuda a não bloquear a interface de utilizador, mas criar um grande número de promessas (microtarefas) não? Qual é a diferença entre macro tarefas e micro tarefas no Event Loop?
/** * A função 'asyncAuth(callback)' aceita um callback, no qual * pode ser passada uma erro (como primeiro argumento) e dados * do backend (como segundo argumento). * asyncAuth((error, data) => {}); * * Precisa implementar a função 'auth()', * que chama 'asyncAuth()', mas devolve uma Promise. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * A função 'tryAuth()' usa 'auth()' e, em caso de erro, * faz N tentativas adicionais. * Se todas falharem, devolve o último erro. * * @returns {Promise} */ function tryAuth(n) { return new Promise((resolve, reject) => { function attempt(attemptsLeft) { auth().then(resolve).catch((error) => { if (attemptsLeft <= 0) { reject(error); } else { attempt(attemptsLeft - 1); } }); } attempt(n); }); }