logo

34 „Java“ kolekcijų interviu klausimai

Java kalboje pašnekovai dažniausiai užduoda kolekcijos interviu klausimus. Čia pateikiamas dažniausiai užduodamų kolekcijų interviu klausimų sąrašas su atsakymais.


1) Kas yra „Java“ kolekcijos sistema?

Kolekcijos sistema yra klasių ir sąsajos derinys, naudojamas duomenims saugoti ir manipuliuoti objektų pavidalu. Šiam tikslui pateikiamos įvairios klasės, tokios kaip „ArrayList“, „Vector“, „Stack“ ir „HashSet“ ir kt.


2) Kokie yra pagrindiniai skirtumai tarp masyvo ir kolekcijos?

Masyvas ir rinkinys yra šiek tiek panašūs objektų nuorodų saugojimo ir duomenų apdorojimo atžvilgiu, tačiau jie skiriasi daugeliu atžvilgių. Pagrindiniai masyvo ir kolekcijos skirtumai yra apibrėžti toliau:

  • Masyvai visada yra fiksuoto dydžio, t. y. vartotojas negali padidinti ar sumažinti masyvo ilgio pagal savo poreikius arba vykdymo metu, tačiau kolekcijoje dydis gali būti keičiamas dinamiškai pagal poreikį.
  • Masyvai gali saugoti tik vienarūšius ar panašaus tipo objektus, tačiau kolekcijoje galima saugoti nevienalyčius objektus.
  • Masyvai negali pateikti ?paruoštų? vartotojo poreikiams pritaikyti metodai, pvz., rūšiavimas, paieška ir kt., tačiau rinkinyje yra paruoštų naudoti metodų.

3) Paaiškinkite įvairias sąsajas, naudojamas kolekcijos sistemoje?

Kolekcijos sistema įgyvendina įvairias sąsajas, kolekcijos sąsaja ir žemėlapio sąsaja (java.util.Map) yra dažniausiai naudojamos Java Collection Framework sąsajos. Toliau pateikiamas kolekcijos sistemos sąsajų sąrašas:

1. Kolekcijos sąsaja: Kolekcija (java.util.Collection) yra pagrindinė sąsaja, ir kiekviena kolekcija turi įdiegti šią sąsają.

Sintaksė:

 public interface Collectionextends Iterable 

Kur reiškia, kad ši sąsaja yra bendro tipo

2. Sąrašo sąsaja: Sąrašo sąsaja išplečia Kolekcijos sąsają ir yra sutvarkyta objektų kolekcija. Jame yra pasikartojančių elementų. Tai taip pat leidžia atsitiktinę prieigą prie elementų.

Sintaksė:

 public interface List extends Collection 

3. Nustatykite sąsają: Set (java.util.Set) sąsaja yra rinkinys, kuriame negali būti pasikartojančių elementų. Tai gali apimti tik paveldėtus kolekcijos sąsajos metodus

Sintaksė:

 public interface Set extends Collection 

Eilės sąsaja: Eilės (java.util.Queue) sąsaja apibrėžia eilės duomenų struktūrą, kurioje elementai išsaugomi FIFO forma (pirmas pirmas).

Sintaksė:

 public interface Queue extends Collection 

4. Ištraukimo į eilę sąsaja: tai dvipusė eilė. Tai leidžia įterpti ir išimti elementus iš abiejų galų. Jis implantuoja ir dėklo, ir eilės savybes, kad galėtų atlikti LIFO (Last in first out) stack ir FIFO (first in first out) eilės operacijas.

Sintaksė:

 public interface Dequeue extends Queue 

5. Žemėlapio sąsaja: Žemėlapis (java.util.Map) reiškia elementų raktą, reikšmių porą. Žemėlapio sąsaja neįdiegia Kolekcijos sąsajos. Jame gali būti tik unikalus raktas, bet gali būti pasikartojančių elementų. Yra dvi sąsajos, kurios įdiegia žemėlapį „Java“: žemėlapio sąsaja ir rūšiuotas žemėlapis.

aws raudonasis poslinkis

4) Kuo skiriasi „ArrayList“ ir „Vector“?

Nr.ArrayListVektorius
1)ArrayList nėra sinchronizuotas.Vektorius yra sinchronizuotas.
2)ArrayList nėra senoji klasė.Vektorius yra senoji klasė.
3)ArrayList padidina savo dydį 50% masyvo dydžio.Vektorius padidina savo dydį dvigubai padidindamas masyvo dydį.
4)„ArrayList“ nėra saugus nuo gijų? nes jis nėra sinchronizuotas.Vektorių sąrašas yra saugus nuo gijų? nes kiekvienas metodas yra sinchronizuotas.

