WorksheetsRevisão
Total questions: 35
Worksheet time: 18mins
O que o fetch() retorna imediatamente ao ser chamado?
Um objeto XMLHttpRequest
Uma Promise
O corpo da resposta como JSON
Um ReadableStream
Para transformar uma string JSON em objeto JS, usa-se:
JSON.toObject()
Object.fromJSON()
JSON.parse()
parseJSON()
Para serializar um objeto JS em string JSON, usa-se:
JSON.stringify()
Object.stringify()
toJSON()
serialize()
Qual afirmação é verdadeira sobre JSON?
Aceita aspas simples em chaves
Permite vírgula final (trailing comma)
Aceita NaN e Infinity
Chaves (nomes de propriedades) devem estar entre aspas duplas
No fluxo clássico fetch → tratar resposta → exibir no DOM, a etapa de manipular a página ocorre via:
WebAssembly
DOM APIs
Service Workers
CSSOM apenas
Dado const resp = await fetch(url);, qual verificação é a mais adequada antes de await resp.json()?
resp.ok
resp.headers.has('json')
resp.statusText === 'OK'
typeof resp === 'json'
Em uma galeria dinâmica, por que usar <template>?
Ele executa scripts embutidos automaticamente
Evita CORS
Mantém HTML “oculto” até ser clonado e injetado
Converte HTML em JSON automaticamente
Para parametrizar cartões de uma lista com metadados no HTML, a prática recomendada é:
Atributos data-* com element.dataset
Comentários HTML
Classes CSS codificadas
IDs numéricos sequenciais
Em uma integração client-side, o que não é responsabilidade do fetch()?
Criar a requisição
Resolver para um Response
Parsear JSON automaticamente
Respeitar CORS/política de origem
O acesso a data-user-id via dataset é:
el.dataset.user-id
el.dataset.userId
el.dataset['data-user-id']
el.dataset.userid
Qual é o tipo de template.content?
HTMLCollection
NodeList mutável
DocumentFragment (somente leitura)
ShadowRoot
Para alternar estados visuais sem reflow custoso e manter semântica, a técnica indicada é:
Escrever style inline por item
Alterar classes com classList
Recriar nós com innerHTML em loop
Usar document.write
Qual método é recomendado para registrar ouvintes de evento?
addEventListener()
Event.observe()
element.onClick = fn
attachEvent()
O que faz a opção { once: true } em addEventListener?
Executa no capture phase apenas
Garante que o listener rode uma vez e seja removido
Torna o listener passivo para rolagem
Cancela o bubbling
Por que "passive: true" pode melhorar desempenho em rolagem?
Permite ao navegador rolar sem aguardar preventDefault()
Impede o click
Desativa bubbling
Converte listeners em throttled
Para acessibilidade de botões customizados (ex.: <div role="button">), além de role, qual prática é essencial?
Remover tabindex
Usar apenas click do mouse
Desabilitar foco
Suportar Enter/Space via eventos de teclado
setTimeout(fn, 0) garante execução imediata?
Sim, antes de qualquer código restante
Sim, mas somente em Web Workers
Não; agenda para a próxima iteração do loop de eventos
Não existe 0 em setTimeout
Qual é um risco clássico do padrão de múltiplos callbacks?
Bloqueio do thread principal
“Callback hell” e difícil tratamento de erros
Incompatibilidade com fetch()
Necessidade de transpilar
Qual construção encadeia tratamentos assíncronos preservando retorno?
.when()
.success()
.done()
.then()
Em fetch(url).then(r => r.json()), o valor passado ao próximo .then() é:
O objeto Response
Uma Promise rejeitada
O objeto JS parseado (resolvido da Promise de json())
Um ReadableStream
Qual é a vantagem de async/await sobre .then() em muitos passos?
Torna síncrono o código
Executa em paralelo automaticamente
Dispensa Promises
Sintaxe linear; tratamento de erro com try/catch
Para gerar cartões de forma eficiente e evitar múltiplos reflows, a abordagem mais indicada é:
Concatenar strings e definir innerHTML a cada item
Usar <template> + DocumentFragment e inserir tudo de uma vez
Criar elementos e anexar um a um
Usar document.write
Para filtrar sem recriar nós, escolha a técnica:
Remover nós e recriar
Alternar hidden/classes utilitárias
Recarregar a página
Usar alert()
Qual sequência está correta para “consumir e renderizar” uma lista?
fetch → await resp.json() → montar DOM (template/dataset) → anexar
await resp.json() → fetch → anexar → montar DOM
Montar DOM → fetch → ignorar JSON
Apenas fetch é suficiente
Em uma página que consome uma API, o erro mais comum ao tentar usar os dados antes do await fetch() terminar é:
TypeError: Cannot read property of undefined
SyntaxError: Unexpected token
ReferenceError: await is not defined
NetworkError: Failed to fetch
O método Array.filter() é ideal para:
Transformar elementos em novos valores
Adicionar novos itens a um array
Retornar apenas os elementos que satisfazem uma condição
Interromper um loop
Qual opção melhor descreve o comportamento de Promise.all()?
Retorna assim que a primeira Promise resolve
Rejeita se qualquer Promise for rejeitada
Executa em série, uma após a outra
Sempre retorna um objeto vazio
Em acessibilidade web, qual é a melhor prática ao associar um <label> a um <input>?
Repetir o nome do campo em ambos
Colocar o label depois do input
Usar o atributo for com o mesmo id do input
Usar apenas aria-label
Para criar uma animação leve disparada após carregar dados da API, a abordagem recomendada é:
Repetir setInterval a cada 10 ms
Usar setTimeout com valores fixos
Usar requestAnimationFrame()
Forçar reflow com offsetHeight
Em fetch(url).then(r => r.json()).catch(err => console.error(err)), qual parte trata falhas de rede
.then()
.json()
Nenhuma, pois fetch nunca falha
.catch()
Qual verbo HTTP é usado quando o cliente quer enviar dados para criação de um novo recurso?
GET
POST
DELETE
PUT
Qual código de status HTTP indica sucesso total da requisição?
201 Created
204 No Content
200 OK
202 Accepted
Em uma requisição fetch, qual código indica erro do cliente, geralmente causado por uma URL incorreta?
301
400
500
404
O código 500 Internal Server Error indica:
Erro inesperado no servidor ao processar a requisição
Redirecionamento temporário
Problema de rede no cliente
Erro de autenticação
Em uma API RESTful, qual resposta é esperada após criar com sucesso um novo recurso via POST?
200 OK
201 Created
202 Created
201 OK
