Java Collections Intervista Domande e risposte [Per principianti ed esperti]

Pubblicato: 2020-12-16

Se hai avuto a che fare con Java durante la tua laurea o hai lavorato con Java, devi conoscere bene il framework Java Collection. Per quanto riguarda i principianti che hanno appena iniziato il loro viaggio in Java, il framework Collection è un'architettura unificata progettata per archiviare e manipolare un gruppo (raccolta) di oggetti.

In sostanza, una "collezione" rappresenta un singolo gruppo di oggetti. Una raccolta Java include interfacce, classi (ArrayList, Vector, Stack e Hashtable, ecc.) e algoritmi con un'architettura pronta per l'uso per l'archiviazione e la gestione dei dati.

In questo articolo, daremo un'occhiata alle domande più frequenti dell'intervista sulle raccolte Java. Abbiamo creato un elenco delle domande fondamentali che i colloqui pongono comunemente durante il colloquio con i candidati per i profili Java. Questo dovrebbe aiutarti a capire che tipo di domande aspettarti nella tua prossima intervista.

Domande e risposte per l'intervista alle raccolte Java

1. Qual è il vantaggio dell'utilizzo del framework Raccolte?

Java Collections include classi di raccolta sia Generics che Concurrent per operazioni thread-safe. Inoltre, è dotato di interfacce di blocco insieme alle loro implementazioni in pacchetti simultanei Java. Ecco alcuni vantaggi del framework Java Collections:

Facilita il riutilizzo e l'interoperabilità del codice.

L'utilizzo delle classi di raccolta di base riduce sostanzialmente lo sforzo e il tempo di sviluppo.

Le classi di raccolta fornite con JDK riducono gli sforzi necessari per la manutenzione del codice.

2. Distinguere tra Array e Collection.

Sebbene l'array e la raccolta vengano utilizzati per archiviare oggetti e manipolare dati, presentano alcune differenze innate:

  • Non è possibile aumentare o diminuire la lunghezza di un array in base ai requisiti di runtime: gli array hanno dimensioni fisse. Tuttavia, puoi modificare le dimensioni di una raccolta in base alle tue esigenze di ridimensionamento.
  • Un array può memorizzare solo oggetti omogenei (simili o uguali), mentre una raccolta può memorizzare un gruppo eterogeneo di oggetti.
  • Sebbene gli array non offrano metodi pronti per l'uso (ricerca, ordinamento, inserimento e così via) per i requisiti degli utenti, le raccolte includono sempre metodi pronti per l'uso.

3. Qual è il ruolo di Generics nel framework delle raccolte?

Generics ti consente di specificare o definire il tipo di oggetti che una raccolta può archiviare. Se si tenta di aggiungere un elemento di un tipo diverso, Generics visualizzerà un errore in fase di compilazione. Pertanto, mostrando un errore durante la compilazione, aiuta a prevenire ClassCastException in fase di esecuzione. Inoltre, poiché Generics elimina la necessità di utilizzare la funzione di cast e instanceof, rende il codice pulito e preciso.

4. Assegna un nome alle interfacce del framework Raccolte.

Ecco le cinque interfacce principali nel framework Collections:

Interfaccia di raccolta : è il fondamento della gerarchia della raccolta Java. La maggior parte delle raccolte in Java vengono ereditate dall'interfaccia Raccolte.

Interfaccia elenco : è un array esteso contenente elementi ordinati, insieme ai loro duplicati. Questa interfaccia supporta la ricerca basata su indici. Quindi, puoi accedere a qualsiasi elemento dal suo indice. Viene implementato utilizzando diverse classi come ArrayList, LinkedList, ecc.

Imposta interfaccia: è una classe di raccolta che non può contenere elementi duplicati. A differenza di List, non supporta la ricerca basata su indici e non definisce alcun ordine per gli elementi. Set modella l'astrazione dell'insieme matematico ed è implementato da classi come HashSet, TreeSet, LinkedHashSet, ecc.

Interfaccia mappa : è una struttura dati bidimensionale che memorizza i dati in coppie chiave-valore. Mentre la chiave è un codice hash univoco, il valore denota l'elemento. Una mappa non può avere chiavi/elementi duplicati.

Interfaccia della coda: questa interfaccia dispone l'elemento nell'approccio FIFO (First In First Out). Pertanto, gli elementi nell'interfaccia della coda vengono rimossi dalla parte anteriore e aggiunti dall'estremità posteriore.

Leggi anche: Come codificare, compilare ed eseguire progetti Java

5. Quando dovresti sovrascrivere il metodo equals() in Java?

Mentre l'implementazione iniziale del metodo equals() controlla se due oggetti sono simili, è necessario sovrascrivere il metodo equals() se si desidera confrontare gli oggetti in base alle loro proprietà.

6. È utile utilizzare il file Proprietà?

Sì, l'utilizzo del file Properties in Java estende un grande vantaggio: se modifichi i valori in questo file, verrà automaticamente riflesso, senza dover ricompilare la classe Java. Di conseguenza, il file Properties viene utilizzato principalmente per memorizzare informazioni suscettibili di modifica (ad esempio nome utente e password. Consente una facile gestione di un'applicazione Java.

7. Qual è la funzione dell'iteratore nel framework Collection?

Iterator è un'interfaccia disponibile nel pacchetto java.util. Conosciuto anche come Universal Java Cursor, Iterator aiuta a scorrere una raccolta di oggetti. Iterator ti consente di passare una raccolta di oggetti uno per uno e supporta le operazioni READ e REMOVE. È ampiamente utilizzato poiché i nomi dei metodi Iterator possono essere facilmente implementati.

8. Come puoi ordinare gli oggetti della Collezione?

