logo

34 Întrebări de interviu Java Collections

În Java, întrebările interviului de colectare sunt cele mai puse de intervievatori. Iată lista celor mai adresate întrebări de interviu pentru colecții cu răspunsuri.


1) Ce este cadrul de colectare în Java?

Collection Framework este o combinație de clase și interfață, care este folosită pentru a stoca și manipula datele sub formă de obiecte. Oferă diverse clase, cum ar fi ArrayList, Vector, Stack și HashSet, etc. și interfețe precum List, Queue, Set etc. în acest scop.


2) Care sunt principalele diferențe dintre matrice și colecție?

Array și Collection sunt oarecum similare în ceea ce privește stocarea referințelor obiectelor și manipularea datelor, dar diferă în multe feluri. Principalele diferențe dintre matrice și colecție sunt definite mai jos:

  • Matricele sunt întotdeauna de dimensiune fixă, adică un utilizator nu poate crește sau micșora lungimea matricei în funcție de cerințele lor sau în timpul execuției, dar în colecție, dimensiunea poate fi modificată dinamic în funcție de nevoi.
  • Matricele pot stoca doar obiecte de tip omogene sau similar, dar în Collection pot fi stocate obiecte eterogene.
  • Array-urile nu pot oferi „ready-made”? metode pentru cerințele utilizatorului, cum ar fi sortarea, căutarea etc., dar Collection include metode gata de utilizare.

3) Explicați diferitele interfețe utilizate în cadrul Collection?

Cadrul de colectare implementează diverse interfețe, interfața de colectare și interfața Map (java.util.Map) sunt interfețele utilizate în principal ale Java Collection Framework. Lista de interfețe ale Collection Framework este prezentată mai jos:

1. Interfață de colecție: Colecția (java.util.Collection) este interfața principală și fiecare colecție trebuie să implementeze această interfață.

Sintaxă:

 public interface Collectionextends Iterable 

Unde înseamnă că această interfață este de tip generic

2. Interfață listă: Interfața List extinde interfața Collection și este o colecție ordonată de obiecte. Conține elemente duplicat. De asemenea, permite accesul aleatoriu al elementelor.

Sintaxă:

 public interface List extends Collection 

3. Setați interfața: Interfața Set (java.util.Set) este o colecție care nu poate conține elemente duplicate. Poate include numai metode moștenite ale interfeței Collection

Sintaxă:

 public interface Set extends Collection 

Interfață coadă: Interfața Queue (java.util.Queue) definește structura datelor cozii, care stochează elementele sub forma FIFO (primul intrat, primul ieşit).

Sintaxă:

 public interface Queue extends Collection 

4. Interfața de scoatere din coadă: este o coadă dublă. Permite introducerea și îndepărtarea elementelor de la ambele capete. Implantează proprietățile atât ale stivei, cât și ale cozii, astfel încât să poată efectua operațiuni de stivă LIFO (Last in first out) și FIFO (primul intrat, primul ieșit).

Sintaxă:

 public interface Dequeue extends Queue 

5. Interfață hartă: O hartă (java.util.Map) reprezintă o cheie, o pereche de valori de stocare a elementelor. Interfața Hartă nu implementează interfața Collection. Poate conține doar o cheie unică, dar poate avea elemente duplicate. Există două interfețe care implementează Map în java, care sunt Map interface și Sorted Map.

compoziția relației

4) Care este diferența dintre ArrayList și Vector?

Nu.ArrayListVector
1)ArrayList nu este sincronizat.Vectorul este sincronizat.
2)ArrayList nu este o clasă moștenită.Vector este o clasă moștenită.
3)ArrayList își mărește dimensiunea cu 50% din dimensiunea matricei.Vector își mărește dimensiunea dublând dimensiunea matricei.
4)ArrayList nu este ?thread-safe? deoarece nu este sincronizat.Lista de vectori este „sigură pentru fire”? deoarece fiecare metodă este sincronizată.

5) Care este diferența dintre ArrayList și LinkedList?

Nu.ArrayListLinkedList
1)ArrayList folosește o matrice dinamică.LinkedList folosește o listă dublu legată.
2)ArrayList nu este eficient pentru manipulare deoarece este nevoie de prea mult.LinkedList este eficient pentru manipulare.
3)ArrayList este mai bine pentru a stoca și a prelua date.LinkedList este mai bine pentru a manipula datele.
4)ArrayList oferă acces aleatoriu.LinkedList nu oferă acces aleatoriu.
5)ArrayList necesită mai puțină memorie, deoarece stochează numai obiecteLinkedList necesită mai multă memorie, deoarece stochează obiectul, precum și adresa acelui obiect.

