Perguntas e respostas da entrevista do Java Collections [para calouros e experientes]

Publicados: 2020-12-16

Se você lidou com Java em sua graduação ou trabalhou com Java, você deve estar bem ciente do framework Java Collection. Quanto aos iniciantes que acabaram de iniciar sua jornada Java, o framework Collection é uma arquitetura unificada projetada para armazenar e manipular um grupo (coleção) de objetos.

Essencialmente, uma “coleção” representa um único grupo de objetos. Uma coleção Java inclui interfaces, classes (ArrayList, Vector, Stack e Hashtable, etc.) e algoritmos com uma arquitetura pronta para uso para armazenamento e manipulação de dados.

Neste artigo, vamos dar uma olhada nas perguntas mais frequentes da entrevista sobre Java Collections. Criamos uma lista das perguntas fundamentais que as entrevistas geralmente fazem ao entrevistar candidatos para perfis Java. Isso deve ajudá-lo a entender que tipo de perguntas esperar em sua próxima entrevista.

Perguntas e respostas da entrevista do Java Collections

1. Qual é a vantagem de usar o framework Collections?

Java Collections inclui classes de coleção Genéricas e Concorrentes para operações seguras para threads. Além disso, vem equipado com interfaces de bloqueio junto com suas implementações em pacotes simultâneos Java. Aqui estão alguns benefícios do framework Java Collections:

Facilita a reutilização e a interoperabilidade do código.

O uso de classes de coleção principal reduz substancialmente o esforço e o tempo de desenvolvimento.

As classes de coleção enviadas com o JDK reduzem os esforços necessários para a manutenção do código.

2. Distinguir entre Array e Collection.

Embora array e coleção sejam usados ​​para armazenar objetos e manipular dados, eles têm algumas diferenças inatas:

  • Você não pode aumentar ou diminuir o comprimento de um array de acordo com seus requisitos de tempo de execução – os arrays são de tamanho fixo. No entanto, você pode alterar o tamanho de uma coleção de acordo com suas necessidades de dimensionamento.
  • Um array pode armazenar apenas objetos homogêneos (semelhantes ou iguais), enquanto uma coleção pode armazenar um grupo heterogêneo de objetos.
  • Embora os arrays não ofereçam métodos prontos para uso (pesquisa, classificação, inserção etc.) para os requisitos do usuário, as coleções sempre incluem métodos prontos para uso.

3. Qual é o papel dos Genéricos na estrutura de Coleções?

Generics permite especificar ou definir o tipo de objetos que uma coleção pode armazenar. Se você tentar adicionar um elemento de um tipo diferente, o Generics exibirá um erro em tempo de compilação. Assim, ao mostrar um erro durante a compilação, ajuda a evitar ClassCastException em tempo de execução. Além disso, como o Generics elimina a necessidade de usar a função casting e instanceof, torna o código limpo e preciso.

4. Nomeie as interfaces da estrutura Collections.

Aqui estão as cinco interfaces principais na estrutura Collections:

Interface de coleção – É a base da hierarquia da coleção Java. A maioria das coleções em Java são herdadas da interface Collections.

Interface de lista – É uma matriz estendida contendo elementos ordenados, juntamente com suas duplicatas. Essa interface oferece suporte à pesquisa baseada em índice. Assim, você pode acessar qualquer elemento de seu índice. Ele é implementado usando diferentes classes como ArrayList, LinkedList, etc.

Set interface – É uma classe de coleção que não pode conter elementos duplicados. Ao contrário de List, ele não suporta pesquisa baseada em índice e não define nenhuma ordem para os elementos. Set modela a abstração do conjunto matemático e é implementado por classes como HashSet, TreeSet, LinkedHashSet, etc.

Interface de mapa – É uma estrutura de dados bidimensional que armazena dados em pares chave-valor. Embora a chave seja um hashcode exclusivo, o valor denota o elemento. Um mapa não pode ter chaves/elementos duplicados.

Interface de fila – Esta interface organiza o elemento na abordagem First In First Out (FIFO). Assim, os elementos na interface da fila são removidos da frente e adicionados na extremidade traseira.

Leia também: Como codificar, compilar e executar projetos Java

5. Quando você deve substituir o método equals() em Java?

Enquanto a implementação inicial do método equals() verifica se dois objetos são semelhantes, é necessário substituir o método equals() se você deseja comparar os objetos com base em suas propriedades.

6. É benéfico usar o arquivo Propriedades?

