← Questões de Programação

Programação · FGV · 2023

Questão comentada de Programação

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:

Gabarito: C

Em JavaScript, existem estruturas feitas para guardar e consultar coleções de forma eficiente, e a pista mais importante da questão esta em duas palavras: valores únicos e remoção pelo coletor de lixo. Isso aponta para uma estrutura que guarda objetos sem impedir que o garbage collector os elimine quando não houver mais referências fortes a eles. O WeakSet faz exatamente isso: ele armazena apenas objetos, não aceita valores primitivos e mantém referências fracas. Assim, se um objeto deixar de ser usado em outro lugar do programa, ele pode ser removido automaticamente da memória, o que combina muito bem com a ideia de rastrear quais objetos já foram processados sem criar retenção desnecessária. Na prática, José pode inserir no WeakSet cada objeto já visto. Quando um novo objeto chegar, ele verifica se já está lá; se estiver, ignora, e se não estiver, processa e registra. Como o enunciado fala em objetos repetidos e em considerar só a primeira ocorrência, essa é a estrutura ideal. Por isso o gabarito é a letra C. Map também é uma keyed collection, mas ele usa chaves e valores e não tem essa característica de referências fracas. Já o WeakSet é o que a questão descreve com precisão, quase como se o enunciado estivesse piscando para ele.

Continue treinando

Questões relacionadas