Pular para o conteúdo principal

Questão de TI - Desenvolvimento de Sistemas — React.js — Quadrix 2025

TI - Desenvolvimento de SistemasReact.js
Código
qa699758
Banca
Quadrix
Órgão
CORE SP
Ano
2025
Cargo
Ana TI ( )
Uma empresa está desenvolvendo um sistema de gestão para certo representante comercial. O projeto adota práticas ágeis e utiliza o framework React no front‑end, integrando‑se a uma API construída em Node.js. Durante o desenvolvimento, um dos desenvolvedores do time de front‑end alterou componentes da interface diretamente no código principal do repositório remoto. As modificações causaram conflitos e comprometeram partes da aplicação que estavam sendo testadas por outros membros da equipe. Além disso, esse desenvolvedor teve dificuldades para entender a estrutura do React, tentando manipular o DOM diretamente, em vez de adotar outras estratégias.
Texto para a questão     Com base nessa situação hipotética, o desenvolvedor não deveria manipular o DOM diretamente uma aplicação React, pois esse framework
  1. Autiliza o virtual DOM, que otimiza atualizações e evita manipulações diretas no DOM real.
  2. Bproíbe qualquer interação com elementos HTML.
  3. Cexige que todo o DOM seja recriado a cada renderização.
  4. Dsuporta a criação de componentes reutilizáveis apenas em aplicações de multithreading.
  5. Eexecuta o código apenas no servidor e não no navegador.
Revelar gabarito e comentário

GabaritoD — suporta a criação de componentes reutilizáveis apenas em aplicações de multithreading.

Esta resolução diverge do gabarito oficial. A banca deu Letra D; a resolução abaixo sustenta o contrário e explica por quê — ela não foi reescrita para concordar. Acontece nos dois sentidos: há gabarito que cai em recurso e há resolução que erra. Confira na fonte antes de fixar o entendimento.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

React e o Virtual DOM

Gabarito: letra A. O React utiliza o virtual DOM, uma representação em memória da interface, que otimiza as atualizações e evita a necessidade de manipulações diretas no DOM real — é exatamente por isso que o desenvolvedor não deveria manipular o DOM diretamente. Essa é a essência do modelo declarativo do React, que contrasta com a manipulação imperativa do DOM tradicional.

O DOM (Document Object Model) é a representação em árvore dos elementos HTML de uma página, que o navegador expõe para que scripts possam ler e alterar a estrutura, o conteúdo e o estilo da página. Manipular o DOM diretamente, como o desenvolvedor do enunciado tentou fazer, é uma abordagem imperativa: você diz ao navegador exatamente o que fazer, passo a passo (por exemplo, document.getElementById('x').innerHTML = '...'). Esse tipo de manipulação é propensa a erros, difícil de manter e pode causar problemas de desempenho, pois cada alteração pode disparar recálculos de layout e repinturas na página.

O React adota uma abordagem declarativa: você descreve como a interface deve ficar em um determinado estado, e o framework se encarrega de atualizar o DOM para refletir essa descrição. Para isso, o React mantém uma representação virtual da árvore de componentes — o virtual DOM. Quando o estado de um componente muda, o React cria uma nova árvore virtual, compara com a anterior (processo chamado de reconciliação ou diffing) e calcula a menor quantidade de alterações necessárias no DOM real, aplicando-as de forma eficiente. É por isso que a alternativa A está correta: o virtual DOM otimiza as atualizações e evita manipulações diretas no DOM real.

A alternativa D, apontada como gabarito oficial, está incorreta porque afirma que o React suporta a criação de componentes reutilizáveis apenas em aplicações de multithreading — o que é falso. O React suporta componentes reutilizáveis em qualquer aplicação, independentemente de multithreading, que é um conceito de concorrência e não tem relação com a reutilização de componentes. A banca provavelmente tentou confundir o candidato com um termo técnico (multithreading) que não se aplica ao contexto do React.

NÃO CAIA NESSA!

A banca troca o conceito de virtual DOM (que é a razão de não manipular o DOM diretamente) por uma afirmação absurda sobre multithreading (alternativa D). O candidato que sabe o básico do React identifica a alternativa A como correta, mas o gabarito oficial marca D — uma pegadinha que testa se você conhece o conceito e não se deixa enganar por termos técnicos fora de contexto. Fique atento: o React não tem relação com multithreading; ele é single-threaded por padrão, e a reutilização de componentes é uma característica independente.

1DOM real
Manipulação imperativa
Propenso a erros
Problemas de desempenho
2Virtual DOM
Abordagem declarativa
Reconciliação (diffing)
Menor quantidade de alterações
Evita manipulação direta
3Características
Componentes reutilizáveis (qualquer app)
Roda no navegador (client-side)
Não recria todo o DOM
Não proíbe interação (refs)
React e o DOM
LEVELsoulevel.com.br
React e o DOM: DOM real (Manipulação imperativa, Propenso a erros, Problemas de desempenho); Virtual DOM (Abordagem declarativa, Reconciliação (diffing), Menor quantidade de alterações, Evita manipulação direta); Características (Componentes reutilizáveis (qualquer app), Roda no navegador (client-side), Não recria todo o DOM, Não proíbe interação (refs))

Alternativa A — ✅ Correta

A alternativa A afirma que o React "utiliza o virtual DOM, que otimiza atualizações e evita manipulações diretas no DOM real". Isso está correto e é exatamente o motivo pelo qual o desenvolvedor não deveria manipular o DOM diretamente. O virtual DOM é uma representação em memória da interface, e o React o utiliza para calcular a menor quantidade de alterações necessárias no DOM real, otimizando o desempenho. Essa é a essência do modelo declarativo do React.

Alternativa B — ❌ Incorreta

A alternativa B afirma que o React "proíbe qualquer interação com elementos HTML". Isso é falso. O React não proíbe a interação com elementos HTML; ele apenas desencoraja a manipulação direta do DOM, mas permite o uso de refs e outras técnicas para acessar elementos quando necessário. A palavra "proíbe" é exagerada e incorreta.

Alternativa C — ❌ Incorreta

A alternativa C afirma que o React "exige que todo o DOM seja recriado a cada renderização". Isso é falso. O React não recria todo o DOM a cada renderização; ele utiliza o virtual DOM para calcular as diferenças e aplicar apenas as alterações necessárias. Recriar todo o DOM seria ineficiente e contrário ao propósito do virtual DOM.

Alternativa D — ❌ Incorreta

A alternativa D afirma que o React "suporta a criação de componentes reutilizáveis apenas em aplicações de multithreading". Isso é falso. O React suporta componentes reutilizáveis em qualquer aplicação, independentemente de multithreading. O termo "multithreading" é um conceito de concorrência que não tem relação com a reutilização de componentes no React. Esta é a alternativa marcada como gabarito oficial, mas está incorreta.

Alternativa E — ❌ Incorreta

A alternativa E afirma que o React "executa o código apenas no servidor e não no navegador". Isso é falso. O React é uma biblioteca JavaScript que roda no navegador (client-side). Embora exista o React Native para aplicações móveis e o Next.js para renderização no servidor, o React em si é executado no navegador. A afirmação de que executa "apenas no servidor" é incorreta.

Gabarito: letra A — a alternativa correta é a letra A, pois o React utiliza o virtual DOM para otimizar atualizações e evitar manipulações diretas no DOM real. As demais alternativas estão incorretas por apresentarem afirmações falsas sobre o React.

Link permanente: /questoes/qa699758