6) Care este diferența dintre Iterator și ListIterator?

Iterator traversează elementele numai în direcția înainte, în timp ce ListIterator traversează elementele în direcția înainte și înapoi.

Nu.IteratorListIterator
1)Iteratorul traversează elementele numai în direcția înainte.ListIterator traversează elementele în direcții înapoi și înainte.
2)Iteratorul poate fi utilizat în listă, set și coadă.ListIterator poate fi utilizat numai în Listă.
3)Iteratorul poate efectua operația de eliminare numai în timp ce parcurge colecția.ListIterator poate efectua ?add,? ?elimina,? si ?set? funcţionarea în timpul parcurgerii colecţiei.

7) Care este diferența dintre Iterator și Enumerare?

Nu.IteratorEnumerare
1)Iteratorul poate traversa elementele moștenite și nelegate.Enumerarea poate traversa doar elementele moștenite.
2)Iteratorul este rapid.Enumerarea nu este rapidă.
3)Iteratorul este mai lent decât Enumerarea.Enumerarea este mai rapidă decât Iterator.
4)Iteratorul poate efectua operația de eliminare în timp ce parcurge colecția.Enumerarea poate efectua numai operații de traversare pe colecție.

8) Care este diferența dintre Listă și Set?

Listă și Set extind interfața de colecție. Cu toate acestea, există unele diferențe între ambele, care sunt enumerate mai jos.

  • Lista poate conține elemente duplicate, în timp ce Set include elemente unice.
  • Lista este o colecție ordonată care menține ordinea de inserare, în timp ce Set este o colecție neordonată care nu păstrează ordinea de inserare.
  • Interfața List conține o singură clasă moștenită care este clasa Vector, în timp ce interfața Set nu are nicio clasă moștenită.
  • Interfața Listă poate permite n număr de valori nule, în timp ce interfața Set permite doar o singură valoare nulă.

9) Care este diferența dintre HashSet și TreeSet?

HashSet și TreeSet, ambele clase, implementează interfața Set. Diferențele dintre ambele sunt enumerate mai jos.

  • HashSet nu menține nicio ordine, în timp ce TreeSet menține ordinea crescătoare.
  • HashSet inevitabil de tabelul hash, în timp ce TreeSet implementat de o structură Tree.
  • HashSet funcționează mai rapid decât TreeSet.
  • HashSet este susținut de HashMap, în timp ce TreeSet este susținut de TreeMap.

10) Care este diferența dintre Set și Map?

Diferențele dintre set și hartă sunt prezentate mai jos.

  • Setul conține numai valori, în timp ce Harta conține cheia și valorile ambele.
  • Setul conține valori unice, în timp ce Harta poate conține chei unice cu valori duplicate.
  • Setul deține un singur număr de valori nule, în timp ce Map poate include o singură cheie nulă cu un număr n de valori nule.

11) Care este diferența dintre HashSet și HashMap?

Diferențele dintre HashSet și HashMap sunt enumerate mai jos.

  • HashSet conține numai valori, în timp ce HashMap include intrarea (cheie, valoare). HashSet poate fi repetat, dar HashMap trebuie să se convertească în Set pentru a fi repetat.
  • HashSet implementează interfața Set, în timp ce HashMap implementează interfața Map
  • HashSet nu poate avea nicio valoare duplicată, în timp ce HashMap poate conține valori duplicate cu chei unice.
  • HashSet conține singurul număr unic de valori nule, în timp ce HashMap poate deține o singură cheie nulă cu un număr n de valori nule.

12) Care este diferența dintre HashMap și TreeMap?

Diferențele dintre HashMap și TreeMap sunt prezentate mai jos.

  • HashMap nu menține nicio ordine, dar TreeMap menține ordinea ascendentă.
  • HashMap este implementat de tabelul hash, în timp ce TreeMap este implementat de o structură Tree.
  • HashMap poate fi sortat după cheie sau valoare, în timp ce TreeMap poate fi sortat după cheie.
  • HashMap poate conține o cheie nulă cu mai multe valori nule, în timp ce TreeMap nu poate deține o cheie nulă, dar poate avea mai multe valori nule.

