logo

34 Java-kokoelman haastattelukysymyksiä

Javassa haastattelijat kysyvät eniten kokoelmahaastattelukysymyksiä. Tässä on luettelo eniten kysytyistä kokoelmien haastattelukysymyksistä ja vastauksista.


1) Mikä on kokoelmakehys Javassa?

Collection Framework on luokkien ja käyttöliittymän yhdistelmä, jota käytetään tietojen tallentamiseen ja käsittelemiseen objektien muodossa. Se tarjoaa erilaisia ​​luokkia, kuten ArrayList, Vector, Stack ja HashSet jne. ja rajapintoja, kuten List, Queue, Set jne. tätä tarkoitusta varten.


2) Mitkä ovat tärkeimmät erot taulukon ja kokoelman välillä?

Array ja Collection ovat jonkin verran samankaltaisia ​​objektien viitteiden tallentamisessa ja tietojen käsittelyssä, mutta ne eroavat monin tavoin. Tärkeimmät erot taulukon ja kokoelman välillä on määritelty alla:

  • Matriisit ovat aina kiinteän kokoisia, eli käyttäjä ei voi lisätä tai pienentää taulukon pituutta tarpeidensa mukaan tai ajon aikana, mutta Collectionissa kokoa voidaan muuttaa dynaamisesti tarpeen mukaan.
  • Taulukot voivat tallentaa vain homogeenisia tai samantyyppisiä objekteja, mutta kokoelmaan voidaan tallentaa heterogeenisiä objekteja.
  • Taulukot eivät voi tarjota ?valmiita? menetelmiä käyttäjien tarpeisiin, kuten lajittelu, haku jne., mutta kokoelma sisältää valmiita menetelmiä käytettäväksi.

3) Selitä Collection-kehyksessä käytetyt rajapinnat?

Collection framework toteuttaa erilaisia ​​rajapintoja, Collection interface ja Map interface (java.util.Map) ovat Java Collection Frameworkin pääasiallisesti käytettyjä rajapintoja. Luettelo Collection Frameworkin käyttöliittymistä on alla:

1. Kokoelman käyttöliittymä: Kokoelma (java.util.Collection) on ensisijainen käyttöliittymä, ja jokaisen kokoelman on otettava tämä käyttöliittymä käyttöön.

Syntaksi:

 public interface Collectionextends Iterable 

Missä tarkoittaa, että tämä käyttöliittymä on yleinen tyyppi

2. Luettelon käyttöliittymä: Listarajapinta laajentaa Collection-rajapintaa, ja se on järjestetty objektikokoelma. Se sisältää päällekkäisiä elementtejä. Se mahdollistaa myös satunnaisen pääsyn elementteihin.

Syntaksi:

 public interface List extends Collection 

3. Aseta käyttöliittymä: Set (java.util.Set) -liittymä on kokoelma, joka ei voi sisältää päällekkäisiä elementtejä. Se voi sisältää vain kokoelmarajapinnan perittyjä menetelmiä

Syntaksi:

 public interface Set extends Collection 

Jonon käyttöliittymä: Jono (java.util.Queue) -rajapinta määrittelee jonotietorakenteen, joka tallentaa elementit muodossa FIFO (first in first out).

Syntaksi:

 public interface Queue extends Collection 

4. Poista käyttöliittymä: se on kaksipäinen jono. Se mahdollistaa elementtien asettamisen ja poistamisen molemmista päistä. Se istuttaa sekä pinon että jonon ominaisuudet, jotta se voi suorittaa LIFO (Last in first out) pinon ja FIFO (first in first out) -jonon operaatioita.

Syntaksi:

 public interface Dequeue extends Queue 

5. Karttakäyttöliittymä: Kartta (java.util.Map) edustaa elementtien avain-, arvoparivarastoa. Karttarajapinta ei toteuta Collection-rajapintaa. Se voi sisältää vain ainutlaatuisen avaimen, mutta siinä voi olla päällekkäisiä elementtejä. On olemassa kaksi käyttöliittymää, jotka toteuttavat Mapin javassa: Map interface ja Sorted Map.

jfx java opetusohjelma

4) Mitä eroa on ArrayListin ja Vectorin välillä?