Sim, usar o arquivo Propriedades em Java estende uma grande vantagem – se você alterar os valores neste arquivo, ele será refletido automaticamente, sem a necessidade de recompilar a classe Java. Como resultado, o arquivo Propriedades é usado principalmente para armazenar informações que podem ser alteradas (por exemplo, nome de usuário e senhas. Ele permite o gerenciamento fácil de um aplicativo Java.

7. Qual é a função do Iterator no framework Collection?

O Iterator é uma interface que vem no pacote java.util. Também conhecido como Universal Java Cursor, o Iterator ajuda a iterar uma coleção de objetos. O Iterator permite passar uma coleção de objetos um por um e suporta as operações READ e REMOVE. É amplamente utilizado, pois os nomes dos métodos Iterator podem ser facilmente implementados.

8. Como você pode classificar os objetos Collection?

Na estrutura Collections, a classificação geralmente é implementada usando as interfaces Comparable e Comparator . Se você usar o método Collections.sort(), ele classificará os elementos com base na ordem natural especificada no método compareTo(). No entanto, quando você usa o método Collections.sort(Comparator), ele classificará os elementos de acordo com o método compare() da interface Comparator.

Leia: Projeto Java Swing

9. É possível converter um ArrayList em Array e um Array em ArrayList?

Sim, é possível fazê-lo. Você pode converter um Array em um ArrayList usando a função asList() da classe Array. A sintaxe para isso é a seguinte:

Arrays.asList(item)

Você pode converter um ArrayList em um Array usando a função toArray() da classe ArrayList, assim:

List_object.toArray(new String[List_object.size()])

10. Como reverter uma Lista?

Como você reverterá um ArrayList?

Você pode reverter um ArrayList usando a função reverse() da classe Collections. A sintaxe para isso é a seguinte:

público static void reverse (Coleção c)

11. O que é "BlockingQueue?"

A interface BlockingQueue está presente no pacote java.util.concurrent . Seu objetivo principal é aprimorar o controle de fluxo ativando o bloqueio sempre que um encadeamento tentar remover uma fila vazia ou enfileirar uma fila cheia existente. A interface BlockingQueue não aceita valores nulos e, se você tentar inserir um valor nulo, exibirá um NullPointerException.

12. Explique a “Fila Prioritária”.

Uma fila de prioridade é um tipo de dados abstrato, como uma fila padrão ou uma estrutura de dados de pilha. Porém, nesta fila, cada elemento possui uma característica única chamada “prioridade”. Como é baseado em um heap de prioridade, o Priority Queue atende o elemento de alta prioridade antes de um elemento de baixa prioridade, independentemente de sua ordem de inserção. Em uma fila de prioridade, os elementos são ordenados de acordo com a ordenação natural ou por um comparador usado no momento da construção da fila (depende de qual construtor você usa).

13. Como a classe HashSet armazena elementos?

A classe HashSet é um membro da estrutura Java Collections que herda a classe AbstractSet e implementa a interface Set.

HashSet implementa uma Hashtable para criar e armazenar uma coleção de elementos. Uma Hashtable é uma instância da classe HashMap que usa um mecanismo de hash para armazenar dados em um HashSet. Hashing refere-se à técnica de conversão de informações em um valor único conhecido como Hash Code. O Código Hash indexa os dados associados à chave exclusiva.

14. É possível adicionar um elemento nulo em um TreeSet ou HashSet?

Enquanto você pode adicionar apenas um elemento nulo em um HashSet, você não pode fazer isso em um TreeSet porque ele usa um NavigableMap para armazenar os elementos. O NavigableMap é um subtipo de SortedMap que não aceita/suporta valores nulos. Se você inserir um elemento nulo em um TreeSet, ele acionará um NullPointerException.

15. O que a função emptySet() faz?

Em Java, o Collections.emptySet() é usado para retornar o conjunto imutável vazio, eliminando todos os elementos nulos. Aqui está a sintaxe para declarar um EmptySet():

public static final <T> Set<T> emptySet()

16. Por que a interface Map não estende a interface Collection?

Enquanto a interface Map segue uma estrutura de pares chave-valor, a interface Collection armazena uma coleção de objetos de forma estruturada com um mecanismo de acesso definido. Map não estende a interface Collection porque a função add(E e) da interface Collection não suporta o modelo de par chave-valor da função put(K key, V value) do Map.

17. Nomeie as diferentes visualizações de Coleção estendidas pela interface do Mapa.

A interface Map oferece três visualizações de pares chave-valor, a saber:

  • Visualização do conjunto de chaves
  • Visualização do conjunto de valores
  • Visualização do conjunto de entrada

18. Liste os recursos principais do Java Hashmap.

As características fundamentais do Hashmap são:

  • Você pode armazenar os elementos formando pares chave-valor e recuperar o valor passando a chave para o método correto.
  • Ele exibe NoSuchElementException se nenhum elemento existir no Mapa.
  • Ele armazena apenas referências de objetos, impossibilitando o uso de tipos de dados primitivos como double ou int. Em vez disso, você pode usar uma classe wrapper como Integer ou Double.

Deve ler: Perguntas e respostas da entrevista Java

19. Defina “Pilha”.

Em Java, uma pilha denota uma área designada da memória de um computador que contém variáveis ​​temporárias criadas por uma função. As variáveis ​​são declaradas, armazenadas e inicializadas durante o tempo de execução em uma pilha.

20. Defina “notação Big-O”.

A notação Big-O define o desempenho de um algoritmo em relação ao número de elementos em uma estrutura de dados. As classes de coleção são estruturas de dados e, portanto, você precisa usar a notação Big-O para decidir qual implementação de coleção usar com base na memória, tempo e desempenho.

Inscreva-se em cursos de engenharia de software das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.

Conclusão

Se você estiver interessado em aprender mais sobre Java, desenvolvimento de software full-stack, confira o Programa PG Executivo do upGrad & IIIT-B em Desenvolvimento de Software Full-stack, projetado para profissionais que trabalham e oferece mais de 500 horas de treinamento rigoroso, 9+ projetos e atribuições, status de ex-alunos do IIIT-B, projetos práticos práticos e assistência de trabalho com as principais empresas.

Aterre no seu emprego dos sonhos

Inscreva-se agora para Mestrado em Engenharia de Software