13) Care este diferența dintre HashMap și Hashtable?

Nu.HashMapHashtable
1)HashMap nu este sincronizat.Hashtable este sincronizat.
2)HashMap poate conține o cheie nulă și mai multe valori nule.Hashtable nu poate conține nicio cheie nulă sau valoare nulă.
3)HashMap nu este ?thread-safe,? deci este util pentru aplicații fără filet.Hashtable este thread-safe și poate fi partajat între diferite fire.
4)4) HashMap moștenește clasa AbstractMapHashtable moștenește clasa Dicționar.

14) Care este diferența dintre Colecție și Colecții?

Diferențele dintre Colecție și Colecții sunt prezentate mai jos.

Java nu
  • Colecția este o interfață, în timp ce Colecțiile este o clasă.
  • Interfața de colecție oferă funcționalitatea standard a structurii de date pentru Listă, Set și coadă. Cu toate acestea, clasa Colecții este de a sorta și sincroniza elementele de colecție.
  • Interfața Collection oferă metodele care pot fi utilizate pentru structura datelor, în timp ce clasa Colecții oferă metode statice care pot fi utilizate pentru diferite operațiuni pe o colecție.

15) Care este diferența dintre Comparabil și Comparator?

Nu.ComparabilComparator
1)Comparabil oferă un singur fel de secvență.Comparatorul oferă mai multe tipuri de secvențe.
2)Oferă o metodă numită compareTo().Oferă o metodă numită compare().
3)Se găsește în pachetul java.lang.Se află în pachetul java.util.
4)Dacă implementăm interfața Comparable, clasa actuală este modificată.Clasa reală nu este schimbată.

16) Ce înțelegeți prin BlockingQueue?

BlockingQueue este o interfață care extinde interfața Queue. Oferă concurență în operațiuni precum regăsire, inserare, ștergere. În timpul preluării oricărui element, acesta așteaptă ca coada să nu fie goală. În timp ce depozitează elementele, așteaptă spațiul disponibil. BlockingQueue nu poate conține elemente nule, iar implementarea BlockingQueue este sigură pentru fire.

Sintaxă:

 public interface BlockingQueue extends Queue 

17) Care este avantajul fișierului de proprietăți?

Dacă modificați valoarea din fișierul de proprietăți, nu trebuie să recompilați clasa java. Deci, face aplicația ușor de gestionat. Este folosit pentru a stoca informații care urmează să fie modificate frecvent. Luați în considerare următorul exemplu.

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

Ieșire

 system oracle 

18) Ce înseamnă metoda hashCode()?

Metoda hashCode() returnează o valoare de cod hash (un număr întreg).

Metoda hashCode() returnează același număr întreg dacă două chei (prin apelarea metodei equals()) sunt identice.

Cu toate acestea, este posibil ca două numere de cod hash să aibă chei diferite sau aceleași.

Dacă două obiecte nu produc un rezultat egal prin utilizarea metodei equals(), atunci metoda hashcode() va furniza rezultatul întreg diferit pentru ambele obiecte.


19) De ce suprascriem metoda equals()?

Metoda egal este folosită pentru a verifica dacă două obiecte sunt identice sau nu. Trebuie să fie suprascris dacă vrem să verificăm obiectele pe baza proprietății.

De exemplu, Employee este o clasă care are 3 membri de date: id, nume și salariu. Totuși, dorim să verificăm egalitatea obiectului angajatului prin salariu. Apoi, trebuie să suprascriem metoda equals().


20) Cum să sincronizați elementele Listă, Set și Map?

Da, clasa Colecții oferă metode pentru a face ca elementele Listă, Set sau Hartă să fie sincronizate:

Public static List synchronizedList(Lista l){}
public static Set synchronizedSet(Set s){}
public static SortedSet synchronizedSortedSet(SortedSet s){}
Hartă statică publică Hartă sincronizată (Hartă m){}
public static SortedMap synchronizedSortedMap(SortedMap m){}

21) Care este avantajul colecției generice?

Există trei avantaje principale ale utilizării colecției generice.

  • Dacă folosim clasa generică, nu avem nevoie de tipărire.
  • Este sigur de tip și verificat în timpul compilării.
  • Generic confirmă stabilitatea codului făcându-l detectabil în timpul compilării.

22) Ce este hash-colision în Hashtable și cum este gestionată în Java?

