30 top java collections interview questions with answers
Deze zelfstudie bevat een lijst met de meest gestelde vragen over sollicitatiegesprekken met Java-verzamelingen, samen met antwoorden en voorbeelden voor u
De kern-API van Java is het Java Collections Framework. Het ondersteunt het fundamentele concept van deze programmeertaal. Als u Java-ontwikkelaar wilt worden, moet u goed op de hoogte zijn van deze kernbegrippen.
Het gebied van Java-collecties is enorm breed en in een interview kunnen veel vragen worden gesteld. Hier hebben we een lijst verzameld met zoveel mogelijk relevante vragen die u tijdens uw interview zou kunnen worden gesteld.
Kijk hier om AZ van Java-trainingshandleidingen hier te zien
Wat je leert:
Vragen over Java Collections
V # 1) Leg het Java Collections Framework uit.
Antwoord: Het Java Collections Framework is een architectuur die helpt bij het beheren en opslaan van een groep objecten. Hiermee hebben de ontwikkelaars toegang tot voorverpakte datastructuren en kunnen ze ook gegevens manipuleren met behulp van algoritmen.
Java-verzameling omvat de interface en klassen die bewerkingen ondersteunen zoals zoeken, verwijderen, invoegen, sorteren, enz. Naast interface en klassen bevatten Java-verzamelingen ook algoritmen die helpen bij manipulaties.
V # 2) Wat zijn de voordelen van Java-verzamelingen?
Antwoord:
De voordelen van Java Collections zijn:
- In plaats van onze collectieklassen te implementeren, gebruikt het de kerncollectieklassen, waardoor de inspanning die nodig is voor de ontwikkeling ervan wordt verminderd.
- Het maakt gebruik van de collectie-frameworkklassen die goed zijn getest. Daarom is de codekwaliteit verbeterd.
- Het vermindert de inspanning voor code-onderhoud.
- Java Collection Framework is interoperabel en herbruikbaar.
V # 3) Wat weet u over de hiërarchie van verzamelingen in Java?
Antwoord:
(beeld bron
V # 4) Vertel ons over de basisinterfaces van de Java-collectie.
Antwoord:
Hieronder staan de basisinterfaces van het Java Collection Framework vermeld.
Verzameling: Het is de basis van de collectiehiërarchie en vertegenwoordigt de elementen ervan. Java biedt echter geen directe toepassing van Collection. Ook komen de meeste Java-verzamelingen uit deze interface.
Set: Het kan geen dubbele elementen bevatten omdat het de abstractie van de wiskundige verzameling modelleert. Zoals de naam doet vermoeden, vertegenwoordigt het sets, bijvoorbeeld, een spel kaarten.
Lijst: Het kan dubbele elementen bevatten en is een geordende verzameling. U kunt zijn index gebruiken om toegang te krijgen tot elk element erin. De lijst is als een arrangement, een array, met een dynamische lengte.
Dit zijn een paar interfaces van Java Collection. Er zijn echter nog een paar interfaces, zoals hieronder weergegeven.
- Wachtrij
- Uitschrijven
- Iterator
- Herhaalbaar
- SortedSet
- ListIterator.
V # 5) Waarom Serializable en Cloneable Interfaces niet worden uitgebreid door de collectie Koppel?
Antwoord: De taak van de collectie-interface is om een groep objecten te specificeren die elementen worden genoemd. De uitvoering van de collecties bepaalt hoe de elementen worden onderhouden. Bijvoorbeeld, de List-implementaties staan dubbele elementen toe, maar Set-implementaties niet.
Veel implementaties hebben een methode voor openbaar klonen. Maar het is niet praktisch om het in alle collectie-implementaties op te nemen, aangezien de collectie abstract is en de implementatie het enige dat telt.
De betekenis en de gevolgen van zowel serialisatie als klonen zijn logisch tijdens het werken met de inhoudelijke implementaties. Daarom is het aan de daadwerkelijke implementatie om te beslissen of het kan worden geserialiseerd of gekloond en hoe.
Meer informatie = >> Markeringsinterface in Java: serialiseerbaar en kloneerbaar
Daarom is het introduceren van serialisatie en klonen bij elke implementatie niet erg flexibel en beperkend.
V # 6) Wat verstaat u onder Iterator in het Java Collection Framework?
Antwoord: In eenvoudige arrays kunnen we lussen gebruiken om toegang te krijgen tot elk element. Wanneer een vergelijkbare aanpak nodig is om toegang te krijgen tot elementen in een collectie, gaan we voor iteratoren. Iterator is een constructie die wordt gebruikt om toegang te krijgen tot elementen van verzamelingsobjecten.
In Java zijn Iterators de objecten die de 'Iterator' -interface van Collection Framework implementeren. Deze interface maakt deel uit van het pakket java.util.
Enkele van de kenmerken van Iterators zijn:
- Iteratoren worden gebruikt om door de collectieobjecten te lopen.
- Iterators staan bekend als 'Universal Java Cursor' omdat we dezelfde Iterator kunnen gebruiken voor alle collecties.
- Iterators bieden 'Lees' en 'Verwijderen' bewerkingen, afgezien van het doorlopen van de collecties.
- Omdat ze universeel zijn en met alle collecties werken, zijn iterators gemakkelijker te implementeren.
Lijst met Java-verzamelingsvragen
V # 7) Kent u het gebruik van de lijstinterface?
(beeld bron
Antwoord: Het doel van de lijstinterface is om de volgorde van de invoegingen te behouden. Het maakt het ook mogelijk om dubbele waarden op te slaan.
Het helpt bij de soepele manipulatie van de elementen, afhankelijk van de index, met de verschillende methoden die het bevat. ArrayList, Vector, Stack en LinkedList zijn de verschillende klassen die de List Interface implementeren.
V # 8) Wat begrijp je over ArrayList in Java?
Antwoord: De implementatie van de lijstinterface is ArrayList. Het voegt dynamisch elementen toe aan of verwijdert deze uit de lijst en het biedt ook de mogelijkheid om elementen samen met de positionele toegang in te voegen. ArrayList staat dubbele waarden toe en de grootte kan dynamisch toenemen als het aantal elementen de oorspronkelijke grootte overschrijdt.
V # 9) Hoe ga je een string-array converteren naar een ArrayList?
Antwoord: Dit is een programmeervraag op beginnersniveau die een interviewer stelt om te controleren of u de Collection utility.classes begrijpt. Collection en Arrays zijn de twee utility-klassen van het Collection Framework waarin interviewers vaak geïnteresseerd zijn.
Collecties bieden bepaalde statische functies voor het uitvoeren van specifieke taken op collectietypen. Hoewel Array hulpprogramma-functies heeft die het uitvoert op array-typen.
Merk op dat u naast het String-type ook andere typen Arrays kunt gebruiken om naar ArrayList te converteren.
Bijvoorbeeld,
Q # 10) Converteer Array naar ArrayList en ArrayList naar Array.
Antwoord: Om ArrayList naar Array te converteren, wordt de methode toArray () gebruikt- List_object.toArray (nieuwe string (List_object.size ()))
Hoewel de methode asList () wordt gebruikt voor het converteren van Array naar ArrayList- Arrays.asList (item). De asList () is een statische methode waarbij List-objecten de parameters zijn.
V # 11) Wat is een LinkedList en hoeveel soorten worden ondersteund in Java?
(beeld bron
Antwoord: LinkedList is een datastructuur met een reeks links waarbij elke link is verbonden met de volgende link.
In Java worden twee soorten LinkedList gebruikt om de elementen op te slaan:
- Afzonderlijk LinkedList: Hier slaat elk knooppunt de gegevens van het knooppunt op samen met een verwijzing of de aanwijzer naar het volgende knooppunt.
- Dubbel LinkedList: Een dubbel LinkedList wordt geleverd met dubbele verwijzingen, een verwijzing naar het volgende knooppunt en een andere voor het vorige knooppunt.
V # 12) Wat verstaat u onder BlockingQueue?
Antwoord: In een eenvoudige wachtrij weten we dat wanneer de wachtrij vol is, we geen items meer kunnen invoegen. In dit geval geeft de wachtrij eenvoudigweg een bericht dat de wachtrij vol is en wordt afgesloten. Een soortgelijk geval doet zich voor wanneer de wachtrij leeg is en er geen element uit de wachtrij moet worden verwijderd.
In plaats van gewoon af te sluiten wanneer invoegen / verwijderen niet mogelijk is, moeten we wachten tot we het item kunnen invoegen of verwijderen?
Dit wordt beantwoord door een variant van de wachtrij genaamd 'Wachtrij blokkeren' Bij het blokkeren van wachtrij wordt het blokkeren geactiveerd tijdens bewerkingen in de wachtrij en de wachtrij wanneer de wachtrij probeert een volledige wachtrij of een lege wachtrij uit de wachtrij te halen.
De blokkering wordt weergegeven in de volgende afbeelding.
BlockingQueue
Tijdens het in de wachtrij plaatsen zal de blokkeringswachtrij dus wachten tot een ruimte beschikbaar komt zodat een item succesvol kan worden ingevoegd. Evenzo zal de blokkeerwachtrij bij het uit de wachtrij halen wachten totdat een item beschikbaar komt voor de bewerking.
c ++ ongedefinieerde verwijzing naar functie in header-bestand
Het blokkeren van wachtrij implementeert de ‘BlockingQueue’ -interface die bij het ‘java.util.concurrent’ -pakket hoort. We moeten niet vergeten dat de BlockingQueue-interface geen null-waarde toestaat. Als het null tegenkomt, wordt NullPointerException gegenereerd.
V # 13) Wat is een prioriteitswachtrij in Java?
Antwoord: Een prioriteitswachtrij in Java is vergelijkbaar met stapel- of wachtrijgegevensstructuren. Het is een abstract gegevenstype in Java en wordt geïmplementeerd als een PriorityQueue-klasse in het java.util-pakket. De prioriteitswachtrij heeft als speciale eigenschap dat elk item in de prioriteitswachtrij een prioriteit heeft.
In een prioriteitswachtrij is een item met hogere prioriteit de server vóór het item met lagere prioriteit.
Alle items in de prioriteitswachtrij worden besteld volgens de natuurlijke volgorde. We kunnen de elementen ook ordenen op basis van een aangepaste volgorde door een comparator te verstrekken op het moment dat een prioriteitswachtrijobject wordt gemaakt.
Stel interface-interviewvragen in
V # 14) Wat is het gebruik van Set Interface? Vertel ons over de klassen die dit implementeren Koppel.
Antwoord: Set Interface wordt in de verzamelingenleer gebruikt om de wiskundige verzameling vorm te geven. Het is vergelijkbaar met de lijst-interface en verschilt er toch een beetje van. Set Interface is geen geordende verzameling en daarom is er geen bewaarde volgorde wanneer u de elementen verwijdert of toevoegt.
Het ondersteunt voornamelijk geen dubbele elementen, dus elk element in de Set Interface is uniek.
Het maakt ook zinvolle vergelijkingen van Set-instances mogelijk, zelfs als er verschillende implementaties zijn. Het zorgt ook voor een substantiëler contract voor de acties van de bewerkingen van gelijken en hashCode. Als twee voorbeelden dezelfde elementen hebben, zijn ze gelijk.
Om al deze redenen heeft Set Interface geen op elementindex gebaseerde bewerkingen zoals List. Het gebruikt alleen overgeërfde methoden van de Collection Interface. TreeSet, EnumSet, LinkedHashSet en HashSet implementeren Set Interface.
V # 15) Ik wil een null-element toevoegen aan HashSet en TreeSet. Kan ik?
Antwoord: U kunt geen null-element toevoegen in TreeSet omdat het NavigableMap gebruikt voor elementopslag. Maar u kunt er slechts één aan HashSet toevoegen. SortedMap staat geen null-sleutels toe en NavigableMap is de subset.
Daarom kun je geen null-element aan TreeSet toevoegen, het zal elke keer dat je dat probeert, de NullPointerException bedenken.
V # 16) Wat weet u over LinkedHashSet?
Antwoord: LinkedHashSet is de subklasse van HashSet en dwingt de Set-interface af. Als een geordende vorm van HashSet beheert het een dubbel gelinkte lijst voor alle elementen die het bevat. Het behoudt de volgorde van invoeging en bevat, net als de bovenliggende klasse, alleen unieke elementen.
Vraag 17) Praat over de manier waarop HashSet elementen opslaat.
Antwoord: HashMap slaat de paren sleutel / waarden op, maar de sleutels moeten uniek zijn. Deze functie van Map wordt door HashSet gebruikt om ervoor te zorgen dat elk element uniek is.
De kaartverklaring in HashSet wordt weergegeven zoals hieronder weergegeven:
De opgeslagen elementen in HashSet worden opgeslagen als een sleutel in de kaart en het object wordt gepresenteerd als een waarde.
V # 18) Leg de methode EmptySet () uit.
Antwoord: De methode Emptyset () verwijdert de null-elementen en retourneert de lege onveranderlijke set. Deze onveranderlijke set is serialiseerbaar. De methode-declaratie van de Emptyset () is- public static final Set emptySet ().
Map Interface Interview Vragen
V # 19) Vertel ons over de kaartinterface.
Antwoord: De kaartinterface is ontworpen voor snellere zoekopdrachten en slaat de elementen op in de vorm van paren sleutel / waarden. Omdat elke sleutel hier uniek is, maakt deze verbinding met of wordt deze toegewezen aan slechts één waarde. Deze paren sleutel / waarden worden kaartitems genoemd.
In deze interface zijn er methodehandtekeningen voor het ophalen, invoegen en verwijderen van elementen, afhankelijk van de unieke sleutel. Dit maakt het een perfect hulpmiddel om sleutel-waarde-associaties in kaart te brengen, zoals een woordenboek.
V # 20) De kaart vormt geen uitbreiding van de verzamelingsinterface. Waarom?
Antwoord: De collectie-interface is de accumulatie van objecten en deze objecten worden structureel opgeslagen met het mechanisme van gespecificeerde toegang. Terwijl de kaartinterface de structuur van sleutel-waardeparen volgt. De toevoegmethode van de verzamelingsinterface ondersteunt de putmethode van de kaartinterface niet.
Dat is de reden waarom Map de collectie-interface niet uitbreidt, maar toch is het een belangrijk onderdeel van het Java Collection Framework.
V # 21) Hoe werkt HashMap in Java?
Antwoord: HashMap is een verzameling gebaseerd op Map en de items bestaan uit sleutel-waardeparen. Een HashMap wordt doorgaans aangeduid met, of. Elk hashmap-element is toegankelijk met de bijbehorende sleutel.
Een HashMap werkt volgens het principe van 'Hashing'. Bij de hash-techniek wordt een langere string getransformeerd in een kleinere string door een ‘hash-functie’ die niets anders is dan een algoritme. De kleinere string helpt bij het sneller zoeken en efficiënt indexeren.
Vraag 22) Leg IdentityHashMap, WeakHashMap en ConcurrentHashMap uit.
Antwoord:
IdentityHashMap lijkt veel op HashMap. Het verschil is dat IdentityHashMap bij het vergelijken van elementen referentiegelijkheid gebruikt. Het is geen geprefereerde kaartimplementatie en hoewel het de kaartinterface uitvoert, voldoet het opzettelijk niet aan het algemene contract van de kaart.
Bij het vergelijken van objecten staat dit dus het gebruik van de equals-methode toe. Het is ontworpen voor gebruik in zeldzame gevallen waarin de semantiek van referentiegelijkheid nodig is.
WeakHashMap Implementatie slaat alleen zwakke verwijzingen naar de sleutels op. Dit maakt de garbage collection van een sleutel / waarde-paar mogelijk wanneer er geen referentie meer is naar de sleutels buiten de WeakHashMap.
Het wordt voornamelijk gebruikt met die sleutelobjecten waar de test voor objectidentiteit wordt uitgevoerd door de gelijkwaardige methoden met behulp van de == operator.
ConcurrentHashMap implementeert zowel ConcurrentMap- als Serializable-interfaces. Het is de bijgewerkte, verbeterde versie van HashMap omdat het niet goed werkt met de multithread-omgeving. In vergelijking met de HashMap heeft het een hogere prestatie.
V # 23) Wat is de kwaliteit van een goede sleutel voor HashMap?
Antwoord: Als u begrijpt hoe HashMap werkt, is het gemakkelijk om te weten dat ze voornamelijk afhankelijk zijn van equals en hashCode-methoden van sleutelobjecten. Een goede sleutel moet dus steeds dezelfde hashCode leveren, ongeacht de keren dat deze wordt opgehaald.
Op dezelfde manier moeten dezelfde sleutels true retourneren en verschillende sleutels false. Daarom wordt gezegd dat de beste kandidaat voor HashMap-sleutels onveranderlijke klassen zijn.
Q # 24) Wanneer kunt u TreeMap gebruiken?
(beeld bron
Antwoord: TreeMap, als een speciale vorm van HashMap, handhaaft de volgorde van de sleutels standaard ‘natuurlijke volgorde’, als iets dat ontbreekt in HashMap. U kunt het gebruiken voor het sorteren van objecten met een sleutel.
Bijvoorbeeld, als u een woordenboek in alfabetische volgorde wilt implementeren en afdrukken, kunt u TreeMap samen met TreeSet gebruiken. Het wordt automatisch gesorteerd. Dat had u natuurlijk ook handmatig kunnen doen, maar met TreeMap wordt het werk efficiënter gedaan. U kunt het ook gebruiken als willekeurige toegang voor u van vitaal belang is.
Verschil tussen vragen
Q # 25) Wat is het verschil tussen collectie en collecties?
Antwoord:
Verzameling | Collecties |
---|---|
We kunnen ListIterator niet gebruiken om een set te doorlopen. | ListIterator kan List in elke richting doorlopen. |
Het is een interface. | Het is klasse. |
De collectie vertegenwoordigt een groep objecten als een enkele entiteit. | Collecties definiëren verschillende gebruiksmethoden voor collectieobjecten. |
Het is de root-interface van Collection Framework. | Verzamelingen zijn een hulpprogramma-klasse. |
Het leidt de datastructuren van Collection Framework af. | Collecties bevatten veel verschillende statische methoden om te helpen bij het manipuleren van de datastructuur. |
V # 26) Waarin verschilt Array van een ArrayList?
Antwoord:
De verschillen tussen Array en ArrayList worden hieronder gegeven:
Array | ArrayList |
---|---|
De array is een sterk getypeerde klasse. | ArrayList is een losjes getypeerde klasse. |
Het formaat van de matrix kan niet dynamisch worden gewijzigd, de afmeting is statisch. | ArrayList kan dynamisch worden aangepast. |
Voor een array is het niet nodig om elementen in dozen te doen en uit te pakken. | ArrayList heeft het in dozen doen en uitpakken van elementen nodig. |
V # 27) Maak onderscheid tussen ArrayList en LinkedList.
Antwoord:
ArrayList | LinkedList |
---|---|
ArrayList gebruikt de dynamische array intern voor het opslaan van elementen. | LinkedList implementeert de dubbel gelinkte lijst. |
ArrayList-manipulatie van elementen is nogal traag. | LinkedList manipuleert zijn elementen veel sneller. |
ArrayList kan uitsluitend als een lijst fungeren. | LinkedList kan zowel als lijst als wachtrij fungeren. |
Handig voor het opslaan en openen van gegevens. | Handig voor het manipuleren van gegevens. |
V # 28) Hoe verschilt Iterator van Iterator?
Antwoord:
Herhaalbaar | Iterator |
---|---|
Het is de Java.lang-pakketinterface. | Het is de Java.util-pakketinterface. |
Levert slechts één abstracte methode op die bekend staat als de Iterator. | Het wordt geleverd met twee abstracte methoden: hasNext en next. |
Vertegenwoordigt een reeks elementen die kunnen worden doorlopen. | Staat voor objecten met een iteratiestatus. |
V # 29) Noem de verschillen tussen Set en List.
Antwoord:
Set | Lijst |
---|---|
Stel werktuigen in Stel interface in. | De lijst implementeert de lijstinterface. |
Set is een ongeordende set elementen. | De lijst is een geordende set elementen. |
De set houdt de volgorde van de elementen niet aan tijdens het invoegen. | Lijst behoudt de volgorde van de elementen tijdens het invoegen. |
De set staat geen dubbele waarden toe. | De lijst staat dubbele waarden toe. |
De set bevat geen legacy-klasse. | Lijst bevat Vector, een oude klasse. |
De set staat slechts één null-waarde toe. | Geen beperking voor het aantal null-waarden in Lijst. |
V # 30) Wat is het verschil tussen wachtrij en stapel?
Antwoord:
Wachtrij | Stapel |
---|---|
Queue werkt volgens het principe van de First-In-First-Out (FIFO) -benadering. | Stack werkt op basis van Last-In-First-Out (LIFO). |
Het invoegen en verwijderen in de wachtrij vindt plaats aan verschillende uiteinden. | Invoegen en verwijderen worden uitgevoerd vanaf hetzelfde uiteinde dat de bovenkant van de stapel wordt genoemd. |
Enqueue is de naam van Invoegen en dequeue is het verwijderen van elementen. | Push is invoeging en Pop is het verwijderen van elementen in Stack. |
Het heeft twee verwijzingen: een naar het eerste element van de lijst (voorkant) en een naar het laatste (achterkant). | Het heeft slechts één aanwijzer die naar het bovenste element wijst. |
V # 31) Hoe verschillen SinglyLinkedList en DoublyLinkedList van elkaar?
Antwoord:
Afzonderlijk gekoppelde lijst | Dubbel gekoppelde lijst |
---|---|
Elk knooppunt van de enkelvoudig gekoppelde lijst bestaat uit een data en een pointer naar het volgende knooppunt. | Een dubbelgekoppelde lijst bestaat uit data, een pointer naar het volgende knooppunt en een pointer naar het vorige knooppunt. |
De enkelvoudig gekoppelde lijst kan worden doorlopen met de volgende aanwijzer. | Een dubbel gekoppelde lijst kan worden doorlopen met zowel de vorige als de volgende aanwijzer. |
De enkelvoudig gekoppelde lijst neemt minder ruimte in beslag in vergelijking met een dubbel gekoppelde lijst. | De dubbelgekoppelde lijst neemt veel geheugenruimte in beslag. |
Elementtoegang is niet erg efficiënt. | Elementtoegang is efficiënt. |
V # 32) Waarin verschilt HashMap van HashTable?
Antwoord:
Hash kaart | HashTable |
---|---|
HashMap neemt de klasse AbstractMap over | HashTable neemt de klasse Dictionary over. |
HashMap is niet gesynchroniseerd. | HashTable is gesynchroniseerd. |
HashMap staat meerdere null-waarden toe, maar slechts één null-sleutel. | HashTable staat geen null-waarde of sleutel toe. |
HashMap is sneller. | HashTable is langzamer dan HashMap. |
HashMap kan worden doorlopen door Iterator. | HashTable kan niet worden doorlopen met iterator of enumerator. |
Q # 33) Maak een lijst van het verschil tussen ArrayList en Vector.
Antwoord:
ArrayList | Vector |
---|---|
ArrayList is niet gesynchroniseerd. | Vector is gesynchroniseerd. |
ArrayList is geen oude klasse. | Vector is een legacy-klasse. |
ArrayList vergroot de grootte met de helft van ArrayList wanneer een element groter wordt ingevoegd. | Vector vergroot zijn grootte met het dubbele wanneer een element buiten zijn grootte wordt ingevoegd. |
ArrayList is niet thread-safe | Vector is een draadveilig. |
V # 34) Wat is het verschil tussen FailFast en Failsafe?
Antwoord:
FailFast | FailSafe |
---|---|
Tijdens het itereren is wijziging van een collectie niet toegestaan. | Staat wijziging toe tijdens het itereren. |
Gebruikt originele collectie om te doorkruisen. | Gebruikt een kopie van de originele collectie. |
Geen extra geheugen nodig. | Heeft extra geheugen nodig. |
Gooit ConcurrentModificationException. | Er wordt geen uitzondering gemaakt. |
Gevolgtrekking
Deze interviewvragen over Java Collections helpen je bij de voorbereiding op het interview. Je voorbereiding op het Java Collections-interview moet diep en uitgebreid zijn, dus bestudeer deze vragen en begrijp het concept goed.
Deze vragen testen niet alleen uw kennis, maar ook uw tegenwoordigheid van geest.
Bekijk hier de eenvoudige Java-trainingsserie
Aanbevolen literatuur
- JAVA-zelfstudie voor beginners: 100+ praktische Java-videotutorials
- Java Basics: Java Syntax, Java Class en Core Java Concepts
- Interview vragen en antwoorden
- Vragen en antwoorden over ETL-tests
- 30 Topvragen en antwoorden over HTML-sollicitatiegesprekken (LIJST 2021)
- Top 30+ populaire komkommer interviewvragen en antwoorden
- Top 40 Java 8 interviewvragen en antwoorden (Belangrijkste)
- Top 30 SAS interviewvragen en antwoorden