5) Kuo skiriasi „ArrayList“ ir „LinkedList“?

Nr.ArrayListLinkedList
1)„ArrayList“ naudoja dinaminį masyvą.LinkedList naudoja dvigubai susietą sąrašą.
2)„ArrayList“ nėra veiksmingas manipuliavimui, nes reikia per daug.„LinkedList“ yra veiksmingas manipuliavimui.
3)ArrayList geriau saugoti ir gauti duomenis.LinkedList geriau manipuliuoti duomenimis.
4)ArrayList suteikia atsitiktinę prieigą.LinkedList nesuteikia atsitiktinės prieigos.
5)„ArrayList“ užima mažiau atminties, nes saugo tik objektąLinkedList užima daugiau atminties, nes saugo objektą ir to objekto adresą.

6) Kuo skiriasi Iterator ir ListIterator?

Iteratorius slenka elementus tik į priekį, o ListIterator slenka elementus į priekį ir atgal.

Nr.IteratoriusListIterator
1)Iteratorius kerta elementus tik į priekį.ListIterator slenka elementus atgal ir pirmyn.
2)Iteratorius gali būti naudojamas sąraše, rinkinyje ir eilėje.ListIterator gali būti naudojamas tik sąraše.
3)Iteratorius gali atlikti pašalinimo operaciją tik eidamas kolekciją.ListIterator gali atlikti ?add,? ?pašalinti,? ir ?nustatyti? operacija važiuojant kolekciją.

7) Kuo skiriasi iteratorius ir išvardijimas?

Nr.IteratoriusSurašymas
1)Iteratorius gali pereiti senus ir nepasenusius elementus.Sąrašas gali pereiti tik senus elementus.
2)Iteratorius yra greitas.Sąrašas nėra greitas.
3)Iteratorius yra lėtesnis nei Enumeration.Sąrašas yra greitesnis nei Iterator.
4)Iteratorius gali atlikti pašalinimo operaciją eidamas kolekciją.Sąrašas gali atlikti tik kolekcijos judėjimo operaciją.

8) Kuo skiriasi sąrašas ir rinkinys?

Sąrašas ir rinkinys išplečia rinkimo sąsają. Tačiau yra keletas skirtumų, kurie išvardyti toliau.

  • Sąraše gali būti pasikartojančių elementų, o rinkinyje yra unikalių elementų.
  • Sąrašas yra sutvarkytas rinkinys, kuriame išlaikoma įterpimo tvarka, o rinkinys yra netvarkingas rinkinys, kuris neišsaugo įterpimo tvarkos.
  • Sąsajoje „List“ yra viena senoji klasė, kuri yra „Vector“ klasė, o „Set“ sąsaja neturi jokios senosios klasės.
  • Sąsaja List gali leisti n skaičių nulinių reikšmių, o sąsaja Set leidžia tik vieną nulinę reikšmę.

9) Kuo skiriasi HashSet ir TreeSet?

Abi klasės „HashSet“ ir „TreeSet“ įgyvendina „Set“ sąsają. Skirtumai tarp abiejų išvardyti žemiau.

  • „HashSet“ nepalaiko „jokios tvarkos“, o „TreeSet“ palaiko didėjančią tvarką.
  • „HashSet“ riboja maišos lentelė, o „TreeSet“ įgyvendino medžio struktūra.
  • HashSet veikia greičiau nei TreeSet.
  • „HashSet“ palaiko „HashMap“, o „TreeSet“ palaiko „TreeMap“.

10) Kuo skiriasi Set ir Map?

Toliau pateikiami rinkinio ir žemėlapio skirtumai.

  • Rinkinyje yra tik reikšmės, o žemėlapyje yra raktas ir reikšmės.
  • Rinkinyje yra unikalių verčių, o žemėlapyje gali būti unikalių raktų su pasikartojančiomis reikšmėmis.
  • Rinkinyje yra vienas nulinės reikšmės skaičius, o žemėlapis gali apimti vieną nulio raktą su n skaičiumi nulinių reikšmių.

11) Kuo skiriasi HashSet ir HashMap?

