30 top java collections interview questions with answers
Denne opplæringen inneholder en liste over de ofte stilte spørsmålene om Java-samlinger, samt spørsmål og eksempler for deg :
Kjernen API av Java er Java Collections Framework. Den støtter det grunnleggende konseptet med dette programmeringsspråket. Hvis du vil være Java-utvikler, bør du være godt kjent med disse kjernekonseptene.
Området med Java-samlinger er ekstremt bredt, og mange spørsmål kan stilles i et intervju. Her har vi samlet en liste over så mange relevante spørsmål du kan bli stilt i intervjuet ditt.
=> Sjekk her for å se AZ av Java-opplæringsveiledninger her
Hva du vil lære:
Intervju spørsmål om Java Collections
Q # 1) Forklar Java Collections Framework.
Svar: Java Collections Framework er en arkitektur som hjelper til med å administrere og lagre en gruppe objekter. Med det kan utviklerne få tilgang til ferdigpakket datastrukturer og manipulere data med bruk av algoritmer også.
Java-samlingen inkluderer grensesnittet og klassene som støtter operasjoner som å søke, slette, sette inn, sortere osv. Sammen med grensesnitt og klasser inkluderer Java-samlingen også algoritmer som hjelper til med manipulasjoner.
Q # 2) Hva er fordelene med Java Collections?
Svar:
Fordelene med Java Collections er:
- I stedet for å implementere våre samlingsklasser, bruker den kjernekolleksjonsklassene, og reduserer dermed innsatsen som kreves for utviklingen.
- Den bruker samlingens rammeklasser som er godt testet. Derfor forbedres kodekvaliteten.
- Det reduserer innsatsen i kodevedlikehold.
- Java Collection Framework er kompatibelt og gjenbrukbart.
Sp # 3) Hva vet du om hierarkiet over samlinger i Java?
Svar:
(bilde kilde )
Sp # 4) Fortell oss om Java Collection's grunnleggende grensesnitt.
Svar:
Nedenfor er de grunnleggende grensesnittene til Java Collection Framework.
Samling: Det er basen i samlingshierarkiet og representerer elementene. Java gir imidlertid ingen direkte anvendelse av samlingen. Også de fleste Java-samlingene kommer fra dette grensesnittet.
Sett: Den kan ikke inneholde dupliserte elementer, da den modellerer abstraksjonen av det matematiske settet. Som navnet antyder, representerer det sett, for eksempel, et kort kort.
Liste: Den kan inneholde dupliserte elementer og er en bestilt samling. Du kan bruke indeksen for å få tilgang til ethvert element i den. Listen er som et arrangement, en matrise med en dynamisk lengde.
Dette er noen få grensesnitt for Java Collection. Imidlertid er det noen flere grensesnitt, som vist nedenfor.
- Kø
- Dequeue
- Iterator
- Iterabel
- SortedSet
- ListIterator.
Spørsmål nr. 5) Hvorfor serialiserbare og klonbare grensesnitt ikke utvides av samlingen Grensesnitt?
Svar: Samlingsgrensesnittets oppgave er å spesifisere en gruppe objekter som kalles elementer. Gjennomføringen av samlingene avgjør hvordan elementene skal vedlikeholdes. For eksempel, Listimplementeringene tillater dupliserte elementer, men Setimplementeringer gjør det ikke.
Mange implementeringer har en metode for offentlig kloning. Men det er ikke praktisk å inkludere det i alle samlingens implementeringer, da samlingen er abstrakt og implementeringen er alt som betyr noe.
Betydningen og konsekvensene av både serialisering og kloning er fornuftig mens du arbeider med de materielle implementeringene. Derfor er det opp til selve implementeringen å avgjøre om den kan serieiseres eller klones og hvordan.
Lær mer = >> Markergrensesnitt i Java: Serialiserbart og klonabelt
Derfor er innføring av serialisering og kloning i hver implementering ikke veldig fleksibel og er begrensende.
Sp # 6) Hva forstår du av Iterator i Java Collection Framework?
Svar: I enkle matriser kan vi bruke sløyfer for å få tilgang til hvert element. Når en lignende tilnærming er nødvendig for å få tilgang til elementer i en samling, går vi for iteratorer. Iterator er en konstruksjon som brukes til å få tilgang til elementer i samlingobjekter.
I Java er Iterators objektene som implementerer 'Iterator' -grensesnittet i Collection Framework. Dette grensesnittet er en del av java.util-pakken.
Noen av egenskapene til Iteratorer er:
- Iteratorer brukes til å krysse Collection-objektene.
- Iteratorer er kjent som “Universal Java Cursor”, ettersom vi kan bruke den samme Iteratoren for alle samlingene.
- Iteratorer tilbyr 'Les' og 'Fjern' -operasjoner bortsett fra å krysse samlingene.
- Siden de er universelle og fungerer med alle samlingene, er Iterators enklere å implementere.
Liste Java-spørsmål
Q # 7) Er du klar over bruken av List Interface?
(bilde kilde )
Svar: Formålet med listegrensesnittet er å opprettholde rekkefølgen på innsettingen. Det tillater også lagring av dupliserte verdier.
Det hjelper til med jevn manipulering av elementene, avhengig av indeksen med de forskjellige metodene den inneholder. ArrayList, Vector, Stack og LinkedList er de forskjellige klassene som implementerer List Interface.
Q # 8) Hva forstår du om ArrayList i Java?
Svar: Implementeringen av List Interface er ArrayList. Det legger til eller fjerner elementer fra listen dynamisk, og det gir også innsetting av elementer sammen med posisjonell tilgang. ArrayList tillater dupliserte verdier, og størrelsen kan øke dynamisk hvis antall elementer overstiger den opprinnelige størrelsen.
Sp # 9) Hvordan vil du konvertere en strengmatrise til en ArrayList?
Svar: Dette er et programmeringsspørsmål på nybegynnernivå som en intervjuer ber om å sjekke din forståelse av Collection utility.classes. Collection and Arrays er de to nytteklassene i Collection Framework som intervjuere ofte er interessert i.
Samlinger tilbyr visse statiske funksjoner for å utføre bestemte oppgaver på samlingstyper. Mens Array har verktøyfunksjoner som den utfører på matrityper.
//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);
Merk at bortsett fra strengtypen, kan du også bruke andre typer arrays for å 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 å konvertere ArrayList til Array, brukes metoden toArray () - List_object.toArray (ny streng (List_object.size ()))
Mens metoden asList () brukes til å konvertere Array til ArrayList- Arrays.asList (vare). AsList () er en statisk metode der List-objekter er parametrene.
Sp # 11) Hva er en LinkedList og hvor mange typer den støttes i Java?
(bilde kilde )
Svar: LinkedList er en datastruktur med en sekvens av lenker der hver lenke er koblet til neste lenke.
To typer LinkedList brukes i Java for lagring av elementene:
- Singly LinkedList: Her lagrer hver node dataene til noden sammen med en referanse eller pekeren til neste node.
- Dobbelt knyttet liste: En dobbelt LinkedList kommer med doble referanser, en referanse til neste node og en annen for den forrige noden.
Sp # 12) Hva forstår du med BlockingQueue?
Svar: I en enkel kø vet vi at når køen er full, kan vi ikke sette inn flere elementer. I dette tilfellet gir køen ganske enkelt en melding om at køen er full og går ut. Et lignende tilfelle skjer når køen er tom og det ikke er noe element som skal fjernes i køen.
I stedet for bare å avslutte når innsetting / fjerning ikke kan gjøres, hva med å vente til vi kan sette inn eller fjerne varen?
Dette blir besvart av en variant av kø som heter “Blokkeringskø” . I blokkeringskøen blir blokkering aktivert under enqueue- og dequeue-operasjoner når køen prøver å innstille full kø eller dequeue en tom kø.
Blokkeringen er vist i følgende figur.
BlockingQueue
Dermed vil blokkeringskøen vente til et mellomrom blir tilgjengelig, slik at et element kan settes inn vellykket under enqueue-operasjonen. På samme måte vil blokkeringskøen i dequeue-operasjonen vente til et element blir tilgjengelig for operasjonen.
programvare for å laste ned videoer fra tube
Blokkeringskø implementerer 'BlockingQueue' -grensesnitt som tilhører 'java.util.concurrent' -pakken. Vi bør huske at BlockingQueue-grensesnittet ikke tillater nullverdi. Hvis den møter null, kaster den NullPointerException.
Q # 13) Hva er en prioritetskø i Java?
Svar: En prioritetskø i Java ligner på stabel- eller kødatastrukturer. Det er en abstrakt datatype i Java og er implementert som en PriorityQueue-klasse i java.util-pakken. Prioritetskøen har en spesiell funksjon som hvert element i Prioritetskøen har prioritet.
I en prioritetskø er et element med høyere prioritet serveren før elementet med lavere prioritet.
Alle varene i prioritetskøen er bestilt i henhold til naturlig bestilling. Vi kan også bestille elementene i henhold til tilpasset rekkefølge ved å tilby en komparator når vi oppretter et prioritetskøobjekt.
Sett spørsmål om grensesnittintervju
Sp # 14) Hva er bruken av Set Interface? Fortell oss om klassene som implementerer dette Grensesnitt.
Svar: Settgrensesnitt brukes i mengdeorien for å forme det matematiske settet. Det ligner på List-grensesnittet og er likevel litt annerledes enn det. Sett grensesnitt er ikke en ordnet samling, og det er derfor ingen bevart bestilling når du fjerner eller legger til elementene.
Hovedsakelig støtter den ikke dupliserte elementer, og hvert element i settgrensesnittet er unikt.
Det tillater også meningsfulle sammenligninger av Set-forekomster, selv når det er forskjellige implementeringer. Det setter også inn en mer omfattende kontrakt om handlingene til driften av like og hashCode. Hvis to eksempler har de samme elementene, er de like.
Av alle disse grunnene har Set Interface ikke elementindeksbaserte operasjoner som List. Den bruker bare arvede metoder for samlegrensesnitt. TreeSet, EnumSet, LinkedHashSet og HashSet implementerer Set Interface.
Q # 15) Jeg vil legge til et null-element i HashSet og TreeSet. Kan jeg?
Svar: Du kan ikke legge til noe null-element i TreeSet ettersom det bruker NavigableMap for elementlagring. Men du kan bare legge til en i HashSet. SortedMap tillater ikke nulltaster, og NavigableMap er delmengden.
Derfor kan du ikke legge til et null-element i TreeSet, det vil komme opp med NullPointerException hver gang du prøver å gjøre det.
Spørsmål nr. 16) Hva vet du om LinkedHashSet?
Svar: LinkedHashSet er underklassen til HashSet, og den håndhever Set Interface. Som en bestilt form for HashSet administrerer den en dobbeltkoblet liste gjennom alle elementene den inneholder. Den beholder rekkefølgen for innsetting, og akkurat som foreldreklassen bærer den bare unike elementer.
Q # 17) Snakk om måten HashSet lagrer elementer på.
Svar: HashMap lagrer parene med nøkkelverdier, men tastene skal være unike. Denne funksjonen i Map brukes av HashSet for å sikre at hvert element er unikt.
Kartdeklarasjonen 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 elementene i HashSet lagres som en nøkkel i kartet, og objektet presenteres som en verdi.
Q # 18) Forklar EmptySet () -metoden.
Svar: Emptyset () -metoden fjerner nullelementene og returnerer det tomme uforanderlige settet. Dette uforanderlige settet kan serienummeres. Metodedeklarasjonen til Emptyset () er- offentlig statisk slutt Sett tomSett ().
Spørsmål om kartgrensesnittintervju
Spørsmål 19) Fortell oss om kartgrensesnittet.
Svar: Kartgrensesnitt er designet for raskere oppslag, og det lagrer elementene i form av par nøkkelverdier. Siden hver nøkkel er unik her, kobles den til eller bare til en enkelt verdi. Disse parene med nøkkelverdier kalles kartoppføringer.
I dette grensesnittet er det metodesignaturer for henting, innsetting og fjerning av elementer, avhengig av den unike nøkkelen. Dette gjør det til et perfekt verktøy for å kartlegge nøkkelverdiforeninger, som en ordbok.
Q # 20) Kartet utvider ikke samlingsgrensesnittet. Hvorfor?
Svar: Samlingsgrensesnittet er akkumulering av objekter, og disse objektene lagres strukturelt med mekanismen for spesifisert tilgang. Mens kartgrensesnittet følger strukturen til nøkkelverdipar. Add-metoden i Collection Interface støtter ikke put-metoden til Map Interface.
Derfor utvider Map ikke samlingsgrensesnittet, men det er fortsatt en viktig del av Java Collection Framework.
Q # 21) Hvordan fungerer HashMap i Java?
Svar: HashMap er en samling basert på Map og dens elementer består av nøkkelverdipar. En HashMap er vanligvis betegnet med, eller. Hvert hashmap-element er tilgjengelig med nøkkelen.
En HashMap fungerer på prinsippet 'Hashing'. I hashingsteknikken blir en lengre streng transformert til en mindre streng av en ‘hash-funksjon’ som ikke er annet enn en algoritme. Den mindre strengen hjelper deg med raskere søk og effektiv indeksering.
Q # 22) Forklar IdentityHashMap, WeakHashMap og ConcurrentHashMap.
Svar:
IdentityHashMap er omtrent som HashMap. Forskjellen er at mens man sammenligner elementer, bruker IdentityHashMap referanselikhet. Det er ikke en foretrukket kartimplementering, og selv om det utfører kartgrensesnittet, overholder det ikke den generelle kontrakten til kartet med vilje.
Så når du sammenligner objekter, godkjenner dette bruken av likemetoden. Den er designet for bruk i sjeldne tilfeller der man trenger referanselikhetssemantikk.
WeakHashMap Implementering lagrer bare svake referanser til nøklene. Dette gjør det mulig å samle søppel på et nøkkelverdipar når det ikke er mer referanse til nøklene utenfor WeakHashMap.
Den brukes hovedsakelig med de viktigste objektene der testen for objektidentitet utføres med dens like metoder ved bruk av == operatoren.
ConcurrentHashMap implementerer både ConcurrentMap- og Serializable-grensesnitt. Det er den oppgraderte, forbedrede versjonen av HashMap, da den ikke fungerer bra med det flertrådede miljøet. Sammenlignet med HashMap har den en høyere ytelsesrate.
Spørsmål nr. 23) Hva er kvaliteten på en god nøkkel for HashMap?
Svar: Forstå hvordan HashMap fungerer, er det lett å vite at de hovedsakelig avhenger av like og hashCode-metoder for nøkkelobjekter. Så, en god nøkkel må gi samme hashCode igjen og igjen, uavhengig av gangene den blir hentet.
På samme måte, når de sammenlignes med likemetoden, må de samme nøklene returnere true og forskjellige nøkler må returnere false. Derfor sies det at den beste kandidaten for HashMap-nøkler er uforanderlige klasser.
Sp # 24) Når kan du bruke TreeMap?
(bilde kilde )
Svar: TreeMap, som en spesiell form for HashMap, opprettholder rekkefølgen av nøklene som standard ‘naturlig bestilling’, som noe som mangler i HashMap. Du kan bruke den til å sortere objekter med en eller annen nøkkel.
For eksempel, Hvis du vil implementere og skrive ut en ordbok i alfabetisk rekkefølge, kan du bruke TreeMap sammen med TreeSet. Den sorteres automatisk. Selvfølgelig kunne du også gjort det manuelt, men arbeidet vil bli gjort mer effektivt ved bruk av TreeMap. Du kan også bruke den hvis tilfeldig tilgang er viktig for deg.
Forskjellen mellom spørsmål
Sp # 25) Hva er forskjellen mellom samling og samlinger?
Svar:
Samling | Samlinger |
---|---|
Vi kan ikke bruke ListIterator til å krysse et sett. | ListIterator kan krysse List i hvilken som helst retning. |
Det er et grensesnitt. | Det er klasse. |
Samlingen representerer en gruppe objekter som en enkelt enhet. | Samlinger definerer forskjellige bruksmetoder for samlingsobjekter. |
Det er Collection Framework sitt rotgrensesnitt. | Samlinger er en nytteklasse. |
Det stammer Collection Framework datastrukturer. | Samlinger inneholder mange forskjellige statiske metoder for å hjelpe til med å manipulere datastrukturen. |
Spørsmål nr. 26) Hvordan er Array forskjellig fra en ArrayList?
Svar:
Forskjeller mellom Array og ArrayList er gitt nedenfor:
Array | ArrayList |
---|---|
Matrisen er en sterkt skrevet klasse. | ArrayList er en løst skrevet klasse. |
Array kan ikke endres dynamisk, dimensjonen er statisk. | ArrayList kan endres dynamisk. |
En matrise trenger ikke boksing og unboxing av elementer. | ArrayList trenger boksing og unboxing av elementer. |
Q # 27) Skille mellom ArrayList og LinkedList.
Svar:
ArrayList | LinkedList |
---|---|
ArrayList bruker den dynamiske matrisen internt for lagring av elementer. | LinkedList implementerer den dobbeltkoblede listen. |
ArrayList-manipulering av elementer er ganske treg. | LinkedList manipulerer elementene sine mye raskere. |
ArrayList kan kun fungere som en liste. | LinkedList kan fungere som både liste og kø. |
Nyttig for lagring og tilgang til data. | Nyttig for å manipulere data. |
Q # 28) Hvordan er Iterable forskjellig fra Iterator?
Svar:
Iterabel | Iterator |
---|---|
Det er Java.lang pakkegrensesnitt. | Det er Java.util pakkegrensesnitt. |
Gir bare en abstrakt metode kjent som Iterator. | Den kommer med to abstrakte metoder - har neste og neste. |
Representerer en rekke elementer som kan krysses. | Står for gjenstander med iterasjonstilstand. |
Q # 29) Oppgi forskjellene mellom sett og liste.
Svar:
Sett | Liste |
---|---|
Sett redskaper Sett grensesnitt. | Listen implementerer List-grensesnittet. |
Sett er et uordnet sett med elementer. | Listen er et ordnet sett med elementer. |
Settet opprettholder ikke rekkefølgen på elementene under innsetting. | List beholder rekkefølgen av elementene under innsetting. |
Settet tillater ikke dupliserte verdier. | Listen tillater dupliserte verdier. |
Settet inneholder ikke noen eldre klasse. | Listen inneholder Vector, en eldre klasse. |
Settet tillater bare en nullverdi. | Ingen begrensning på antall nullverdier i listen. |
Spørsmål nr. 30) Hva er forskjellen mellom kø og stakk?
Svar:
Kø | Stable |
---|---|
Kø fungerer etter prinsippet om First-In-First-Out (FIFO) tilnærming. | Stack fungerer på en Last-In-First-Out (LIFO) basis. |
Innsetting og sletting i køen skjer i forskjellige ender. | Innsetting og sletting utføres fra samme ende som kalles toppen av bunken. |
Enqueue er navnet på innsetting og dequeue er sletting av elementer. | Push er innsetting og Pop er sletting av elementer i Stack. |
Den har to pekere - en til det første elementet på listen (foran) og en til den siste (bak). | Den har bare en peker som peker mot toppelementet. |
Q # 31) Hvordan er SinglyLinkedList og DoublyLinkedList forskjellige fra hverandre?
Svar:
Enkelt koblet liste | Dobbeltkoblet liste |
---|---|
Hver node i den enkeltkoblede listen består av data og en peker til neste node. | En dobbeltkoblet liste består av data, en peker til neste node og en peker til forrige node. |
Den enkeltkoblede listen kan krysses ved hjelp av neste peker. | En dobbeltkoblet liste kan krysses ved hjelp av både forrige og neste peker. |
Den enkeltkoblede listen tar mindre plass i forhold til en dobbeltkoblet liste. | Den dobbeltkoblede listen tar mye minneplass. |
Elementtilgang er ikke veldig effektiv. | Elementtilgang er effektiv. |
Sp # 32) Hvordan er HashMap forskjellig fra HashTable?
Svar:
HashMap | HashTable |
---|---|
HashMap arver AbstractMap-klassen | HashTable arver ordboksklasse. |
HashMap er ikke synkronisert. | HashTable er synkronisert. |
HashMap tillater flere nullverdier, men bare en nullnøkkel. | HashTable tillater ikke en nullverdi eller nøkkel. |
HashMap er raskere. | HashTable er tregere enn HashMap. |
HashMap kan krysses av Iterator. | HashTable kan ikke krysses ved hjelp av iterator eller enumerator. |
Q # 33) Skriv opp forskjellen mellom ArrayList og Vector.
Svar:
ArrayList | Vector |
---|---|
ArrayList er ikke-synkronisert. | Vektor er synkronisert. |
ArrayList er ikke en eldre klasse. | Vector er en eldre klasse. |
ArrayList øker størrelsen med halvparten av ArrayList når et element settes inn utover størrelsen. | Vector øker størrelsen med dobbelt når et element settes inn utover størrelsen. |
ArrayList er ikke trådsikker | Vector er trådsikker. |
Sp # 34) Hvordan er FailFast forskjellig fra Failsafe?
Svar:
FailFast | FailSafe |
---|---|
Mens det gjentas, er ingen endring av en samling tillatt. | Tillater endring mens den gjentas. |
Bruker original samling for å krysse. | Bruker en kopi av den originale samlingen. |
Ingen ekstra minne kreves. | Trenger ekstra minne. |
Kaster ConcurrentModificationException. | Intet unntak kastes. |
Konklusjon
Disse spørsmålene om Java Collections-intervjuer vil hjelpe deg med å forberede deg på intervjuet. Forberedelsen din til Java Collections-intervjuet må være dyp og omfattende, så studer disse spørsmålene og forstå konseptet godt.
Disse spørsmålene tester ikke bare din kunnskap, men også din tilstedeværelse.
=> Se opp den enkle Java-treningsserien her
Anbefalt lesing
- JAVA-opplæring for nybegynnere: 100+ praktiske Java-videoveiledninger
- Java Basics: Java Syntax, Java Class og Core Java Concepts
- Intervju Spørsmål og svar
- ETL Testing Intervju Spørsmål og svar
- 30 topp HTML intervju spørsmål og svar (2021 LISTE)
- Topp 30+ populære agurkintervju spørsmål og svar
- Topp 40 Java 8 intervju spørsmål og svar (Viktigst)
- Topp 30 SAS intervju spørsmål og svar