logo

34 Pitanja za intervju za zbirke Java

U Javi anketari najčešće postavljaju pitanja za razgovor o kolekciji. Ovdje je popis najčešće postavljanih pitanja za intervjue s zbirkama s odgovorima.


1) Što je okvir zbirke u Javi?

Collection Framework je kombinacija klasa i sučelja, koja se koristi za pohranu i manipuliranje podacima u obliku objekata. Omogućuje različite klase kao što su ArrayList, Vector, Stack i HashSet itd. i sučelja kao što su List, Queue, Set itd. za tu svrhu.


2) Koje su glavne razlike između niza i zbirke?

Array i Collection donekle su slični u pogledu pohranjivanja referenci objekata i manipuliranja podacima, ali se razlikuju na mnogo načina. Glavne razlike između niza i zbirke definirane su u nastavku:

  • Nizovi su uvijek fiksne veličine, tj. korisnik ne može povećati ili smanjiti duljinu niza prema svojim zahtjevima ili tijekom izvođenja, ali u zbirci se veličina može mijenjati dinamički prema potrebi.
  • Nizovi mogu pohranjivati ​​samo objekte homogenog ili sličnog tipa, ali u Zbirci se mogu pohranjivati ​​heterogeni objekti.
  • Nizovi ne mogu pružiti ?gotove? metode za potrebe korisnika kao što su sortiranje, pretraživanje itd., ali zbirka uključuje gotove metode za korištenje.

3) Objasnite različita sučelja koja se koriste u okviru zbirke?

Okvir zbirke implementira različita sučelja, sučelje zbirke i sučelje karte (java.util.Map) uglavnom su korištena sučelja Java Collection Frameworka. Popis sučelja Collection Frameworka dan je u nastavku:

1. Sučelje zbirke: Kolekcija (java.util.Collection) je primarno sučelje i svaka kolekcija mora implementirati ovo sučelje.

Sintaksa:

 public interface Collectionextends Iterable 

Gdje predstavlja da je ovo sučelje generičkog tipa

2. Sučelje popisa: Sučelje popisa proširuje sučelje zbirke, a to je uređena zbirka objekata. Sadrži duplicirane elemente. Također omogućuje nasumični pristup elementima.

Sintaksa:

 public interface List extends Collection 

3. Postavite sučelje: Set (java.util.Set) sučelje je zbirka koja ne može sadržavati duple elemente. Može uključivati ​​samo naslijeđene metode sučelja zbirke

Sintaksa:

 public interface Set extends Collection 

Sučelje čekanja: Sučelje reda čekanja (java.util.Queue) definira strukturu podataka reda čekanja, koja pohranjuje elemente u obliku FIFO (prvi ušao prvi izašao).

Sintaksa:

 public interface Queue extends Collection 

4. Sučelje za uklanjanje čekanja: to je dvostruki red čekanja. Omogućuje umetanje i uklanjanje elemenata s oba kraja. Ugrađuje svojstva i stog i red čekanja tako da može izvoditi LIFO (Zadnji ušao prvi izašao) stog i FIFO (prvi ušao prvi izašao) red čekanja.

Sintaksa:

 public interface Dequeue extends Queue 

5. Sučelje karte: Mapa (java.util.Map) predstavlja pohranu elemenata u paru ključeva i vrijednosti. Sučelje karte ne implementira sučelje zbirke. Može sadržavati samo jedinstveni ključ, ali može imati duple elemente. Postoje dva sučelja koja implementiraju Map u Javi, a to su Map sučelje i Sorted Map.

izbornik postavki android telefona

4) Koja je razlika između ArrayList i Vector?

Ne.ArrayListVektor
1)ArrayList nije sinkroniziran.Vektor je sinkroniziran.
2)ArrayList nije naslijeđena klasa.Vector je naslijeđena klasa.
3)ArrayList povećava svoju veličinu za 50% veličine polja.Vektor povećava svoju veličinu udvostručavanjem veličine polja.
4)ArrayList nije ?thread-safe? jer nije sinkroniziran.Popis vektora je ?thread-safe? budući da je svaka metoda sinkronizirana.

5) Koja je razlika između ArrayList i LinkedList?

