30 top java collections interview questions with answers
Este tutorial inclui uma lista das perguntas mais frequentes da entrevista sobre as coleções de Java, junto com suas respostas e exemplos. :
A API principal do Java é o Java Collections Framework. Ele suporta o conceito fundamental desta linguagem de programação. Se você deseja ser um desenvolvedor Java, deve estar bem ciente desses conceitos básicos.
A área de coleções Java é extremamente ampla e muitas perguntas podem ser feitas em uma entrevista. Coletamos aqui uma lista de tantas perguntas relevantes que podem ser feitas em sua entrevista.
=> Verifique aqui para ver A-Z dos tutoriais de treinamento de Java aqui
O que você aprenderá:
Perguntas da entrevista de coleções Java
Q # 1) Explique o Java Collections Framework.
Responda: O Java Collections Framework é uma arquitetura que ajuda no gerenciamento e armazenamento de um grupo de objetos. Com ele, os desenvolvedores podem acessar estruturas de dados predefinidas e também manipular dados com o uso de algoritmos.
A coleção Java inclui a interface e classes que suportam operações como pesquisa, exclusão, inserção, classificação, etc. Junto com a interface e as classes, as Coleções Java também incluem algoritmos que ajudam nas manipulações.
P # 2) Quais são os benefícios das coleções Java?
Responda:
Os benefícios das coleções Java são:
- Em vez de implementar nossas classes de coleção, ele usa as classes de coleção principais, reduzindo assim o esforço necessário para seu desenvolvimento.
- Ele usa as classes do framework de coleção que são bem testadas. Conseqüentemente, sua qualidade de código é aprimorada.
- Reduz o esforço na manutenção do código.
- O Java Collection Framework é interoperável e reutilizável.
P # 3) O que você sabe sobre a hierarquia das coleções em Java?
Responda:
(imagem fonte )
P # 4) Conte-nos sobre as interfaces básicas da coleção Java.
Responda:
A seguir estão listadas as interfaces básicas do Java Collection Framework.
Coleção: É a base da hierarquia da Coleção e representa seus elementos. No entanto, o Java não fornece nenhuma aplicação direta de Collection. Além disso, a maioria das coleções Java vem dessa interface.
Definir: Ele não pode conter elementos duplicados, pois modela a abstração do conjunto matemático. Como o nome sugere, ele representa conjuntos, por exemplo, um baralho de cartas.
Lista: Ele pode conter elementos duplicados e é uma coleção ordenada. Você pode usar seu índice para acessar qualquer elemento nele. A lista é como um arranjo, uma matriz, com um comprimento dinâmico.
Estas são algumas interfaces do Java Collection. No entanto, existem mais algumas interfaces, bem como mostrado abaixo.
- Fila
- Dequeue
- Iterator
- Iterável
- SortedSet
- ListIterator.
Q # 5) Por que as interfaces serializáveis e clonáveis não são estendidas pela coleção Interface?
Responda: A tarefa da Interface de coleção é especificar um grupo de objetos chamados elementos. A implementação das Coleções decide como os elementos serão mantidos. Por exemplo, as implementações da lista permitem elementos duplicados, mas as implementações do conjunto não.
Muitas implementações possuem um método para clonagem pública. Mas não é prático incluí-lo em todas as implementações da Coleção, pois a Coleção é abstrata e a implementação é tudo o que importa.
O significado e as ramificações de serialização e clonagem fazem sentido ao trabalhar com as implementações substantivas. Portanto, cabe à implementação real decidir se ele pode ser serializado ou clonado e como.
Saiba mais = >> Interface do marcador em Java: serializável e clonável
É por isso que induzir serialização e clonagem em cada implementação não é muito flexível e é restritivo.
P # 6) O que você entende por Iterator no Java Collection Framework?
Responda: Em arrays simples, podemos usar loops para acessar cada elemento. Quando uma abordagem semelhante é necessária para acessar elementos em uma coleção, optamos por iteradores. Iterator é uma construção usada para acessar elementos de objetos Collection.
Em Java, Iterators são os objetos que implementam a interface “Iterator” do Collection Framework. Essa interface faz parte do pacote java.util.
Algumas das características dos Iteradores são:
- Iteradores são usados para percorrer os objetos da coleção.
- Os Iteradores são conhecidos como “Cursor Java Universal”, pois podemos usar o mesmo Iterador para todas as coleções.
- Os iteradores fornecem operações “Ler” e “Remover” além de percorrer as coleções.
- Como eles são universais e funcionam com todas as coleções, os Iteradores são mais fáceis de implementar.
Listar perguntas da coleção Java
P # 7) Você está ciente dos usos da Interface da Lista?
(imagem fonte )
Responda: O objetivo da Interface de lista é manter a ordem da inserção. Também permite o armazenamento de valores duplicados.
Ajuda na manipulação suave dos elementos dependendo do seu índice com os vários métodos que contém. ArrayList, Vector, Stack e LinkedList são as várias classes que implementam a List Interface.
Q # 8) O que você entende sobre ArrayList em Java?
Responda: A implementação da Interface de lista é ArrayList. Ele adiciona ou remove elementos dinamicamente da lista e também fornece a inserção de elementos junto com o acesso posicional. ArrayList permite valores duplicados e seu tamanho pode aumentar dinamicamente se o número de elementos exceder o tamanho inicial.
Q # 9) Como você converterá um array de string em um ArrayList?
Responda: Esta é uma pergunta de programação de nível iniciante que um entrevistador pede para verificar se você entende o utilitário Collection.classes. Collection e Arrays são as duas classes utilitárias da Collection Framework nas quais os entrevistadores costumam se interessar.
As coleções oferecem certas funções estáticas para executar tarefas específicas em tipos de coleção. Enquanto Array tem funções utilitárias que ele executa em tipos de array.
//String array String() num_words = {'one', 'two', 'three', 'four', 'five'}; //Use java.util.Arrays class to convert to list List wordList = Arrays.asList(num_words);
Observe que, além do tipo String, você também pode usar outros tipos de Arrays para converter em ArrayList.
Por exemplo,
//Integer array Integer() numArray = {10,20,30,40}; //Convert to list using Arrays class asList method List num_List = Arrays.asList(numArray);
Q # 10) Converta Array em ArrayList e ArrayList em Array.
Responda: Para converter ArrayList em Array, o método toArray () é usado- List_object.toArray (new String (List_object.size ()))
Enquanto o método asList () é usado para converter Array em ArrayList- Arrays.asList (item). O asList () é um método estático onde objetos List são os parâmetros.
Q # 11) O que é LinkedList e quantos tipos dela são suportados em Java?
(imagem fonte )
Responda: LinkedList é uma estrutura de dados com uma sequência de links onde cada link é conectado ao próximo link.
Dois tipos de LinkedList são usados em Java para armazenar os elementos:
- Lista vinculada individualmente: Aqui, cada nó armazena os dados do nó junto com uma referência ou o ponteiro para o próximo nó.
- Duplamente LinkedList: Um duplamente LinkedList vem com referências duplas, uma referência para o próximo nó e outra para o nó anterior.
Q # 12) O que você entende por BlockingQueue?
Responda: Em uma fila simples, sabemos que sempre que a fila está cheia, não podemos inserir mais itens. Nesse caso, a fila simplesmente fornece uma mensagem de que a fila está cheia e sai. Um caso semelhante ocorre quando a fila está vazia e não há nenhum elemento a ser removido da fila.
Em vez de apenas sair quando inserir / remover não puder ser feito, que tal esperarmos até que possamos inserir ou remover o item?
Isso é respondido por uma variação de fila chamada “Fila de bloqueio” . Na fila de bloqueio, o bloqueio é ativado durante as operações de enfileiramento e desenfileiramento sempre que a fila está tentando enfileirar uma fila cheia ou desenfileirar uma fila vazia.
O bloqueio é mostrado na figura a seguir.
BlockingQueue
Assim, durante a operação de enfileiramento, a fila de bloqueio aguardará até que um espaço fique disponível para que um item possa ser inserido com sucesso. Da mesma forma, na operação de desenfileiramento, a fila de bloqueio aguardará até que um item se torne disponível para a operação.
diferença entre a espera implícita e explícita no selênio
A fila de bloqueio implementa a interface ‘BlockingQueue’ que pertence ao pacote ‘java.util.concurrent’. Devemos lembrar que a interface BlockingQueue não permite valor nulo. Se encontrar null, ele lançará NullPointerException.
P # 13) O que é uma fila de prioridade em Java?
Responda: Uma fila de prioridade em Java é semelhante a estruturas de dados de pilha ou fila. É um tipo de dado abstrato em Java e é implementado como uma classe PriorityQueue no pacote java.util. A fila de prioridade tem um recurso especial de que cada item na fila de prioridade tem uma prioridade.
Em uma fila de prioridade, um item com prioridade mais alta é o servidor antes do item com prioridade mais baixa.
Todos os itens na fila de prioridade são ordenados de acordo com a ordem natural. Também podemos ordenar os elementos de acordo com a ordem personalizada, fornecendo um comparador no momento da criação de um objeto de fila de prioridade.
Definir perguntas de entrevista de interface
Q # 14) Qual é o uso de Set Interface? Conte-nos sobre as classes que implementam este Interface.
Responda: A interface de conjuntos é usada na teoria dos conjuntos para dar forma ao conjunto matemático. É semelhante à interface List, mas um pouco diferente dela. Set Interface não é uma coleção ordenada, portanto, não há ordenação preservada quando você remove ou adiciona os elementos.
Principalmente, ele não suporta elementos duplicados, portanto, cada elemento na Interface do Conjunto é único.
Também permite comparações significativas de instâncias de Set, mesmo quando há implementações diferentes. Além disso, ele põe em um contrato mais substancial sobre as ações das operações de igual e hashCode. Se dois exemplos tiverem os mesmos elementos, eles serão iguais.
Por todos esses motivos, Set Interface não tem operações baseadas em índice de elemento como List. Ele só usa métodos herdados da Interface de coleção. TreeSet, EnumSet, LinkedHashSet e HashSet implementa Set Interface.
Q # 15) Eu quero adicionar um elemento nulo ao HashSet e TreeSet. Posso?
Responda: Você não pode adicionar qualquer elemento nulo em TreeSet, pois ele usa NavigableMap para armazenamento de elemento. Mas você pode adicionar apenas um ao HashSet. SortedMap não permite chaves nulas e NavigableMap é seu subconjunto.
É por isso que você não pode adicionar um elemento nulo ao TreeSet, ele apresentará o NullPointerException toda vez que você tentar fazer isso.
Q # 16) O que você sabe sobre LinkedHashSet?
Responda: LinkedHashSet é a subclasse de HashSet e reforça o Set Interface. Como uma forma ordenada de HashSet, ele gerencia uma Lista duplamente vinculada em todos os elementos que contém. Ele retém a ordem de inserção e, assim como sua classe pai, carrega apenas elementos exclusivos.
Q # 17) Fale sobre a maneira como o HashSet armazena os elementos.
Responda: O HashMap armazena os pares de valores-chave, mas as chaves devem ser exclusivas. Este recurso do Map é usado pelo HashSet para garantir que cada elemento seja único.
A declaração do mapa no HashSet aparece conforme mostrado abaixo:
private transient HashMapmap; //This is added as value for each key private static final Object PRESENT = new Object();
Os elementos armazenados no HashSet são armazenados como uma chave no Mapa e o objeto é apresentado como um valor.
Q # 18) Explique o método EmptySet ().
Responda: O método Emptyset () remove os elementos nulos e retorna o conjunto vazio imutável. Este conjunto imutável é serializável. A declaração do método de Emptyset () é- public static final Defina emptySet ().
Perguntas da entrevista da interface do mapa
Q # 19) Conte-nos sobre a interface do mapa.
Responda: A interface do mapa foi projetada para pesquisas mais rápidas e armazena os elementos na forma de pares de valores-chave. Como cada chave é única aqui, ela se conecta ou mapeia apenas para um único valor. Esses pares de valores-chave são chamados de entradas de mapa.
Nesta interface, existem assinaturas de método para recuperação, inserção e remoção de elementos dependendo da chave exclusiva. Isso o torna uma ferramenta perfeita para mapear associações de valores-chave, como um dicionário.
Q # 20) O mapa não estende a interface de coleção. Porque?
Responda: A Interface de coleção é o acúmulo de objetos e esses objetos são armazenados estruturalmente com o mecanismo de acesso especificado. Enquanto a interface do Mapa segue a estrutura de pares chave-valor. O método add da Interface de coleção não suporta o método put da Interface do mapa.
É por isso que o Map não estende a interface de coleção, mas ainda assim, é uma parte importante do Java Collection Framework.
Q # 21) Como o HashMap funciona em Java?
Responda: HashMap é uma coleção baseada em Map e seus itens consistem em pares de valores-chave. Um HashMap normalmente é denotado por, ou. Cada elemento hashmap pode ser acessado usando sua chave.
Um HashMap funciona com base no princípio de “Hashing”. Na técnica de hashing, uma string mais longa é transformada em uma string menor por uma 'função hash' que nada mais é do que um algoritmo. A string menor ajuda na busca mais rápida e na indexação eficiente.
Q # 22) Explique IdentityHashMap, WeakHashMap e ConcurrentHashMap.
Responda:
IdentityHashMap é muito parecido com o HashMap. A diferença é que, ao comparar elementos, IdentityHashMap usa igualdade de referência. Não é uma Implementação de Mapa preferida e embora execute a Interface de Mapa, não cumpre intencionalmente com o contrato geral do Mapa.
Portanto, ao comparar objetos, autoriza o uso do método equals. Ele é projetado para uso em casos raros em que é necessária semântica de igualdade de referência.
WeakHashMap A implementação armazena apenas referências fracas para suas chaves. Isso permite a coleta de lixo de um par de valores-chave quando não há mais referência de suas chaves fora do WeakHashMap.
É usado principalmente com os objetos-chave onde o teste de identidade do objeto é realizado por seus métodos equals usando o operador ==.
ConcurrentHashMap implementa interfaces ConcurrentMap e Serializable. É a versão atualizada e aprimorada do HashMap, pois não funciona bem com o ambiente multithread. Quando comparado ao HashMap, possui uma taxa de desempenho superior.
P # 23) Qual é a qualidade de uma boa chave para HashMap?
Responda: Compreendendo como o HashMap funciona, é fácil saber que eles dependem principalmente dos métodos equals e hashCode de objetos-chave. Portanto, uma boa chave deve fornecer o mesmo hashCode repetidamente, independentemente das horas em que é obtida.
Da mesma forma, quando comparadas com o método equals, as mesmas chaves devem retornar verdadeiras e chaves diferentes devem retornar falsas. É por isso que as melhores candidatas para chaves HashMap são as classes imutáveis.
Q # 24) Quando você pode usar TreeMap?
(imagem fonte )
Responda: TreeMap, como uma forma especial de HashMap, mantém a ordem das chaves por padrão 'ordem natural', como algo que está faltando no HashMap. Você pode usá-lo para classificar objetos com alguma chave.
Por exemplo, se quiser implementar e imprimir um dicionário em ordem alfabética, você pode usar TreeMap junto com TreeSet. Ele será classificado automaticamente. Claro, você poderia ter feito isso manualmente também, mas o trabalho será feito de forma mais eficiente com o uso de TreeMap. Você também pode usá-lo se o acesso aleatório for vital para você.
Diferença entre perguntas
P # 25) Qual é a diferença entre Coleção e coleções?
Responda:
Coleção | Coleções |
---|---|
Não podemos usar ListIterator para percorrer um conjunto. | ListIterator pode percorrer List em qualquer direção. |
É uma interface. | É classe. |
A coleção representa um grupo de objetos como uma entidade única. | Coleções definem diferentes métodos de utilidade para objetos de coleção. |
É a interface raiz do Collection Framework. | As coleções são uma classe de utilidade. |
Ele deriva as estruturas de dados do Collection Framework. | As coleções contêm muitos métodos estáticos diferentes para ajudar na manipulação da estrutura de dados. |
Q # 26) Como Array é diferente de um ArrayList?
Responda:
As diferenças entre Array e ArrayList são fornecidas abaixo:
Variedade | ArrayList |
---|---|
O array é uma classe fortemente tipada. | ArrayList é uma classe vagamente tipada. |
A matriz não pode ser redimensionada dinamicamente, sua dimensão é estática. | ArrayList pode ser redimensionado dinamicamente. |
Uma matriz não precisa de boxing e unboxing de elementos. | ArrayList precisa de boxing e unboxing de elementos. |
Q # 27) Diferencie entre ArrayList e LinkedList.
Responda:
ArrayList | LinkedList |
---|---|
ArrayList usa a matriz dinâmica internamente para armazenar elementos. | LinkedList implementa a lista duplamente vinculada. |
A manipulação de elementos do ArrayList é bastante lenta. | LinkedList manipula seus elementos muito mais rápido. |
ArrayList pode atuar apenas como uma lista. | LinkedList pode atuar tanto como Lista quanto como Fila. |
Útil para armazenar e acessar dados. | Útil para manipular dados. |
P # 28) Qual é a diferença entre Iterable e Iterator?
Responda:
Iterável | Iterator |
---|---|
É a interface do pacote Java.lang. | É a interface do pacote Java.util. |
Rende apenas um método abstrato conhecido como Iterator. | Ele vem com dois métodos abstratos - hasNext e next. |
Representa uma série de elementos que podem ser percorridos. | Significa objetos com estado de iteração. |
Q # 29) Declare as diferenças entre Conjunto e Lista.
Responda:
Definir | Lista |
---|---|
Set implementa a interface Set. | A lista implementa a interface List. |
Conjunto é um conjunto não ordenado de elementos. | A lista é um conjunto ordenado de elementos. |
O conjunto não mantém a ordem dos elementos durante a inserção. | A lista mantém a ordem dos elementos durante a inserção. |
O conjunto não permite valores duplicados. | A lista permite valores duplicados. |
O conjunto não contém nenhuma classe legada. | A lista contém Vector, uma classe legada. |
O conjunto permite apenas um valor nulo. | Nenhuma restrição quanto ao número de valores nulos na Lista. |
Q # 30) Qual é a diferença entre Queue e Stack?
Responda:
Fila | Pilha |
---|---|
A fila funciona segundo o princípio da abordagem Primeiro a Entrar, Primeiro a Sair (FIFO). | A pilha funciona com base no último a entrar, primeiro a sair (LIFO). |
A inserção e exclusão na fila ocorrem em extremidades diferentes. | A inserção e a exclusão são executadas na mesma extremidade, chamada de topo da pilha. |
Enfileirar é o nome de Inserção e retirar da fila é a exclusão de elementos. | Push é inserção e Pop é a exclusão de elementos em Stack. |
Ele tem dois ponteiros - um para o primeiro elemento da lista (frente) e um para o último (parte traseira). | Ele tem apenas um ponteiro apontando para o elemento superior. |
P # 31) Como SinglyLinkedList e DoublyLinkedList são diferentes um do outro?
Responda:
Lista vinculada individualmente | Lista duplamente vinculada |
---|---|
Cada nó da lista unida individualmente consiste em um dado e um ponteiro para o próximo nó. | Uma lista duplamente vinculada consiste em dados, um ponteiro para o próximo nó e um ponteiro para o nó anterior. |
A lista unida individualmente pode ser percorrida usando o próximo ponteiro. | Uma lista duplamente vinculada pode ser percorrida usando o ponteiro anterior e o próximo. |
A lista com link simples ocupa menos espaço em comparação com uma lista com link duplo. | A lista duplamente vinculada ocupa muito espaço na memória. |
O acesso ao elemento não é muito eficiente. | O acesso ao elemento é eficiente. |
P # 32) Como o HashMap é diferente do HashTable?
Responda:
HashMap | HashTable |
---|---|
HashMap herda a classe AbstractMap | HashTable herda a classe Dictionary. |
HashMap não está sincronizado. | HashTable está sincronizado. |
HashMap permite vários valores nulos, mas apenas uma chave nula. | HashTable não permite um valor nulo ou chave. |
HashMap é mais rápido. | HashTable é mais lento do que HashMap. |
O HashMap pode ser percorrido pelo Iterator. | HashTable não pode ser percorrido usando iterador ou enumerador. |
Q # 33) Liste a diferença entre ArrayList e Vector.
Responda:
ArrayList | Vetor |
---|---|
ArrayList não está sincronizado. | O vetor está sincronizado. |
ArrayList não é uma classe legada. | Vector é uma classe legada. |
ArrayList aumenta o tamanho pela metade de ArrayList quando um elemento é inserido além de seu tamanho. | O vetor aumenta seu tamanho em duas vezes quando um elemento é inserido além de seu tamanho. |
ArrayList não é thread-safe | O vetor é um thread-safe. |
P # 34) Como o FailFast é diferente do Failsafe?
Responda:
FailFast | FailSafe |
---|---|
Durante a iteração, nenhuma modificação de uma coleção é permitida. | Permite modificação durante a iteração. |
Usa coleção original para atravessar. | Usa uma cópia da coleção original. |
Sem necessidade de memória extra. | Precisa de memória extra. |
Lança ConcurrentModificationException. | Nenhuma exceção é lançada. |
Conclusão
Essas perguntas da entrevista do Java Collections irão ajudá-lo a se preparar para a entrevista. Sua preparação para a entrevista do Java Collections deve ser profunda e extensa, portanto, estude essas questões e entenda bem o conceito.
Essas perguntas não apenas testam seu conhecimento, mas também sua presença de espírito.
=> Veja a série de treinamento simples em Java aqui
Leitura recomendada
- Tutorial JAVA para iniciantes: mais de 100 tutoriais práticos em vídeo Java
- Java Basics: Java Syntax, Java Class e Core Java Concepts
- Perguntas e respostas da entrevista
- Perguntas e respostas da entrevista de teste de ETL
- 30 principais perguntas e respostas da entrevista em HTML (LISTA 2021)
- Mais de 30 perguntas e respostas populares para entrevistas com pepinos
- 40 principais perguntas e respostas da entrevista sobre Java 8 (mais importantes)
- 30 principais perguntas e respostas da entrevista do SAS