Ei.ArrayListVektori
1)ArrayList ei ole synkronoitu.Vector on synkronoitu.
2)ArrayList ei ole vanha luokka.Vector on perintöluokka.
3)ArrayList kasvattaa kokoaan 50 % taulukon koosta.Vector kasvattaa kokoaan kaksinkertaistamalla taulukon koon.
4)ArrayList ei ole ?säieturvallinen? koska sitä ei ole synkronoitu.Vektoriluettelo on ?ketjuturvallinen? koska se? S jokainen menetelmä on synkronoitu.

5) Mitä eroa on ArrayListillä ja LinkedListillä?

Ei.ArrayListLinkedList
1)ArrayList käyttää dynaamista taulukkoa.LinkedList käyttää kaksoislinkitettyä luetteloa.
2)ArrayList ei ole tehokas manipulointiin, koska vaaditaan liikaa.LinkedList on tehokas manipulointiin.
3)ArrayList on parempi tallentaa ja hakea tietoja.LinkedList on parempi käsitellä tietoja.
4)ArrayList tarjoaa satunnaisen pääsyn.LinkedList ei tarjoa satunnaista pääsyä.
5)ArrayList vie vähemmän muistia, koska se tallentaa vain objektinLinkedList vie enemmän muistia, koska se tallentaa objektin sekä objektin osoitteen.

6) Mitä eroa on Iteratorilla ja ListIteratorilla?

Iterator kulkee elementtien läpi vain eteenpäin, kun taas ListIterator kulkee elementit eteenpäin ja taaksepäin.

Ei.IteraattoriListIterator
1)Iteraattori kulkee elementtien läpi vain eteenpäin.ListIterator kulkee elementtien läpi sekä taaksepäin että eteenpäin.
2)Iteraattoria voidaan käyttää luettelossa, joukossa ja jonossa.ListIteratoria voidaan käyttää vain Listissä.
3)Iteraattori voi suorittaa poistotoiminnon vain kulkiessaan kokoelmaa.ListIterator voi suorittaa ?lisää,? ?Poista,? ja ?set? toimintaa kokoelman läpi kulkiessaan.

7) Mitä eroa on iteraattorilla ja luettelolla?

Ei.IteraattoriLuettelo
1)Iteraattori voi kulkea vanhojen ja ei-vanhojen elementtien läpi.Luettelo voi kulkea vain vanhojen elementtien läpi.
2)Iteraattori on nopea.Luettelo ei ole nopeaa.
3)Iteraattori on hitaampi kuin Enumeration.Luettelo on nopeampi kuin Iterator.
4)Iteraattori voi suorittaa poistotoiminnon kulkiessaan kokoelmaa.Luettelo voi suorittaa vain poikittaistoiminnon kokoelmalle.

8) Mitä eroa on luettelolla ja joukolla?

Sekä List että Set laajentavat kokoelman käyttöliittymää. Näiden kahden välillä on kuitenkin joitain eroja, jotka on lueteltu alla.

  • Luettelo voi sisältää päällekkäisiä elementtejä, kun taas joukko sisältää yksilöllisiä kohteita.
  • Lista on järjestetty kokoelma, joka säilyttää lisäysjärjestyksen, kun taas joukko on järjestämätön kokoelma, joka ei säilytä lisäysjärjestystä.
  • List-rajapinta sisältää yhden vanhan luokan, joka on Vector-luokka, kun taas Set-liittymällä ei ole mitään vanhaa luokkaa.
  • List-liitäntä voi sallia n lukumäärän nolla-arvoja, kun taas Set-liitäntä sallii vain yhden nolla-arvon.

9) Mitä eroa on HashSetin ja TreeSetin välillä?

HashSet ja TreeSet, molemmat luokat, toteuttavat Set-rajapinnan. Molempien väliset erot on lueteltu alla.

round robin -aikataulu
  • HashSet ei ylläpidä järjestystä, kun taas TreeSet ylläpitää nousevaa järjestystä.
  • HashSet on tiivistetty hash-taulukolla, kun taas TreeSet on toteutettu puurakenteella.
  • HashSet toimii nopeammin kuin TreeSet.
  • HashSetiä tukee HashMap, kun taas TreeSetiä tukee TreeMap.

