Questão nº 58
Questão de Tecnologia da Informação · FGV TCE-SP 2023 (nº 58)
O analista José criou a função CalcObjs em JavaScript. A CalcObjs recebe uma coleção de objetos e realiza determinado cálculo em cada objeto da coleção. No caso de existirem objetos repetidos, a CalcObjs considera apenas a primeira ocorrência do objeto na coleção. A fim de rastrear os objetos já processados, José utilizou uma estrutura de dados disponível no JavaScript, do tipo keyed collection, cujos valores são únicos entre si e passíveis de remoção pelo coletor de lixo.
Para rastrear os objetos processados, José utilizou a estrutura de dados do JavaScript:
- AMap;
- BSymbol;
- CWeakSet; (alternativa correta)
- DSharedArrayBuffer;
- EUint8ClampedArray.
Resposta comentada
Gabarito Alternativa C
Em JavaScript, quando precisamos armazenar uma coleção de objetos únicos e queremos que esses objetos possam ser automaticamente removidos da coleção pelo coletor de lixo se não forem mais usados em nenhum outro lugar, usamos uma estrutura de dados de referência fraca.
(A) Incorreta: `Map` armazena pares chave-valor e mantém referências fortes às suas chaves, impedindo que o coletor de lixo as remova enquanto o `Map` existir. Esta é a armadilha, pois `Map` é uma "keyed collection" e pode usar objetos como chaves, mas falha no requisito de remoção pelo coletor de lixo.
(B) Incorreta: `Symbol` é um tipo de dado primitivo para criar identificadores únicos, não uma coleção para armazenar objetos.
(C) Correta: `WeakSet` armazena objetos de forma única e mantém referências fracas a eles, permitindo que o coletor de lixo os remova da memória (e do `WeakSet`) se não houver outras referências fortes a esses objetos no programa.
(D) Incorreta: `SharedArrayBuffer` é usado para compartilhar dados binários brutos entre threads (web workers), não para rastrear objetos JavaScript.
(E) Incorreta: `Uint8ClampedArray` é um array tipado para armazenar números inteiros de 8 bits (dados binários brutos), não uma estrutura para rastrear objetos.
Fonte: FGV TCE-SP 2023 Agente da Fiscalização - TI (Caderno Tipo 1). Reproduzida para fins de estudo.