Întrebări și răspunsuri la interviu pentru colecții Java

Publicat: 2020-12-16

Dacă te-ai ocupat de Java la diploma de licență sau ai lucrat cu Java, trebuie să cunoști bine cadrul Java Collection. În ceea ce privește începătorii care tocmai și-au început călătoria Java, cadrul Collection este o arhitectură unificată concepută pentru a stoca și manipula un grup (colecție) de obiecte.

În esență, o „colecție” reprezintă un singur grup de obiecte. O colecție Java include interfețe, clase (ArrayList, Vector, Stack și Hashtable etc.) și algoritmi cu o arhitectură gata de utilizare pentru stocarea și manipularea datelor.

În acest articol, vom arunca o privire la cele mai frecvente întrebări de interviu cu Java Collections. Am creat o listă cu întrebările fundamentale pe care interviurile le pun de obicei atunci când intervievează candidații pentru profiluri Java. Acest lucru ar trebui să vă ajute să înțelegeți ce fel de întrebări să așteptați la următorul interviu.

Întrebări și răspunsuri la interviu Java Collections

1. Care este avantajul utilizării cadrului Collections?

Colecțiile Java includ atât clase de colecție generice, cât și concurență pentru operațiuni sigure pentru fire. De asemenea, vine echipat cu interfețe de blocare împreună cu implementările acestora în pachete concurente Java. Iată câteva beneficii ale cadrului Java Collections:

Facilitează reutilizarea codului și interoperabilitatea.

Utilizarea claselor de colectare de bază reduce substanțial efortul și timpul de dezvoltare.

Clasele de colectare livrate cu JDK reduc eforturile necesare pentru întreținerea codului.

2. Distingeți între Array și Collection.

Deși matricea și colecția sunt folosite pentru stocarea obiectelor și manipularea datelor, ele au câteva diferențe înnăscute:

  • Nu puteți crește sau micșora lungimea unei matrice în funcție de cerințele dvs. de rulare – matricele au dimensiuni fixe. Cu toate acestea, puteți modifica dimensiunea unei colecții în funcție de nevoile dvs. de scalare.
  • O matrice poate stoca doar obiecte omogene (similare sau aceleași), în timp ce o colecție poate stoca un grup eterogen de obiecte.
  • În timp ce tablourile nu oferă metode gata de utilizare (căutare, sortare, inserare etc.) pentru cerințele utilizatorului, colecțiile includ întotdeauna metode gata de utilizare.

3. Care este rolul genericelor în cadrul Colecțiilor?

Generics vă permite să specificați sau să definiți tipul de obiecte pe care o colecție le poate stoca. Dacă încercați să adăugați un element de alt tip, Generics va afișa o eroare de compilare. Astfel, prin afișarea unei erori în timpul compilării, ajută la prevenirea ClassCastException în timpul execuției. Mai mult decât atât, deoarece Generics elimină necesitatea de a folosi funcția de casting și instanceof, face codul curat și precis.

4. Denumiți interfețele cadrului Collections.

Iată cele cinci interfețe de bază din cadrul Colecțiilor:

Interfață de colecție – Este baza ierarhiei Colecției Java. Majoritatea colecțiilor din Java sunt moștenite din interfața Colecții.

Interfață Listă – Este o matrice extinsă care conține elemente ordonate, împreună cu duplicatele acestora. Această interfață acceptă căutarea bazată pe index. Deci, puteți accesa orice element din indexul său. Este implementat prin utilizarea diferitelor clase precum ArrayList, LinkedList etc.

Set interface – Este o clasă de colecție care nu poate conține elemente duplicat. Spre deosebire de List, nu acceptă căutarea bazată pe index și nu definește nicio ordine pentru elemente. Setul modelează abstracția setului matematic și este implementat de clase precum HashSet, TreeSet, LinkedHashSet etc.

Interfață hartă – Este o structură de date bidimensională care stochează date în perechi cheie-valoare. În timp ce cheia este un cod hash unic, valoarea denotă elementul. O hartă nu poate avea chei/elemente duplicat.

Interfață coadă – Această interfață aranjează elementul în abordarea First In First Out (FIFO). Astfel, elementele din interfața de coadă sunt îndepărtate din față și adăugate din spate.

Citiți și: Cum să codificați, să compilați și să rulați proiecte Java

5. Când ar trebui să înlocuiți metoda equals() în Java?

În timp ce implementarea inițială a metodei equals() verifică dacă două obiecte sunt similare, este necesar să înlocuiți metoda equals() dacă doriți să comparați obiectele pe baza proprietăților lor.

6. Este benefic să folosiți fișierul Proprietăți?