10) Mitä eroa on Set ja Map välillä?

Erot sarjan ja kartan välillä on esitetty alla.

  • Joukko sisältää vain arvoja, kun taas Kartta sisältää avaimen ja arvot molemmat.
  • Joukko sisältää yksilöllisiä arvoja, kun taas kartta voi sisältää yksilöllisiä avaimia, joissa on päällekkäisiä arvoja.
  • Joukko sisältää yhden määrän nolla-arvoja, kun taas Map voi sisältää yhden nolla-avaimen n lukumäärällä nolla-arvoja.

11) Mitä eroa on HashSetin ja HashMapin välillä?

HashSetin ja HashMapin väliset erot on lueteltu alla.

  • HashSet sisältää vain arvoja, kun taas HashMap sisältää merkinnän (avain, arvo). HashSet voidaan iteroida, mutta HashMap on muutettava joukoksi iteroitavaksi.
  • HashSet toteuttaa Set-rajapinnan, kun taas HashMap toteuttaa Map-rajapinnan
  • HashSetillä ei voi olla päällekkäisiä arvoja, kun taas HashMap voi sisältää päällekkäisiä arvoja yksilöllisillä avaimilla.
  • HashSet sisältää vain yhden numeron nolla-arvoja, kun taas HashMap voi sisältää yhden nolla-avaimen n lukumäärällä nolla-arvoja.

12) Mitä eroa on HashMapin ja TreeMapin välillä?

HashMapin ja TreeMapin erot on esitetty alla.

  • HashMap ei ylläpidä järjestystä, mutta TreeMap ylläpitää nousevaa järjestystä.
  • HashMap toteutetaan hash-taulukolla, kun taas TreeMap toteutetaan puurakenteella.
  • HashMap voidaan lajitella avaimen tai arvon mukaan, kun taas TreeMap voidaan lajitella avaimen mukaan.
  • HashMap voi sisältää nolla-avaimen, jossa on useita nolla-arvoja, kun taas TreeMap ei voi sisältää nolla-avainta, mutta sillä voi olla useita nolla-arvoja.

13) Mitä eroa on HashMapin ja Hashtablen välillä?

Ei.HashMapHashtable
1)HashMap ei ole synkronoitu.Hashtable on synkronoitu.
2)HashMap voi sisältää yhden nollaavaimen ja useita nolla-arvoja.Hashtable ei voi sisältää mitään tyhjää avainta tai tyhjäarvoa.
3)HashMap ei ole ?ketjuturvallinen,? joten se on hyödyllinen ei-säikeisissä sovelluksissa.Hashtable on ketjuturvallinen, ja se voidaan jakaa eri säikeiden kesken.
4)4) HashMap perii AbstractMap-luokanHashtable perii Sanakirja-luokan.

14) Mitä eroa on kokoelmalla ja kokoelmalla?

Kokoelman ja kokoelmien väliset erot on esitetty alla.

  • Kokoelma on käyttöliittymä, kun taas kokoelmat on luokka.
  • Keräysrajapinta tarjoaa tietorakenteen vakiotoiminnot listalle, joukolle ja jonolle. Kokoelmat-luokka on kuitenkin lajitella ja synkronoida kokoelmaelementit.
  • Kokoelmarajapinta tarjoaa menetelmät, joita voidaan käyttää tietorakenteeseen, kun taas Collections-luokka tarjoaa staattiset menetelmät, joita voidaan käyttää kokoelman eri toimiin.

15) Mitä eroa on Vertailevan ja Vertailun välillä?

Ei.VertailukelpoinenVertailija
1)Vertailukelpoinen tarjoaa vain yhdenlaisen sekvenssin.Comparator tarjoaa monenlaisia ​​sekvenssejä.
2)Se tarjoaa yhden menetelmän nimeltä Vertailu().Se tarjoaa yhden menetelmän nimeltä vertaa().
3)Se löytyy java.lang-paketista.Se sijaitsee java.util-paketissa.
4)Jos toteutamme Comparable-rajapinnan, varsinaista luokkaa muutetaan.Varsinaista luokkaa ei muuteta.

