logo

34 domande per l'intervista sulle raccolte Java

In Java, le domande relative alle interviste di raccolta vengono poste maggiormente dagli intervistatori. Ecco l'elenco delle domande di intervista sulle raccolte più poste con le risposte.


1) Cos'è il framework Collection in Java?

Collection Framework è una combinazione di classi e interfaccia, utilizzata per archiviare e manipolare i dati sotto forma di oggetti. Fornisce varie classi come ArrayList, Vector, Stack e HashSet, ecc. e interfacce come List, Queue, Set, ecc. per questo scopo.


2) Quali sono le principali differenze tra array e collection?

Array e Collection sono in qualche modo simili per quanto riguarda la memorizzazione dei riferimenti degli oggetti e la manipolazione dei dati, ma differiscono in molti modi. Le principali differenze tra array e Collection sono definite di seguito:

  • Gli array hanno sempre dimensioni fisse, ovvero un utente non può aumentare o diminuire la lunghezza dell'array in base alle proprie esigenze o in fase di esecuzione, ma nella Collezione la dimensione può essere modificata dinamicamente in base alle necessità.
  • Gli array possono archiviare solo oggetti di tipo omogeneo o simile, ma in Collection è possibile archiviare oggetti eterogenei.
  • Gli array non possono fornire il ?già pronto? metodi per i requisiti dell'utente come ordinamento, ricerca, ecc. ma Collection include metodi già pronti da utilizzare.

3) Spiegare le varie interfacce utilizzate nel framework Collection?

Il framework di raccolta implementa varie interfacce, l'interfaccia di raccolta e l'interfaccia di mappa (java.util.Map) sono le interfacce principalmente utilizzate di Java Collection Framework. Di seguito è riportato l'elenco delle interfacce di Collection Framework:

1. Interfaccia di raccolta: La raccolta (java.util.Collection) è l'interfaccia primaria e ogni raccolta deve implementare questa interfaccia.

Sintassi:

 public interface Collectionextends Iterable 

Dove rappresenta che questa interfaccia è di tipo Generico

2. Interfaccia elenco: L'interfaccia Elenco estende l'interfaccia Raccolta ed è una raccolta ordinata di oggetti. Contiene elementi duplicati. Consente inoltre l'accesso casuale degli elementi.

Sintassi:

 public interface List extends Collection 

3. Imposta l'interfaccia: L'interfaccia Set (java.util.Set) è una raccolta che non può contenere elementi duplicati. Può includere solo metodi ereditati dell'interfaccia Collection

Sintassi:

 public interface Set extends Collection 

Interfaccia della coda: L'interfaccia Queue (java.util.Queue) definisce la struttura dei dati della coda, che memorizza gli elementi nel formato FIFO (first in first out).

Sintassi:

 public interface Queue extends Collection 

4. Interfaccia di rimozione della coda: è una coda a doppia estremità. Permette l'inserimento e la rimozione di elementi da entrambe le estremità. Impianta le proprietà sia dello Stack che della coda in modo da poter eseguire operazioni sullo stack LIFO (Last in first out) e sulla coda FIFO (first in first out).

Sintassi:

 public interface Dequeue extends Queue 

5. Interfaccia della mappa: Una mappa (java.util.Map) rappresenta una chiave, coppia di valori di archiviazione di elementi. L'interfaccia della mappa non implementa l'interfaccia della raccolta. Può contenere solo una chiave univoca ma può avere elementi duplicati. Esistono due interfacce che implementano Map in Java: l'interfaccia Map e la mappa ordinata.

Java aggiunge stringa

4) Qual è la differenza tra ArrayList e Vector?

NO.Lista di arrayVettore
1)ArrayList non è sincronizzato.Il vettore è sincronizzato.
2)ArrayList non è una classe legacy.Vector è una classe legacy.
3)ArrayList aumenta le sue dimensioni del 50% rispetto alla dimensione dell'array.Vector aumenta le sue dimensioni raddoppiando la dimensione dell'array.
4)ArrayList non è thread-safe? poiché non è sincronizzato.L'elenco dei vettori è ?thread-safe? poiché ogni metodo è sincronizzato.

5) Qual è la differenza tra ArrayList e LinkedList?