„HashSet“ ir „HashMap“ skirtumai yra išvardyti žemiau.

  • „HashSet“ yra tik reikšmės, o „HashMap“ apima įrašą (raktą, vertę). „HashSet“ gali būti kartojamas, tačiau „HashMap“ turi konvertuoti į rinkinį, kad būtų kartojamas.
  • „HashSet“ įgyvendina „Set“ sąsają, o „HashMap“ įgyvendina žemėlapio sąsają
  • „HashSet“ negali turėti pasikartojančios reikšmės, o „HashMap“ gali turėti pasikartojančių verčių su unikaliais raktais.
  • „HashSet“ yra vienintelis nulinės reikšmės skaičius, o „HashMap“ gali turėti vieną nulinį raktą su n skaičiumi nulinių reikšmių.

12) Kuo skiriasi HashMap ir TreeMap?

Žemiau pateikiami skirtumai tarp HashMap ir TreeMap.

  • HashMap nepalaiko tvarkos, bet TreeMap palaiko didėjančią tvarką.
  • „HashMap“ įgyvendinama naudojant maišos lentelę, o „TreeMap“ įgyvendinama naudojant medžio struktūrą.
  • „HashMap“ galima rūšiuoti pagal raktą arba reikšmę, tuo tarpu „TreeMap“ galima rūšiuoti pagal raktą.
  • „HashMap“ gali turėti nulinį raktą su keliomis nulinėmis reikšmėmis, o „TreeMap“ negali turėti nulinio rakto, bet gali turėti kelias nulines reikšmes.

13) Kuo skiriasi „HashMap“ ir „Hashtable“?

Nr.HashMapHashtable
1)HashMap nėra sinchronizuotas.Hashtable yra sinchronizuotas.
2)HashMap gali turėti vieną nulinį raktą ir kelias nulines reikšmes.Hashtable negali būti jokio nulinio rakto arba nulinės reikšmės.
3)„HashMap“ nėra saugus nuo gijų,? todėl jis naudingas programoms be sriegių.„Hashtable“ yra saugus siūlams ir gali būti bendrinamas tarp įvairių gijų.
4)4) HashMap paveldi AbstractMap klasęHashtable paveldi žodyno klasę.

14) Kuo skiriasi kolekcija ir kolekcijos?

Kolekcijos ir kolekcijų skirtumai pateikti žemiau.

  • Kolekcija yra sąsaja, o kolekcijos yra klasė.
  • Kolekcijos sąsaja suteikia standartines duomenų struktūros funkcijas sąraše, rinkinyje ir eilėje. Tačiau Kolekcijos klasė skirta rūšiuoti ir sinchronizuoti kolekcijos elementus.
  • Kolekcijos sąsaja pateikia metodus, kurie gali būti naudojami duomenų struktūrai, o kolekcijų klasė pateikia statinius metodus, kurie gali būti naudojami įvairioms kolekcijos operacijoms.

15) Kuo skiriasi palyginamasis ir lyginamasis?

Nr.PalyginamasPalyginimo priemonė
1)Palyginamoji pateikia tik vieną sekos rūšį.Komparatorius pateikia kelių rūšių sekas.
2)Jame pateikiamas vienas metodas, pavadintas palygintiTo ().Jame pateikiamas vienas metodas, pavadintas palyginimas ().
3)Jis randamas java.lang pakete.Jis yra java.util pakete.
4)Jei įdiegsime palyginamąją sąsają, tikroji klasė bus pakeista.Tikroji klasė nesikeičia.

16) Ką jūs suprantate iš „BlockingQueue“?

BlockingQueue yra sąsaja, kuri praplečia eilės sąsają. Tai užtikrina vienodumą atliekant tokias operacijas kaip paieška, įterpimas, ištrynimas. Gaudamas bet kurį elementą, jis laukia, kol eilė nebus tuščia. Saugodamas elementus, jis laukia laisvos vietos. BlockingQueue negali būti nulinių elementų, o „BlockingQueue“ diegimas yra saugus gijos atžvilgiu.

Sintaksė:

 public interface BlockingQueue extends Queue 

17) Koks yra ypatybių failo pranašumas?

Jei pakeisite reikšmę ypatybių faile, jums nereikės iš naujo kompiliuoti java klasės. Taigi programą lengva valdyti. Jis naudojamas informacijai, kurią reikia dažnai keisti, saugoti. Apsvarstykite toliau pateiktą pavyzdį.

 import java.util.*; import java.io.*; public class Test { public static void main(String[] args)throws Exception{ FileReader reader=new FileReader('db.properties'); Properties p=new Properties(); p.load(reader); System.out.println(p.getProperty('user')); System.out.println(p.getProperty('password')); } } 

