30 top java collections interview questions with answers
Tento výukový program obsahuje seznam nejčastěji kladených otázek týkajících se rozhovorů s kolekcemi Java spolu s odpověďmi a příklady pro vás :
Jádro API Java je Java Collections Framework. Podporuje základní koncept tohoto programovacího jazyka. Pokud chcete být vývojářem prostředí Java, měli byste si být dobře vědomi těchto základních konceptů.
Oblast sbírek Java je extrémně široká a mnoho otázek může být položeno v rozhovoru. Zde jsme shromáždili seznam tolika relevantních otázek, které vám mohou být při rozhovoru položeny.
=> Podívejte se sem a podívejte se na A-Z výukových kurzů Java zde
Co se naučíte:
Dotazy k rozhovorům s kolekcemi Java
Otázka č. 1) Vysvětlete rámec Java Collections.
Odpovědět: Java Collections Framework je architektura, která pomáhá při správě a ukládání skupiny objektů. Díky tomu mohou vývojáři přistupovat k předem zabaleným datovým strukturám a manipulovat s daty také pomocí algoritmů.
Kolekce Java zahrnuje rozhraní a třídy, které podporují operace, jako je vyhledávání, mazání, vkládání, třídění atd. Spolu s rozhraním a třídami obsahuje kolekce Java také algoritmy, které pomáhají při manipulaci.
Otázka č. 2) Jaké jsou výhody kolekcí Java?
Odpovědět:
Mezi výhody kolekcí Java patří:
- Místo implementace našich tříd sběru používá základní třídy sběru, čímž snižuje úsilí potřebné pro jeho vývoj.
- Využívá třídy rámce kolekce, které jsou dobře testovány. Proto je jeho kvalita kódu vylepšena.
- Snižuje úsilí při údržbě kódu.
- Java Collection Framework je interoperabilní a opakovaně použitelný.
Otázka č. 3) Co víte o hierarchii sbírek v Javě?
Odpovědět:
(obraz zdroj )
Otázka č. 4) Řekněte nám o základních rozhraních Java Collection.
Odpovědět:
Níže jsou uvedena základní rozhraní prostředí Java Collection Framework.
Sbírka: Je základem hierarchie kolekce a představuje její prvky. Java však neposkytuje žádnou přímou aplikaci Collection. Většina sbírek Java také pochází z tohoto rozhraní.
Soubor: Nemůže obsahovat duplicitní prvky, protože modeluje abstrakci matematické množiny. Jak název napovídá, představuje množiny, například, balíček karet.
Seznam: Může obsahovat duplicitní prvky a je uspořádanou kolekcí. Jeho index můžete použít pro přístup k jakémukoli prvku v něm. Seznam je jako uspořádání, pole s dynamickou délkou.
Toto je několik rozhraní Java Collection. Existuje však několik dalších rozhraní, jak je uvedeno níže.
- Fronta
- Dequeue
- Iterátor
- Iterable
- Seted set
- ListIterator.
Otázka č. 5) Proč kolekce není rozšířena o serializovatelná a klonovatelná rozhraní Rozhraní?
Odpovědět: Úkolem rozhraní kolekce je určit skupinu objektů zvaných prvky. O tom, jak budou prvky udržovány, rozhoduje implementace sbírek. Například, implementace seznamu umožňují duplicitní prvky, ale implementace sady ne.
Mnoho implementací má metodu veřejného klonování. Není však praktické zahrnout jej do všech implementací Collection, protože Collection je abstraktní a na implementaci záleží jen na ní.
Význam a důsledky jak serializace, tak klonování mají smysl při práci s věcnými implementacemi. Z tohoto důvodu je na skutečné implementaci, aby se rozhodla, zda může být serializována nebo klonována a jak.
Další informace = >> Rozhraní značek v Javě: Serializovatelné a klonovatelné
To je důvod, proč vyvolání serializace a klonování v každé implementaci není příliš flexibilní a je omezující.
Otázka č. 6) Co rozumíte Iteratorovi v rámci Java Collection Framework?
Odpovědět: V jednoduchých polích můžeme použít smyčky pro přístup ke každému prvku. Když je pro přístup k prvkům v kolekci potřeba podobný přístup, jdeme na iterátory. Iterátor je konstrukce používaná pro přístup k prvkům objektů Collection.
V Javě jsou Iterátory objekty, které implementují rozhraní „Iterator“ rozhraní Collection Framework. Toto rozhraní je součástí balíčku java.util.
Některé z charakteristik iterátorů jsou:
- Iterátory se používají k procházení objektů Collection.
- Iterátory jsou známé jako „Universal Java Cursor“, protože pro všechny kolekce můžeme použít stejný Iterátor.
- Iterátoři poskytují operace „Čtení“ a „Odebrání“ kromě procházení kolekcí.
- Iterátory jsou univerzální a fungují se všemi kolekcemi, takže je snadnější je implementovat.
Seznam otázek kolekce Java
Otázka č. 7) Jste si vědomi použití rozhraní seznamu?
(obraz zdroj )
Odpovědět: Účelem rozhraní seznamu je udržovat pořadí vložení. Umožňuje také ukládání duplicitních hodnot.
Pomáhá při plynulé manipulaci s prvky v závislosti na jeho indexu s různými metodami, které obsahuje. ArrayList, Vector, Stack a LinkedList jsou různé třídy, které implementují rozhraní seznamu.
Otázka č. 8) Co chápete o ArrayList v Javě?
Odpovědět: Implementace rozhraní seznamu je ArrayList. Dynamicky přidává nebo odebírá prvky ze seznamu a poskytuje také vkládání prvků spolu s pozičním přístupem. ArrayList umožňuje duplicitní hodnoty a jeho velikost se může dynamicky zvyšovat, pokud počet prvků přesáhne počáteční velikost.
Otázka č. 9) Jak převedete řetězcové pole na ArrayList?
Odpovědět: Toto je otázka programování na úrovni začátečníka, kterou tazatel požádá, aby zkontroloval vaše pochopení Collection utility.classes. Shromažďování a pole jsou dvě třídy nástrojů rámce kolekce, o které se tazatelé často zajímají.
Kolekce nabízejí určité statické funkce pro provádění konkrétních úkolů na typech kolekcí. Zatímco Array má obslužné funkce, které provádí na typech polí.
//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);
Všimněte si, že kromě typu String můžete k převodu na ArrayList použít také jiná pole typu.
Například,
//Integer array Integer() numArray = {10,20,30,40}; //Convert to list using Arrays class asList method List num_List = Arrays.asList(numArray);
Q # 10) Převést Array na ArrayList a ArrayList na Array.
Odpovědět: K převodu ArrayList na Array se používá metoda toArray () - List_object.toArray (nový řetězec (List_object.size ()))
Zatímco metoda asList () se používá pro převod Array na ArrayList- Arrays.asList (položka). AsList () je statická metoda, kde jsou parametry List objekty.
Otázka č. 11) Co je to LinkedList a kolik jeho typů je podporováno v Javě?
(obraz zdroj )
Odpovědět: LinkedList je datová struktura se sekvencí odkazů, kde je každý odkaz připojen k dalšímu odkazu.
V Javě se pro ukládání prvků používají dva typy LinkedList:
- Singly LinkedList: Zde každý uzel ukládá data uzlu spolu s odkazem nebo ukazatelem na další uzel.
- Doubly LinkedList: Dvojnásobně LinkedList přichází s duálními odkazy, jedním odkazem na další uzel a druhým pro předchozí uzel.
Otázka č. 12) Co rozumíte podle BlockingQueue?
Odpovědět: V jednoduché frontě víme, že kdykoli je fronta plná, nemůžeme vložit žádné další položky. V tomto případě fronta jednoduše poskytne zprávu, že fronta je plná a končí. Podobný případ se stane, když je fronta prázdná a ve frontě není žádný prvek, který by měl být odebrán.
Místo toho, abychom jen skončili, když nelze provést vložení / odebrání, co kdybychom počkali, až budeme moci položku vložit nebo odebrat?
Na to odpovídá variace volané fronty „Blokovací fronta“ . V blokující frontě se blokování aktivuje během operací zařazování a odkládání, kdykoli se fronta pokouší zařadit do fronty plnou frontu nebo vyřadit prázdnou frontu.
Blokování je znázorněno na následujícím obrázku.
Blokovací fronta
Během operace zařazení do fronty tedy blokující fronta počká, dokud nebude k dispozici prostor, aby bylo možné úspěšně vložit položku. Podobně v operaci dequeue bude blokovací fronta čekat, dokud nebude položka k dispozici pro operaci.
nástroje pro shromažďování požadavků používané obchodními analytiky
Fronta blokování implementuje rozhraní „BlockingQueue“, které patří do balíčku „java.util.concurrent“. Měli bychom si pamatovat, že rozhraní BlockingQueue neumožňuje nulovou hodnotu. Pokud narazí na null, hodí NullPointerException.
Otázka č. 13) Co je prioritní fronta v Javě?
Odpovědět: Prioritní fronta v Javě je podobná datovým strukturám zásobníku nebo fronty. Je to abstraktní datový typ v Javě a je implementován jako třída PriorityQueue v balíčku java.util. Fronta priorit má speciální vlastnost, že každá položka ve frontě priorit má prioritu.
Ve frontě priority je položka s vyšší prioritou server před položkou s nižší prioritou.
Všechny položky v prioritní frontě jsou seřazeny podle přirozeného řazení. Můžeme také objednat prvky podle vlastního pořadí poskytnutím komparátoru v době vytváření objektu prioritní fronty.
Nastavit dotazy na rozhovor
Otázka č. 14) Jaké je použití rozhraní Set? Řekněte nám o třídách, které to implementují Rozhraní.
Odpovědět: Set Interface se používá v teorii množin k utváření matematické množiny. Je to podobné jako rozhraní Seznamu a přesto se od něj trochu liší. Rozhraní sady tedy není uspořádanou kolekcí, takže při odebírání nebo přidávání prvků není zachováno žádné pořadí.
Hlavně nepodporuje duplicitní prvky, takže každý prvek v rozhraní sady je jedinečný.
Umožňuje také smysluplné srovnání instancí sady, i když existují různé implementace. Rovněž uzavírá podstatnější smlouvu o akcích operací equals a hashCode. Pokud dva příklady mají stejné prvky, jsou stejné.
Ze všech těchto důvodů rozhraní Set nemá operace založené na indexu prvků, jako je List. Používá pouze zděděné metody Collection Interface. TreeSet, EnumSet, LinkedHashSet a HashSet implementují rozhraní Set.
Otázka č. 15) Chci přidat prázdný prvek do HashSet a TreeSet. Mohu?
Odpovědět: Do TreeSetu nemůžete přidat žádný prázdný prvek, protože používá NavigableMap pro ukládání prvků. Do HashSet však můžete přidat jen jeden. SortedMap neumožňuje nulové klíče a NavigableMap je jeho podmnožina.
To je důvod, proč nemůžete přidat prázdný prvek do TreeSet, přijde s NullPointerException pokaždé, když se o to pokusíte.
Otázka č. 16) Co víte o LinkedHashSet?
Odpovědět: LinkedHashSet je podtřída HashSet a vynucuje rozhraní Set. Jako uspořádaná forma HashSet spravuje seznam s dvojnásobným propojením ve všech prvcích, které obsahuje. Zachová si pořadí vložení a stejně jako jeho nadřazená třída nese pouze jedinečné prvky.
Otázka č. 17) Promluvte si o tom, jak HashSet ukládá prvky.
Odpovědět: HashMap ukládá páry párů klíč – hodnota, ale klíče by měly být jedinečné. Tuto funkci Map používá HashSet, aby se ujistil, že každý prvek je jedinečný.
Deklarace mapy v HashSet se zobrazí, jak je znázorněno níže:
private transient HashMapmap; //This is added as value for each key private static final Object PRESENT = new Object();
Uložené prvky v HashSet jsou uloženy jako klíč v Mapě a objekt je prezentován jako hodnota.
Otázka č. 18) Vysvětlete metodu EmptySet ().
Odpovědět: Metoda Emptyset () odebere null prvky a vrátí prázdnou nezměnitelnou sadu. Tato neměnná sada je serializovatelná. Deklarace metody Emptyset () je- public static final Set emptySet ().
Dotazy na rozhovor s mapovým rozhraním
Otázka č. 19) Povězte nám o rozhraní mapy.
Odpovědět: Mapové rozhraní je navrženo pro rychlejší vyhledávání a ukládá prvky ve formě párů párů klíč – hodnota. Protože každý klíč je zde jedinečný, připojuje se nebo mapuje pouze k jedné hodnotě. Tyto páry klíč – hodnota se nazývají položky mapy.
V tomto rozhraní existují signatury metod pro načítání, vkládání a odebírání prvků v závislosti na jedinečném klíči. Díky tomu je dokonalým nástrojem pro mapování asociací klíč – hodnota, jako je slovník.
Otázka č. 20) Mapa nerozšiřuje rozhraní kolekce. Proč?
Odpovědět: Kolekce Rozhraní je akumulace objektů a tyto objekty jsou uloženy strukturálně s mechanismem specifikovaného přístupu. Zatímco rozhraní Map sleduje strukturu párů klíč – hodnota. Metoda přidání rozhraní Collection Collection nepodporuje metodu put rozhraní Map Map.
To je důvod, proč Map nerozšiřuje rozhraní kolekce, ale přesto je důležitou součástí rámce kolekce Java.
Otázka č. 21) Jak funguje HashMap v Javě?
Odpovědět: HashMap je kolekce založená na Mapě a její položky se skládají z párů klíč – hodnota. HashMap je obvykle označen, nebo. Ke každému prvku hashmap lze přistupovat pomocí jeho klíče.
HashMap funguje na principu „hashování“. V hashovací technice je delší řetězec transformován na menší řetězec pomocí „hash funkce“, což není nic jiného než algoritmus. Menší řetězec pomáhá při rychlejším vyhledávání a účinném indexování.
Otázka č. 22) Vysvětlete IdentityHashMap, WeakHashMap a ConcurrentHashMap.
Odpovědět:
IdentityHashMap je hodně jako HashMap. Rozdíl je v tom, že při porovnávání prvků používá IdentityHashMap referenční rovnost. Nejedná se o upřednostňovanou implementaci mapy, a přestože provádí mapové rozhraní, úmyslně nedodržuje obecnou smlouvu s mapou.
Při porovnávání objektů to tedy opravňuje použití metody equals. Je navržen pro použití ve vzácných případech, kdy je potřeba sémantika referenční rovnosti.
WeakHashMap Implementace ukládá pouze slabé odkazy na jeho klíče. To umožňuje uvolnění paměti páru klíč – hodnota, když už neexistuje žádný odkaz na jeho klíče mimo WeakHashMap.
Primárně se používá u těch klíčových objektů, kde se test identity objektu provádí pomocí jeho metod equals pomocí operátoru ==.
ConcurrentHashMap implementuje rozhraní ConcurrentMap i Serializable. Jedná se o upgradovanou a vylepšenou verzi HashMap, protože s prostředím s více vlákny nefunguje dobře. Ve srovnání s HashMap má vyšší míru výkonu.
Otázka č. 23) Jaká je kvalita dobrého klíče pro HashMap?
Odpovědět: Po pochopení toho, jak HashMap funguje, je snadné vědět, že závisí hlavně na metodách equals a hashCode klíčových objektů. Dobrý klíč tedy musí znovu a znovu poskytovat stejný hashCode bez ohledu na to, kdy je načten.
Stejným způsobem musí ve srovnání s metodou equals stejné klíče vrátit true a různé klíče false. Proto se říká, že nejlepším kandidátem na klíče HashMap jsou neměnné třídy.
Otázka č. 24) Kdy můžete použít TreeMap?
(obraz zdroj )
Odpovědět: TreeMap, jako speciální forma HashMap, udržuje pořadí klíčů ve výchozím nastavení ‚přirozené řazení ', jako něco, co v HashMap chybí. Můžete jej použít pro třídění objektů pomocí nějakého klíče.
Například, pokud chcete implementovat a vytisknout slovník v abecedním pořadí, můžete použít TreeMap společně s TreeSet. Bude se třídit automaticky. Samozřejmě jste to mohli udělat i ručně, ale práce bude provedena efektivněji s použitím TreeMap. Můžete jej také použít, pokud je pro vás náhodný přístup zásadní.
Rozdíl mezi otázkami
Otázka č. 25) Jaký je rozdíl mezi kolekcí a kolekcemi?
Odpovědět:
Sbírka | Sbírky |
---|---|
K procházení sady nemůžeme použít ListIterator. | ListIterator může procházet List libovolným směrem. |
Je to rozhraní. | Je to třída. |
Kolekce představuje skupinu objektů jako jednu entitu. | Kolekce definují různé metody obslužnosti pro objekty kolekce. |
Je to kořenové rozhraní Collection Framework. | Kolekce jsou třídou nástrojů. |
Odvozuje datové struktury Collection Framework. | Kolekce obsahují mnoho různých statických metod pro pomoc při manipulaci s datovou strukturou. |
Otázka č. 26) Jak se Array liší od ArrayList?
Odpovědět:
Rozdíly mezi Array a ArrayList jsou uvedeny níže:
Pole | ArrayList |
---|---|
Pole je třída se silným typem. | ArrayList je třída s volným zadáním. |
Pole nelze dynamicky měnit, jeho dimenze je statická. | ArrayList lze dynamicky měnit velikost. |
Pole nepotřebuje boxovat a unboxovat prvky. | ArrayList vyžaduje boxování a unboxing prvků. |
Otázka č. 27) Rozlišujte mezi ArrayList a LinkedList.
Odpovědět:
ArrayList | Spojový seznam |
---|---|
ArrayList interně používá dynamické pole pro ukládání prvků. | LinkedList implementuje dvojnásobně propojený seznam. |
Manipulace s prvky pole je poměrně pomalá. | LinkedList manipuluje se svými prvky mnohem rychleji. |
ArrayList může fungovat pouze jako seznam. | LinkedList může fungovat jako List i jako fronta. |
Užitečné pro ukládání a přístup k datům. | Užitečné pro manipulaci s daty. |
Otázka č. 28) Jak se Iterable liší od Iterátoru?
Odpovědět:
Iterable | Iterátor |
---|---|
Jedná se o rozhraní balíčku Java.lang. | Je to rozhraní balíčku Java.util. |
Poskytuje pouze jednu abstraktní metodu známou jako Iterator. | Přichází se dvěma abstraktními metodami - hasNext a další. |
Představuje řadu prvků, které lze procházet. | Znamená objekty se stavem iterace. |
Otázka č. 29) Uveďte rozdíly mezi sadou a seznamem.
Odpovědět:
Soubor | Seznam |
---|---|
Set implementuje Set interface. | Seznam implementuje rozhraní seznamu. |
Sada je neuspořádaná sada prvků. | Seznam je uspořádanou sadou prvků. |
Sada během vkládání neudržuje pořadí prvků. | Seznam si zachovává pořadí prvků během vkládání. |
Sada neumožňuje duplicitní hodnoty. | Seznam umožňuje duplicitní hodnoty. |
Sada neobsahuje žádnou starší třídu. | Seznam obsahuje vektor, starší třídu. |
Sada umožňuje pouze jednu nulovou hodnotu. | Žádné omezení počtu hodnot null v seznamu. |
Otázka 30) Jaký je rozdíl mezi frontou a zásobníkem?
Odpovědět:
Fronta | Zásobník |
---|---|
Fronta funguje na principu přístupu FIFO (First-In-First-Out). | Stack funguje na principu Last-In-First-Out (LIFO). |
Vkládání a mazání ve frontě probíhá na různých koncích. | Vkládání a mazání se provádí ze stejného konce, který se nazývá horní část zásobníku. |
Enqueue je název vložení a dequeue je odstranění prvků. | Push je vložení a Pop je odstranění prvků v zásobníku. |
Má dva ukazatele - jeden na první prvek seznamu (přední) a jeden na poslední (zadní). | Má pouze jeden ukazatel směřující na horní prvek. |
Otázka č. 31) Jak se liší SinglyLinkedList a DoublyLinkedList?
Odpovědět:
Singly Linked List | Dvojnásobně propojený seznam |
---|---|
Každý uzel jednotlivě propojeného seznamu se skládá z dat a ukazatele na další uzel. | Dvojitě propojený seznam se skládá z dat, ukazatele na další uzel a ukazatele na předchozí uzel. |
Na jednotlivě propojený seznam lze přejít pomocí dalšího ukazatele. | Dvojitě propojený seznam lze procházet pomocí předchozího i následujícího ukazatele. |
Singly-linked list takes less space compared to a doubly-linked list. | Dvojitě propojený seznam zabírá hodně místa v paměti. |
Přístup k prvkům není příliš efektivní. | Přístup k prvkům je efektivní. |
Otázka č. 32) Jak se liší HashMap od HashTable?
Odpovědět:
HashMap | HashTable |
---|---|
HashMap dědí třídu AbstractMap | HashTable dědí třídu Dictionary. |
HashMap není synchronizován. | HashTable je synchronizován. |
HashMap umožňuje více hodnot null, ale pouze jeden klíč null. | HashTable neumožňuje nulovou hodnotu nebo klíč. |
HashMap je rychlejší. | HashTable je pomalejší než HashMap. |
HashMap může procházet Iterator. | HashTable nelze procházet pomocí iterátoru nebo enumerátoru. |
Otázka č. 33) Seznam rozdílů mezi ArrayList a Vector.
Odpovědět:
ArrayList | Vektor |
---|---|
ArrayList je nesynchronizovaný. | Vektor je synchronizován. |
ArrayList není starší třída. | Vektor je starší třída. |
ArrayList zvětší velikost o polovinu ArrayList, když je prvek vložen nad jeho velikost. | Vektor zvětší svou velikost na dvojnásobek, když je prvek vložen za jeho velikost. |
ArrayList není bezpečný pro vlákna | Vektor je bezpečný pro vlákna. |
Otázka č. 34) Jak se FailFast liší od Failsafe?
Odpovědět:
FailFast | FailSafe |
---|---|
Během iterace není povolena žádná úprava kolekce. | Umožňuje úpravy při iteraci. |
Pro procházení používá původní kolekci. | Používá kopii původní kolekce. |
Není potřeba žádná další paměť. | Potřebuje extra paměť. |
Vyvolá ConcurrentModificationException. | Není vyvolána žádná výjimka. |
Závěr
Tyto otázky týkající se pohovoru Java Collection vám pomohou připravit se na pohovor. Vaše příprava na pohovor v Java Collection musí být hluboká a rozsáhlá, proto si prostudujte tyto otázky a dobře pochopte tento koncept.
Tyto otázky testují nejen vaše znalosti, ale také vaši duševní rozpoložení.
=> Dávejte pozor na jednoduchou sérii školení Java zde
Doporučené čtení
- Výukový program JAVA pro začátečníky: 100+ praktických výukových programů Java Video
- Základy jazyka Java: Syntaxe jazyka Java, třída Java a základní koncepty Java
- Dotazy a odpovědi na pohovor
- ETL Testing Interview Otázky a odpovědi
- 30 nejdůležitějších otázek a odpovědí na rozhovor s HTML (SEZNAM 2021)
- Top 30+ populárních otázek a odpovědí na rozhovor s okurkou
- Top 40 Java 8 Interview Dotazy a odpovědi (nejdůležitější)
- Top 30 SAS Interview Dotazy a odpovědi