Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FGV 2024

ProgramaçãoLinguagens de programação
Código
fg077400
Banca
FGV
Órgão
CVM
Ano
2024
Nível
Superior
Cargo
Analista - Perfil 8 - TI / Sistemas e Desenvolvimento - Tarde
A consultora Fernanda encontrou o método Java a seguir em um código de terceiros.Imagem associada para resolução da questãoComo Fernanda conhece muito bem as operações de map e reduce do Java, ela logo descobriu que w representa:
  1. Ao desvio padrão do conjunto de valores do HashMap;
  2. Ba média ponderada dos valores do HashMap, considerando as chaves como peso;
  3. Co produtório do conjunto de valores do HashMap;
  4. Da obtenção da chave relacionada à lista de maior valor médio;
  5. Eo somatório dos produtos entre as chaves do HashMap e as listas de valores relacionadas.
Revelar gabarito e comentário

GabaritoB — a média ponderada dos valores do HashMap, considerando as chaves como peso;

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”.

Streams e Lambdas em Java: map e reduce

Gabarito: letra B. O método w calcula a média ponderada dos valores do HashMap, usando as chaves como pesos. Isso porque o código combina map (para transformar cada entrada em um produto chave × valor) e reduce (para somar esses produtos), dividindo pelo total das chaves — exatamente a definição de média ponderada.

O código Java em questão utiliza a API de Streams, introduzida no Java 8, que permite processar coleções de forma declarativa e funcional. As operações map e reduce são pilares dessa API: map transforma cada elemento do stream em outro (mantendo a mesma quantidade de elementos), enquanto reduce combina todos os elementos em um único resultado, aplicando uma operação de acumulação.

No caso de um HashMap, cada entrada é um par chave-valor. O map pode ser usado para extrair ou transformar esses pares, e o reduce para agregá-los. A média ponderada é uma operação estatística que multiplica cada valor pelo seu peso, soma esses produtos e divide pela soma dos pesos. No contexto do HashMap, as chaves funcionam como pesos e os valores como os dados a serem ponderados.

Vamos detalhar o raciocínio: se o código faz map de cada entrada para chave * valor e depois reduce com soma, obtém-se o somatório dos produtos. Se, em seguida, divide-se pela soma das chaves (obtida por outro reduce), o resultado é a média ponderada. A alternativa B descreve exatamente esse processo.

A pegadinha aqui é confundir média ponderada com somatório de produtos (alternativa E) ou com produtório (alternativa C). A média ponderada exige a divisão pela soma dos pesos, o que a distingue do simples somatório. Além disso, a alternativa D fala em "chave relacionada à lista de maior valor médio", o que não corresponde a uma operação de agregação numérica simples.

  1. 1map: chave × valor
  2. 2reduce: soma dos produtos
  3. 3reduce: soma das chaves
  4. 4Divide: produtos ÷ chaves
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

O desvio padrão é uma medida de dispersão que envolve o cálculo da variância (média dos quadrados das diferenças em relação à média). O código descrito não realiza esse cálculo, pois não há operações de subtração da média nem de elevação ao quadrado. A banca tenta confundir o candidato com um termo estatístico comum, mas a operação de map/reduce descrita não produz desvio padrão.

Alternativa B — ✅ Correta ⟵ GABARITO

A média ponderada é calculada como a soma dos produtos (valor × peso) dividida pela soma dos pesos. No HashMap, as chaves atuam como pesos e os valores como os dados. O map transforma cada entrada em chave * valor, o reduce soma esses produtos, e a divisão pela soma das chaves resulta na média ponderada. Essa é exatamente a operação descrita.

Alternativa C — ❌ Incorreta

O produtório é o produto de todos os valores (multiplicação sucessiva). O código usa reduce com soma, não com multiplicação. A banca troca a operação de soma por produto, o que é um erro conceitual clássico.

Alternativa D — ❌ Incorreta

Esta alternativa descreve uma operação de busca (encontrar a chave cuja lista tem maior média), o que envolveria max ou collect, não map/reduce para agregação numérica. O código não está selecionando uma chave específica, mas calculando um valor agregado.

Alternativa E — ❌ Incorreta

O somatório dos produtos (chave × valor) é apenas uma parte do cálculo da média ponderada — falta a divisão pela soma das chaves. A alternativa descreve o numerador, mas não o denominador, portanto está incompleta e incorreta como descrição do resultado final.

NÃO CAIA NESSA!

A banca explora a confusão entre média ponderada e somatório de produtos. A alternativa E descreve o numerador da média, mas esquece a divisão pelos pesos. Lembre-se: média ponderada = (Σ valor × peso) / (Σ peso).

PEGA ESSA DICA!

Para identificar média ponderada em código com map/reduce, procure por duas operações de reduce: uma para somar os produtos e outra para somar os pesos, seguidas de uma divisão. Se houver apenas uma soma, é somatório simples.

Gabarito: letra B

Link permanente: /questoes/fg077400