30 top java collections interview questions with answers
Ta vadnica vključuje seznam najpogostejših vprašanj za intervjuje z zbirkami Java, skupaj z odgovori in primeri za vas. :
Jedro API-ja Java je ogrodje zbirk Java. Podpira temeljni koncept tega programskega jezika. Če želite biti razvijalec Java, se morate dobro zavedati teh osnovnih konceptov.
Področje zbirk Java je izjemno široko in v intervjuju lahko postavite veliko vprašanj. Tu smo zbrali seznam čim več ustreznih vprašanj, ki vam jih bodo zastavili v intervjuju.
=> Tukaj si oglejte A-Z vadnic za učenje Java
Kaj se boste naučili:
Vprašanja za intervju z zbirkami Java
V # 1) Pojasnite ogrodje zbirk Java.
Odgovor: Okvir Java Collections je arhitektura, ki pomaga pri upravljanju in shranjevanju skupine predmetov. Z njim lahko razvijalci dostopajo do predpakiranih podatkovnih struktur in manipulirajo s podatki tudi z uporabo algoritmov.
Zbirka Java vključuje vmesnik in razrede, ki podpirajo operacije, kot so iskanje, brisanje, vstavljanje, razvrščanje itd. Zbirke Java vključujejo vmesnik in razrede tudi algoritme, ki pomagajo pri manipulacijah.
V # 2) Kakšne so prednosti zbirk Java?
Odgovor:
Prednosti zbirk Java so:
- Namesto da izvaja naše razrede zbiranja, uporablja osnovne razrede zbiranja in s tem zmanjšuje napor, potreben za njegov razvoj.
- Uporablja razrede ogrodja zbirke, ki so dobro preizkušeni. Zato se izboljša njegova kakovost kode.
- Zmanjša napor pri vzdrževanju kode.
- Java Collection Framework je interoperabilen in ponovno uporabljiv.
V # 3) Kaj veste o hierarhiji zbirk na Javi?
Odgovor:
(slika vir )
V # 4) Povejte nam o osnovnih vmesnikih zbirke Java.
Odgovor:
Spodaj so navedeni osnovni vmesniki Java Collection Framework.
Zbirka: Je osnova hierarhije zbirke in predstavlja njene elemente. Vendar Java ne zagotavlja nobene neposredne uporabe zbirke. Tudi večina zbirk Java prihaja iz tega vmesnika.
Set: Ne more vsebovati podvojenih elementov, saj modelira abstrakcijo matematičnega nabora. Kot že ime pove, predstavlja množice, na primer, krov kart.
Seznam: Lahko vsebuje podvojene elemente in je urejena zbirka. Njegov indeks lahko uporabite za dostop do katerega koli elementa v njem. Seznam je kot aranžma, matrika z dinamično dolžino.
To je nekaj vmesnikov zbirke Java. Vendar pa obstaja še nekaj vmesnikov, kot je prikazano spodaj.
- Čakalna vrsta
- Dequeue
- Iterator
- Ponovljivo
- SortedSet
- ListIterator.
V # 5) Zakaj zbirka ne razširja vmesnikov, ki jih je mogoče serializirati in klonirati Vmesnik?
Odgovor: Naloga zbirnega vmesnika je določiti skupino predmetov, imenovanih elementi. Izvajanje zbirk odloča, kako bodo elementi ohranjeni. Na primer, izvedbe seznama omogočajo podvojene elemente, izvedbe kompleta pa ne.
Številne izvedbe imajo metodo za javno kloniranje. Vendar ni praktično, da ga vključimo v vse izvedbe zbirke, saj je zbirka abstraktna, izvedba pa je pomembna.
Pomen in posledice tako serializacije kot kloniranja so smiselni pri delu z vsebinskimi izvedbami. Od dejanske izvedbe je torej odvisno, ali jo je mogoče serializirati ali klonirati in kako.
Več o tem = >> Označevalni vmesnik v Javi: serializiran in dostopen
Zato uvajanje serializacije in kloniranja pri vsaki izvedbi ni zelo prilagodljivo in omejujoče.
V # 6) Kaj Iterator razumete v okviru Java Collection Framework?
Odgovor: V preprostih nizih lahko z zankami dostopamo do vsakega elementa. Ko je podoben pristop potreben za dostop do elementov v zbirki, se odločimo za iteratorje. Iterator je konstrukcija, ki se uporablja za dostop do elementov predmetov zbirke.
V Javi so iteratorji predmeti, ki izvajajo vmesnik “Iterator” zbirke Framework. Ta vmesnik je del paketa java.util.
Nekatere značilnosti iteratorjev so:
- Iteratorji se uporabljajo za prehod predmetov zbirke.
- Iteratorji so znani kot »Univerzalni kurzor Java«, saj lahko uporabljamo isti Iterator za vse zbirke.
- Iteratorji poleg prehajanja po zbirkah omogočajo tudi operacije »Preberi« in »Odstrani«.
- Ker so univerzalni in delujejo z vsemi zbirkami, je iteratorje lažje izvajati.
Naštejte vprašanja o zbirki Java
V # 7) Ali poznate uporabo vmesnika za sezname?
(slika vir )
Odgovor: Namen vmesnika seznama je vzdrževanje vrstnega reda vstavljanja. Omogoča tudi shranjevanje podvojenih vrednosti.
Pomaga pri nemotenem ravnanju z elementi, odvisno od indeksa z različnimi metodami, ki jih vsebuje. ArrayList, Vector, Stack in LinkedList so različni razredi, ki izvajajo vmesnik seznama.
V # 8) Kaj razumete o ArrayList v Javi?
Odgovor: Izvedba vmesnika seznama je ArrayList. Dinamično dodaja ali odstranjuje elemente s seznama in omogoča tudi vstavljanje elementov skupaj s položajnim dostopom. ArrayList dovoljuje podvojene vrednosti in njegova velikost se lahko dinamično poveča, če število elementov preseže začetno velikost.
V # 9) Kako pretvorite niz nizov v ArrayList?
Odgovor: To je vprašanje za programiranje na začetni ravni, ki ga anketar prosi, da preveri, kako razumete razrede Collection.classes. Zbiranje in polja sta dva uporabna razreda zbirnega okvira, ki jih anketarji pogosto zanimajo.
Zbirke ponujajo nekatere statične funkcije za izvajanje določenih nalog na vrstah zbirk. Medtem ko ima Array funkcije pripomočkov, ki jih izvaja na vrstah matrike.
//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);
Poleg vrste String lahko za pretvorbo v ArrayList uporabite tudi polja tipa Array.
Na primer,
//Integer array Integer() numArray = {10,20,30,40}; //Convert to list using Arrays class asList method List num_List = Arrays.asList(numArray);
V # 10) Pretvori Array v ArrayList in ArrayList v Array.
Odgovor: Za pretvorbo ArrayList v Array se uporablja metoda toArray () - List_object.toArray (nov niz (List_object.size ()))
Medtem ko se metoda asList () uporablja za pretvorbo polja ArrayList- Arrays.asList (element). AsList () je statična metoda, pri kateri so predmeti seznama parametri.
V # 11) Kaj je LinkedList in koliko vrst je podprtih v Javi?
(slika vir )
Odgovor: LinkedList je podatkovna struktura z zaporedjem povezav, kjer je vsaka povezava povezana z naslednjo povezavo.
Za shranjevanje elementov se v Javi uporabljata dve vrsti LinkedList:
- Posamezno povezan seznam: Tu vsako vozlišče shrani podatke vozlišča skupaj s sklicem ali kazalcem na naslednje vozlišče.
- Dvojno povezan seznam: Dvojno LinkedList ima dvojne sklice, en sklic na naslednje vozlišče in drugega na prejšnje vozlišče.
V # 12) Kaj razumete pod BlockingQueue?
Odgovor: V preprosti čakalni vrsti vemo, da kadar koli je vrsta zapolnjena, ne moremo vstaviti nobenih elementov več. V tem primeru čakalna vrsta preprosto sporoči, da je vrsta polna in izstopi. Podoben primer se zgodi, ko je vrsta prazna in v njej ni elementa, ki bi ga bilo treba odstraniti.
Namesto da samo zapremo, ko vstaviti / odstraniti ni mogoče, kako bi bilo, da počakamo, da lahko vstavimo ali odstranimo element?
Na to odgovori spremenjena vrsta čakalne vrste 'Blokiranje čakalne vrste' . V blokirni čakalni vrsti se blokiranje aktivira med operacijami čakalne vrste in dequeue, kadar poskuša čakalna vrsta postaviti v čakalno vrsto ali izprazniti prazno čakalno vrsto.
Blokada je prikazana na naslednji sliki.
BlockingQueue
Tako bo med čakalno vrsto čakalna vrsta čakal, dokler ne bo na voljo presledka, da bo lahko element uspešno vstavljen. Podobno bo v čakalni vrsti za blokiranje čakalne vrste čakal, dokler element ne bo na voljo za operacijo.
enakovredna razdelitev in analiza mejne vrednosti
Blokirna vrsta izvaja vmesnik „BlockingQueue“, ki pripada paketu „java.util.concurrent“. Upoštevati moramo, da vmesnik BlockingQueue ne dovoljuje ničelne vrednosti. Če naleti na null, vrže NullPointerException.
V # 13) Kaj je prednostna vrsta v Javi?
Odgovor: Prednostna vrsta v Javi je podobna strukturi podatkov skladov ali čakalnih vrst. Gre za abstraktni podatkovni tip v Javi in je implementiran kot razred PriorityQueue v paketu java.util. Prednostna vrsta ima posebno funkcijo, da ima vsak element v prednostni vrsti prednost.
V prioritetni vrsti je element z višjo prioriteto strežnik pred elementom z nižjo prioriteto.
Vsi elementi v prednostni vrsti so razvrščeni po naravnem naročilu. Elemente lahko naročimo tudi po vrstnem redu po meri, tako da zagotovimo primerjalnik v času ustvarjanja predmeta prednostne čakalne vrste.
Nastavite vprašanja za intervju z vmesnikom
V # 14) Za kaj se uporablja Set Interface? Povejte nam o razredih, ki to izvajajo Vmesnik.
Odgovor: Set Interface se uporablja v teoriji množic za oblikovanje matematičnega niza. Podoben je vmesniku List, vendar se nekoliko razlikuje od njega. Set Interface torej ni urejena zbirka, zato pri odstranjevanju ali dodajanju elementov ni ohranjenega vrstnega reda.
V glavnem ne podpira podvojenih elementov, zato je vsak element v vmesniku Set edinstven.
Omogoča tudi smiselne primerjave primerkov Set, tudi če obstajajo različne izvedbe. Poleg tega daje bistveno večjo pogodbo o dejanjih operacij equals in hashCode. Če imata dva primera enake elemente, sta enaka.
Zaradi vseh teh razlogov Set Interface nima operacij, ki temeljijo na indeksu elementov, kot je List. Uporablja samo podedovane metode vmesnika zbirke. TreeSet, EnumSet, LinkedHashSet in HashSet izvaja Set Interface.
V # 15) V HashSet in TreeSet želim dodati ničelni element. Ali lahko?
Odgovor: V TreeSet ne morete dodati nobenega elementa, ker uporablja NavigableMap za shranjevanje elementov. Lahko pa v HashSet dodate samo enega. SortedMap ne dovoli ničelnih tipk in NavigableMap je njegova podmnožica.
Zato v TreeSet ne morete dodati ničelnega elementa, vsakič, ko poskusite to storiti, bo prišel do NullPointerException.
V # 16) Kaj veste o LinkedHashSet?
Odgovor: LinkedHashSet je podrazred HashSet in uveljavlja Set Interface. Kot urejena oblika HashSet-a upravlja dvojno povezan seznam v vseh elementih, ki jih vsebuje. Ohrani vrstni red vstavljanja in tako kot njegov nadrejeni razred nosi samo unikatne elemente.
V # 17) Pogovor o načinu, kako HashSet shranjuje elemente.
Odgovor: HashMap shrani pare ključ-vrednost, ključi pa naj bodo unikatni. To funkcijo Map uporablja HashSet, da se prepriča, da je vsak element unikaten.
Izjava zemljevida v HashSetu je prikazana, kot je prikazano spodaj:
private transient HashMapmap; //This is added as value for each key private static final Object PRESENT = new Object();
Shranjeni elementi v HashSetu so shranjeni kot ključ na zemljevidu, objekt pa je predstavljen kot vrednost.
V # 18) Pojasnite metodo EmptySet ().
Odgovor: Metoda Emptyset () odstrani ničelne elemente in vrne prazen nespremenljiv niz. Ta nespremenljiv niz je serializirati. Deklaracija metode Emptyset () je- javni statični končni Set emptySet ().
Vprašanja za intervju z vmesnikom zemljevida
V # 19) Povejte nam več o vmesniku zemljevida.
Odgovor: Map Interface je zasnovan za hitrejše iskanje in vsebuje elemente v obliki parov ključ-vrednost. Ker je tukaj vsak ključ edinstven, se poveže ali preslika v samo eno vrednost. Ti pari ključev / vrednosti se imenujejo vnosi na zemljevidu.
V tem vmesniku so podpisi metode za iskanje, vstavljanje in odstranjevanje elementov, odvisno od unikatnega ključa. Zaradi tega je odlično orodje za preslikavo asociacij ključ-vrednost, kot je slovar.
V # 20) Zemljevid ne razširja zbirnega vmesnika. Zakaj?
Odgovor: Zbirni vmesnik je kopičenje predmetov in ti predmeti so strukturno shranjeni z mehanizmom določenega dostopa. Medtem ko vmesnik Map sledi strukturi parov ključ-vrednost. Metoda dodajanja zbirnega vmesnika ne podpira metode put vmesnika zemljevida.
Zato Map ne razširja zbirnega vmesnika, vendar je vseeno pomemben del Java Collection Framework.
V # 21) Kako deluje HashMap v Javi?
Odgovor: HashMap je zbirka, ki temelji na zemljevidu in njeni predmeti so sestavljeni iz parov ključ-vrednost. HashMap je običajno označen z ali. Do vsakega elementa hashmap je mogoče dostopati s pomočjo njegovega ključa.
HashMap deluje po principu 'razpršitve'. V tehniki razprševanja se daljši niz pretvori v manjši niz s funkcijo razpršitve, ki ni nič drugega kot algoritem. Manjši niz pomaga pri hitrejšem iskanju in učinkovitem indeksiranju.
V # 22) Pojasnite IdentityHashMap, WeakHashMap in ConcurrentHashMap.
Odgovor:
IdentityHashMap je podobno HashMap. Razlika je v tem, da IdentityHashMap pri primerjavi elementov uporablja referenčno enakost. Ni najprimernejša izvedba zemljevida in čeprav izvaja vmesnik zemljevida, namerno ne upošteva splošne pogodbe zemljevida.
Torej, pri primerjanju predmetov to dovoljuje uporabo metode enakosti. Zasnovan je za uporabo v redkih primerih, ko je potrebna semantika referenčne enakosti.
WeakHashMap Implementacija shranjuje le šibke reference na svoje ključe. To omogoča zbiranje smeti para par ključ-vrednost, kadar zunaj WeakHashMap ni več sklicev na njegove ključe.
Uporablja se predvsem pri tistih ključnih objektih, pri katerih se preizkus identitete predmeta izvaja po enakih metodah z uporabo operatorja ==.
ConcurrentHashMap izvaja vmesnike ConcurrentMap in Serializable. Je nadgrajena, izboljšana različica HashMap, saj ne deluje dobro z večnitnim okoljem. V primerjavi s HashMap ima višjo stopnjo zmogljivosti.
V # 23) Kakšna je kakovost dobrega ključa za HashMap?
Odgovor: Če razumemo, kako deluje HashMap, je enostavno vedeti, da so odvisni predvsem od enakovrednih in hashCode metod ključnih predmetov. Torej, dober ključ mora vedno znova zagotavljati isto hashCode, ne glede na čas, ko je bil pridobljen.
Na enak način morajo isti ključi v primerjavi z enako metodo vrniti true, različni ključi pa false. Zato naj bi bili najboljši kandidat za ključe HashMap nespremenljivi razredi.
V # 24) Kdaj lahko uporabljate TreeMap?
(slika vir )
Odgovor: TreeMap kot posebna oblika HashMap vzdržuje vrstni red tipk po privzetku 'naravno urejanje' kot nekaj, kar manjka v HashMap-u. Uporabite ga lahko za razvrščanje predmetov s kakšnim ključem.
Na primer, če želite implementirati in natisniti slovar v abecednem vrstnem redu, lahko skupaj z TreeSet uporabite TreeMap. Razvrstilo se bo samodejno. Seveda bi to lahko storili tudi ročno, vendar bo delo bolj učinkovito z uporabo TreeMap. Uporabite ga lahko tudi, če je naključni dostop za vas ključnega pomena.
Razlika med vprašanji
V # 25) Kakšna je razlika med zbirko in zbirkami?
Odgovor:
Zbirka | Zbirke |
---|---|
ListIteratorja ne moremo uporabiti za prehod nabora. | ListIterator lahko premakne seznam v katero koli smer. |
To je vmesnik. | To je razred. |
Zbirka predstavlja skupino predmetov kot eno samo entiteto. | Zbirke opredeljujejo različne načine pripomočkov za predmete zbirke. |
Je korenski vmesnik zbirke Framework. | Zbirke so razred uporabnosti. |
Izhaja iz podatkovnih struktur zbirnega okvira. | Zbirke vsebujejo veliko različnih statičnih metod za pomoč pri manipulaciji s podatkovno strukturo. |
V # 26) V čem se Array razlikuje od ArrayList?
Odgovor:
Razlike med Array in ArrayList so podane spodaj:
Matrika | ArrayList |
---|---|
Matrika je močno tipkan razred. | ArrayList je ohlapen tip razreda. |
Polja ni mogoče spremeniti dinamično, njegova dimenzija je statična. | ArrayList je mogoče dinamično spreminjati. |
Polje ne potrebuje boksa in razpakiranja elementov. | ArrayList potrebuje boksanje in razpakiranje elementov. |
V # 27) Ločite med ArrayList in LinkedList.
Odgovor:
ArrayList | LinkedList |
---|---|
ArrayList uporablja notranje dinamično polje za shranjevanje elementov. | LinkedList izvaja dvojno povezan seznam. |
ArrayList manipulacija elementov je precej počasna. | LinkedList veliko hitreje manipulira s svojimi elementi. |
ArrayList lahko deluje samo kot seznam. | LinkedList lahko deluje kot seznam in kot vrsta. |
Uporabno za shranjevanje in dostop do podatkov. | Uporabno za manipulacijo s podatki. |
V # 28) V čem se Iterable razlikuje od Iteratorja?
Odgovor:
Ponovljivo | Iterator |
---|---|
Gre za vmesnik paketa Java.lang. | To je vmesnik paketa Java.util. |
Daje samo eno abstraktno metodo, znano kot Iterator. | Na voljo sta dve abstraktni metodi - hasNext in next. |
Predstavlja vrsto elementov, ki jih je mogoče prehoditi. | Stoji za predmete s stanjem ponavljanja. |
V # 29) Navedite razlike med naborom in seznamom.
Odgovor:
Nastavite | Seznam |
---|---|
Set pripomočkov Set vmesnik. | Seznam izvaja vmesnik List. |
Set je neurejen nabor elementov. | Seznam je urejen nabor elementov. |
Komplet med vstavljanjem ne vzdržuje vrstnega reda elementov. | Seznam ohrani vrstni red elementov med vstavljanjem. |
Nabor ne dovoljuje podvojenih vrednosti. | Seznam omogoča podvojene vrednosti. |
Komplet ne vsebuje nobenega starega razreda. | Seznam vsebuje Vector, starejši razred. |
Komplet omogoča samo eno ničelno vrednost. | Brez omejitev števila ničelnih vrednosti na seznamu. |
V # 30) Kakšna je razlika med čakalno vrsto in skladom?
Odgovor:
Čakalna vrsta | Stack |
---|---|
Čakalna vrsta deluje po principu FIFO (First-In-First-Out). | Sklop deluje na osnovi LIFO (Last-in-first-out). |
Vstavljanje in brisanje v čakalno vrsto poteka na različnih koncih. | Vstavljanje in brisanje se izvajata z istega konca, ki se imenuje vrh sklada. |
Enqueue je ime Insertion, dequeue pa brisanje elementov. | Push je vstavljanje, Pop pa brisanje elementov v Stacku. |
Ima dva kazalca - enega na prvi element seznama (spredaj) in enega na zadnjega (zadaj). | Ima samo en kazalec, ki kaže na zgornji element. |
V # 31) V čem se SinglyLinkedList in DoublyLinkedList med seboj razlikujeta?
Odgovor:
Enotno povezan seznam | Dvojno povezan seznam |
---|---|
Vsako vozlišče posamezno povezanega seznama je sestavljeno iz podatkov in kazalca na naslednje vozlišče. | Dvojno povezan seznam je sestavljen iz podatkov, kazalca na naslednje vozlišče in kazalca na prejšnje vozlišče. |
Po posamezno povezanem seznamu je mogoče prehoditi z naslednjim kazalcem. | Dvojno povezanega seznama je mogoče prehoditi s prejšnjim in naslednjim kazalcem. |
Enovezen seznam zavzame manj prostora v primerjavi z dvojno povezanim seznamom. | Dvojno povezan seznam zaseda veliko prostora v pomnilniku. |
Dostop do elementov ni zelo učinkovit. | Dostop do elementov je učinkovit. |
V # 32) V čem se HashMap razlikuje od HashTable?
Odgovor:
HashMap | HashTable |
---|---|
HashMap podeduje razred AbstractMap | HashTable podeduje razred slovarja. |
HashMap ni sinhroniziran. | HashTable je sinhroniziran. |
HashMap omogoča več ničelnih vrednosti, vendar le en ničelni ključ. | HashTable ne dovoljuje ničelne vrednosti ali ključa. |
HashMap je hitrejši. | HashTable je počasnejši od HashMap. |
HashMap lahko prečka Iterator. | HashTable ni mogoče prehoditi z uporabo iteratorja ali števca. |
V # 33) Navedite razliko med ArrayList in Vector.
Odgovor:
ArrayList | Vektor |
---|---|
ArrayList ni sinhroniziran. | Vektor je sinhroniziran. |
ArrayList ni starejši razred. | Vector je zapuščinski razred. |
ArrayList poveča velikost za polovico ArrayList, ko je element vstavljen nad njegovo velikost. | Vektor poveča svojo velikost za dvakrat, ko element vstavimo nad njegovo velikost. |
ArrayList ni varen za nit | Vector je varen pred nitmi. |
V # 34) V čem se FailFast razlikuje od Failsafe?
Odgovor:
FailFast | FailSafe |
---|---|
Med ponavljanjem ni dovoljeno spreminjanje zbirke. | Omogoča spreminjanje med ponavljanjem. |
Za potovanje uporablja izvirno zbirko. | Uporablja kopijo izvirne zbirke. |
Ni potreben dodaten pomnilnik. | Potrebuje dodaten pomnilnik. |
Vrže ConcurrentModificationException. | Izjema ni nobena izjema. |
Zaključek
Ta vprašanja o intervjujih za zbirke Java vam bodo pomagala, da se pripravite na razgovor. Vaša priprava na intervju z zbirkami Java mora biti globoka in obsežna, zato preučite ta vprašanja in dobro razumejte koncept.
Ta vprašanja ne preizkušajo samo vašega znanja, temveč tudi prisotnost duha.
=> Tukaj si oglejte preproste vadbene serije Java
Priporočeno branje
- JAVA Vadnica za začetnike: 100+ praktičnih Javnih video vadnic
- Osnove Java: Sintaksa Java, Razred Java in Osnovni koncepti Java
- Vprašanja in odgovori za intervjuje
- Vprašanja in odgovori za preizkušanje ETL
- 30 najboljših vprašanj in odgovorov za intervjuje v HTML (SEZNAM 2021)
- 30 najbolj priljubljenih vprašanj in odgovorov za intervju s kumaricami
- Najboljših 40 vprašanj in odgovorov na intervjuje za Java 8 (najpomembnejše)
- Top 30 vprašanj in odgovorov za intervju s SAS