Două chei diferite cu aceeași valoare hash sunt cunoscute ca hash-collision. Două intrări separate vor fi păstrate într-o singură găleată hash pentru a evita coliziunea. Există două moduri de a evita coliziunea hash.

  • Înlănțuire separată
  • Deschideți Adresare

23) Ce este clasa Dicționar?

Clasa Dicționar oferă capacitatea de a stoca perechi cheie-valoare.


24) Care este dimensiunea implicită a factorului de încărcare în colectarea bazată pe hashing?

Mărimea implicită a factorului de încărcare este 0,75 . Capacitatea implicită este calculată ca capacitate inițială * factor de încărcare. De exemplu, 16 * 0,75 = 12. Deci, 12 este capacitatea implicită a Hărții.


25) Ce înțelegeți prin fail-fast?

Iteratorul în java care aruncă imediat ConcurrentmodificationException, dacă are loc vreo modificare structurală, este numit iterator Fail-fast. Iteratorul Fail-fats nu necesită spațiu suplimentar în memorie.


26) Care este diferența dintre Array și ArrayList?

Principalele diferențe dintre Array și ArrayList sunt prezentate mai jos.

SNMatriceArrayList
1Array-ul are o dimensiune fixă, înseamnă că nu putem redimensiona matricea după nevoie.ArrayList nu are dimensiunea fixă, putem schimba dimensiunea în mod dinamic.
2Matricele sunt de tip static.ArrayList este de dimensiune dinamică.
3Array-urile pot stoca tipuri de date primitive, precum și obiecte.ArrayList nu poate stoca tipurile de date primitive, ci doar obiectele.

27) Care este diferența dintre lungimea unui Array și dimensiunea ArrayList?

Lungimea unui tablou poate fi obținută folosind proprietatea lungimii, în timp ce ArrayList nu acceptă proprietatea lungime, dar putem folosi metoda size() pentru a obține numărul de obiecte din listă.

Găsirea lungimii matricei

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

Găsirea dimensiunii ArrayList

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

28) Cum se convertesc ArrayList în Array și Array în ArrayList?

Putem converti un Array în ArrayList folosind metoda asList() a clasei Arrays. Metoda asList() este metoda statică a clasei Arrays și acceptă obiectul List. Luați în considerare următoarea sintaxă:

 Arrays.asList(item) 

Putem converti un ArrayList în Array folosind metoda toArray() din clasa ArrayList. Luați în considerare următoarea sintaxă pentru a converti ArrayList în obiectul List.

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

29) Cum se face ca Java ArrayList să fie doar pentru citire?

Putem obține java ArrayList Read-only apelând metoda Collections.unmodifiableCollection() . Când definim o ArrayList ca Read-only, atunci nu putem efectua nicio modificare în colecție prin metoda �add(), remove() sau set().


30) Cum să eliminați duplicatele din ArrayList?

Există două moduri de a elimina duplicatele din ArrayList.

    Folosind HashSet:Folosind HashSet putem elimina elementul duplicat din ArrayList, dar nu va păstra ordinea de inserare.Folosind LinkedHashSet:De asemenea, putem menține ordinea de inserare folosind LinkedHashSet în loc de HashSet.

Procesul de eliminare a elementelor duplicate din ArrayList folosind LinkedHashSet:

  • Copiați toate elementele ArrayList în LinkedHashSet.
  • Goliți ArrayList folosind metoda clear(), care va elimina toate elementele din listă.
  • Acum copiați toate elementele LinkedHashset în ArrayList.

31) Cum se inversează ArrayList?

Pentru a inversa un ArrayList, putem folosi metoda reverse() din clasa Collections. Luați în considerare următorul exemplu.

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

Ieșire

clasă vs obiect în java
 printing the list.... 10 50 30 printing list in reverse order.... 30 50 10 

32) Cum se sortează ArrayList în ordine descrescătoare?

Pentru a sorta ArrayList în ordine descrescătoare, putem folosi metoda reverseOrder a clasei Collections. Luați în considerare următorul exemplu.

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

Ieșire

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

33) Cum se sincronizează ArrayList?

Putem sincroniza ArrayList în două moduri.

  • Folosind metoda Collections.synchronizedList().
  • Folosind CopyOnWriteArrayList

3. 4) Când să utilizați ArrayList și LinkedList?

LinkedLists sunt mai bine de utilizat pentru operațiunile de actualizare, în timp ce ArrayLists sunt mai bine de utilizat pentru operațiunile de căutare.