30 top java collections interview questions with answers
Denna handledning innehåller en lista över de vanligaste intervjufrågorna om Java-samlingar samt svar och exempel för dig :
Java: s kärn-API är Java Collections Framework. Det stöder det grundläggande konceptet för detta programmeringsspråk. Om du vill vara Java-utvecklare bör du vara väl medveten om dessa kärnkoncept.
Området för Java-samlingar är extremt brett och många frågor kan ställas i en intervju. Här har vi samlat en lista med så många relevanta frågor som du kan få i din intervju.
=> Kolla här för att se A-Z av Java-utbildningar här
Vad du kommer att lära dig:
Intervjufrågor om Java-samlingar
F # 1) Förklara Java Collections Framework.
Svar: Java Collections Framework är en arkitektur som hjälper till att hantera och lagra en grupp objekt. Med det kan utvecklarna komma åt förpackade datastrukturer och manipulera data med hjälp av algoritmer också.
Java-samlingen innehåller gränssnittet och klasser som stöder operationer som sökning, radering, insättning, sortering etc. Tillsammans med gränssnitt och klasser inkluderar Java-samlingar även algoritmer som hjälper till med manipulationer.
F # 2) Vilka är fördelarna med Java Collections?
Svar:
Fördelarna med Java-samlingar är:
- Istället för att implementera våra insamlingsklasser använder den de viktigaste insamlingsklasserna, vilket minskar ansträngningen som krävs för dess utveckling.
- Det använder samlingsramklasserna som är väl testade. Därför förbättras dess kodkvalitet.
- Det minskar ansträngningen för kodunderhåll.
- Java Collection Framework är kompatibelt och återanvändbart.
F # 3) Vad vet du om samlingshierarkin i Java?
Svar:
(bild källa )
F # 4) Berätta om Java-samlings grundläggande gränssnitt.
Svar:
Nedan listas de grundläggande gränssnitten i Java Collection Framework.
Samling: Det är basen för samlingshierarkin och representerar dess element. Java tillhandahåller dock ingen direkt tillämpning av samlingen. De flesta Java-samlingar kommer också från detta gränssnitt.
Uppsättning: Det kan inte innehålla dubbletter eftersom det modellerar abstraktionen av den matematiska uppsättningen. Som namnet antyder representerar det uppsättningar, till exempel, en kortlek.
Lista: Den kan innehålla dubbletter och är en beställd samling. Du kan använda dess index för att komma åt alla element i det. Listan är som ett arrangemang, en matris med en dynamisk längd.
Det här är några gränssnitt för Java Collection. Det finns dock några fler gränssnitt så som visas nedan.
- Kö
- Dequeue
- Iterator
- Iterabel
- SortedSet
- ListIterator.
F # 5) Varför Serialiserbara och Klonabla gränssnitt inte utökas av samlingen Gränssnitt?
Svar: Samlingsgränssnittets uppgift är att specificera en grupp objekt som kallas element. Genomförandet av samlingarna avgör hur elementen ska bibehållas. Till exempel, Listimplementeringarna tillåter duplicerade element men Setimplementeringar gör det inte.
Många implementeringar har en metod för allmän kloning. Men det är inte praktiskt att inkludera det i alla samlingsimplementeringar, eftersom samlingen är abstrakt och implementeringen är allt som betyder något.
Betydelsen och konsekvenserna av både serialisering och kloning är meningsfull när man arbetar med de materiella implementeringarna. Därför är det upp till det faktiska genomförandet att avgöra om det kan serieiseras eller klonas och hur.
Läs mer = >> Markörgränssnitt i Java: Serialiserbart och klonbart
Därför är det inte särskilt flexibelt att inleda serialisering och kloning i varje implementering och är begränsande.
F # 6) Vad förstår du av Iterator i Java Collection Framework?
Svar: I enkla matriser kan vi använda loopar för att komma åt varje element. När ett liknande tillvägagångssätt behövs för att komma åt element i en samling, går vi efter iteratorer. Iterator är en konstruktion som används för att komma åt element i samlingsobjekt.
I Java är Iterators objekt som implementerar gränssnittet 'Iterator' i Collection Framework. Detta gränssnitt är en del av paketet java.util.
Några av egenskaperna hos Iteratorer är:
- Iteratorer används för att korsa samlingsobjekten.
- Iteratorer kallas ”Universal Java Cursor” eftersom vi kan använda samma Iterator för alla samlingar.
- Iteratorer tillhandahåller 'Läs' och 'Ta bort' operationer förutom att korsa samlingarna.
- Eftersom de är universella och fungerar med alla samlingar är Iterators lättare att implementera.
Lista frågor om Java-samlingen
F # 7) Känner du till användningen av listgränssnittet?
(bild källa )
Svar: Syftet med Listgränssnittet är att bibehålla ordningen för infogningen. Det tillåter också lagring av dubbla värden.
Det hjälper till med smidig manipulation av elementen beroende på dess index med de olika metoderna det innehåller. ArrayList, Vector, Stack och LinkedList är de olika klasserna som implementerar Listgränssnittet.
F # 8) Vad förstår du om ArrayList i Java?
Svar: Implementeringen av List Interface är ArrayList. Det lägger till eller tar bort element från listan dynamiskt och det ger också infogning av element tillsammans med positionsåtkomst. ArrayList tillåter duplicerade värden och dess storlek kan öka dynamiskt om antalet element överstiger den ursprungliga storleken.
F # 9) Hur konverterar du en strängmatris till en ArrayList?
Svar: Det här är en programmeringsfråga för nybörjare som en intervjuare frågar för att kontrollera ditt grepp om samlingsverktyget. Klasser. Collection and Arrays är de två verktygsklasserna i Collection Framework som intervjuare ofta är intresserade av.
Samlingar erbjuder vissa statiska funktioner för att utföra specifika uppgifter på samlingstyper. Medan Array har verktygsfunktioner som den utför 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);
Observera att förutom strängtyp kan du också använda andra typer av arrays för att konvertera till ArrayList.
Till exempel,
//Integer array Integer() numArray = {10,20,30,40}; //Convert to list using Arrays class asList method List num_List = Arrays.asList(numArray);
F # 10) Konvertera Array till ArrayList och ArrayList till Array.
Svar: För att konvertera ArrayList till Array används metoden toArray () - List_object.toArray (ny sträng (List_object.size ()))
Medan asList () -metoden används för att konvertera Array till ArrayList- Arrays.asList (objekt). AsList () är en statisk metod där List-objekt är parametrarna.
F # 11) Vad är en LinkedList och hur många typer av den stöds i Java?
(bild källa )
Svar: LinkedList är en datastruktur med en sekvens av länkar där varje länk är ansluten till nästa länk.
Två typer av LinkedList används i Java för att lagra elementen:
- Singly LinkedList: Här lagrar varje nod data för noden tillsammans med en referens eller pekaren till nästa nod.
- Dubbellänkad lista: En dubbelt LinkedList kommer med dubbla referenser, en referens till nästa nod och en annan för den föregående noden.
F # 12) Vad förstår du av BlockingQueue?
Svar: I en enkel kö vet vi att när kön är full kan vi inte infoga fler objekt. I det här fallet ger kön helt enkelt ett meddelande om att kön är full och avslutas. Ett liknande fall händer när kön är tom och det inte finns något element att ta bort i kön.
Istället för att bara avsluta när infoga / ta bort inte kan göras, vad sägs om vi väntar tills vi kan infoga eller ta bort objektet?
Detta besvaras av en kövariant som kallas “Blockeringskö” . I blockeringskön aktiveras blockering under enqueue- och dequeue-operationer när kön försöker inköpa full kö eller dequeue en tom kö.
Blockeringen visas i följande bild.
BlockingQueue
Således kommer blockeringskön att vänta tills ett utrymme blir tillgängligt under enqueue-operation så att ett objekt kan infogas. På samma sätt kommer blockeringskön att vänta i dequeue-operationen tills ett objekt blir tillgängligt för operationen.
vad är implementeringsfasen i sdlc?
Blockeringskön implementerar gränssnittet 'BlockingQueue' som tillhör paketet 'java.util.concurrent'. Vi bör komma ihåg att BlockingQueue-gränssnittet inte tillåter nullvärde. Om det stöter på null, kastar det NullPointerException.
F # 13) Vad är en prioritetskö i Java?
Svar: En prioritetskö i Java liknar stack- eller ködatastrukturer. Det är en abstrakt datatyp i Java och implementeras som en PriorityQueue-klass i paketet java.util. Prioritetskön har en speciell funktion som varje objekt i prioritetskön har prioritet.
I en prioritetskö är ett objekt med högre prioritet servern före objektet med lägre prioritet.
Alla artiklar i prioritetskön beställs enligt naturlig beställning. Vi kan också beställa elementen enligt anpassad ordning genom att tillhandahålla en komparator när vi skapar ett prioriterat köobjekt.
Ställ in intervjufrågor för gränssnittet
F # 14) Vad är användningen av Set Interface? Berätta om klasserna som implementerar detta Gränssnitt.
Svar: Set Interface används i uppsättningsteorin för att forma den matematiska uppsättningen. Det liknar listgränssnittet och ändå skiljer sig lite från det. Set Interface är inte en beställd samling, det finns ingen bevarad beställning när du tar bort eller lägger till elementen.
Huvudsakligen stöder det inte dubbla element, så varje element i Set-gränssnittet är unikt.
Det tillåter också meningsfulla jämförelser av Set-instanser även när det finns olika implementeringar. Det sätter också in ett mer omfattande avtal om åtgärderna för driften av lika och hashCode. Om två exempel har samma element, är de lika.
Av alla dessa skäl har Set Interface inte elementindexbaserade operationer som List. Den använder bara ärvda metoder för samlingsgränssnitt. TreeSet, EnumSet, LinkedHashSet och HashSet implementerar Set Interface.
F # 15) Jag vill lägga till ett null-element i HashSet och TreeSet. Kan jag?
Svar: Du kan inte lägga till något nullelement i TreeSet eftersom det använder NavigableMap för elementlagring. Men du kan bara lägga till en till HashSet. SortedMap tillåter inte nollknappar och NavigableMap är dess delmängd.
Därför kan du inte lägga till ett null-element i TreeSet, det kommer upp med NullPointerException varje gång du försöker göra det.
F # 16) Vad vet du om LinkedHashSet?
Svar: LinkedHashSet är underklassen till HashSet och det verkställer Set Interface. Som en beställd form av HashSet hanterar den en dubbelt länkad lista genom alla element som den innehåller. Det behåller ordningen för införandet och precis som sin föräldraklass har det bara unika element.
F # 17) Prata om hur HashSet lagrar element.
Svar: HashMap lagrar par av nyckelvärden men nycklarna ska vara unika. Den här funktionen i Map används av HashSet för att se till att varje element är unikt.
Kartdeklarationen i HashSet visas som visas nedan:
private transient HashMapmap; //This is added as value for each key private static final Object PRESENT = new Object();
De lagrade elementen i HashSet lagras som en nyckel i kartan och objektet presenteras som ett värde.
F # 18) Förklara EmptySet () -metoden.
Svar: Metoden Emptyset () tar bort nollelementen och returnerar den tomma oföränderliga uppsättningen. Denna oföränderliga uppsättning kan serieiseras. Metoddeklarationen för Emptyset () är- public static final Ange emptySet ().
Intervjufrågor om kartgränssnitt
F # 19) Berätta om kartgränssnittet.
Svar: Kartgränssnittet är utformat för snabbare sökningar och lagrar elementen i form av par nyckelvärden. Eftersom varje nyckel är unik här ansluter eller mappar den bara till ett enda värde. Dessa par nyckelvärden kallas kartposter.
I det här gränssnittet finns metodsignaturer för att hämta, infoga och ta bort element beroende på den unika nyckeln. Detta gör det till ett perfekt verktyg för att kartlägga nyckel-värdeföreningar, som en ordlista.
F # 20) Kartan utökar inte samlingsgränssnittet. Varför?
Svar: Samlingsgränssnittet är ackumuleringen av objekt och dessa objekt lagras strukturellt med mekanismen för specificerad åtkomst. Medan Map-gränssnittet följer strukturen för nyckel-värdepar. Add-metoden i Collection Interface stöder inte put-metoden för Map Interface.
Därför utökar Map inte samlingsgränssnittet men det är fortfarande en viktig del av Java Collection Framework.
F # 21) Hur fungerar HashMap i Java?
Svar: HashMap är en samling baserad på Map och dess artiklar består av nyckel-värdepar. En HashMap betecknas vanligtvis med, eller. Varje hashmap-element kan nås med hjälp av dess nyckel.
En HashMap fungerar på principen 'Hashing'. I hashingtekniken omvandlas en längre sträng till en mindre sträng med en ”hash-funktion” som bara är en algoritm. Den mindre strängen hjälper till snabbare sökning och effektiv indexering.
F # 22) Förklara IdentityHashMap, WeakHashMap och ConcurrentHashMap.
Svar:
IdentityHashMap är ungefär som HashMap. Skillnaden är att när man jämför element använder IdentityHashMap referensjämlikhet. Det är inte en föredragen kartimplementering och även om den kör kartgränssnittet följer den inte medvetet det allmänna avtalet.
Så när man jämför objekt godkänner detta användningen av likhetsmetoden. Den är utformad för användning i sällsynta fall där man behöver referensjämförelsessemantik.
WeakHashMap Implementering lagrar bara svaga referenser till dess nycklar. Detta möjliggör skräpsamling av ett nyckel-värdepar när det inte finns någon mer referens för dess nycklar utanför WeakHashMap.
Den används främst med de nyckelobjekten där testet för objektidentitet utförs med dess lika metoder med operatorn ==.
ConcurrentHashMap implementerar både ConcurrentMap- och Serializable-gränssnitt. Det är den uppgraderade, förbättrade versionen av HashMap eftersom den inte fungerar bra med den multitrådade miljön. Jämfört med HashMap har den högre prestanda.
F # 23) Vad är kvaliteten på en bra nyckel för HashMap?
Svar: Att förstå hur HashMap fungerar är det lätt att veta att de beror främst på lika och hashCode-metoder för viktiga objekt. Så, en bra nyckel måste tillhandahålla samma hashCode om och om igen oavsett gånger den hämtas.
På samma sätt, när de jämförs med metoden lika, måste samma nycklar returnera true och olika nycklar måste returnera false. Därför sägs den bästa kandidaten för HashMap-nycklar vara oföränderliga klasser.
F # 24) När kan du använda TreeMap?
(bild källa )
Svar: TreeMap, som en speciell form av HashMap, upprätthåller ordningen av nycklarna som standard 'naturlig ordning', som något som saknas i HashMap. Du kan använda den för att sortera objekt med någon nyckel.
Till exempel, om du vill implementera och skriva ut en ordbok i alfabetisk ordning kan du använda TreeMap tillsammans med TreeSet. Det sorteras automatiskt. Naturligtvis kunde du ha gjort det manuellt också men arbetet kommer att göras mer effektivt med hjälp av TreeMap. Du kan också använda den om slumpmässig åtkomst är avgörande för dig.
Skillnad mellan frågor
F # 25) Vad är skillnaden mellan samling och samlingar?
Svar:
Samling | Samlingar |
---|---|
Vi kan inte använda ListIterator för att korsa en uppsättning. | ListIterator kan korsa Lista i valfri riktning. |
Det är ett gränssnitt. | Det är klass. |
Samlingen representerar en grupp objekt som en enda enhet. | Samlingar definierar olika användningsmetoder för samlingsobjekt. |
Det är Collection Framework root-gränssnitt. | Samlingar är en hjälpklass. |
Den härleder datastrukturerna för Collection Framework. | Samlingar innehåller många olika statiska metoder för att hjälpa till att manipulera datastrukturen. |
F # 26) Hur skiljer sig Array från en ArrayList?
Svar:
Skillnader mellan Array och ArrayList ges nedan:
Array | ArrayList |
---|---|
Matrisen är en starkt skriven klass. | ArrayList är en löst skriven klass. |
Array kan inte ändras dynamiskt, dess dimension är statisk. | ArrayList kan ändras dynamiskt. |
En matris behöver inte boxas och avboxas av element. | ArrayList behöver boxning och avboxning av element. |
F # 27) Skilja mellan ArrayList och LinkedList.
Svar:
ArrayList | Länkad lista |
---|---|
ArrayList använder den dynamiska matrisen internt för att lagra element. | LinkedList implementerar den dubbelt länkade listan. |
ArrayList-manipulation av element är ganska långsam. | LinkedList manipulerar sina element mycket snabbare. |
ArrayList kan endast fungera som en lista. | LinkedList kan fungera som både lista och kö. |
Användbar för lagring och åtkomst till data. | Användbar för att manipulera data. |
F # 28) Hur skiljer sig Iterable från Iterator?
Svar:
Iterabel | Iterator |
---|---|
Det är paketgränssnittet Java.lang. | Det är Java.util-paketgränssnittet. |
Ger endast en abstrakt metod som kallas Iteratorn. | Den levereras med två abstrakta metoder - hasNext och nästa. |
Representerar en serie element som kan passeras. | Står för objekt med iterationstillstånd. |
F # 29) Ange skillnaderna mellan Set och List.
Svar:
Uppsättning | Lista |
---|---|
Ställ redskap Ställ in gränssnitt. | Listan implementerar listgränssnittet. |
Set är en oordnad uppsättning element. | Listan är en ordnad uppsättning element. |
Uppsättningen bibehåller inte ordningen på elementen under införandet. | Listan behåller ordningen på elementen under införandet. |
Uppsättningen tillåter inte dubbla värden. | Listan tillåter dubbla värden. |
Uppsättningen innehåller ingen äldre klass. | Listan innehåller Vector, en äldre klass. |
Uppsättningen tillåter bara ett nullvärde. | Ingen begränsning av antalet nollvärden i listan. |
F # 30) Vad är skillnaden mellan kö och stack?
Svar:
Kö | Stack |
---|---|
Kö fungerar enligt principen för First-in-First-Out (FIFO) -strategin. | Stack fungerar på LIFO-basis (Last-In-First-Out). |
Insättning och radering i kön sker i olika ändar. | Insättning och radering utförs från samma ände som kallas toppen av stacken. |
Enqueue är namnet på Insertion och dequeue är borttagning av element. | Push är insättning och Pop är borttagning av element i Stack. |
Den har två pekare - en till det första elementet i listan (fram) och en till den sista (bak). | Den har bara en pekare som pekar på det övre elementet. |
F # 31) Hur skiljer sig SinglyLinkedList och DoublyLinkedList från varandra?
Svar:
Enstaka länkade lista | Dubbel länkad lista |
---|---|
Varje nod i den enskilt länkade listan består av en data och en pekare till nästa nod. | En dubbelt länkad lista består av data, en pekare till nästa nod och en pekare till föregående nod. |
Den enskilt länkade listan kan passeras med nästa pekare. | En dubbelt länkad lista kan passeras med både föregående och nästa pekare. |
Den enskilt länkade listan tar mindre plats än en dubbelt länkad lista. | Den dubbelt länkade listan tar mycket minnesutrymme. |
Elementåtkomst är inte särskilt effektiv. | Elementåtkomst är effektiv. |
F # 32) Hur skiljer sig HashMap från HashTable?
Svar:
HashMap | HashTable |
---|---|
HashMap ärver klassen AbstractMap | HashTable ärver ordboksklass. |
HashMap synkroniseras inte. | HashTable är synkroniserat. |
HashMap tillåter flera nollvärden men bara en nollnyckel. | HashTable tillåter inte ett nullvärde eller nyckel. |
HashMap är snabbare. | HashTable är långsammare än HashMap. |
HashMap kan passeras av Iterator. | HashTable kan inte passeras använder iterator eller enumerator. |
F # 33) Lista ner skillnaden mellan ArrayList och Vector.
Svar:
ArrayList | Vektor |
---|---|
ArrayList är icke-synkroniserad. | Vektor synkroniseras. |
ArrayList är inte en äldre klass. | Vector är en äldre klass. |
ArrayList ökar storleken med hälften av ArrayList när ett element infogas utöver dess storlek. | Vector ökar sin storlek med dubbelt när ett element sätts in utanför dess storlek. |
ArrayList är inte trådsäker | Vector är en trådsäker. |
F # 34) Hur skiljer sig FailFast från Failsafe?
Svar:
FailFast | Felsäker |
---|---|
Under iterering är ingen ändring av en samling tillåten. | Tillåter ändring under iterering. |
Använder originalkollektion för att korsa. | Använder en kopia av originalsamlingen. |
Inget extra minne krävs. | Behöver extra minne. |
Kasta ConcurrentModificationException. | Inget undantag kastas. |
Slutsats
Dessa intervjufrågor om Java Collections hjälper dig att förbereda dig för intervjun. Din förberedelse för Java Collections-intervjun måste vara djup och omfattande, så studera dessa frågor och förstå konceptet väl.
Dessa frågor testar inte bara din kunskap utan också din sinnes närvaro.
=> Se upp den enkla Java-träningsserien här
Rekommenderad läsning
- JAVA-handledning för nybörjare: 100+ praktiska Java-videohandledning
- Java Basics: Java Syntax, Java Class och Core Java Concepts
- Intervjufrågor och svar
- ETL Testing Intervju Frågor och svar
- 30 bästa HTML-intervjufrågor och svar (2021 LIST)
- Topp 30+ populära gurkaintervjuer och frågor
- Topp 40 Java 8 intervjufrågor och svar (Viktigast)
- Topp 30 SAS intervjufrågor och svar