logo

34 perguntas da entrevista sobre coleções Java

Em Java, as perguntas da entrevista de coleta são mais feitas pelos entrevistadores. Aqui está a lista das perguntas mais frequentes da entrevista sobre coleções com respostas.


1) Qual é a estrutura de coleção em Java?

Collection Framework é uma combinação de classes e interface, que é usada para armazenar e manipular os dados na forma de objetos. Ele fornece várias classes como ArrayList, Vector, Stack e HashSet, etc. e interfaces como List, Queue, Set, etc.


2) Quais são as principais diferenças entre array e coleção?

Array e Collection são um tanto semelhantes no que diz respeito ao armazenamento de referências de objetos e à manipulação de dados, mas diferem em muitos aspectos. As principais diferenças entre o array e a coleção são definidas abaixo:

  • Os arrays são sempre de tamanho fixo, ou seja, um usuário não pode aumentar ou diminuir o comprimento do array de acordo com sua necessidade ou em tempo de execução, mas na Coleção, o tamanho pode ser alterado dinamicamente conforme a necessidade.
  • Arrays só podem armazenar objetos de tipo homogêneo ou semelhante, mas em Collection, objetos heterogêneos podem ser armazenados.
  • Matrizes não podem fornecer o ?pronto? métodos para requisitos do usuário, como classificação, pesquisa, etc. mas Collection inclui métodos prontos para uso.

3) Explique as várias interfaces usadas na estrutura de coleção?

A estrutura de coleção implementa várias interfaces, a interface de coleção e a interface de mapa (java.util.Map) são as interfaces usadas principalmente do Java Collection Framework. A lista de interfaces do Collection Framework é fornecida abaixo:

1. Interface de coleta: A coleção (java.util.Collection) é a interface primária e toda coleção deve implementar essa interface.

Sintaxe:

 public interface Collectionextends Iterable 

Onde representa que esta interface é do tipo Genérica

2. Interface de lista: A interface List estende a interface Collection e é uma coleção ordenada de objetos. Ele contém elementos duplicados. Também permite acesso aleatório de elementos.

Sintaxe:

 public interface List extends Collection 

3. Definir interface: A interface Set (java.util.Set) é uma coleção que não pode conter elementos duplicados. Só pode incluir métodos herdados da interface Collection

Sintaxe:

 public interface Set extends Collection 

Interface de fila: A interface Queue (java.util.Queue) define a estrutura de dados da fila, que armazena os elementos no formato FIFO (primeiro a entrar, primeiro a sair).

Sintaxe:

 public interface Queue extends Collection 

4. Interface de desenfileiramento: é uma fila dupla. Permite a inserção e remoção de elementos em ambas as extremidades. Ele implanta as propriedades de pilha e fila para que possa executar operações de pilha LIFO (último a entrar, primeiro a sair) e fila FIFO (primeiro a entrar, primeiro a sair).

Sintaxe:

 public interface Dequeue extends Queue 

5. Interface do mapa: Um mapa (java.util.Map) representa um armazenamento de elementos de pares de chave e valor. A interface do mapa não implementa a interface da coleção. Ele só pode conter uma chave exclusiva, mas pode ter elementos duplicados. Existem duas interfaces que implementam Map em java que são Map interface e Sorted Map.

corte

4) Qual é a diferença entre ArrayList e Vector?

Não.ListaArrayVetor
1)ArrayList não está sincronizado.O vetor está sincronizado.
2)ArrayList não é uma classe legada.Vector é uma classe herdada.
3)ArrayList aumenta seu tamanho em 50% do tamanho do array.O vetor aumenta seu tamanho dobrando o tamanho do array.
4)ArrayList não é ?thread-safe? pois não está sincronizado.A lista de vetores é ?thread-safe? já que todos os métodos são sincronizados.

5) Qual é a diferença entre ArrayList e LinkedList?

Não.ListaArrayLista vinculada
1)ArrayList usa um array dinâmico.LinkedList usa uma lista duplamente vinculada.
2)ArrayList não é eficiente para manipulação porque é necessário muito.LinkedList é eficiente para manipulação.
3)ArrayList é melhor para armazenar e buscar dados.LinkedList é melhor para manipular dados.
4)ArrayList fornece acesso aleatório.LinkedList não fornece acesso aleatório.
5)ArrayList ocupa menos sobrecarga de memória, pois armazena apenas objetosLinkedList exige mais sobrecarga de memória, pois armazena o objeto e também o endereço desse objeto.