16) Mitä ymmärrät BlockingQueuella?

BlockingQueue on käyttöliittymä, joka laajentaa Queue-liittymää. Se tarjoaa samanaikaisuuden toimissa, kuten haku, lisääminen, poistaminen. Mitä tahansa elementtiä haettaessa se odottaa, että jono ei ole tyhjä. Elementtejä tallentaessaan se odottaa vapaata tilaa. BlockingQueue ei voi sisältää nollaelementtejä, ja BlockingQueue-toteutus on säikeen turvallista.

Syntaksi:

 public interface BlockingQueue extends Queue 

17) Mitä hyötyä Properties-tiedostosta on?

Jos muutat arvoa ominaisuustiedostossa, sinun ei tarvitse kääntää java-luokkaa uudelleen. Joten se tekee sovelluksesta helposti hallittavan. Sitä käytetään usein vaihdettavien tietojen tallentamiseen. Harkitse seuraavaa esimerkkiä.

 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')); } } 

Lähtö

 system oracle 

18) Mitä hashCode()-metodi tekee?

HashCode()-metodi palauttaa hash-koodin arvon (kokonaisluvun).

HashCode()-metodi palauttaa saman kokonaisluvun, jos kaksi avainta (kutsumalla equals()-menetelmää) ovat identtisiä.

On kuitenkin mahdollista, että kahdella hash-koodinumerolla voi olla eri tai samat avaimet.

Jos kaksi objektia eivät tuota yhtäläistä tulosta käyttämällä equals()-metodia, hashcode()-metodi antaa eri kokonaislukutuloksen molemmille objekteille.


19) Miksi ohitamme equals()-menetelmän?

Tasa-arvomenetelmää käytetään tarkistamaan, ovatko kaksi objektia samoja vai eivät. Se on ohitettava, jos haluamme tarkistaa objektit ominaisuuden perusteella.

Esimerkiksi Työntekijä on luokka, jossa on 3 datajäsentä: id, nimi ja palkka. Haluamme kuitenkin tarkistaa työntekijän tasa-arvon palkalla. Sitten meidän on ohitettava equals()-metodi.


20) Kuinka synkronoida List-, Set- ja Map-elementit?

Kyllä, Kokoelmat-luokka tarjoaa menetelmiä List-, Set- tai Map-elementtien tekemiseksi synkronoituiksi:

julkinen staattinen List synchronizedList(List l){}
julkinen staattinen Set synchronizedSet(Set s){}
julkinen staattinen SortedSet synchronizedSortedSet(SortedSet s){}
julkinen staattinen kartta synkronoitu kartta (kartta m){}
julkinen staattinen LajiteltuMap synkronoituSortedMap(SortedMap m){}

21) Mikä on yleisen kokoelman etu?

Yleisen kokoelman käytössä on kolme pääetua.

  • Jos käytämme yleistä luokkaa, emme tarvitse typecastia.
  • Se on tyyppiturvallinen ja tarkistetaan käännöshetkellä.
  • Generic vahvistaa koodin vakauden tekemällä siitä virheen havaittavissa käännöshetkellä.

22) Mikä on hash-collision Hashtableissa ja miten sitä käsitellään Javassa?

Kahta eri avainta, joilla on sama hash-arvo, kutsutaan hash-törmäykseksi. Kaksi erillistä merkintää säilytetään yhdessä hash-säilössä törmäyksen välttämiseksi. On kaksi tapaa välttää hash-törmäys.

  • Erillinen ketjutus
  • Avaa Osoite

23) Mikä on Sanakirja-luokka?

Sanakirja-luokka tarjoaa mahdollisuuden tallentaa avainarvo-pareja.


24) Mikä on kuormituskertoimen oletuskoko hajautuspohjaisessa kokoelmassa?

Kuormituskertoimen oletuskoko on 0,75 . Oletuskapasiteetti lasketaan muodossa alkukapasiteetti * kuormituskerroin. Esimerkiksi 16 * 0,75 = 12. Joten 12 on Mapin oletuskapasiteetti.


25) Mitä ymmärrät epäonnistumisnopeudella?