Išvestis

 system oracle 

18) Ką reiškia hashCode() metodas?

HashCode() metodas grąžina maišos kodo reikšmę (sveikąjį skaičių).

HashCode() metodas grąžina tą patį sveikąjį skaičių, jei du raktai (iškviečiant equals() metodą) yra identiški.

kitaip jei java

Tačiau gali būti, kad du maišos kodų numeriai gali turėti skirtingus arba tuos pačius raktus.

Jei du objektai neduoda vienodo rezultato naudojant equals () metodą, tada maišos kodas () metodas pateiks skirtingą sveikąjį abiejų objektų rezultatą.


19) Kodėl nepaisome equals() metodo?

Lygumų metodas naudojamas patikrinti, ar du objektai yra vienodi, ar ne. Jis turi būti nepaisomas, jei norime patikrinti objektus pagal nuosavybę.

Pavyzdžiui, darbuotojas yra klasė, kurioje yra 3 duomenų nariai: ID, vardas ir atlyginimas. Tačiau norime patikrinti darbuotojo objekto lygybę pagal atlyginimą. Tada turime nepaisyti lygybės() metodo.


20) Kaip sinchronizuoti sąrašo, rinkinio ir žemėlapio elementus?

Taip, kolekcijų klasėje pateikiami metodai, kaip sinchronizuoti sąrašo, rinkinio ar žemėlapio elementus:

viešas statinis Sąrašas sinchronizuotasSąrašas(List l){}
viešas statinis Nustatyti sinchronizuotas rinkinys(rinkiniai){}
viešas statinis rūšiuotas rinkinys sinchronizuotasSortedSet(SortedSet s){}
viešas statinis žemėlapis sinchronizuotas žemėlapis (žemėlapis m){}
viešas statinis surūšiuotas žemėlapis sinchronizuotas surūšiuotas žemėlapis(surūšiuotas žemėlapis m){}

21) Koks yra bendros kolekcijos pranašumas?

Yra trys pagrindiniai bendrosios kolekcijos naudojimo pranašumai.

  • Jei naudojame bendrąją klasę, mums nereikia rašyti.
  • Jis yra saugus tipo ir tikrinamas kompiliavimo metu.
  • Bendrasis patvirtina kodo stabilumą, padarydamas klaidą aptinkamą kompiliavimo metu.

22) Kas yra maišos susidūrimas programoje „Hashtable“ ir kaip jis tvarkomas „Java“?

Du skirtingi raktai su ta pačia maišos verte yra žinomi kaip maišos susidūrimas. Du atskiri įrašai bus laikomi viename maišos segmente, kad būtų išvengta susidūrimo. Yra du būdai, kaip išvengti maišos susidūrimo.

  • Atskiras sujungimas
  • Atidarykite Adresavimas

23) Kas yra žodyno klasė?

Žodyno klasė suteikia galimybę saugoti raktų ir reikšmių poras.


24) Koks yra numatytasis apkrovos koeficiento dydis maiša pagrįsto rinkimo atveju?

Numatytasis apkrovos koeficiento dydis yra 0,75 . Numatytoji talpa apskaičiuojama kaip pradinė talpa * apkrovos koeficientas. Pavyzdžiui, 16 * 0,75 = 12. Taigi 12 yra numatytoji žemėlapio talpa.


25) Ką jūs suprantate kaip „fast-fast“?

„Java“ iteratorius, kuris iš karto sukuria „ConcurrentmodificationException“, jei įvyksta kokių nors struktūrinių pakeitimų, vadinamas greitu iteratoriumi. Fail-fats iteratoriui nereikia papildomos vietos atmintyje.


26) Kuo skiriasi „Array“ ir „ArrayList“?

Pagrindiniai „Array“ ir „ArrayList“ skirtumai pateikti žemiau.

SNMasyvasArrayList
1Masyvas yra fiksuoto dydžio, tai reiškia, kad negalime pakeisti masyvo dydžio pagal poreikį.ArrayList nėra fiksuoto dydžio, todėl dydį galime keisti dinamiškai.
2Masyvai yra statinio tipo.ArrayList yra dinaminio dydžio.
3Masyvai gali saugoti primityvius duomenų tipus ir objektus.ArrayList negali saugoti primityvių duomenų tipų, gali saugoti tik objektus.