Da, utilizarea fișierului Proprietăți în Java extinde un avantaj major – dacă modificați valorile din acest fișier, acesta va fi reflectat automat, fără a fi necesară recompilarea clasei Java. Ca rezultat, fișierul Proprietăți este folosit în principal pentru stocarea informațiilor care pot fi modificate (de exemplu, numele de utilizator și parolele. Permite gestionarea ușoară a unei aplicații Java.

7. Care este funcția Iteratorului în cadrul Colecției?

Iteratorul este o interfață care vine în pachetul java.util. Cunoscut și sub numele de Universal Java Cursor, Iteratorul ajută la iterarea unei colecții de obiecte. Iteratorul vă permite să treceți o colecție de obiecte unul câte unul și acceptă operațiunile READ și REMOVE. Este utilizat pe scară largă deoarece numele metodelor Iterator pot fi implementate cu ușurință.

8. Cum puteți sorta obiectele Colecție?

În cadrul Colecțiilor, sortarea este de obicei implementată prin utilizarea interfețelor Comparabil și Comparator . Dacă utilizați metoda Collections.sort(), aceasta va sorta elementele în funcție de ordinea naturală specificată în metoda compareTo(). Cu toate acestea, atunci când utilizați metoda Collections.sort(Comparator), aceasta va sorta elementele conform metodei compare() a interfeței Comparator.

Citiți: Proiectul Java Swing

9. Este posibil să convertiți un ArrayList în Array și un Array în ArrayList?

Da, este posibil să faci asta. Puteți converti un Array într-o ArrayList utilizând funcția asList() a clasei Array. Sintaxa pentru aceasta este următoarea:

Arrays.asList(articol)

Puteți converti un ArrayList într-un Array folosind funcția toArray() a clasei ArrayList, astfel:

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

10. Cum se inversează o listă?

Cum vei inversa un ArrayList?

Puteți inversa un ArrayList folosind funcția reverse() a clasei Collections. Sintaxa pentru aceasta este următoarea:

public static void revers (Colecția c)

11. Ce este „BlockingQueue?”

Interfața BlockingQueue este prezentă în pachetul java.util.concurrent . Scopul său principal este de a îmbunătăți controlul fluxului prin activarea blocării ori de câte ori un fir încearcă să scoată din coadă o coadă goală sau să pună în coadă o coadă plină existentă. Interfața BlockingQueue nu acceptă valori nule și, dacă încercați să inserați o valoare nulă, va afișa o excepție NullPointerException.

12. Explicați „Coada de prioritate”.

O coadă prioritară este un tip de date abstract, cum ar fi o coadă standard sau o structură de date stivă. Cu toate acestea, în această coadă, fiecare element are o caracteristică unică numită „prioritate”. Deoarece se bazează pe un heap cu prioritate, Priority Queue servește elementul cu prioritate înaltă înaintea unui element cu prioritate scăzută, indiferent de ordinea de inserare a acestora. Într-o coadă de prioritate, elementele sunt fie ordonate conform ordinii naturale, fie de către un comparator utilizat la momentul construirii cozii (depinde de constructorul pe care îl utilizați).

13. Cum stochează elementele clasa HashSet?

Clasa HashSet este un membru al cadrului Java Collections care moștenește clasa AbstractSet și implementează interfața Set.

HashSet implementează un Hashtable atât pentru crearea, cât și pentru stocarea unei colecții de elemente. Un Hashtable este o instanță a clasei HashMap care utilizează un mecanism de hashing pentru a stoca date într-un HashSet. Hashing se referă la tehnica de conversie a informațiilor într-o valoare unică cunoscută sub numele de Hash Code. Codul Hash indexează datele asociate cu cheia unică.

14. Este posibil să adăugați un element nul într-un TreeSet sau HashSet?

Deși puteți adăuga un singur element nul într-un HashSet, nu puteți face acest lucru într-un TreeSet, deoarece folosește un NavigableMap pentru stocarea elementelor. NavigableMap este un subtip de SortedMap care nu acceptă/suportă valori nule. Dacă inserați un element nul într-un TreeSet, acesta va declanșa o excepție NullPointerException.

15. Ce face funcția emptySet()?

În Java, Collections.emptySet() este folosit pentru a returna setul imuabil gol prin eliminarea tuturor elementelor nule. Iată sintaxa pentru declararea unui emptySet():

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

16. De ce interfața Map nu extinde interfața de colecție?

În timp ce interfața Map urmează o structură de pereche cheie-valoare, interfața Collection stochează o colecție de obiecte într-o manieră structurată cu un mecanism de acces definit. Map nu extinde interfața Collection deoarece funcția add(E e) a interfeței Collection nu acceptă modelul de pereche cheie-valoare al funcției put(K key, V value) de la Map.

17. Denumiți diferitele vizualizări ale colecției extinse de interfața Hartă.

Interfața Hartă oferă trei vizualizări ale perechilor cheie-valoare, și anume:

  • Vedere set chei
  • Vedere set de valori
  • Vedere set de intrare

18. Enumerați caracteristicile de bază ale Java Hashmap.

Caracteristicile fundamentale ale Hashmap sunt:

  • Puteți stoca elementele formând perechi cheie-valoare și puteți prelua valoarea prin trecerea cheii la metoda corectă.
  • Afișează NoSuchElementException dacă nu există niciun element în Hartă.
  • Stochează doar referințe la obiecte, ceea ce face imposibilă utilizarea unor tipuri de date primitive precum double sau int. În schimb, puteți utiliza o clasă wrapper precum Integer sau Double.

Trebuie citit: Întrebări și răspunsuri la interviu Java

19. Definiți „Stiva”.

În Java, o stivă denotă o zonă desemnată a memoriei unui computer care deține variabile temporare create de o funcție. Variabilele sunt declarate, stocate și inițializate în timpul rulării într-o stivă.

20. Definiți „notația Big-O”.

Notația Big-O definește performanța unui algoritm în raport cu numărul de elemente dintr-o structură de date. Clasele de colecție sunt structuri de date și, prin urmare, trebuie să utilizați notația Big-O pentru a decide ce implementare de colecție să utilizați în funcție de memorie, timp și performanță.

Înscrieți-vă la cursurile de inginerie software de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.

Concluzie

Dacă sunteți interesat să aflați mai multe despre Java, dezvoltarea de software full-stack, consultați programul Executive PG de la upGrad și IIIT-B în dezvoltarea de software full-stack, care este conceput pentru profesioniști care lucrează și oferă peste 500 de ore de formare riguroasă, 9+ proiecte și sarcini, statutul de absolvenți IIIT-B, proiecte practice practice și asistență pentru locuri de muncă cu firme de top.

Aterizează la locul de muncă visat

Aplicați acum pentru masterat în inginerie software