Ne.ArrayListLinkedList
1)ArrayList koristi dinamički niz.LinkedList koristi dvostruko povezani popis.
2)ArrayList nije učinkovit za manipulaciju jer je potrebno previše.LinkedList je učinkovit za manipulaciju.
3)ArrayList je bolji za pohranu i dohvaćanje podataka.LinkedList je bolji za manipuliranje podacima.
4)ArrayList omogućuje nasumični pristup.LinkedList ne omogućuje nasumični pristup.
5)ArrayList zauzima manje prostora za memoriju jer pohranjuje samo objektLinkedList zauzima više prostora za memoriju jer pohranjuje objekt kao i adresu tog objekta.

6) Koja je razlika između Iteratora i ListIteratora?

Iterator prelazi elemente samo u smjeru naprijed, dok ListIterator prelazi elemente u smjeru naprijed i nazad.

Ne.IteratorListIterator
1)Iterator prelazi elemente samo u smjeru naprijed.ListIterator prelazi elemente u smjeru prema naprijed i prema natrag.
2)Iterator se može koristiti u popisu, skupu i redu čekanja.ListIterator se može koristiti samo u Listi.
3)Iterator može izvršiti samo operaciju uklanjanja dok prolazi zbirkom.ListIterator može izvesti ?add,? ?ukloniti,? i ?set? operacija tijekom obilaska zbirke.

7) Koja je razlika između Iteratora i Enumerationa?

Ne.IteratorNabrajanje
1)Iterator može prelaziti naslijeđene i nenaslijeđene elemente.Nabrajanje može proći samo naslijeđene elemente.
2)Iterator je brz do kvarova.Nabrajanje nije fail-fast.
3)Iterator je sporiji od enumerationa.Nabrajanje je brže od Iteratora.
4)Iterator može izvesti operaciju uklanjanja dok prolazi zbirkom.Enumeracija može izvoditi samo operaciju obilaska zbirke.

8) Koja je razlika između popisa i skupa?

List i Set proširuju sučelje zbirke. Međutim, postoje neke razlike između njih koje su navedene u nastavku.

  • Popis može sadržavati duplicirane elemente dok Set uključuje jedinstvene stavke.
  • Popis je uređena kolekcija koja održava redoslijed umetanja, dok je Set neuređena zbirka koja ne čuva redoslijed umetanja.
  • Sučelje List sadrži jednu naslijeđenu klasu koja je Vector klasa, dok Set sučelje nema nijednu naslijeđenu klasu.
  • Sučelje List može dopustiti n broj null vrijednosti dok sučelje Set dopušta samo jednu null vrijednost.

9) Koja je razlika između HashSeta i TreeSeta?

HashSet i TreeSet, obje klase, implementiraju Set sučelje. Dolje su navedene razlike između oba.

  • HashSet ne održava�nema redoslijeda�dok TreeSet održava�uzlazni redoslijed.
  • HashSet omeđen hash tablicom dok je TreeSet implementiran strukturom stabla.
  • HashSet radi brže od TreeSeta.
  • HashSet podržava HashMap, dok TreeSet podržava TreeMap.

10) Koja je razlika između Seta i Mape?

Razlike između Seta i Mape navedene su u nastavku.

  • Skup sadrži samo vrijednosti dok karta sadrži i ključ i vrijednosti.
  • Skup sadrži jedinstvene vrijednosti dok Karta može sadržavati jedinstvene ključeve s dupliciranim vrijednostima.
  • Skup sadrži jedan broj null vrijednosti dok Map može uključivati ​​jedan null ključ s n brojem null vrijednosti.

11) Koja je razlika između HashSeta i HashMapa?

Razlike između HashSeta i HashMapa navedene su u nastavku.

  • HashSet sadrži samo vrijednosti dok HashMap uključuje unos (ključ, vrijednost). HashSet se može ponavljati, ali HashMap se mora pretvoriti u Set da bi se ponavljao.
  • HashSet implementira Set sučelje dok HashMap implementira Map sučelje
  • HashSet ne može imati dupliciranu vrijednost dok HashMap može sadržavati duplicirane vrijednosti s jedinstvenim ključevima.
  • HashSet sadrži samo jedan broj null vrijednosti dok HashMap može sadržavati jedan null ključ s n brojem null vrijednosti.

12) Koja je razlika između HashMapa i TreeMapa?

Razlike između HashMapa i TreeMapa navedene su u nastavku.

  • HashMap ne održava redoslijed, ali TreeMap održava uzlazni redoslijed.
  • HashMap je implementiran hash tablicom, dok je TreeMap implementiran strukturom stabla.
  • HashMap se može sortirati po ključu ili vrijednosti dok se TreeMap može sortirati po ključu.
  • HashMap može sadržavati null ključ s više null vrijednosti dok TreeMap ne može sadržavati null ključ, ali može imati više null vrijednosti.

