30 top java collections interview questions with answers
Ovaj vodič uključuje popis najčešće postavljanih pitanja o internetskim pitanjima za Java zbirke, zajedno s odgovorima i primjerima za vas :
Osnovni API Java je Java Collections Framework. Podržava temeljni koncept ovog programskog jezika. Ako želite biti Java programer, trebali biste dobro znati ove temeljne koncepte.
Područje Java kolekcija izuzetno je široko i u intervjuu se mogu postaviti mnoga pitanja. Ovdje smo prikupili popis što više relevantnih pitanja koja će vam se možda postaviti u vašem intervjuu.
=> Ovdje pogledajte kako biste ovdje vidjeli A-Z Java tutorijala za obuku
Što ćete naučiti:
Pitanja za intervju za Java Zbirke
P # 1) Objasnite okvir Java Collections.
Odgovor: Okvir Java Collections je arhitektura koja pomaže u upravljanju i pohrani grupe objekata. Pomoću nje programeri mogu pristupiti unaprijed upakiranim strukturama podataka i manipulirati podacima uz upotrebu algoritama.
Java kolekcija uključuje sučelje i klase koje podržavaju operacije poput pretraživanja, brisanja, umetanja, sortiranja itd. Zajedno s sučeljem i klasama, Java kolekcije uključuju i algoritme koji pomažu u manipulacijama.
P # 2) Koje su prednosti Java kolekcija?
Odgovor:
Prednosti Java kolekcija su:
- Umjesto da implementira naše klase kolekcije, on koristi osnovne klase kolekcije, smanjujući time napor potreban za njegov razvoj.
- Koristi klase okvira za prikupljanje koje su dobro testirane. Stoga je njegova kvaliteta koda poboljšana.
- Smanjuje napor u održavanju koda.
- Java Collection Framework je interoperabilan i višekratno se koristi.
P # 3) Što znate o hijerarhiji zbirki na Javi?
Odgovor:
(slika izvor )
P # 4) Recite nam o osnovnim sučeljima Java Collection.
Odgovor:
U nastavku su navedena osnovna sučelja Java Collection Framework-a.
Kolekcija: To je osnova hijerarhije Zbirke i predstavlja njezine elemente. Međutim, Java ne pruža nikakvu izravnu primjenu Collection. Također, većina Java kolekcija dolazi s ovog sučelja.
Set: Ne može sadržavati dvostruke elemente jer modelira apstrakciju matematičkog skupa. Kao što naziv sugerira, on predstavlja skupove, na primjer, špil karata.
Popis: Može sadržavati dvostruke elemente i uređena je zbirka. Njegov indeks možete koristiti za pristup bilo kojem elementu u njemu. Popis je poput rasporeda, niza, dinamičke duljine.
Ovo je nekoliko sučelja Java Collection. Međutim, postoji još nekoliko sučelja kao što je prikazano u nastavku.
- Red
- Dequeue
- Iterator
- Iterativ
- SortedSet
- ListIterator.
P # 5) Zašto zbirka ne proširuje serijska i klonirajuća sučelja Sučelje?
Odgovor: Zadatak sučelja za prikupljanje je odrediti skupinu objekata koji se nazivaju elementi. Implementacija Zbirki odlučuje kako će se elementi održavati. Na primjer, implementacije popisa dopuštaju dvostruke elemente, ali implementacije seta ne.
Mnoge implementacije imaju metodu javnog kloniranja. Ali nije praktično uključiti ga u sve implementacije Zbirke, jer je Zbirka apstraktna, a implementacija je najvažnija.
Značenje i posljedice serializacije i kloniranja imaju smisla tijekom rada sa suštinskim implementacijama. Stoga je na stvarnoj provedbi da odluči može li se serijski ili klonirati i kako.
Saznajte više = >> Marker sučelje u Javi: serializira se i može se klonirati
Zato induciranje serializacije i kloniranja u svakoj implementaciji nije vrlo fleksibilno i restriktivno.
P # 6) Što razumijete pod Iterator u okviru Java Collection Framework?
Odgovor: U jednostavnim nizovima možemo koristiti petlje za pristup svakom elementu. Kada je sličan pristup potreban za pristup elementima u zbirci, koristimo iteratore. Iterator je konstrukcija koja se koristi za pristup elementima predmeta zbirke.
U Javi su Iteratori objekti koji implementiraju 'Iterator' sučelje zbirke Framework. Ovo sučelje dio je paketa java.util.
Neke od karakteristika iteratora su:
- Iteratori se koriste za prelazak objekata Zbirke.
- Iteratori su poznati kao „Univerzalni Java kursor“ jer isti Iterator možemo koristiti za sve zbirke.
- Iteratori pružaju operacije 'Čitanje' i 'Uklanjanje', osim prolaska kroz zbirke.
- Budući da su univerzalni i rade sa svim zbirkama, Iteratore je lakše implementirati.
Navedite pitanja o kolekciji Java
P # 7) Jeste li svjesni upotrebe sučelja popisa?
(slika izvor )
Odgovor: Svrha sučelja popisa je održavati redoslijed umetanja. Također omogućuje pohranu dupliciranih vrijednosti.
Pomaže u glatkoj manipulaciji elementima, ovisno o njegovom indeksu, različitim metodama koje sadrži. ArrayList, Vector, Stack i LinkedList su razne klase koje implementiraju sučelje popisa.
P # 8) Što razumijete o ArrayListu u Javi?
Odgovor: Implementacija sučelja popisa je ArrayList. Dinamično dodaje ili uklanja elemente s popisa, a također omogućuje umetanje elemenata zajedno s položajnim pristupom. ArrayList dopušta dvostruke vrijednosti i njegova se veličina može dinamički povećati ako broj elemenata premaši početnu veličinu.
P # 9) Kako ćete pretvoriti niz nizova u ArrayList?
Odgovor: Ovo je pitanje programiranja na početnoj razini koje anketar traži kako bi provjerio vaše znanje o uslužnim programima Collection.classes. Prikupljanje i nizovi dvije su korisne klase Okvira za prikupljanje koje anketere često zanimaju.
Zbirke nude određene statičke funkcije za izvođenje određenih zadataka na vrstama zbirki. Iako Array ima uslužne funkcije koje izvršava na vrstama polja.
//String array String() num_words = {'one', 'two', 'three', 'four', 'five'}; //Use java.util.Arrays class to convert to list List wordList = Arrays.asList(num_words);
Imajte na umu da, osim tipa String, za konverziju u ArrayList možete koristiti i druge tipove nizova.
Na primjer,
//Integer array Integer() numArray = {10,20,30,40}; //Convert to list using Arrays class asList method List num_List = Arrays.asList(numArray);
P # 10) Pretvori Array u ArrayList i ArrayList u Array.
Odgovor: Za pretvaranje ArrayList u Array koristi se metoda toArray ()- List_object.toArray (novi niz (List_object.size ()))
Dok se metoda asList () koristi za pretvaranje niza u ArrayList- Nizovi.asList (stavka). AsList () je statična metoda u kojoj su parametri popisni objekti.
P # 11) Što je LinkedList i koliko ih vrsta podržava Java?
(slika izvor )
Odgovor: LinkedList je struktura podataka s nizom veza gdje je svaka veza povezana sa sljedećom vezom.
Dvije vrste LinkedList koriste se u Javi za spremanje elemenata:
- Pojedinačno povezani popis: Ovdje svaki čvor pohranjuje podatke čvora zajedno s referencom ili pokazivačem na sljedeći čvor.
- Dvostruko povezani popis: Dvostruko LinkedList dolazi s dvostrukim referencama, jednom referencom na sljedeći čvor, a drugom za prethodni čvor.
P # 12) Što razumijete pod BlockingQueue?
Odgovor: U jednostavnom redu znamo da kad god je red pun, ne možemo umetnuti više stavki. U ovom slučaju, red jednostavno daje poruku da je red pun i da izlazi. Sličan slučaj događa se kada je red prazan i u redu nema elementa koji se treba ukloniti.
Umjesto da samo izađemo kad se umetanje / uklanjanje ne može učiniti, kako bi bilo da pričekamo dok ne možemo umetnuti ili ukloniti stavku?
Na to se odgovara varijantom poziva u redu 'Blokirajući red' . U blokirnom redu, blokiranje se aktivira tijekom operacija enqueue and dequeue kad god red pokušava staviti u redoslijed punog reda ili dequeque praznog reda.
Blokiranje je prikazano na sljedećoj slici.
BlockingQueue
Tako će tijekom postupka čekanja red za blokiranje pričekati dok ne postane dostupan prostor tako da se stavka može uspješno umetnuti. Slično tome, u operaciji dequeue red čekanja će čekati dok stavka ne postane dostupna za operaciju.
alati za upravljanje test slučajem otvoreni kod
Blokirajući red implementira sučelje 'BlockingQueue' koje pripada paketu 'java.util.concurrent'. Trebali bismo imati na umu da sučelje BlockingQueue ne dopušta null vrijednost. Ako naiđe na nulu, tada baca NullPointerException.
P # 13) Što je prioritetni red u Javi?
Odgovor: Prioritetni red u Javi sličan je strukturi podataka steka ili reda čekanja. To je apstraktni tip podataka u Javi i implementiran je kao klasa PriorityQueue u paketu java.util. Prioritetni red ima posebnu značajku da svaka stavka u prioritetnom redu ima prioritet.
U redu prioriteta, stavka s većim prioritetom je poslužitelj prije stavke s nižim prioritetom.
Sve stavke u prioritetnom redu su poredane prema prirodnom redoslijedu. Elemente također možemo poredati prema prilagođenom redoslijedu pružanjem komparatora u vrijeme stvaranja objekta prioritetnog reda.
Postavite pitanja o intervjuu za sučelje
P # 14) Čemu služi Set Interface? Recite nam nešto o razredima koji to provode Sučelje.
Odgovor: Sučelje skupova koristi se u teoriji skupova za oblikovanje matematičkog skupa. Slično je sučelju List, a ipak se malo razlikuje od njega. Stoga sučelje za postavljanje nije uređena zbirka, nema sačuvanog redoslijeda kada uklanjate ili dodajete elemente.
Uglavnom, ne podržava dvostruke elemente, pa je svaki element u Set Interfaceu jedinstven.
Omogućuje i smislene usporedbe instanci Set čak i kada postoje različite implementacije. Također, stavlja značajniji ugovor o radnjama operacija equals i hashCode. Ako dva primjera imaju iste elemente, onda su jednaki.
Iz svih ovih razloga, Set Interface nema operacije temeljene na indeksu elemenata poput Popisa. Koristi samo naslijeđene metode sučelja za prikupljanje. TreeSet, EnumSet, LinkedHashSet i HashSet implementiraju Set Interface.
P # 15) Želim dodati null element u HashSet i TreeSet. Mogu li?
Odgovor: Ne možete dodati nijedan null element u TreeSet jer koristi NavigableMap za pohranu elemenata. Ali u HashSet možete dodati samo jedan. SortedMap ne dopušta null tipke i NavigableMap je njegov podskup.
Zato ne možete dodati null element u TreeSet, on će smisliti NullPointerException svaki put kad to pokušate učiniti.
P # 16) Što znate o LinkedHashSetu?
Odgovor: LinkedHashSet je podrazred HashSet-a i on provodi Set sučelje. Kao uređeni oblik HashSeta, on upravlja dvostruko povezanim Popisom kroz sve elemente koje sadrži. Zadržava redoslijed umetanja i, baš kao i njegova roditeljska klasa, nosi samo jedinstvene elemente.
P # 17) Razgovarajte o načinu na koji HashSet pohranjuje elemente.
Odgovor: HashMap pohranjuje parove ključeva / vrijednosti, ali ključevi bi trebali biti jedinstveni. Ovu značajku Map koristi HashSet kako bi osigurao da je svaki element jedinstven.
Izjava karte u HashSetu pojavljuje se kao što je prikazano dolje:
private transient HashMapmap; //This is added as value for each key private static final Object PRESENT = new Object();
Pohranjeni elementi u HashSetu pohranjuju se kao ključ na mapi, a objekt se prikazuje kao vrijednost.
P # 18) Objasnite metodu EmptySet ().
Odgovor: Metoda Emptyset () uklanja null elemente i vraća prazan nepromjenjivi skup. Ovaj se nepromjenjivi skup može serializirati. Deklaracija metode Emptyset () je- javni statički konačni Set emptySet ().
Pitanja za intervju za sučelje karte
P # 19) Recite nam nešto o sučelju karte.
Odgovor: Sučelje karte dizajnirano je za brže pretraživanje i pohranjuje elemente u obliku parova ključ / vrijednost. Kako je ovdje svaki ključ jedinstven, povezuje se ili preslikava samo u jednu vrijednost. Ti se parovi ključeva / vrijednosti nazivaju unosi karte.
U ovom sučelju nalaze se potpisi metode za pronalaženje, umetanje i uklanjanje elemenata, ovisno o jedinstvenom ključu. To ga čini savršenim alatom za mapiranje asocijacija ključ / vrijednost, poput rječnika.
P # 20) Karta ne proširuje sučelje za prikupljanje. Zašto?
Odgovor: Sučelje za prikupljanje je nakupljanje objekata i ti se objekti strukturno pohranjuju s mehanizmom određenog pristupa. Dok sučelje Map slijedi strukturu parova ključ / vrijednost. Metoda dodavanja sučelja za prikupljanje ne podržava metodu stavljanja sučelja karte.
Zbog toga Map ne proširuje sučelje zbirke, ali ipak je važan dio okvira Java Collection.
P # 21) Kako HashMap radi na Javi?
Odgovor: HashMap je zbirka koja se temelji na Mapu i njeni se elementi sastoje od parova ključ / vrijednost. HashMap se obično označava sa ili. Svakom elementu hashmapa može se pristupiti pomoću njegovog ključa.
HashMap radi na principu 'raspršivanja'. U tehnici raspršivanja, duži niz pretvara se u manji niz pomoću 'hash funkcije' koja nije ništa drugo nego algoritam. Manji niz pomaže u bržem pretraživanju i učinkovitom indeksiranju.
P # 22) Objasnite IdentityHashMap, WeakHashMap i ConcurrentHashMap.
Odgovor:
IdentityHashMap je slično HashMap-u. Razlika je u tome što prilikom usporedbe elemenata IdentityHashMap koristi referentnu jednakost. Nije poželjna implementacija karte i premda izvršava sučelje karte, namjerno se ne pridržava općeg ugovora karte.
Dakle, kada se uspoređuju objekti, ovo dopušta upotrebu metode jednakih. Dizajniran je za upotrebu u rijetkim slučajevima kada treba semantika referentne jednakosti.
WeakHashMap Implementacija pohranjuje samo slabe reference na svoje ključeve. To omogućuje prikupljanje smeća para ključ / vrijednost kada više nema reference na njegove ključeve izvan WeakHashMap.
Primarno se koristi s onim ključnim objektima kod kojih se test identiteta objekta provodi jednakim metodama pomoću operatora ==.
ConcurrentHashMap implementira sučelja ConcurrentMap i Serializable. To je nadograđena, poboljšana verzija HashMap-a jer ne radi dobro s višenitnim okruženjem. U usporedbi s HashMap-om, ima veću stopu performansi.
P # 23) Kakva je kvaliteta dobrog ključa za HashMap?
Odgovor: Razumijevajući kako HashMap djeluje, lako je znati da oni uglavnom ovise o equals i hashCode metodama ključnih objekata. Dakle, dobar ključ mora uvijek iznova pružati isti hashCode, bez obzira na to kada je dohvaćen.
Na isti način, u usporedbi s metodom equals, isti ključevi moraju vratiti true, a različiti ključevi false. Zato se kaže da su najbolji kandidat za ključeve HashMap nepromjenjive klase.
P # 24) Kada možete koristiti TreeMap?
(slika izvor )
Odgovor: TreeMap, kao poseban oblik HashMap-a, održava poredak tipki prema zadanom 'prirodnom redoslijedu', kao nešto što nedostaje HashMap-u. Možete ga koristiti za sortiranje objekata s nekim ključem.
Na primjer, ako želite implementirati i ispisati rječnik po abecednom redu, možete koristiti TreeMap zajedno s TreeSetom. Sortirat će se automatski. Naravno, mogli ste to učiniti i ručno, ali posao će se obaviti učinkovitije pomoću TreeMap-a. Možete ga koristiti i ako vam je slučajni pristup od vitalne važnosti.
Razlika između pitanja
P # 25) Koja je razlika između Zbirke i Zbirke?
Odgovor:
Kolekcija | Zbirke |
---|---|
Ne možemo koristiti ListIterator za prelazak skupa. | ListIterator može prelaziti Listom u bilo kojem smjeru. |
To je sučelje. | To je klasa. |
Zbirka predstavlja skupinu predmeta kao jednu cjelinu. | Zbirke definiraju različite metode korisnosti za objekte kolekcije. |
To je korijensko sučelje Collection Framework-a. | Zbirke su klasa korisnosti. |
Izvodi strukture podataka Okvira za prikupljanje. | Zbirke sadrže mnogo različitih statičkih metoda za pomoć u manipulaciji strukturom podataka. |
P # 26) Po čemu se Array razlikuje od ArrayList?
Odgovor:
Razlike između Array i ArrayList date su u nastavku:
Niz | ArrayList |
---|---|
Niz je jako otkucana klasa. | ArrayList je slabo otkucana klasa. |
Niz se ne može dinamički mijenjati, njegova je dimenzija statična. | ArrayList se može dinamički mijenjati. |
Polju nije potrebno boksanje i otpakiranje elemenata. | ArrayList treba boksanje i otpakiranje elemenata. |
P # 27) Razlikovati između ArrayList i LinkedList.
Odgovor:
ArrayList | LinkedList |
---|---|
ArrayList interno koristi dinamički niz za pohranu elemenata. | LinkedList provodi dvostruko povezan popis. |
ArrayList manipulacija elementima prilično je spora. | LinkedList mnogo brže manipulira svojim elementima. |
ArrayList može djelovati samo kao Popis. | LinkedList može djelovati i kao popis i kao red čekanja. |
Korisno za pohranu i pristup podacima. | Korisno za manipulaciju podacima. |
P # 28) Po čemu se Iterable razlikuje od Iteratora?
Odgovor:
Iterativ | Iterator |
---|---|
To je sučelje paketa Java.lang. | To je sučelje paketa Java.util. |
Daje samo jednu apstraktnu metodu poznatu kao Iterator. | Dolazi s dvije apstraktne metode - hasNext i next. |
Predstavlja niz elemenata kojima se može preći. | Označava objekte s iteracijskim stanjem. |
P # 29) Navedite razlike između skupa i popisa.
Odgovor:
Postavi | Popis |
---|---|
Set oruđa Set sučelje. | Popis implementira sučelje Popis. |
Skup je neuređeni skup elemenata. | Popis je uređeni skup elemenata. |
Set ne održava redoslijed elemenata tijekom umetanja. | Lista zadržava redoslijed elemenata tijekom umetanja. |
Skup ne dopušta dvostruke vrijednosti. | Popis dopušta dvostruke vrijednosti. |
Skup ne sadrži naslijeđenu klasu. | Popis sadrži Vector, naslijeđenu klasu. |
Skup dopušta samo jednu null vrijednost. | Nema ograničenja za broj null vrijednosti na Popisu. |
P # 30) Koja je razlika između reda čekanja i stoga?
Odgovor:
Red | Stog |
---|---|
Red čekanja funkcionira na principu FIFO (First-In-First-Out). | Stog djeluje na osnovi LIFO (Last-In-First-Out). |
Umetanje i brisanje u red odvijaju se na različitim krajevima. | Umetanje i brisanje izvodi se s istog kraja koji se naziva gornji dio stoga. |
Enqueue je naziv umetanja, a dequeue je brisanje elemenata. | Push je umetanje, a Pop brisanje elemenata u Stacku. |
Ima dva pokazivača - jedan na prvi element popisa (sprijeda) i jedan na zadnji (straga). | Ima samo jedan pokazivač koji pokazuje na gornji element. |
P # 31) Po čemu se SinglyLinkedList i DoublyLinkedList međusobno razlikuju?
Odgovor:
Popis pojedinačno povezanih | Popis dvostruko povezanih |
---|---|
Svaki čvor pojedinačno povezanog popisa sastoji se od podataka i pokazivača na sljedeći čvor. | Dvostruko povezan popis sastoji se od podataka, pokazivača na sljedeći čvor i pokazivača na prethodni čvor. |
Pojedinačno povezani popis može se preći pomoću sljedećeg pokazivača. | Dvostruko povezanim popisom može se prijeći pomoću prethodnog i sljedećeg pokazivača. |
Popis pojedinačno povezanih zauzima manje prostora u usporedbi s dvostruko povezanim popisom. | Dvostruko povezani popis zauzima puno memorijskog prostora. |
Pristup elementima nije vrlo učinkovit. | Pristup elementima je učinkovit. |
P # 32) Po čemu se HashMap razlikuje od HashTable-a?
Odgovor:
HashMap | HashTable |
---|---|
HashMap nasljeđuje klasu AbstractMap | HashTable nasljeđuje klasu Rječnik. |
HashMap nije sinkroniziran. | HashTable je sinkroniziran. |
HashMap dopušta više null vrijednosti, ali samo jedan null ključ. | HashTable ne dopušta null vrijednost ili ključ. |
HashMap je brži. | HashTable je sporiji od HashMap-a. |
HashMap može preći Iterator. | HashTable se ne može preći koristeći iterator ili popisivač. |
P # 33) Navedi razliku između ArrayList i Vector.
Odgovor:
ArrayList | Vektor |
---|---|
ArrayList nije sinkroniziran. | Vektor je sinkroniziran. |
ArrayList nije naslijeđena klasa. | Vector je naslijeđena klasa. |
ArrayList povećava veličinu za polovicu ArrayList kada je element umetnut izvan njegove veličine. | Vektor povećava svoju veličinu dvostruko kada se element umetne izvan njegove veličine. |
ArrayList nije siguran u niti | Vector je zaštićen niti. |
P # 34) Po čemu se FailFast razlikuje od Failsafea?
Odgovor:
FailFast | FailSafe |
---|---|
Tijekom ponavljanja nije dopuštena izmjena zbirke. | Omogućuje izmjenu tijekom ponavljanja. |
Koristi originalnu kolekciju za putovanje. | Koristi kopiju izvorne zbirke. |
Nije potrebna dodatna memorija. | Potrebna je dodatna memorija. |
Baca ConcurrentModificationException. | Nije izuzetak izuzetak. |
Zaključak
Ova pitanja za intervju za Java Collections pomoći će vam da se pripremite za intervju. Vaša priprema za intervju za Java Collections mora biti duboka i opsežna, pa proučite ta pitanja i dobro razumite koncept.
Ova pitanja ne samo da provjeravaju vaše znanje već i vašu prisutnost uma.
=> Ovdje pripazite na jednostavnu seriju Java treninga
Preporučena literatura
- JAVA Tutorial za početnike: 100+ praktičnih Java Video tutorijala
- Osnove Java: Java sintaksa, Java klasa i osnovni koncepti Java
- Intervjuirajte pitanja i odgovore
- Pitanja i odgovori za ispitivanje ETL-a
- 30 najvažnijih HTML pitanja i odgovora u intervjuu (POPIS 2021)
- Top 30+ popularnih pitanja i odgovora za intervju s krastavcima
- Top 40 pitanja i odgovora za intervju za Java 8 (najvažnije)
- Top 30 pitanja i odgovora za intervjue sa SAS-a