NO.Lista di arrayLista collegata
1)ArrayList utilizza un array dinamico.LinkedList utilizza un elenco doppiamente collegato.
2)ArrayList non è efficiente per la manipolazione perché è richiesto troppo.LinkedList è efficiente per la manipolazione.
3)ArrayList è migliore per archiviare e recuperare i dati.LinkedList è meglio manipolare i dati.
4)ArrayList fornisce accesso casuale.LinkedList non fornisce accesso casuale.
5)ArrayList richiede meno sovraccarico di memoria poiché memorizza solo oggettiLinkedList richiede più memoria in quanto memorizza l'oggetto e l'indirizzo di quell'oggetto.

6) Qual è la differenza tra Iterator e ListIterator?

Iterator attraversa gli elementi solo nella direzione in avanti mentre ListIterator attraversa gli elementi nella direzione avanti e indietro.

NO.IteratoreListIterator
1)L'Iterator attraversa gli elementi solo nella direzione in avanti.ListIterator attraversa gli elementi sia in avanti che in avanti.
2)L'Iterator può essere utilizzato in List, Set e Queue.ListIterator può essere utilizzato solo in List.
3)L'Iterator può eseguire solo l'operazione di rimozione mentre attraversa la raccolta.ListIterator può eseguire ?add,? ?rimuovere,? e? impostato? operazione durante l'attraversamento della raccolta.

7) Qual è la differenza tra Iterator ed Enumerazione?

NO.IteratoreEnumerazione
1)L'Iterator può attraversare elementi legacy e non legacy.L'enumerazione può attraversare solo elementi legacy.
2)L'Iterator è fail-fast.L'enumerazione non è fail-fast.
3)L'Iterator è più lento dell'Enumerazione.L'enumerazione è più veloce di Iterator.
4)L'Iterator può eseguire l'operazione di rimozione mentre attraversa la raccolta.L'enumerazione può eseguire solo operazioni di attraversamento della raccolta.

8) Qual è la differenza tra Lista e Set?

Sia List che Set estendono l'interfaccia di raccolta. Tuttavia, ci sono alcune differenze tra i due che sono elencate di seguito.

  • L'Elenco può contenere elementi duplicati mentre Set include elementi univoci.
  • La List è una raccolta ordinata che mantiene l'ordine di inserimento mentre Set è una raccolta non ordinata che non preserva l'ordine di inserimento.
  • L'interfaccia List contiene una singola classe legacy che è la classe Vector mentre l'interfaccia Set non ha alcuna classe legacy.
  • L'interfaccia List può consentire n numero di valori null mentre l'interfaccia Set consente solo un singolo valore null.

9) Qual è la differenza tra HashSet e TreeSet?

HashSet e TreeSet, entrambe le classi, implementano l'interfaccia Set. Le differenze tra i due sono elencate di seguito.

  • HashSet non mantiene alcun ordine mentre TreeSet mantiene l'ordine crescente.
  • HashSet sovrastato dalla tabella hash mentre TreeSet è implementato da una struttura ad albero.
  • HashSet funziona più velocemente di TreeSet.
  • HashSet è supportato da HashMap mentre TreeSet è supportato da TreeMap.

10) Qual è la differenza tra Set e Mappa?

Le differenze tra il Set e la Mappa sono riportate di seguito.

  • Set contiene solo valori mentre Map contiene sia chiave che valori.
  • Set contiene valori univoci mentre Map può contenere chiavi univoche con valori duplicati.
  • Set contiene un singolo numero di valore null mentre Map può includere una singola chiave null con n numero di valori null.

11) Qual è la differenza tra HashSet e HashMap?

Le differenze tra HashSet e HashMap sono elencate di seguito.

  • HashSet contiene solo valori mentre HashMap include la voce (chiave, valore). HashSet può essere ripetuto, ma HashMap deve essere convertito in Set per essere ripetuto.
  • HashSet implementa l'interfaccia Set mentre HashMap implementa l'interfaccia Map
  • HashSet non può avere alcun valore duplicato mentre HashMap può contenere valori duplicati con chiavi univoche.
  • HashSet contiene l'unico numero singolo di valore null mentre HashMap può contenere una singola chiave null con n numero di valori null.

12) Qual è la differenza tra HashMap e TreeMap?

Le differenze tra HashMap e TreeMap sono riportate di seguito.

  • HashMap non mantiene alcun ordine, ma TreeMap mantiene l'ordine crescente.
  • HashMap è implementato dalla tabella hash mentre TreeMap è implementato da una struttura ad albero.
  • HashMap può essere ordinato per chiave o valore mentre TreeMap può essere ordinato per chiave.
  • HashMap può contenere una chiave nulla con più valori nulli mentre TreeMap non può contenere una chiave nulla ma può avere più valori nulli.