6) Qual é a diferença entre Iterator e ListIterator?

Iterator percorre os elementos apenas na direção direta, enquanto ListIterator percorre os elementos na direção direta e reversa.

Não.IteradorListIterator
1)O Iterador percorre os elementos apenas na direção direta.ListIterator percorre os elementos nas direções para frente e para trás.
2)O Iterador pode ser usado em Lista, Conjunto e Fila.ListIterator pode ser usado apenas em List.
3)O Iterador só pode executar a operação de remoção enquanto percorre a coleção.ListIterator pode executar ?add,? ?remover,? E definir? operação enquanto percorre a coleção.

7) Qual é a diferença entre Iterador e Enumeração?

Não.IteradorEnumeração
1)O Iterator pode percorrer elementos legados e não legados.A enumeração pode percorrer apenas elementos legados.
2)O Iterador é à prova de falhas.A enumeração não é rápida.
3)O Iterador é mais lento que a Enumeração.A enumeração é mais rápida que o Iterator.
4)O Iterator pode executar a operação de remoção enquanto percorre a coleção.A Enumeração pode realizar apenas operação transversal na coleção.

8) Qual é a diferença entre Lista e Conjunto?

A Lista e o Conjunto estendem a interface da coleção. No entanto, existem algumas diferenças entre os dois, listadas abaixo.

  • A Lista pode conter elementos duplicados, enquanto o Conjunto inclui itens exclusivos.
  • A Lista é uma coleção ordenada que mantém a ordem de inserção, enquanto Set é uma coleção não ordenada que não preserva a ordem de inserção.
  • A interface List contém uma única classe legada que é a classe Vector, enquanto a interface Set não possui nenhuma classe legada.
  • A interface List pode permitir um número n de valores nulos, enquanto a interface Set permite apenas um único valor nulo.

9) Qual é a diferença entre HashSet e TreeSet?

O HashSet e o TreeSet, ambas classes, implementam a interface Set. As diferenças entre os dois estão listadas abaixo.

  • HashSet não mantém ordem, enquanto TreeSet mantém ordem crescente.
  • HashSet impendido por tabela hash enquanto TreeSet implementado por uma estrutura Tree.
  • HashSet tem desempenho mais rápido que TreeSet.
  • HashSet é apoiado por HashMap enquanto TreeSet é apoiado por TreeMap.

10) Qual a diferença entre Set e Map?

As diferenças entre o Conjunto e o Mapa são fornecidas abaixo.

  • Set contém apenas valores, enquanto Map contém chaves e valores.
  • Set contém valores exclusivos, enquanto Map pode conter chaves exclusivas com valores duplicados.
  • Set contém um único número de valores nulos, enquanto Map pode incluir uma única chave nula com n número de valores nulos.

11) Qual é a diferença entre HashSet e HashMap?

As diferenças entre HashSet e HashMap estão listadas abaixo.

  • HashSet contém apenas valores, enquanto HashMap inclui a entrada (chave, valor). HashSet pode ser iterado, mas HashMap precisa ser convertido em Set para ser iterado.
  • HashSet implementa a interface Set enquanto HashMap implementa a interface Map
  • HashSet não pode ter nenhum valor duplicado, enquanto HashMap pode conter valores duplicados com chaves exclusivas.
  • HashSet contém o único número de valor nulo, enquanto HashMap pode conter uma única chave nula com n número de valores nulos.

12) Qual é a diferença entre HashMap e TreeMap?

As diferenças entre HashMap e TreeMap são fornecidas abaixo.

  • HashMap não mantém ordem, mas TreeMap mantém ordem ascendente.
  • HashMap é implementado por tabela hash, enquanto TreeMap é implementado por uma estrutura em árvore.
  • HashMap pode ser classificado por chave ou valor, enquanto TreeMap pode ser classificado por chave.
  • HashMap pode conter uma chave nula com vários valores nulos, enquanto TreeMap não pode conter uma chave nula, mas pode ter vários valores nulos.

13) Qual é a diferença entre HashMap e Hashtable?

Não.HashMapTabela hash
1)HashMap não está sincronizado.Hashtable está sincronizado.
2)HashMap pode conter uma chave nula e vários valores nulos.Hashtable não pode conter nenhuma chave nula ou valor nulo.
3)HashMap não é ?thread-safe? portanto, é útil para aplicativos não encadeados.Hashtable é thread-safe e pode ser compartilhado entre vários threads.
4)4) HashMap herda a classe AbstractMapHashtable herda a classe Dictionary.