Nel framework Raccolte, l'ordinamento viene in genere implementato utilizzando le interfacce Comparable e Comparator . Se si utilizza il metodo Collections.sort(), verranno ordinati gli elementi in base all'ordine naturale specificato nel metodo compareTo(). Tuttavia, quando si utilizza il metodo Collections.sort(Comparator), verranno ordinati gli elementi in base al metodo compare() dell'interfaccia Comparator.

Leggi: Progetto Java Swing

9. È possibile convertire un ArrayList in Array e un Array in ArrayList?

Sì, è possibile farlo. È possibile convertire un array in un ArrayList utilizzando la funzione asList() della classe Array. La sintassi per questo è la seguente:

Array.asList(elemento)

Puoi convertire un ArrayList in un Array usando la funzione toArray() della classe ArrayList, in questo modo:

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

10. Come invertire un elenco?

Come invertirete un ArrayList?

Puoi invertire un ArrayList usando la funzione reverse() della classe Collections. La sintassi per questo è la seguente:

public static void reverse (Raccolta c)

11. Che cos'è "BlockingQueue?"

L'interfaccia BlockingQueue è presente nel pacchetto java.util.concurrent . Il suo scopo principale è migliorare il controllo del flusso attivando il blocco ogni volta che un thread tenta di rimuovere dalla coda una coda vuota o mettere in coda una coda piena esistente. L'interfaccia BlockingQueue non accetta valori null e, se si tenta di inserire un valore null, verrà visualizzata un'eccezione NullPointerException.

12. Spiega "Coda prioritaria".

Una coda prioritaria è un tipo di dati astratto come una coda standard o una struttura di dati dello stack. Tuttavia, in questa coda, ogni elemento ha una caratteristica unica chiamata "priorità". Poiché si basa su un heap di priorità, Priority Queue serve l'elemento con priorità alta prima di un elemento con priorità bassa, indipendentemente dall'ordine di inserimento. In una coda prioritaria, gli elementi sono ordinati in base all'ordinamento naturale o in base a un comparatore utilizzato al momento della costruzione della coda (dipende dal costruttore utilizzato).

13. In che modo la classe HashSet memorizza gli elementi?

La classe HashSet è un membro del framework Java Collections che eredita la classe AbstractSet e implementa l'interfaccia Set.

HashSet implementa un Hashtable sia per creare che per archiviare una raccolta di elementi. Un Hashtable è un'istanza della classe HashMap che utilizza un meccanismo di hashing per archiviare i dati all'interno di un HashSet. L'hashing si riferisce alla tecnica di conversione delle informazioni in un valore unico noto come codice hash. Il codice hash indicizza i dati associati alla chiave univoca.

14. È possibile aggiungere un elemento nullo in un TreeSet o HashSet?

Sebbene sia possibile aggiungere un solo elemento null in un HashSet, non è possibile farlo in un TreeSet perché utilizza un NavigableMap per memorizzare gli elementi. NavigableMap è un sottotipo di SortedMap che non accetta/supporta valori null. Se si inserisce un elemento null in un TreeSet, verrà attivata un'eccezione NullPointerException.

15. Cosa fa la funzione emptySet()?

In Java, Collections.emptySet() viene utilizzato per restituire l'insieme immutabile vuoto eliminando tutti gli elementi null. Ecco la sintassi per dichiarare un emptySet():

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

16. Perché l'interfaccia della mappa non estende l'interfaccia della raccolta?

Mentre l'interfaccia Map segue una struttura di coppia chiave-valore, l'interfaccia Collection memorizza una raccolta di oggetti in modo strutturato con un meccanismo di accesso definito. Map non estende l'interfaccia Collection perché la funzione add(E e) dell'interfaccia Collection non supporta il modello di coppia chiave-valore della funzione put(K key, V value) di Map.

17. Assegna un nome alle diverse viste Collection estese dall'interfaccia Mappa.

L'interfaccia Mappa offre tre viste delle coppie chiave-valore, vale a dire:

  • Vista set di chiavi
  • Vista del set di valori
  • Vista set di voci

18. Elenca le funzionalità principali di Java Hashmap.

Le caratteristiche fondamentali di Hashmap sono:

  • È possibile memorizzare gli elementi formando coppie chiave-valore e recuperare il valore passando la chiave al metodo corretto.
  • Visualizza NoSuchElementException se non esiste alcun elemento nella mappa.
  • Memorizza solo i riferimenti agli oggetti, rendendo impossibile l'uso di tipi di dati primitivi come double o int. Invece, puoi usare una classe wrapper come Integer o Double.

Da leggere: Domande e risposte per l'intervista Java

19. Definisci "Pila".

In Java, uno Stack indica un'area designata della memoria di un computer che contiene variabili temporanee create da una funzione. Le variabili vengono dichiarate, archiviate e inizializzate durante il runtime in uno Stack.

20. Definisci la "notazione Big-O".

La notazione Big-O definisce le prestazioni di un algoritmo in relazione al numero di elementi in una struttura dati. Le classi di raccolta sono strutture di dati e, pertanto, è necessario utilizzare la notazione Big-O per decidere quale implementazione della raccolta utilizzare in base a memoria, tempo e prestazioni.

Iscriviti ai corsi di ingegneria del software dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

Conclusione

Se sei interessato a saperne di più su Java, lo sviluppo di software full-stack, dai un'occhiata al programma Executive PG di upGrad & IIIT-B in Full-stack Software Development, progettato per i professionisti che lavorano e offre oltre 500 ore di formazione rigorosa, 9+ progetti e incarichi, stato di Alumni IIIT-B, progetti pratici pratici e assistenza sul lavoro con le migliori aziende.

Atterra sul lavoro dei tuoi sogni

Candidati ora per un Master in Ingegneria del Software