13) Qual è la differenza tra HashMap e Hashtable?

NO.HashMapTabella hash
1)HashMap non è sincronizzato.La tabella hash è sincronizzata.
2)HashMap può contenere una chiave nulla e più valori nulli.La tabella hash non può contenere chiavi null o valori null.
3)HashMap non è ?thread-safe? quindi è utile per le applicazioni senza thread.Hashtable è thread-safe e può essere condiviso tra vari thread.
4)4) HashMap eredita la classe AbstractMapHashtable eredita la classe Dictionary.

14) Qual è la differenza tra Collezione e Collezioni?

Le differenze tra Collezione e Collezioni sono riportate di seguito.

  • La Collection è un'interfaccia mentre Collections è una classe.
  • L'interfaccia Raccolta fornisce la funzionalità standard della struttura dati a Elenco, Set e Coda. Tuttavia, la classe Collections serve per ordinare e sincronizzare gli elementi della raccolta.
  • L'interfaccia Collection fornisce i metodi che possono essere utilizzati per la struttura dei dati mentre la classe Collections fornisce i metodi statici che possono essere utilizzati per varie operazioni su una raccolta.

15) Qual è la differenza tra Comparabile e Comparatore?

NO.ParagonabileComparatore
1)Comparable fornisce solo un tipo di sequenza.Il Comparatore fornisce più tipi di sequenze.
2)Fornisce un metodo denominato compareTo().Fornisce un metodo denominato compare().
3)Si trova nel pacchetto java.lang.Si trova nel pacchetto java.util.
4)Se implementiamo l'interfaccia Comparable, la classe effettiva viene modificata.La classe effettiva non viene modificata.

16) Cosa intendi per BlockingQueue?

BlockingQueue è un'interfaccia che estende l'interfaccia Queue. Fornisce concorrenza nelle operazioni come recupero, inserimento, cancellazione. Durante il recupero di qualsiasi elemento, attende che la coda non sia vuota. Mentre immagazzina gli elementi attende lo spazio disponibile. BlockingQueue non può contenere elementi null e l'implementazione di BlockingQueue è thread-safe.

Sintassi:

np.log
 public interface BlockingQueue extends Queue 

17) Qual è il vantaggio del file Proprietà?

Se modifichi il valore nel file delle proprietà, non è necessario ricompilare la classe Java. Quindi, rende l'applicazione facile da gestire. Viene utilizzato per memorizzare informazioni che devono essere modificate frequentemente. Considera il seguente esempio.

 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')); } } 

Produzione

 system oracle 

18) Cosa significa il metodo hashCode()?

Il metodo hashCode() restituisce un valore di codice hash (un numero intero).

Il metodo hashCode() restituisce lo stesso numero intero se due chiavi (chiamando il metodo equals()) sono identiche.

Tuttavia, è possibile che due numeri di codice hash possano avere chiavi diverse o uguali.

Se due oggetti non producono un risultato uguale utilizzando il metodo equals(), il metodo hashcode() fornirà il risultato intero diverso per entrambi gli oggetti.


19) Perché sovrascriviamo il metodo equals()?

Il metodo equals viene utilizzato per verificare se due oggetti sono uguali o meno. È necessario sovrascriverlo se vogliamo controllare gli oggetti in base alla proprietà.

Ad esempio, Employee è una classe che ha 3 membri dati: ID, nome e stipendio. Tuttavia, vogliamo verificare l'uguaglianza dell'oggetto del dipendente rispetto allo stipendio. Quindi, dobbiamo sovrascrivere il metodo equals().


20) Come sincronizzare gli elementi Elenco, Set e Mappa?

Sì, la classe Collections fornisce metodi per rendere sincronizzati gli elementi List, Set o Map:

elenco statico pubblico sincronizzatoLista(Lista l){}
pubblico statico Set sincronizzatoSet(Set s){}
pubblico statico SortedSet sincronizzatoSortedSet(SortedSet s){}
Mappa statica pubblica sincronizzataMappa(Mappa m){}
SortedMap pubblica statica sincronizzataSortedMap(SortedMap m){}

21) Qual è il vantaggio della collezione generica?

Ci sono tre vantaggi principali derivanti dall'utilizzo della raccolta generica.

  • Se usiamo la classe generica, non abbiamo bisogno del typecasting.
  • È indipendente dai tipi e controllato in fase di compilazione.
  • Generic conferma la stabilità del codice rendendolo rilevabile dai bug in fase di compilazione.

22) Cos'è la collisione hash in Hashtable e come viene gestita in Java?

