30 top java collections interview questions with answers
Denne vejledning inkluderer en liste over de hyppigst stillede spørgsmål til Java-samlinger samt svar og eksempler til dig :
Java's centrale API er Java Collections Framework. Det understøtter det grundlæggende koncept for dette programmeringssprog. Hvis du vil være Java-udvikler, skal du være opmærksom på disse kernekoncepter.
Området med Java-samlinger er ekstremt bredt, og mange spørgsmål kan stilles i et interview. Her har vi samlet en liste med så mange relevante spørgsmål, som du måske bliver stillet i dit interview.
=> Tjek her for at se AZ af Java-træningsvejledninger her
Hvad du lærer:
Spørgsmål om Java-samlinger
Q # 1) Forklar Java Collections Framework.
Svar: Java Collections Framework er en arkitektur, der hjælper med at administrere og lagre en gruppe objekter. Med det kan udviklerne også få adgang til færdigpakkede datastrukturer og manipulere data ved hjælp af algoritmer.
Java-samling inkluderer interface og klasser, der understøtter operationer som søgning, sletning, indsættelse, sortering osv. Sammen med interface og klasser inkluderer Java Collections også algoritmer, der hjælper med manipulationer.
Q # 2) Hvad er fordelene ved Java Collections?
Svar:
Fordelene ved Java-samlinger er:
- I stedet for at implementere vores indsamlingsklasser bruger den kernen til indsamlingsklasser, hvilket reducerer den krævede indsats for dets udvikling.
- Det bruger samlingsklasser, der er godt testet. Derfor forbedres kodekvaliteten.
- Det reducerer indsatsen i vedligeholdelse af kode.
- Java Collection Framework er interoperabelt og genanvendeligt.
Spørgsmål nr. 3) Hvad ved du om hierarkiet over samlinger i Java?
Svar:
(billede kilde )
Q # 4) Fortæl os om Java Collection's grundlæggende grænseflader.
Svar:
Nedenfor er de grundlæggende grænseflader i Java Collection Framework.
Kollektion: Det er basen i samlingshierarkiet og repræsenterer dets elementer. Java leverer dog ikke nogen direkte anvendelse af samlingen. Også de fleste af Java-samlingerne kommer fra denne grænseflade.
Sæt: Det kan ikke indeholde duplikatelementer, da det modellerer abstraktionen af det matematiske sæt. Som navnet antyder, repræsenterer det sæt, for eksempel, et kort kort.
Liste: Det kan indeholde duplikatelementer og er en ordnet samling. Du kan bruge dets indeks til at få adgang til ethvert element i det. Listen er som et arrangement, et array med en dynamisk længde.
Dette er et par grænseflader til Java Collection. Der er dog et par flere grænseflader såvel som vist nedenfor.
- Kø
- Dequeue
- Iterator
- Iterabel
- SortedSet
- ListIterator.
Spørgsmål nr. 5) Hvorfor Serialiserbare og klonbare grænseflader ikke udvides af samlingen Interface?
Svar: Samlingsgrænseflades opgave er at specificere en gruppe objekter kaldet elementer. Implementeringen af samlingerne bestemmer, hvordan elementerne skal vedligeholdes. For eksempel, Listimplementeringerne tillader duplikatelementer, men Setimplementeringer gør det ikke.
Mange implementeringer har en metode til offentlig kloning. Men det er ikke praktisk at inkludere det i alle samlingens implementeringer, da samlingen er abstrakt, og implementeringen er alt, hvad der betyder noget.
Betydningen og konsekvenserne af både serialisering og kloning giver mening, mens man arbejder med de materielle implementeringer. Derfor er det op til den faktiske implementering at afgøre, om den kan serieiseres eller klones, og hvordan.
Lær mere = >> Markørinterface i Java: Serialiserbar og klonbar
Derfor er indføring af serialisering og kloning i enhver implementering ikke særlig fleksibel og er begrænsende.
Spørgsmål nr. 6) Hvad forstår du af Iterator i Java Collection Framework?
Svar: I enkle arrays kan vi bruge sløjfer til at få adgang til hvert element. Når en lignende tilgang er nødvendig for at få adgang til elementer i en samling, går vi efter iteratorer. Iterator er en konstruktion, der bruges til at få adgang til elementer i samlingsobjekter.
I Java er Iterators de objekter, der implementerer 'Iterator' -grænsefladen i Collection Framework. Denne grænseflade er en del af java.util-pakken.
Nogle af karakteristika ved Iteratorer er:
- Iteratorer bruges til at krydse samlingens objekter.
- Iteratorer er kendt som “Universal Java Cursor”, da vi kan bruge den samme Iterator til alle samlingerne.
- Iteratorer leverer operationer 'Læs' og 'Fjern' bortset fra at krydse samlingerne.
- Da de er universelle og arbejder med alle samlingerne, er Iteratorer lettere at implementere.
Liste over Java Collection-spørgsmål
Spørgsmål nr. 7) Er du opmærksom på anvendelsen af List Interface?
(billede kilde )
Svar: Formålet med List Interface er at opretholde rækkefølgen af indsættelsen. Det tillader også lagring af duplikatværdier.
Det hjælper med jævn manipulation af elementerne afhængigt af dets indeks med de forskellige metoder, det indeholder. ArrayList, Vector, Stack og LinkedList er de forskellige klasser, der implementerer List Interface.
Spørgsmål nr. 8) Hvad forstår du om ArrayList i Java?
Svar: Implementeringen af List Interface er ArrayList. Det tilføjer eller fjerner dynamisk elementer fra listen, og det giver også indsættelse af elementer sammen med positional adgang. ArrayList tillader duplikatværdier, og dens størrelse kan øges dynamisk, hvis antallet af elementer overstiger den oprindelige størrelse.
Spørgsmål nr. 9) Hvordan konverterer du et strengarray til en ArrayList?
Svar: Dette er et programmeringsspørgsmål på et begynderniveau, som en interviewer beder om at kontrollere din forståelse af Collection utility.classes. Samling og arrays er de to hjælpeklasser i Collection Framework, som interviewere ofte er interesserede i.
Samlinger tilbyder visse statiske funktioner til udførelse af specifikke opgaver på samlingstyper. Mens Array har hjælpefunktioner, som den udfører på arraytyper.
//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);
Bemærk, at bortset fra streng type, kan du også bruge andre typer arrays til at konvertere til ArrayList.
For eksempel,
//Integer array Integer() numArray = {10,20,30,40}; //Convert to list using Arrays class asList method List num_List = Arrays.asList(numArray);
Q # 10) Konverter Array til ArrayList og ArrayList til Array.
Svar: For at konvertere ArrayList til Array bruges metoden toArray () - List_object.toArray (ny streng (List_object.size ()))
Mens metoden asList () bruges til at konvertere Array til ArrayList- Arrays.asList (vare). AsList () er en statisk metode, hvor listeobjekter er parametrene.
Spørgsmål nr. 11) Hvad er en LinkedList, og hvor mange typer af den understøttes i Java?
(billede kilde )
Svar: LinkedList er en datastruktur med en sekvens af links, hvor hvert link er forbundet til det næste link.
To typer LinkedList bruges i Java til lagring af elementerne:
- Enkelt forbundet liste: Her gemmer hver node dataene for noden sammen med en reference eller markøren til den næste node.
- Dobbelt forbundet liste: En dobbelt LinkedList leveres med dobbelte referencer, en henvisning til den næste node og en anden til den tidligere node.
Spørgsmål nr. 12) Hvad forstår du ved BlockingQueue?
Svar: I en simpel kø ved vi, at når køen er fuld, kan vi ikke indsætte flere ting. I dette tilfælde giver køen simpelthen en besked om, at køen er fuld og afslutter. Et lignende tilfælde sker, når køen er tom, og der ikke er noget element, der skal fjernes i køen.
I stedet for bare at afslutte, når indsættelse / fjernelse ikke kan gøres, hvad med at vi venter, indtil vi kan indsætte eller fjerne varen?
Dette besvares med en kaldet variation af kø “Blokerende kø” . I blokeringskø aktiveres blokering under enqueue- og dequeue-operationer, hver gang køen forsøger at indkøbe fuld kø eller dequeue en tom kø.
Blokeringen er vist i den følgende figur.
BlockingQueue
Således vil blokeringskøen under enqueue-drift vente, indtil der bliver et mellemrum, så et element med succes kan indsættes. På samme måde venter blokeringskø i dequeue-operationen, indtil en vare bliver tilgængelig til operationen.
selen webdriver eksempel kode i java
Blokeringskø implementerer 'BlockingQueue' interface, der hører til 'java.util.concurrent' pakke. Vi skal huske, at BlockingQueue-grænsefladen ikke tillader nulværdi. Hvis det støder på null, kaster det NullPointerException.
Spørgsmål nr. 13) Hvad er en prioritetskø i Java?
Svar: En prioritetskø i Java svarer til stak- eller kødatastrukturer. Det er en abstrakt datatype i Java og implementeres som en PriorityQueue-klasse i java.util-pakken. Prioritetskøen har en speciel funktion, at hvert element i Prioritetskøen har en prioritet.
I en prioritetskø er et element med højere prioritet serveren før elementet med lavere prioritet.
Alle varerne i prioritetskøen bestilles efter naturlig bestilling. Vi kan også bestille elementerne efter brugerdefineret rækkefølge ved at tilvejebringe en komparator på tidspunktet for oprettelse af et prioriteret køobjekt.
Sæt spørgsmål om interfaceinterview
Q # 14) Hvad er brugen af Set Interface? Fortæl os om de klasser, der implementerer dette Interface.
Svar: Set Interface bruges i sætteorien til at forme det matematiske sæt. Det ligner List-grænsefladen og er dog lidt anderledes end det. Set Interface er ikke en ordnet samling, derfor er der ingen bevaret rækkefølge, når du fjerner eller tilføjer elementerne.
Hovedsageligt understøtter det ikke duplikatelementer, så hvert element i Set Interface er unikt.
Det tillader også meningsfulde sammenligninger af sæt-forekomster, selv når der er forskellige implementeringer. Det indgår også en mere omfattende kontrakt om handlingerne i operationer af lig med hashCode. Hvis to eksempler har de samme elementer, er de ens.
Af alle disse grunde har Set Interface ikke elementindeksbaserede operationer som List. Det bruger kun arvede metoder til indsamling af interface. TreeSet, EnumSet, LinkedHashSet og HashSet implementerer Set Interface.
Q # 15) Jeg vil føje et null-element til HashSet og TreeSet. Kan jeg?
Svar: Du kan ikke tilføje noget null-element i TreeSet, da det bruger NavigableMap til elementlagring. Men du kan kun tilføje en til HashSet. SortedMap tillader ikke nøgletaster, og NavigableMap er dens undersæt.
Derfor kan du ikke tilføje et null-element til TreeSet, det kommer op med NullPointerException hver gang du prøver at gøre det.
Spørgsmål nr. 16) Hvad ved du om LinkedHashSet?
Svar: LinkedHashSet er underklassen af HashSet, og det håndhæver Set Interface. Som en ordnet form for HashSet administrerer den en dobbeltkoblet liste gennem alle de elementer, den indeholder. Det bevarer rækkefølgen for indsættelse, og ligesom sin overordnede klasse bærer det kun unikke elementer.
Q # 17) Tal om den måde, HashSet lagrer elementer på.
Svar: HashMap gemmer parene med nøgleværdier, men tasterne skal være unikke. Denne funktion af Map bruges af HashSet for at sikre, at hvert element er unikt.
Korterklæringen i HashSet vises som vist nedenfor:
private transient HashMapmap; //This is added as value for each key private static final Object PRESENT = new Object();
De lagrede elementer i HashSet er gemt som en nøgle i kortet, og objektet præsenteres som en værdi.
Q # 18) Forklar EmptySet () -metoden.
Svar: Metoden Emptyset () fjerner nulelementerne og returnerer det tomme, uforanderlige sæt. Dette uforanderlige sæt kan serialiseres. Metodedeklarationen for Emptyset () er- offentlig statisk endelig Sæt emptySet ().
Spørgsmål om kortinterfaceinterview
Spørgsmål nr. 19) Fortæl os om kortgrænsefladen.
Svar: Map Interface er designet til hurtigere opslag, og det gemmer elementerne i form af par nøgleværdier. Da hver nøgle er unik her, forbinder den eller kortlægger den kun til en enkelt værdi. Disse par nøgleværdier kaldes kortindgange.
I denne grænseflade er der metodesignaturer til hentning, indsættelse og fjernelse af elementer afhængigt af den unikke nøgle. Dette gør det til et perfekt værktøj til kortlægning af nøgleværdiforbindelser, som en ordbog.
Spørgsmål nr. 20) Kortet udvider ikke samlingsgrænsefladen. Hvorfor?
Svar: Samlingsgrænsefladen er akkumulering af objekter, og disse objekter lagres strukturelt med mekanismen for specificeret adgang. Mens kortgrænsefladen følger strukturen af nøgleværdipar. Add-metoden til Collection Interface understøtter ikke put-metoden til Map Interface.
Derfor udvider Map ikke Collection Interface, men det er stadig en vigtig del af Java Collection Framework.
Spørgsmål nr. 21) Hvordan fungerer HashMap i Java?
Svar: HashMap er en samling baseret på Map, og dens varer består af nøgleværdipar. En HashMap betegnes typisk med, eller. Hvert hashmap-element kan tilgås ved hjælp af dens nøgle.
En HashMap fungerer på princippet 'Hashing'. I hashing-teknikken omdannes en længere streng til en mindre streng af en 'hash-funktion', der kun er en algoritme. Den mindre streng hjælper med hurtigere søgning og effektiv indeksering.
Q # 22) Forklar IdentityHashMap, WeakHashMap og ConcurrentHashMap.
Svar:
IdentityHashMap ligner meget HashMap. Forskellen er, at mens man sammenligner elementer, bruger IdentityHashMap reference lighed. Det er ikke en foretrukken kortimplementering, og selvom det udfører kortgrænsefladen, overholder det ikke bevidst den generelle kontrakt på kortet.
Så når man sammenligner objekter, godkendes dette brugen af ligemetoden. Det er designet til brug i sjældne tilfælde, hvor man har brug for reference-ligestillingssemantik.
WeakHashMap Implementering gemmer kun svage referencer til dens nøgler. Dette tillader affaldsindsamling af et nøgleværdipar, når der ikke er mere reference til dets nøgler uden for WeakHashMap.
Det bruges primært med de nøgleobjekter, hvor testen for objektidentitet udføres med dens ligemetoder ved hjælp af == operatoren.
ConcurrentHashMap implementerer både ConcurrentMap- og Serializable-grænseflader. Det er den opgraderede, forbedrede version af HashMap, da den ikke fungerer godt med det multitrådede miljø. Sammenlignet med HashMap har den en højere ydeevne.
Spørgsmål nr. 23) Hvad er kvaliteten af en god nøgle til HashMap?
Svar: At forstå, hvordan HashMap fungerer, er det let at vide, at de hovedsageligt afhænger af ligemænd og hashCode-metoder til nøgleobjekter. Så en god nøgle skal give den samme hashCode igen og igen, uanset de gange den hentes.
På samme måde, når de sammenlignes med ligemetoden, skal de samme nøgler returnere true, og forskellige nøgler skal returnere false. Derfor siges den bedste kandidat til HashMap-nøgler at være uforanderlige klasser.
Spørgsmål nr. 24) Hvornår kan du bruge TreeMap?
(billede kilde )
Svar: TreeMap, som en særlig form for HashMap, opretholder rækkefølgen af tasterne som standard 'naturlig ordning' som noget, der mangler i HashMap. Du kan bruge den til at sortere objekter med en eller anden nøgle.
For eksempel, Hvis du vil implementere og udskrive en ordbog i alfabetisk rækkefølge, kan du bruge TreeMap sammen med TreeSet. Det sorteres automatisk. Selvfølgelig kunne du også have gjort det manuelt, men arbejdet udføres mere effektivt ved hjælp af TreeMap. Du kan også bruge det, hvis tilfældig adgang er afgørende for dig.
Forskel mellem spørgsmål
Spørgsmål nr. 25) Hvad er forskellen mellem samling og samlinger?
Svar:
Kollektion | Samlinger |
---|---|
Vi kan ikke bruge ListIterator til at krydse et sæt. | ListIterator kan krydse List i enhver retning. |
Det er en grænseflade. | Det er klasse. |
Samlingen repræsenterer en gruppe objekter som en enkelt enhed. | Samlinger definerer forskellige metoder til brug for samlingsobjekter. |
Det er Collection Framework's rodgrænseflade. | Samlinger er en hjælpeklasse. |
Det stammer Collection Framework's datastrukturer. | Samlinger indeholder mange forskellige statiske metoder til at hjælpe med at manipulere datastrukturen. |
Spørgsmål nr. 26) Hvordan adskiller Array sig fra en ArrayList?
Svar:
Forskelle mellem Array og ArrayList er angivet nedenfor:
Array | ArrayList |
---|---|
Arrayet er en stærkt skrevet klasse. | ArrayList er en løst skrevet klasse. |
Array kan ikke ændres dynamisk, dens dimension er statisk. | ArrayList kan ændres dynamisk. |
En matrix har ikke brug for boksning og unboxing af elementer. | ArrayList har brug for boksning og unboxing af elementer. |
Q # 27) Skel mellem ArrayList og LinkedList.
Svar:
ArrayList | LinkedList |
---|---|
ArrayList bruger det dynamiske array internt til lagring af elementer. | LinkedList implementerer den dobbeltkoblede liste. |
ArrayList manipulation af elementer er ret langsom. | LinkedList manipulerer sine elementer meget hurtigere. |
ArrayList kan kun fungere som en liste. | LinkedList kan fungere som både liste og kø. |
Nyttig til lagring og adgang til data. | Nyttig til manipulation af data. |
Q # 28) Hvordan adskiller Iterable sig fra Iterator?
Svar:
Iterabel | Iterator |
---|---|
Det er Java.lang-pakkeinterface. | Det er Java.util-pakkeinterface. |
Udbyder kun en abstrakt metode kendt som Iteratoren. | Den leveres med to abstrakte metoder - har Næste og næste. |
Repræsenterer en række elementer, der kan krydses. | Står til objekter med iterationstilstand. |
Q # 29) Angiv forskellene mellem Set og List.
Svar:
Sæt | Liste |
---|---|
Indstil redskaber Indstil grænseflade. | Listen implementerer List-grænsefladen. |
Sæt er et uordnet sæt af elementer. | Listen er et ordnet sæt af elementer. |
Sættet opretholder ikke rækkefølgen af elementer under indsættelse. | Liste bevarer rækkefølgen af elementer under indsættelse. |
Sættet tillader ikke duplikatværdier. | Listen tillader duplikerede værdier. |
Sættet indeholder ikke nogen ældre klasse. | Listen indeholder Vector, en ældre klasse. |
Sættet tillader kun en nulværdi. | Ingen begrænsning af antallet af nulværdier i listen. |
Spørgsmål nr. 30) Hvad er forskellen mellem kø og stak?
Svar:
Kø | Stak |
---|---|
Kø fungerer efter princippet om First-In-First-Out (FIFO) tilgang. | Stack fungerer på en Last-In-First-Out (LIFO) basis. |
Indsættelse og sletning i køen finder sted i forskellige ender. | Indsættelse og sletning udføres fra samme ende kaldet toppen af stakken. |
Enqueue er navnet på indsættelse, og dequeue er sletning af elementer. | Push er indsættelse, og Pop er sletning af elementer i Stack. |
Den har to markører - en til det første element på listen (forreste) og en til den sidste (bageste). | Den har kun en markør, der peger på det øverste element. |
Spørgsmål nr. 31) Hvordan adskiller SinglyLinkedList og DoubleLinkedList sig fra hinanden?
Svar:
Enkelt forbundet liste | Dobbelt sammenkædet liste |
---|---|
Hver knude på den enkeltlinkede liste består af data og en markør til den næste knude. | En dobbeltkoblet liste består af data, en markør til den næste node og en markør til den forrige node. |
Den enkeltlinkede liste kan krydses ved hjælp af den næste markør. | En dobbeltkoblet liste kan krydses ved hjælp af både forrige og næste markør. |
Den enkeltlinkede liste tager mindre plads i forhold til en dobbeltkoblet liste. | Den dobbeltkoblede liste optager meget hukommelsesplads. |
Elementadgang er ikke særlig effektiv. | Elementadgang er effektiv. |
Spørgsmål nr. 32) Hvordan adskiller HashMap sig fra HashTable?
Svar:
HashMap | HashTable |
---|---|
HashMap arver klassen AbstractMap | HashTable arver ordbogsklasse. |
HashMap er ikke synkroniseret. | HashTable er synkroniseret. |
HashMap tillader flere nulværdier, men kun en nøgle. | HashTable tillader ikke en nulværdi eller nøgle. |
HashMap er hurtigere. | HashTable er langsommere end HashMap. |
HashMap kan gennemgås af Iterator. | HashTable kan ikke krydses ved hjælp af iterator eller enumerator. |
Q # 33) Angiv forskellen mellem ArrayList og Vector.
Svar:
ArrayList | Vektor |
---|---|
ArrayList er ikke-synkroniseret. | Vektor synkroniseres. |
ArrayList er ikke en ældre klasse. | Vector er en arveklasse. |
ArrayList øger størrelsen med halvdelen af ArrayList, når et element indsættes ud over dets størrelse. | Vector øger størrelsen med dobbelt, når et element indsættes ud over dets størrelse. |
ArrayList er ikke trådsikker | Vector er trådsikker. |
Spørgsmål nr. 34) Hvordan adskiller FailFast sig fra Failsafe?
Svar:
FailFast | Fejlsikker |
---|---|
Mens det gentages, er ingen ændring af en samling tilladt. | Tillader ændring under iterering. |
Bruger original samling til at krydse. | Bruger en kopi af den originale samling. |
Ingen ekstra hukommelse kræves. | Brug for ekstra hukommelse. |
Kaster ConcurrentModificationException. | Der kastes ingen undtagelse. |
Konklusion
Disse spørgsmål om Java Collections-interview hjælper dig med at forberede dig til interviewet. Din forberedelse til Java Collections-interviewet skal være dyb og omfattende, så studer disse spørgsmål og forstå konceptet godt.
Disse spørgsmål tester ikke kun din viden, men også din tilstedeværelse af sindet.
=> Pas på den enkle Java-træningsserie her
Anbefalet læsning
- JAVA-vejledning til begyndere: 100+ praktiske Java-videovejledninger
- Java Basics: Java Syntax, Java Class og Core Java Concepts
- Interviewspørgsmål og svar
- ETL Testing Interview Spørgsmål og svar
- 30 Top HTML-interviewspørgsmål og -svar (2021 LIST)
- Top 30+ populære agurkspørgsmål og svar
- Top 40 Java 8 Interview Spørgsmål og svar (Vigtigst)
- Top 30 SAS Interview Spørgsmål og svar