27) Kuo skiriasi masyvo ilgis ir ArrayList dydis?

Masyvo ilgį galima gauti naudojant ilgio ypatybę, tuo tarpu ArrayList nepalaiko ilgio savybės, tačiau galime naudoti metodą size () norėdami gauti objektų skaičių sąraše.

Masyvo ilgio radimas

 Int [] array = new int[4]; System.out.println('The size of the array is ' + array.length); 

ArrayList dydžio nustatymas

 ArrayList list=new ArrayList(); list.add('ankit');�� list.add('nippun'); System.out.println(list.size()); 

28) Kaip konvertuoti ArrayList į Array ir Array į ArrayList?

Mes galime konvertuoti masyvą į ArrayList naudodami Arrays klasės metodą asList(). asList() metodas yra statinis Arrays klasės metodas ir priima Sąrašo objektą. Apsvarstykite šią sintaksę:

 Arrays.asList(item) 

Mes galime konvertuoti ArrayList į Array naudodami ArrayList klasės metodą toArray (). Apsvarstykite šią sintaksę, norėdami konvertuoti ArrayList į objektą Sąrašas.

 List_object.toArray(new�String[List_object.size()]) 

29) Kaip padaryti, kad „Java ArrayList“ būtų tik skaitomas?

„Java ArrayList Read-only“ galime gauti iškvietę Collections.unmodifiableCollection() metodą. Kai apibrėžiame ArrayList kaip tik skaitomą, negalime atlikti jokių kolekcijos pakeitimų naudodami �add(), remove() arba set() metodus.


30) Kaip pašalinti dublikatus iš ArrayList?

Yra du būdai, kaip pašalinti dublikatus iš „ArrayList“.

    „HashSet“ naudojimas:Naudodami „HashSet“ galime pašalinti pasikartojantį elementą iš „ArrayList“, tačiau tai neišsaugos įterpimo tvarkos.„LinkedHashSet“ naudojimas:Taip pat galime išlaikyti įterpimo tvarką naudodami LinkedHashSet vietoj HashSet.

Procesas, skirtas pašalinti pasikartojančius elementus iš ArrayList naudojant LinkedHashSet:

statinis c
  • Nukopijuokite visus ArrayList elementus į LinkedHashSet.
  • Ištuštinkite ArrayList naudodami clear() metodą, kuris pašalins visus elementus iš sąrašo.
  • Dabar nukopijuokite visus LinkedHashset elementus į ArrayList.

31) Kaip pakeisti ArrayList?

Norėdami pakeisti ArrayList, galime naudoti kolekcijų klasės reverse() metodą. Apsvarstykite toliau pateiktą pavyzdį.

 import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Iterator i2 = list.iterator(); Collections.reverse(list); System.out.println('printing list in reverse order....'); while(i2.hasNext()) { System.out.println(i2.next()); } } } 

Išvestis

 printing the list.... 10 50 30 printing list in reverse order.... 30 50 10 

32) Kaip rūšiuoti ArrayList mažėjančia tvarka?

Norėdami rūšiuoti ArrayList mažėjančia tvarka, galime naudoti kolekcijų klasės reverseOrder metodą. Apsvarstykite toliau pateiktą pavyzdį.

 import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; public class ReverseArrayList { public static void main(String[] args) { List list = new ArrayList(); list.add(10); list.add(50); list.add(30); list.add(60); list.add(20); list.add(90); Iterator i = list.iterator(); System.out.println('printing the list....'); while(i.hasNext()) { System.out.println(i.next()); } Comparator cmp = Collections.reverseOrder(); Collections.sort(list,cmp); System.out.println('printing list in descending order....'); Iterator i2 = list.iterator(); while(i2.hasNext()) { System.out.println(i2.next()); } } } 

Išvestis

 printing the list.... 10 50 30 60 20 90 printing list in descending order.... 90 60 50 30 20 10 

33) Kaip sinchronizuoti ArrayList?

Mes galime sinchronizuoti ArrayList dviem būdais.

  • Naudojant Collections.synchronizedList() metodą
  • Naudojant CopyOnWriteArrayList

3. 4) Kada naudoti „ArrayList“ ir „LinkedList“?

LinkedLists geriau naudoti naujinimo operacijoms, o ArrayLists geriau naudoti paieškos operacijoms.