Javassa olevaa iteraattoria, joka heittää välittömästi ConcurrentmodificationExceptionin, jos siinä tapahtuu rakenteellisia muutoksia, kutsutaan Fail-fast-iteraattoriksi. Fail-fats -iteraattori ei vaadi ylimääräistä muistitilaa.


26) Mitä eroa on Arraylla ja ArrayListillä?

Tärkeimmät erot Arrayn ja ArrayListin välillä on esitetty alla.

SNArrayArrayList
1Array on kiinteän kokoinen, joten emme voi muuttaa taulukon kokoa tarpeen mukaan.ArrayList ei ole kiinteän kokoinen, jotta voimme muuttaa kokoa dynaamisesti.
2Taulukot ovat staattista tyyppiä.ArrayList on dynaamisen kokoinen.
3Taulukot voivat tallentaa primitiivisiä tietotyyppejä sekä objekteja.ArrayList ei voi tallentaa primitiivisiä tietotyyppejä, se voi tallentaa vain objektit.

27) Mitä eroa on Arrayn pituuden ja ArrayListin koon välillä?

Taulukon pituus voidaan saada pituus-ominaisuuden avulla, kun taas ArrayList ei tue pituus-ominaisuutta, mutta voimme käyttää size()-menetelmää saadakseen luettelon objektien määrän.

Taulukon pituuden selvittäminen

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

ArrayListin koon selvittäminen

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

28) Kuinka muuntaa ArrayList Arrayksi ja Array ArrayListiksi?

Array voidaan muuntaa ArrayListiksi käyttämällä Arrays-luokan asList()-metodia. asList()-metodi on Arrays-luokan staattinen menetelmä ja hyväksyy List-objektin. Harkitse seuraavaa syntaksia:

 Arrays.asList(item) 

Voimme muuntaa ArrayListin Arrayiksi käyttämällä ArrayList-luokan toArray()-menetelmää. Harkitse seuraavaa syntaksia muuntamaan ArrayList List-objektiksi.

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

29) Kuinka tehdä Java ArrayList vain luku -käyttöiseksi?

Voimme saada java ArrayList vain luku -muodossa kutsumalla Collections.unmodifiableCollection()-metodia. Kun määritämme ArrayListin vain luku -muotoiseksi, emme voi tehdä mitään muutoksia kokoelmaan �add(), remove()- tai set()-metodin avulla.

lajittele taulukkoluettelo

30) Kuinka poistaa kaksoiskappaleet ArrayLististä?

On olemassa kaksi tapaa poistaa kaksoiskappaleet ArrayLististä.

    HashSetin käyttäminen:HashSetillä voimme poistaa kaksoiselementin ArrayLististä, mutta se ei säilytä lisäysjärjestystä.LinkedHashSetin käyttäminen:Voimme myös ylläpitää lisäysjärjestystä käyttämällä LinkedHashSetiä HashSetin sijaan.

Prosessi päällekkäisten elementtien poistamiseksi ArrayLististä LinkedHashSetin avulla:

  • Kopioi kaikki ArrayListin elementit LinkedHashSetiin.
  • Tyhjennä ArrayList käyttämällä clear()-menetelmää, joka poistaa kaikki elementit luettelosta.
  • Kopioi nyt kaikki LinkedHashsetin elementit ArrayListiin.

31) Kuinka kääntää ArrayList?

Kääntääksemme ArrayListin, voimme käyttää Collections-luokan reverse()-metodia. Harkitse seuraavaa esimerkkiä.

 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()); } } } 

Lähtö

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

32) Kuinka lajitella ArrayList laskevaan järjestykseen?

Lajitellaksesi ArrayListin laskevaan järjestykseen, voimme käyttää Collections-luokan reverseOrder-metodia. Harkitse seuraavaa esimerkkiä.

 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()); } } } 

Lähtö

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

33) Kuinka synkronoida ArrayList?

Voimme synkronoida ArrayListin kahdella tavalla.

  • Collections.synchronizedList()-metodin käyttäminen
  • CopyOnWriteArrayListin käyttäminen

3. 4) Milloin käyttää ArrayListiä ja LinkedListiä?

LinkedLists on parempi käyttää päivitystoimintoihin, kun taas ArrayLists on parempi käyttää hakutoimintoihin.