14) Qual a diferença entre Coleção e Coleções?

As diferenças entre a Coleção e as Coleções são fornecidas abaixo.

  • A Collection é uma interface enquanto Collections é uma classe.
  • A interface Collection fornece a funcionalidade padrão de estrutura de dados para Listar, Definir e Enfileirar. No entanto, a classe Collections serve para classificar e sincronizar os elementos da coleção.
  • A interface Collection fornece os métodos que podem ser usados ​​para estrutura de dados, enquanto a classe Collections fornece os métodos estáticos que podem ser usados ​​para várias operações em uma coleção.

15) Qual é a diferença entre Comparável e Comparador?

Não.ComparávelComparador
1)Comparable fornece apenas um tipo de sequência.O Comparador fornece vários tipos de sequências.
2)Ele fornece um método chamado compareTo().Ele fornece um método chamado compare().
3)Ele é encontrado no pacote java.lang.Ele está localizado no pacote java.util.
4)Se implementarmos a interface Comparable, a classe real será modificada.A classe real não é alterada.

16) O que você entende por BlockingQueue?

BlockingQueue é uma interface que estende a interface Queue. Ele fornece simultaneidade nas operações como recuperação, inserção, exclusão. Durante a recuperação de qualquer elemento, ele espera que a fila não esteja vazia. Enquanto armazena os elementos, espera pelo espaço disponível. BlockingQueue não pode conter elementos nulos e a implementação de BlockingQueue é thread-safe.

Sintaxe:

 public interface BlockingQueue extends Queue 

17) Qual a vantagem do arquivo Propriedades?

Se você alterar o valor no arquivo de propriedades, não será necessário recompilar a classe java. Portanto, torna o aplicativo fácil de gerenciar. É usado para armazenar informações que devem ser alteradas com frequência. Considere o seguinte exemplo.

jdbc
 import java.util.*; import java.io.*; public class Test { public static void main(String[] args)throws Exception{ FileReader reader=new FileReader('db.properties'); Properties p=new Properties(); p.load(reader); System.out.println(p.getProperty('user')); System.out.println(p.getProperty('password')); } } 

Saída

 system oracle 

18) O que funciona o método hashCode()?

O método hashCode() retorna um valor de código hash (um número inteiro).

O método hashCode() retorna o mesmo número inteiro se duas chaves (chamando o método equals()) forem idênticas.

No entanto, é possível que dois números de código hash tenham chaves diferentes ou iguais.

Se dois objetos não produzirem um resultado igual usando o método equals(), então o método hashcode() fornecerá o resultado inteiro diferente para ambos os objetos.


19) Por que substituímos o método equals()?

O método equals é usado para verificar se dois objetos são iguais ou não. Ele precisa ser substituído se quisermos verificar os objetos com base na propriedade.

Por exemplo, Employee é uma classe que possui 3 membros de dados: id, nome e salário. Porém, queremos verificar a igualdade do objeto empregado pelo salário. Então, precisamos substituir o método equals().


20) Como sincronizar elementos de Lista, Conjunto e Mapa?

Sim, a classe Collections fornece métodos para tornar os elementos List, Set ou Map sincronizados:

Lista estática pública lista sincronizada(Lista l){}
conjunto estático público sincronizadoSet(Conjunto s){}
SortedSet estático público sincronizadoSortedSet(SortedSet s){}
Mapa público estático sincronizadoMap(Mapa m){}
SortedMap estático público sincronizadoSortedMap(SortedMap m){}

21) Qual a vantagem da coleção genérica?

Existem três vantagens principais em usar a coleção genérica.

  • Se usarmos a classe genérica, não precisaremos de typecasting.
  • É seguro para o tipo e verificado em tempo de compilação.
  • Generic confirma a estabilidade do código, tornando-o detectável em tempo de compilação.

22) O que é colisão de hash em Hashtable e como ela é tratada em Java?

Duas chaves diferentes com o mesmo valor de hash são conhecidas como colisão de hash. Duas entradas separadas serão mantidas em um único hash bucket para evitar a colisão. Existem duas maneiras de evitar a colisão de hash.

  • Encadeamento Separado
  • Endereçamento aberto

23) O que é a classe Dicionário?

A classe Dictionary fornece a capacidade de armazenar pares de valores-chave.


24) Qual é o tamanho padrão do fator de carga na coleção baseada em hash?