13) Koja je razlika između HashMapa i Hashtablea?

Ne.HashMapRaspršena tablica
1)HashMap nije sinkroniziran.Raspršena tablica je sinkronizirana.
2)HashMap može sadržavati jedan null ključ i više null vrijednosti.Raspršena tablica ne može sadržavati nijedan null ključ ili null vrijednost.
3)HashMap nije ?thread-safe,? tako da je koristan za aplikacije bez niti.Hashtable je siguran za niti i može se dijeliti između različitih niti.
4)4) HashMap nasljeđuje klasu AbstractMapHashtable nasljeđuje klasu Rječnik.

14) Koja je razlika između zbirke i zbirki?

Razlike između zbirke i zbirki navedene su u nastavku.

  • Zbirka je sučelje, dok su zbirke klasa.
  • Sučelje zbirke pruža standardnu ​​funkcionalnost strukture podataka za popis, postavljanje i red čekanja. Međutim, klasa Collections sortira i sinkronizira elemente zbirke.
  • Sučelje zbirke pruža metode koje se mogu koristiti za strukturu podataka, dok klasa zbirke pruža statičke metode koje se mogu koristiti za različite operacije na zbirci.

15) Koja je razlika između Comparable i Comparator?

Ne.UsporedivoUsporednik
1)Comparable pruža samo jednu vrstu niza.Comparator nudi više vrsta nizova.
2)Pruža jednu metodu pod nazivom compareTo().Pruža jednu metodu pod nazivom compare().
3)Nalazi se u java.lang paketu.Nalazi se u paketu java.util.
4)Ako implementiramo Comparable sučelje, stvarna klasa se mijenja.Stvarna klasa se ne mijenja.

16) Što podrazumijevate pod BlockingQueue?

BlockingQueue je sučelje koje proširuje sučelje Queue. Omogućuje istodobnost u operacijama kao što su dohvaćanje, umetanje, brisanje. Prilikom dohvaćanja bilo kojeg elementa, čeka se da red bude neprazan. Dok sprema elemente, čeka raspoloživi prostor. BlockingQueue ne može sadržavati null elemente, a implementacija BlockingQueue je sigurna za niti.

Sintaksa:

 public interface BlockingQueue extends Queue 

17) Koja je prednost datoteke svojstava?

Ako promijenite vrijednost u datoteci svojstava, ne morate ponovno kompajlirati java klasu. Dakle, čini aplikaciju jednostavnom za upravljanje. Koristi se za pohranjivanje informacija koje treba često mijenjati. Razmotrite sljedeći primjer.

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

Izlaz

 system oracle 

18) Što znači metoda hashCode()?

Metoda hashCode() vraća vrijednost hash koda (cijeli broj).

Metoda hashCode() vraća isti cijeli broj ako su dva ključa (pozivanjem metode equals()) identična.

niz u int

Međutim, moguće je da dva broja hash koda mogu imati različite ili iste ključeve.

Ako dva objekta ne daju jednak rezultat korištenjem metode equals(), tada će metoda hashcode() pružiti različiti cjelobrojni rezultat za oba objekta.


19) Zašto nadjačavamo equals() metodu?

Metoda equals koristi se za provjeru jesu li dva objekta ista ili ne. Treba ga nadjačati ako želimo provjeriti objekte na temelju svojstva.

Na primjer, Employee je klasa koja ima 3 podatkovna člana: ID, ime i plaću. Međutim, želimo provjeriti jednakost objekta zaposlenika prema plaći. Zatim moramo nadjačati metodu equals().


20) Kako sinkronizirati elemente popisa, skupa i karte?

Da, klasa Collections pruža metode za sinkronizaciju elemenata popisa, skupa ili karte:

javni statički popis synchronizedList(List l){}
public static Set synchronizedSet(Set s){}
javni statički SortedSet sinkroniziranSortedSet(SortedSet s){}
javna statična karta synchronizedMap(Map m){}
javni statički SortedMap sinkroniziranSortedMap(SortedMap m){}

21) Koja je prednost generičke kolekcije?

Tri su glavne prednosti korištenja generičke zbirke.

  • Ako koristimo generičku klasu, ne trebamo tipiziranje.
  • Sigurno je za tip i provjerava se tijekom kompilacije.
  • Generic potvrđuje stabilnost koda tako što ga omogućuje otkrivanje grešaka tijekom kompajliranja.

22) Što je hash-collision u Hashtable-u i kako se njime upravlja u Javi?

