Baixe o app para aproveitar ainda mais
Prévia do material em texto
Abaixo estão as questões e as alternativas que você selecionou: QUESTÃO 1 Sobre os conceitos de tamanho e capacidade de uma lista, assinale a alternativa correta. a) Em uma lista dinâmica, o tamanho é irrelevante, já que ela nunca estará cheia. b) A variável tamanho da lista indica o índice do último elemento. c) O tamanho da lista é indicado pelo tamanho do vetor de dados (dados.length). d) Os índices válidos de uma lista variam de 0 até a capacidade da lista subtraída de um. e) A capacidade refere-se à quantidade máxima de elementos que podem ser inseridos na lista. Justificativa O tamanho refere-se à quantidade de elementos disponíveis na lista. Já a capacidade é a quantidade máxima de elementos que podem ser inseridos na lista. Os índices válidos em uma lista estão no intervalo de 0 até o tamanho da lista subtraído de um. As listas dinâmicas têm a capacidade limitada apenas pela memória e, por isso, seu tamanho é um atributo relevante. QUESTÃO 2 Sobre as classificações das estruturas com relação a seus limites de dados e sua disposição dos elementos na memória, é correto afirmar que: a) uma estrutura estática de grande capacidade com poucos elementos consumirá menos memória do que uma dinâmica. b) estruturas estáticas possuem uma quantidade fixa de dados que conseguem suportar, geralmente definida durante sua criação. c) o custo de limpeza em uma pilha estática é maior do que o custo em uma pilha dinâmica. d) estruturas dinâmicas não disparam o erro de underflow, uma vez que não possuem limite de elementos na memória. e) uma estrutura sequencial cheia terá um overhead maior do que uma estrutura encadeada cheia. Justificativa Quanto ao limite de dados, as estruturas podem ser classificadas de duas formas: 1) estáticas: possuem uma quantidade fixa de dados que conseguem suportar, geralmente definida em sua criação; 2) dinâmicas: possuem tamanho variável, com a quantidade de elementos geralmente limitado pela memória. Esta última não dispara o erro de overflow, visto que nunca ficará cheia. Já quanto à disposição dos dados, podem ser classificadas como: 1) sequenciais: os elementos estão lado a lado; 2) encadeadas: os elementos ficam dispersos na memória. As estruturas estáticas precisam alocar memória no momento de sua criação. Assim, seu custo em memória sempre será total, mesmo que nenhum elemento seja inserido. Por outro lado, alocações e desalocações em pilhas e filas estáticas têm custo próximo a 0. Quando se encontra cheia, seu overhead é muito pequeno (4 bytes). Já as estruturas dinâmicas alocam memória à medida que são usadas, mas precisam de 4 bytes em cada nó. Isso também tem a consequência de espalhar os elementos pela memória, além dos custos maiores de alocação/desalocação. QUESTÃO 3 Sobre a implementação da função hashCode, assinale a alternativa correta. a) A variável result deve ser inicializada por um número primo qualquer. b) Combina valores entre campos utilizando-se de um número primo constante. c) Não pode ser utilizado em tabelas hash, já que o seu resultado pode ser qualquer número inteiro. d) Nunca retorna números negativos, já que não há qualquer condição que os utilize. e) Deve utilizar todos os campos presentes no método equals. Justificativa A função hashCode, proposta por Bloch (2019), trabalha da seguinte forma: 1.Inicializa-se a variável result com um número qualquer, que não precisa ser primo. 2.Utilizam-se operações sobre os campos da classe, de acordo com o tipo de dado, gerando o valor calculado c. 3.Combina-se o valor c dentro da variável result, utilizando um número primo constante p como base, por meio da fórmula: result = p * result + c. A função pode utilizar menos campos do que os presentes no método equals, ao descartar campos redundantes, mas não mais. Como o resultado é um número inteiro qualquer, positivo ou negativo, ele poderá ser utilizado em tabelas hash, bastando, para isso, a utilização de uma função de redução. QUESTÃO 4 Considerando a estrutura de dados pilha, qual é o que será impresso pelo código a seguir? a) A B E b) A B C c) O código lança uma exceção devido ao overflow. d) O código lança uma exceção devido ao underflow. e) C B E Justificativa A pilha remove os elementos na ordem inversa da qual foram inseridos. Inicialmente, foram inseridos os elementos A, B e C. Como são feitas duas remoções, o código inicia imprimindo C B. Sobra na pilha ainda o valor A. Em seguida, são inseridos os valores D e E. Em uma nova remoção, o valor E é removido e impresso. A impressão final, portanto, é C B E. Como a pilha nunca ficou vazia ou ultrapassou a quantidade de três elementos em seu interior, nenhuma exceção é disparada. QUESTÃO 5 Selecione a alternativa que contém apenas características de dispositivos de memória não volátil. a) Alto custo, acesso lento e tamanho pequeno. b) Baixo custo, acesso lento e memória em abundância. c) Apaga-se ao desligar, baixo custo e alta disponibilidade. d) Alto custo, acesso rápido e tamanho pequeno. e) Próximo ao processador, acesso rápido e tamanho pequeno. Justificativa Os dispositivos não voláteis, também chamados de dispositivo de armazenamento, fornecem memória em abundância a um custo relativamente baixo, se comparado ao custo da memória volátil. Porém, comparado às alternativas voláteis, seu acesso também é lento e, por isso, são usados como memória secundária. São exemplos: HDs, disquetes, DVDs e pendrives. QUESTÃO 6 Sobre as características do garbage collector (GC), assinale a alternativa correta. a) O GC congela a aplicação por uma quantidade previsível de tempo, o que o torna recomendado para aplicações de tempo real. b) Uma das desvantagens do GC é utilizar um único núcleo de processamento, o que pode congelar a execução da aplicação. c) O GC é recomendado em aplicações de tempo real, pois é capaz de agrupar a memória não utilizada em blocos grandes antes de desalocá-la. d) Quando uma área de memória fica sem referência, ela é desalocada imediatamente pelo GC. e) O GC é capaz de reaproveitar uma área de memória recém-desalocada, evitando o custo de desalocação e realocação. Justificativa O garbage collector é capaz de desalocar memória automaticamente, assim que fica sem referências. Além disso, ele agrupa a memória em blocos grandes, utiliza vários núcleos de processamento e é capaz de reutilizar memória recém alocada, poupando os tempos de alocação e desalocação nessa ocasião. Sua desvantagem, porém, é sua imprevisibilidade, o que o torna inadequado para aplicações de tempo real. É impossível saber o momento exato que o GC irá rodar e desalocar a memória ou quanto tempo esse processo levar. QUESTÃO 7 Quanto às operações na estrutura de dados pilha, assinale a alternativa correta. a) A remoção na pilha retira todos os elementos da pilha e segue a ordem na qual os elementos foram inseridos. b) A limpeza da pilha estática é feita alterando o valor do topo para -1 e removendo as referências dentro do vetor dados. c) A operação de iteração permite remover todos os elementos da pilha de uma só vez. d) A inserção na pilha encadeada tem custo próximo de zero, pois a estrutura do nó é muito pequena. e) Para verificar se uma pilha encadeada está cheia, basta testar se o topo é do tamanho do vetor de dados. Justificativa As operações possíveis para as todas as pilhas são: Adicionar: insere o elemento no topo da pilha. Terá custo próximo de zero na pilha estática, uma vez que não há novas alocações de memória. Porém, na encadeada, o custo será maior, já que essa pilha faz uma nova alocação a cada novo elemento. Remover: remove o elemento do topo da pilha, ou seja, na ordem inversa da qual foi inserido. Limpeza: elimina todos os elementos da pilha. No caso da pilha estática, basta definirmos o valor do topo para -1. Na pilha encadeada, toda memória serádesalocada ao se definir o topo para nulo. Verificar se está cheia: permite que testemos se a pilha atingiu sua capacidade máxima. No caso da pilha estática, basta verificar se o topo atingiu a capacidade de dados. A pilha dinâmica (encadeada) nunca estará cheia, pois seu limite é definido apenas pela memória do processo. Verificar se está vazia: permite que testemos se a pilha não contém elementos. Iteração: permite consultar os elementos da pilha em ordem sequencial, sem removê-los. QUESTÃO 8 Qual das estruturas a seguir pode ser utilizada para implementar uma tabela de espalhamento (hash)? a) Fila encadeada de listas. b) Fila de vetores. c) Conjunto hash. d) Vetor de pilhas encadeadas. e) Vetor de listas encadeadas. Justificativa Uma tabela hash necessita de duas estruturas: 1. A primeira, sequencial e acessível por índices, para que possa ser diretamente acessada depois que o código hash é encontrado. Nesse caso, estruturas possíveis seriam o vetor e as listas sequenciais. Em uma abordagem de endereçamento aberto, somente essa estrutura é necessária. 2. A segunda, que permita o acesso aos elementos, e exclusão de um elemento em qualquer posição. Como qualquer tipo de lista, como a lista encadeada. O conjunto e o mapa hash são estruturas de dados que podem ser implementadas por meio da tabela hash.
Compartilhar