Due chiavi diverse con lo stesso valore hash sono note come collisioni hash. Due voci separate verranno conservate in un unico hash bucket per evitare la collisione. Esistono due modi per evitare la collisione di hash.

  • Concatenamento separato
  • Apri Indirizzamento

23) Cos'è la classe Dizionario?

La classe Dictionary fornisce la possibilità di archiviare coppie chiave-valore.


24) Qual è la dimensione predefinita del fattore di carico nella raccolta basata su hashing?

La dimensione predefinita del fattore di carico è 0,75 . La capacità predefinita viene calcolata come capacità iniziale * fattore di carico. Ad esempio, 16 * 0,75 = 12. Quindi, 12 è la capacità predefinita di Map.


25) Cosa intendi per fail-fast?

L'iteratore in Java che lancia immediatamente ConcurrentmodificationException, se si verifica una modifica strutturale, è chiamato iteratore Fail-fast. L'iteratore Fail-fats non richiede spazio aggiuntivo in memoria.


26) Qual è la differenza tra Array e ArrayList?

Le principali differenze tra Array e ArrayList sono riportate di seguito.

SNVettoreLista di array
1L'array ha dimensioni fisse, il che significa che non possiamo ridimensionarlo secondo necessità.ArrayList non ha dimensioni fisse, possiamo modificare le dimensioni in modo dinamico.
2Gli array sono di tipo statico.ArrayList ha dimensioni dinamiche.
3Gli array possono memorizzare tipi di dati primitivi e oggetti.ArrayList non può memorizzare i tipi di dati primitivi, può solo memorizzare gli oggetti.

27) Qual è la differenza tra la lunghezza di un Array e la dimensione di ArrayList?

La lunghezza di un array può essere ottenuta utilizzando la proprietà length mentre ArrayList non supporta la proprietà length, ma possiamo utilizzare il metodo size() per ottenere il numero di oggetti nell'elenco.

Trovare la lunghezza dell'array

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

Trovare la dimensione di ArrayList

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

28) Come convertire ArrayList in Array e Array in ArrayList?

Possiamo convertire un Array in ArrayList utilizzando il metodo asList() della classe Arrays. Il metodo asList() è il metodo statico della classe Arrays e accetta l'oggetto List. Considera la seguente sintassi:

 Arrays.asList(item) 

Possiamo convertire un ArrayList in Array utilizzando il metodo toArray() della classe ArrayList. Considera la seguente sintassi per convertire ArrayList nell'oggetto List.

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

29) Come rendere Java ArrayList di sola lettura?

Possiamo ottenere Java ArrayList di sola lettura chiamando il metodo Collections.unmodifyingCollection(). Quando definiamo un ArrayList come di sola lettura, non possiamo eseguire alcuna modifica nella raccolta tramite il metodo add(), delete() o set().


30) Come rimuovere i duplicati da ArrayList?

Esistono due modi per rimuovere i duplicati dall'ArrayList.

    Utilizzando HashSet:Utilizzando HashSet possiamo rimuovere l'elemento duplicato dall'ArrayList, ma non conserverà l'ordine di inserimento.Utilizzo di LinkedHashSet:Possiamo anche mantenere l'ordine di inserimento utilizzando LinkedHashSet invece di HashSet.

Il processo per rimuovere elementi duplicati da ArrayList utilizzando LinkedHashSet:

  • Copia tutti gli elementi di ArrayList in LinkedHashSet.
  • Svuota l'ArrayList utilizzando il metodo clear(), che rimuoverà tutti gli elementi dall'elenco.
  • Ora copia tutti gli elementi di LinkedHashset in ArrayList.

31) Come invertire ArrayList?

Per invertire un ArrayList, possiamo usare il metodo reverse() della classe Collections. Considera il seguente esempio.

 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()); } } } 

Produzione

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

32) Come ordinare ArrayList in ordine decrescente?

Per ordinare l'ArrayList in ordine decrescente, possiamo utilizzare il metodo reverseOrder della classe Collections. Considera il seguente esempio.

 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()); } } } 

Produzione

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

33) Come sincronizzare ArrayList?

Possiamo sincronizzare ArrayList in due modi.

  • Utilizzo del metodo Collections.synchronizedList()
  • Utilizzando CopyOnWriteArrayList

3.4) Quando utilizzare ArrayList e LinkedList?

Le LinkedList sono migliori da utilizzare per le operazioni di aggiornamento mentre le ArrayList sono migliori da utilizzare per le operazioni di ricerca.