Dva različita ključa s istom hash vrijednošću poznata su kao hash-kolizija. Dva odvojena unosa čuvat će se u jednom raspršivaču kako bi se izbjegla kolizija. Postoje dva načina za izbjegavanje hash-kolizije.

  • Odvojeno ulančavanje
  • Otvorite Adresiranje

23) Što je klasa rječnika?

Klasa Rječnik pruža mogućnost pohranjivanja parova ključ-vrijednost.


24) Koja je zadana veličina faktora opterećenja u prikupljanju temeljenom na raspršivanju?

Zadana veličina faktora opterećenja je 0,75 . Zadani kapacitet izračunava se kao početni kapacitet * faktor opterećenja. Na primjer, 16 * 0,75 = 12. Dakle, 12 je zadani kapacitet karte.

dinamički niz java

25) Što podrazumijevate pod fail-fast?

Iterator u Javi koji odmah izbacuje ConcurrentmodificationException, ako dođe do bilo kakve strukturne izmjene, naziva se Fail-fast iterator. Fail-fats iterator ne zahtijeva dodatni prostor u memoriji.


26) Koja je razlika između Array i ArrayList?

Glavne razlike između Array i ArrayList navedene su u nastavku.

S NNizArrayList
1Niz je fiksne veličine, što znači da ne možemo promijeniti veličinu niza prema potrebi.ArrayList nije fiksne veličine, veličinu možemo mijenjati dinamički.
2Nizovi su statičkog tipa.ArrayList je dinamičke veličine.
3Nizovi mogu pohranjivati ​​primitivne tipove podataka kao i objekte.ArrayList ne može pohraniti primitivne tipove podataka, može pohraniti samo objekte.

27) Koja je razlika između duljine polja i veličine popisa polja?

Duljina niza može se dobiti korištenjem svojstva length dok ArrayList ne podržava svojstvo length, ali možemo koristiti size() metodu da dobijemo broj objekata na popisu.

Pronalaženje duljine niza

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

Pronalaženje veličine ArrayList-a

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

28) Kako pretvoriti ArrayList u Array i Array u ArrayList?

Array možemo pretvoriti u ArrayList pomoću metode asList() klase Arrays. Metoda asList() je statička metoda klase Arrays i prihvaća objekt List. Razmotrite sljedeću sintaksu:

 Arrays.asList(item) 

Možemo pretvoriti ArrayList u Array pomoću metode toArray() klase ArrayList. Razmotrite sljedeću sintaksu da pretvorite ArrayList u objekt List.

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

29) Kako napraviti Java ArrayList samo za čitanje?

Javu ArrayList Read-only možemo dobiti pozivom metode Collections.unmodifiableCollection(). Kada definiramo ArrayList kao Read-only, tada ne možemo izvršiti nikakve izmjene u kolekciji putem metode �add(), remove() ili set().


30) Kako ukloniti duplikate iz ArrayList-a?

Postoje dva načina za uklanjanje duplikata iz ArrayList-a.

    Korištenje HashSeta:Korištenjem HashSet-a možemo ukloniti duplikat elementa iz ArrayList-a, ali tada neće sačuvati redoslijed umetanja.Korištenje LinkedHashSeta:Također možemo održavati redoslijed umetanja korištenjem LinkedHashSeta umjesto HashSeta.

Proces uklanjanja dupliciranih elemenata iz ArrayList-a pomoću LinkedHashSeta:

  • Kopirajte sve elemente ArrayList-a u LinkedHashSet.
  • Ispraznite ArrayList pomoću metode clear(), koja će ukloniti sve elemente s popisa.
  • Sada kopirajte sve elemente LinkedHashseta u ArrayList.

31) Kako preokrenuti ArrayList?

Da bismo obrnuli ArrayList, možemo koristiti metodu reverse() klase Collections. Razmotrite sljedeći primjer.

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

Izlaz

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

32) Kako sortirati ArrayList silaznim redoslijedom?

Za sortiranje ArrayList silaznim redoslijedom, možemo koristiti metodu reverseOrder klase Collections. Razmotrite sljedeći primjer.

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

Izlaz

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

33) Kako sinkronizirati ArrayList?

ArrayList možemo sinkronizirati na dva načina.

  • Korištenje metode Collections.synchronizedList().
  • Korištenje CopyOnWriteArrayList

3. 4) Kada koristiti ArrayList i LinkedList?

LinkedLists je bolje koristiti za operacije ažuriranja, dok je ArrayLists bolje koristiti za operacije pretraživanja.