O tamanho padrão do fator de carga é 0,75 . A capacidade padrão é calculada como capacidade inicial * fator de carga. Por exemplo, 16 * 0,75 = 12. Portanto, 12 é a capacidade padrão do Mapa.


25) O que você entende por fail-fast?

O Iterador em java que lança imediatamente ConcurrentmodificationException, se ocorrer alguma modificação estrutural, é chamado de iterador Fail-fast. O iterador Fail-fats não requer nenhum espaço extra na memória.


26) Qual é a diferença entre Array e ArrayList?

As principais diferenças entre Array e ArrayList são fornecidas abaixo.

SNVariedadeListaArray
1O Array tem tamanho fixo, o que significa que não podemos redimensioná-lo conforme a necessidade.ArrayList não tem tamanho fixo, podemos alterar o tamanho dinamicamente.
2As matrizes são do tipo estático.ArrayList tem tamanho dinâmico.
3Matrizes podem armazenar tipos de dados primitivos, bem como objetos.ArrayList não pode armazenar os tipos de dados primitivos, apenas pode armazenar os objetos.

27) Qual é a diferença entre o comprimento de um Array e o tamanho de ArrayList?

O comprimento de um array pode ser obtido usando a propriedade length, enquanto ArrayList não suporta a propriedade length, mas podemos usar o método size() para obter o número de objetos na lista.

Encontrando o comprimento da matriz

 Int [] array = new int[4]; System.out.println('The size of the array is ' + array.length); 

Encontrando o tamanho do ArrayList

 ArrayList list=new ArrayList(); list.add('ankit');�� list.add('nippun'); System.out.println(list.size()); 

28) Como converter ArrayList em Array e Array em ArrayList?

Podemos converter um Array em ArrayList usando o método asList() da classe Arrays. O método asList() é o método estático da classe Arrays e aceita o objeto List. Considere a seguinte sintaxe:

 Arrays.asList(item) 

Podemos converter um ArrayList em Array usando o método toArray() da classe ArrayList. Considere a seguinte sintaxe para converter o objeto ArrayList no objeto List.

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

29) Como tornar Java ArrayList somente leitura?

Podemos obter java ArrayList somente leitura chamando o método Collections.unmodifiableCollection(). Quando definimos um ArrayList como somente leitura, não podemos realizar nenhuma modificação na coleção através dos métodos �add(), remove() ou set().

tcp versus udp

30) Como remover duplicatas do ArrayList?

Existem duas maneiras de remover duplicatas do ArrayList.

    Usando HashSet:Usando HashSet podemos remover o elemento duplicado do ArrayList, mas isso não preservará a ordem de inserção.Usando LinkedHashSet:Também podemos manter o pedido de inserção usando LinkedHashSet em vez de HashSet.

O processo para remover elementos duplicados de ArrayList usando LinkedHashSet:

  • Copie todos os elementos de ArrayList para LinkedHashSet.
  • Esvazie o ArrayList usando o método clear(), que removerá todos os elementos da lista.
  • Agora copie todos os elementos de LinkedHashset para ArrayList.

31) Como reverter ArrayList?

Para reverter um ArrayList, podemos usar o método reverse() da classe Collections. Considere o seguinte exemplo.

 import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Iterator i2 = list.iterator(); Collections.reverse(list); System.out.println('printing list in reverse order....'); while(i2.hasNext()) { System.out.println(i2.next()); } } } 

Saída

 printing the list.... 10 50 30 printing list in reverse order.... 30 50 10 

32) Como classificar ArrayList em ordem decrescente?

Para classificar o ArrayList em ordem decrescente, podemos usar o método reverseOrder da classe Collections. Considere o seguinte exemplo.

 import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); list.add(60); list.add(20); list.add(90); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Comparator cmp = Collections.reverseOrder(); Collections.sort(list,cmp); System.out.println('printing list in descending order....'); Iterator i2 = list.iterator(); while(i2.hasNext()) { System.out.println(i2.next()); } } } 

Saída

 printing the list.... 10 50 30 60 20 90 printing list in descending order.... 90 60 50 30 20 10 

33) Como sincronizar ArrayList?

Podemos sincronizar ArrayList de duas maneiras.

  • Usando o método Collections.synchronizedList()
  • Usando CopyOnWriteArrayList

3.4) Quando usar ArrayList e LinkedList?

LinkedLists são melhores para usar nas operações de atualização, enquanto ArrayLists são melhores para usar nas operações de pesquisa.