logo

Java-haastattelun kysymyksiä ja vastauksia

Java on yksi maailman suosituimmista ohjelmointikielistä, joka tunnetaan monipuolisuudestaan, siirrettävyydestään ja laajasta sovellusvalikoimastaan. Java on ominaisuuksiensa ja suorituskykynsä ansiosta eniten käytetty kieli huippuyrityksissä, kuten Uber, Airbnb, Google, Netflix, Instagram, Spotify, Amazon ja monet muut.

Tässä artikkelissa tarjoamme 200+ Core Java-haastattelukysymystä räätälöity sekä fuksilaisille että kokeneille ammattilaisille, joilla on 3, 5 ja 8 vuoden kokemus. Täällä katetaan kaikki, mukaan lukien ydin Java-konseptit, Object-Oriented Programming (OOP), monisäikeisyys, poikkeusten käsittely, suunnittelumallit, Java-kokoelmat ja paljon muuta, jotka varmasti auttavat sinua murtamaan Java-haastattelut.



Core-Java-haastattelu-kysymykset

Sisällysluettelo

Java-haastattelukysymykset Freshersille

1. Onko Java-alusta riippumaton, jos niin miten?

Kyllä, Java on alustasta riippumaton kieli. Toisin kuin monet ohjelmointikielet, javac-kääntäjä kääntää ohjelman muodostamaan tavukoodi- tai .class-tiedoston. Tämä tiedosto on riippumaton käynnissä olevasta ohjelmistosta tai laitteistosta, mutta tarvitsee käyttöjärjestelmään esiasennettuna JVM-tiedoston (Java Virtual Machine) tavukoodin suorittamista varten.



Siitä huolimatta JVM on alustariippuvainen , tavukoodi voidaan luoda missä tahansa järjestelmässä ja se voidaan suorittaa missä tahansa muussa järjestelmässä huolimatta siitä, että laitteistoa tai ohjelmistoa käytetään, mikä tekee Java-alustasta riippumattoman.

2. Mitkä ovat suosituimmat Java-ominaisuudet?

Java on yksi tunnetuimmista ja käytetyimmistä kielistä todellisessa maailmassa, Javassa on monia ominaisuuksia, jotka tekevät siitä paremman kuin mikään muu kieli, joista osa on mainittu alla:

Java-768:n ominaisuudet



  • Yksinkertainen : Java on melko yksinkertainen ymmärtää ja syntaksi
  • Alustasta riippumaton: Java on alustariippumaton tarkoittaa, että voimme ajaa samaa ohjelmaa missä tahansa ohjelmistossa ja laitteistossa ja saamme saman tuloksen.
  • Tulkittu : Java tulkitaan samoin kuin kääntäjäpohjainen kieli.
  • Kestävä : ominaisuuksia, kuten roskien kerääminen, poikkeusten käsittely jne., jotka tekevät kielestä vankan.
  • Olio-suuntautunut : Java on oliokieli, joka tukee luokan, objektien, neljän OOPS-pilarin jne. käsitteitä.
  • Turvattu : Koska voimme jakaa sovelluksen suoraan käyttäjän kanssa jakamatta varsinaista ohjelmaa, Java on suojattu kieli.
  • Korkea suorituskyky: nopeammin kuin muut perinteiset tulkitut ohjelmointikielet.
  • Dynaaminen : tukee luokkien ja rajapintojen dynaamista lataamista.
  • Hajautettu : Java-ominaisuuden ansiosta voimme käyttää tiedostoja kutsumalla menetelmiä miltä tahansa kytketyltä koneelta.
  • Monisäikeinen : käsittele useita tehtäviä kerralla määrittämällä useita säikeitä
  • Arkkitehtuuri neutraali : se ei ole riippuvainen arkkitehtuurista.

3. Mikä on JVM?

JVM-768

JVM tulee sanoista Java Virtual Machine, se on Java-tulkki. Se vastaa Javalla luodun tavukoodin lataamisesta, tarkistamisesta ja suorittamisesta.

Vaikka se on alustariippuvainen, mikä tarkoittaa, että JVM:n ohjelmisto on erilainen eri käyttöjärjestelmissä, sillä on tärkeä rooli Java-alustan riippumattomuuden tekemisessä.

Lisätietoja aiheesta saat osoitteesta JVM Javassa .

4. Mikä on JIT?

JIT-768

JIT tarkoittaa (Just-in-Time) -kääntäjä on osa JRE:tä (Java Runtime Environment), sitä käytetään Java-sovellusten parempaan suorituskykyyn ajon aikana. JIT:n käyttö mainitaan alla mainitussa vaiheittaisessa prosessissa:

  1. Lähdekoodi on koottu javac kääntäjä muodostamaan tavukoodin
  2. Tavukoodi välitetään edelleen JVM:lle
  3. JIT on osa JVM:ää, JIT vastaa tavukoodin kääntämisestä alkuperäiseksi konekoodiksi ajon aikana.
  4. JIT-kääntäjä on käytössä koko ajan, kun taas se aktivoituu, kun menetelmää kutsutaan. Käännetylle menetelmälle JVM kutsuu käännettyä koodia suoraan sen tulkitsemisen sijaan.
  5. Kuten JVM kutsuu käännettyä koodia, joka lisää suorituksen suorituskykyä ja nopeutta.

Lisätietoja aiheesta saat osoitteesta JIT Javassa .

5. Mitä muistitallennustilaa on saatavilla JVM:ssä?

JVM-Areas-768

JVM koostuu muutamasta alla mainitusta muistista:

  1. Class(Method) Area: tallentaa jokaisen luokan luokkatason tiedot, kuten ajonaikaisen vakiovarannon, kenttä- ja menetelmätiedot sekä menetelmien koodin.
  2. Keko: Objekteja luodaan tai objekteja tallennetaan. Sitä käytetään varaamaan muistia objekteille ajon aikana.
  3. Pino: tallentaa tiedot ja osittaiset tulokset, joita tarvitaan menetelmän arvon palauttamiseen ja dynaamisen linkityksen suorittamiseen
  4. Program Counter Register: tallentaa parhaillaan suoritettavan Java-virtuaalikonekäskyn osoitteen.
  5. Natiivimenetelmäpino: tallentaa kaikki sovelluksessa käytetyt alkuperäiset menetelmät.

Lisätietoja aiheesta saat osoitteesta JVM-muistit .

6. Mikä on luokanlataaja?

Classloader on osa JRE:tä (Java Runtime Environment), tavukoodin tai luodun .class-tiedoston suorittamisen aikana classloader vastaa Java-luokkien ja rajapintojen dynaamisesta lataamisesta JVM:ään (Java Virtual Machine). Luokkalatainten takia Java-ajonaikaisen järjestelmän ei tarvitse tietää tiedostoista ja tiedostojärjestelmistä.

Lisätietoja aiheesta saat osoitteesta ClassLoader Javassa.

7. Ero JVM:n, JRE:n ja JDK:n välillä.

JVM : JVM, joka tunnetaan myös nimellä Java Virtual Machine, on osa JRE:tä. JVM on eräänlainen tulkki, joka vastaa tavukoodin muuntamisesta koneellisesti luettavaksi koodiksi. JVM itsessään on alustariippuvainen, mutta se tulkitsee tavukoodin, joka on alustasta riippumaton syy, miksi Java on alustariippumaton.

JRE : JRE tulee sanoista Java Runtime Environment, se on asennuspaketti, joka tarjoaa ympäristön Java-ohjelman tai -sovelluksen suorittamiseen millä tahansa koneella.

JDK : JDK on lyhenne sanoista Java Development Kit, joka tarjoaa ympäristön Java-ohjelmien kehittämiseen ja suorittamiseen. JDK on paketti, joka sisältää kaksi asiaa: kehitystyökalut, jotka tarjoavat ympäristön Java-ohjelmien kehittämiseen, ja JRE:n Java-ohjelmien tai -sovellusten suorittamiseen.

Lisätietoja aiheesta saat osoitteesta Erot JVM:n, JRE:n ja JDK:n välillä .

8. Mitä eroa on Javalla ja C++:lla?

Perusta

C++

Java

Alusta

C++ on alustariippuvainen

Java on alustasta riippumaton

Sovellus

C++:aa käytetään pääasiassa järjestelmäohjelmointiin

Javaa käytetään pääasiassa sovellusohjelmointiin

Laitteisto

C++ on lähempänä laitteistoa

Java ei ole niin interaktiivinen laitteiston kanssa

Globaali laajuus

C++ tukee globaalia ja nimiavaruuden laajuutta.

Java ei tue globaalia laajuutta.

Ei tue

Javassa mutta ei C++:ssa tuetut toiminnot ovat:

  • langan tuki
  • dokumentaatiokommentti
  • allekirjoittamaton siirto oikealle(>>>)

C++:ssa mutta ei Javassa tuetut toiminnot ovat:

  • mene
  • Osoittimet
  • Soita viitteellä
  • Rakenteet ja liitot
  • Moniperintö
  • Virtuaaliset toiminnot

OHO

C++ on oliokieli. Se ei ole yksittäinen juurihierarkia.

Java on myös oliokieli. Se on yksijuurihierarkia, koska kaikki saadaan yhdestä luokasta (java.lang.Object).

Perintöpuu

C++ luo aina uuden perintöpuun.

Java käyttää Single inheritance -puuta, koska Java-luokat ovat Java-objektiluokkien lapsia.

9. Selitä julkinen static void main(String args[]) Javassa.

Päätoiminto

Toisin kuin muut ohjelmointikielet, kuten C, C++ jne. Javassa julistimme päätoiminnon julkiseksi staattiseksi tyhjäksi mainoksi (String args[]). Termien merkitykset on mainittu alla:

  1. julkinen : julkinen on pääsyn muokkaaja, joka on vastuussa siitä, kuka voi käyttää elementtiä tai menetelmää ja mikä on raja. Se vastaa päätoiminnon saamisesta maailmanlaajuisesti saataville. Se julkistetaan, jotta JVM voi kutsua sitä luokan ulkopuolelta, koska sitä ei ole nykyisessä luokassa.
  2. staattinen : static on avainsana, jota käytetään, jotta voimme käyttää elementtiä aloittamatta luokkaa, jotta vältetään tarpeeton muistin varaaminen.
  3. mitätön : void on avainsana ja sitä käytetään määrittämään, että menetelmä ei palauta mitään. Koska päätoiminto ei palauta mitään mitä käytämme mitättömiä.
  4. pää : main tarkoittaa, että ilmoitettu funktio on päätoiminto. Se auttaa JVM:ää tunnistamaan, että ilmoitettu toiminto on päätoiminto.
  5. jousiargumentit[] : Se tallentaa Java-komentoriviargumentteja ja on tyyppi java.lang.String class.

10. Mikä on Java String Pool?

Java String Pool on paikka kasamuistissa, johon on tallennettu kaikki ohjelmassa määritellyt merkkijonot. Erillinen paikka pinossa on sinne, jonne merkkijonon tallentava muuttuja on tallennettu. Aina kun luomme uuden merkkijonoobjektin, JVM tarkistaa objektin olemassaolon merkkijonovarannossa. Jos merkkijono on saatavilla poolissa, sama objektiviittaus jaetaan muuttujan kanssa, muuten luodaan uusi objekti.

Java-merkkijono-allas-768

Esimerkki:

String str1='Hello'; // 'Hello' will be stored in String Pool // str1 will be stored in stack memory>

11. Mitä tapahtuu, jos ilmoitamme, ettemme julista pääosaa staattiseksi?

Voimme ilmoittaa päämenetelmän käyttämättä staattista ja saamatta virheitä. Päämenetelmää ei kuitenkaan käsitellä sovelluksen tai ohjelman sisääntulopisteenä.

12. Mitä ovat Java-paketit?

Java-paketit voidaan määritellä toisiinsa liittyvien luokkien, rajapintojen jne. ryhmittelyksi, joka tarjoaa pääsyn suojaukseen ja nimitilan hallintaan.

13. Miksi paketteja käytetään?

Javassa käytetään paketteja nimeämisristiriitojen estämiseen, pääsyn hallintaan sekä luokkien, rajapintojen jne. etsimisen/paikantamisen ja käytön helpottamiseksi.

14. Mitkä ovat Java-pakettien edut?

Pakettien määrittämisessä Javassa on useita etuja.

  • Paketit välttävät nimiristiriitoja.
  • Paketti tarjoaa helpon pääsynhallinnan.
  • Meillä voi olla myös piilotetut luokat, jotka eivät näy ulkopuolella ja joita paketti käyttää.
  • Liittyvät luokat on helpompi paikantaa.

15. Kuinka monen tyyppisiä paketteja Javassa on?

Javassa on kahdenlaisia ​​paketteja

  • Käyttäjän määrittämät paketit
  • Sisäänrakennetut paketit

16. Selitä eri tietotyypit Javassa.

Javassa on kahdenlaisia ​​tietotyyppejä, kuten alla mainitaan:

  1. Primitiivinen tietotyyppi
  2. Ei-primitiivinen tietotyyppi tai objektitietotyyppi

Primitiivinen tietotyyppi: Primitiiviset tiedot ovat yksittäisiä arvoja, joilla ei ole erityisiä ominaisuuksia. Primitiivisiä tietotyyppejä on 8:

  • boolean : tallentaa arvon tosi tai epätosi
  • tavu : tallentaa 8-bittisen etumerkillisen kaksikomplementin kokonaisluvun
  • hiiltyä : tallentaa yhden 16-bittisen Unicode-merkin
  • lyhyt : tallentaa 16-bittisen etumerkillisen kaksikomplementin kokonaisluvun
  • int : tallentaa 32-bittisen etumerkillisen kaksikomplementin kokonaisluvun
  • pitkä : tallentaa 64-bittisen kahden komplementin kokonaisluvun
  • kellua : tallentaa yhden tarkkuuden 32-bittisen IEEE 754 liukuluku
  • kaksinkertainen : tallentaa kaksinkertaisen tarkkuuden 64-bittisen IEEE 754 liukuluku

Ei-primitiivinen tietotyyppi: Viitetietotyypit sisältävät muuttujan arvojen muistiosoitteen, koska se ei pysty tallentamaan arvoja suoraan muistiin. Ei-primitiiviset tyypit mainitaan alla:

  • jouset
  • Array
  • Luokka
  • Esine
  • Käyttöliittymä

17. Milloin tavutietotyyppiä käytetään?

Tavu on 8-bittinen etumerkillä varustettu kaksikomplementti kokonaisluku. Pienin tavujen tukema arvo on -128 ja 127 on suurin arvo. Sitä käytetään olosuhteissa, joissa meidän täytyy säästää muistia ja tarvittavien numeroiden raja on välillä -128 - 127.

18. Voimmeko ilmoittaa osoittimen Javassa?

Ei, Java ei tarjoa Pointer-tukea. Koska Java piti olla turvallisempi, koska mikä osoittimen ominaisuus ei ole Javassa.

19. Mikä on tavutietotyypin oletusarvo Javassa?

Tavutietotyypin oletusarvo Javassa on 0.

20. Mikä on float- ja double-tietotyypin oletusarvo Javassa?

Javalla floatin oletusarvo on 0.0f ja double -arvon 0.0d.

21. Mikä on Javan Wrapper-luokka?

Wrapperilla tarkoitetaan yleensä suurempaa kokonaisuutta, joka kapseloi pienemmän kokonaisuuden. Täällä Javassa kääreluokka on objektiluokka, joka kapseloi primitiiviset tietotyypit.

Primitiiviset tietotyypit ovat niitä, joista voidaan luoda lisää tietotyyppejä. Esimerkiksi kokonaisluvut voivat edelleen johtaa pitkän, tavun, lyhyen jne. rakentamiseen. Toisaalta merkkijono ei voi, joten se ei ole primitiivinen.

Palatakseni kääreluokkaan, Java sisältää 8 kääreluokkaa. Ne ovat Boolean, Byte, Short, Integer, Character, Long, Float ja Double. Lisäksi Javassa voidaan luoda mukautettuja kääreluokkia, joka on samanlainen kuin C-ohjelmointikielen rakenteen käsite. Luomme oman kääreluokkamme tarvittavilla tietotyypeillä.

22. Miksi tarvitsemme käärekursseja?

Kääreluokka on objektiluokka, joka kapseloi primitiiviset tietotyypit, ja tarvitsemme niitä seuraavista syistä:

  1. Wrapper-luokat ovat lopullisia ja muuttumattomia
  2. Tarjoaa menetelmiä, kuten valueOf(), parseInt() jne.
  3. Se tarjoaa autoboxing- ja unboxing-ominaisuuden.

23. Tee ero esiintymän ja paikallisten muuttujien välillä.

Instanssimuuttuja

Paikallinen muuttuja

Ilmoitettu menetelmän ulkopuolelle, menetelmän suoraan kutsuma.

Ilmoitettu menetelmän sisällä.

Sillä on oletusarvo.

Ei oletusarvoa

Sitä voidaan käyttää koko luokan ajan.

Laajuus rajoittuu menetelmään.

24. Mitkä ovat oletusarvot, jotka on määritetty muuttujille ja ilmentymille Javassa?

Javassa Kun emme ole alustaneet ilmentymämuuttujia, kääntäjä alustaa ne oletusarvoilla. Ilmentymien ja muuttujien oletusarvot riippuvat niiden tietotyypeistä. Joitakin yleisiä oletustietotyyppejä ovat:

  • Numeeristen tyyppien (tavu, lyhyt, int, pitkä, float ja double) oletusarvo on 0.
  • Boolen tyypin oletusarvo on false.
  • Objektityyppien (luokat, rajapinnat ja taulukot) oletusarvo on tyhjä.
  • Nolla-merkki, u0000, on merkkityypin oletusarvo.

Esimerkki:

Java
// Java Program to demonstrate use of default values import java.io.*; class GFG {  // static values  static byte b;  static int i;  static long l;  static short s;  static boolean bool;  static char c;  static String str;  static Object object;  static float f;  static double d;  static int[] Arr;  public static void main(String[] args)  {  // byte value  System.out.println('byte value' + b);  // short value  System.out.println('short value' + s);  // int value  System.out.println('int value' + i);  // long value  System.out.println('long value' + l);  System.out.println('boolean value' + bool);  System.out.println('char value' + c);  System.out.println('float value' + f);  System.out.println('double value' + d);  System.out.println('string value' + str);  System.out.println('object value' + object);  System.out.println('Array value' + Arr);  } }>

Lähtö
byte value0 short value0 int value0 long value0 boolean valuefalse char value float value0.0 double value0.0 string valuenull object valuenull Array valuenull>

25. Mikä on luokkamuuttuja?

Javassa luokkamuuttuja (tunnetaan myös staattisena muuttujana) on muuttuja, joka on ilmoitettu luokassa, mutta minkä tahansa metodin, rakentajan tai lohkon ulkopuolella. Luokkamuuttujat ilmoitetaan staattisella avainsanalla, ja ne jaetaan kaikille luokan esiintymille (objekteille) sekä itse luokkalle. Riippumatta siitä, kuinka monta objektia luokasta johdetaan, jokainen luokkamuuttuja olisi olemassa vain kerran.

Esimerkki:

Java
// Java program to demonstrate use of Clas Variable class GFG {  public static int ctr = 0;  public GFG() { ctr++; }  public static void main(String[] args)  {  GFG obj1 = new GFG();  GFG obj2 = new GFG();  GFG obj3 = new GFG();  System.out.println('Number of objects created are '  + GFG.ctr);  } }>

Lähtö
Number of objects created are 3>

26. Mikä on oletusarvo, joka on tallennettu paikallisiin muuttujiin?

Paikallisilla muuttujilla ei ole tallennettu oletusarvoa. Myös primitiivisillä muuttujilla ja objekteilla ei ole oletusarvoja.

27. Selitä ero ilmentymämuuttujan ja luokkamuuttujan välillä.

Instanssimuuttuja: Luokkamuuttuja ilman staattista muuntajaa, joka tunnetaan esiintymämuuttujana, on tyypillisesti kaikkien luokan esiintymien yhteinen. Näillä muuttujilla voi olla erilliset arvot useiden objektien kesken. Ilmentymämuuttujan sisältö on täysin riippumaton objektiinstanssista toisesta, koska ne liittyvät luokan tiettyyn objektiinstanssiin.

Esimerkki:

Java
// Java Program to demonstrate Instance Variable import java.io.*; class GFG {  private String name;  public void setName(String name) { this.name = name; }  public String getName() { return name; }  public static void main(String[] args)  {  GFG obj = new GFG();  obj.setName('John');  System.out.println('Name ' + obj.getName());  } }>

Lähtö
Name John>

Luokkamuuttuja: Luokkamuuttuja-muuttuja voidaan ilmoittaa missä tahansa luokkatasolla avainsanalla staattinen. Näillä muuttujilla voi olla vain yksi arvo, kun niitä käytetään eri objekteihin. Kaikki luokan jäsenet voivat jakaa nämä muuttujat, koska ne eivät ole yhteydessä mihinkään tiettyyn luokan objektiin.

Esimerkki:

Java
// Java Program to demonstrate Class Variable import java.io.*; class GFG {  // class variable  private static final double PI = 3.14159;  private double radius;  public GFG(double radius) { this.radius = radius; }  public double getArea() { return PI * radius * radius; }  public static void main(String[] args)  {  GFG obj = new GFG(5.0);  System.out.println('Area of circle: '  + obj.getArea());  } }>

Lähtö
Area of circle: 78.53975>

28. Mikä on staattinen muuttuja?

Staattista avainsanaa käytetään jakamaan tietyn luokan saman muuttujan tai menetelmän. Staattiset muuttujat ovat muuttujia, jotka kerran on ilmoitettu, muuttujan yksi kopio luodaan ja jaetaan kaikkien luokkatason objektien kesken.

29. Mitä eroa on System.out-, System.err- ja System.in-tiedostoilla?

System.out – Se on PrintStream, jota käytetään merkkien kirjoittamiseen tai voidaan sanoa, että se voi tulostaa tiedot, jotka haluamme kirjoittaa Command Line Interface -konsoliin/päätteeseen.

Esimerkki:

Java
// Java Program to implement // System.out import java.io.*; // Driver Class class GFG {  // Main Function  public static void main(String[] args)  {  // Use of System.out  System.out.println('');  } }>


System.err – Sitä käytetään virheilmoitusten näyttämiseen.

Esimerkki:

Java
// Java program to demonstrate // System.err import java.io.*; // Driver Class class GFG {  // Main function  public static void main(String[] args)  {  // Printing error  System.err.println(  'This is how we throw error with System.err');  } }>

Lähtö:

täysi muoto ide
This is how we throw error with System.err>

Vaikka System.errillä on monia yhtäläisyyksiä, molemmilla on myös melko paljon eroja, tarkistakaamme ne.

System.out System.err

Se tulostaa standardin mukaan järjestelmästä.

Se tulostaa normaalivirheen.

Sitä käytetään enimmäkseen tulosten näyttämiseen konsolissa.

Sitä käytetään enimmäkseen virhetekstien tulostamiseen.

Se antaa tulosteen konsolissa oletusvärillä (mustalla).

Se antaa myös tulosteen konsolissa, mutta useimmat IDE:t antavat sille punaisen värin erottaakseen toisistaan.

System.in – Se on InputStream, jota käytetään syötteiden lukemiseen pääteikkunasta. Emme voi käyttää System.in-tiedostoa suoraan, joten käytämme Scanner-luokkaa syötteiden vastaanottamiseen system.in:n kanssa.

Esimerkki:

Java
// Java Program to demonstrate // System.in import java.util.*; // Driver Class class Main {  // Main Function  public static void main(String[] args)  {  // Scanner class with System.in  Scanner sc = new Scanner(System.in);  // Taking input from the user  int x = sc.nextInt();  int y = sc.nextInt();  // Printing the output  System.out.printf('Addition: %d', x + y);  } }>

Lähtö:

3 4 Addition: 7>

30. Mitä ymmärrät IO-virralla?

2-768

Java tuo erilaisia ​​virtauksia I/O-paketillaan, joka auttaa käyttäjää suorittamaan kaikki syöttö-tulostustoiminnot. Nämä virrat tukevat kaikentyyppisiä objekteja, tietotyyppejä, merkkejä, tiedostoja jne. I/O-toimintojen suorittamiseksi täysin.

31. Mitä eroa on Reader/Writer-luokkahierarkialla ja InputStream/OutputStream-luokkahierarkialla?

Keskeinen ero niiden välillä on, että tavuvirran tiedot luetaan ja kirjoitetaan tulo-/lähtövirtaluokkien mukaan. Hahmot käsitellään Reader- ja Writer-luokilla. Toisin kuin Reader/Writer-luokat, jotka hyväksyvät merkkitaulukoita parametreina, input/output stream -luokan menetelmät hyväksyvät tavutaulukoita. Verrattuna syöttö-/tulostusvirtoihin Reader/Writer-luokat ovat tehokkaampia, käsittelevät kaikkia Unicode-merkkejä ja ovat hyödyllisiä sisäistämiseen. Käytä Reader/Writer-luokkia binääritietojen, kuten kuvien, sijasta, ellet tee niin.

Esimerkki:

Java
// Java Program to demonstrate Reading Writing Binary Data // with InputStream/OutputStream import java.io.*; class GFG {  public static void main(String[] args) {  try {  // Writing binary data to a file using OutputStream  byte[] data = {(byte) 0xe0, 0x4f, (byte) 0xd0, 0x20, (byte) 0xea};  OutputStream os = new FileOutputStream('data.bin');  os.write(data);  os.close();  // Reading binary data from a file using InputStream  InputStream is = new FileInputStream('data.bin');  byte[] newData = new byte[5];  is.read(newData);  is.close();  // Printing the read data  for (byte b : newData) {  System.out.println(b);  }  } catch (IOException e) {  e.printStackTrace();  }  } }>

Lähtö
-32 79 -48 32 -22>

32. Mitkä ovat kaikkien streamien super useimmat luokat?

Kaikki stream-luokat voidaan jakaa kahteen luokkaan, jotka ovat ByteStream-luokat ja CharacterStream-luokat. ByteStream-luokat jaetaan edelleen InputStream- ja OutputStream-luokkiin. CharacterStream-luokat jaetaan myös Reader- ja Writer-luokkiin. SuperMost-luokat kaikille InputStream-luokille on java.io.InputStream ja kaikille lähtövirtaluokille java.io.OutPutStream. Vastaavasti kaikille lukijaluokille super-suurin luokka on java.io.Reader, ja kaikille kirjoittajaluokille se on java.io.Writer.

33. Mitä ovat FileInputStream ja FileOutputStream?

Datan lukemiseen ja kirjoittamiseen Java tarjoaa I/O-virtoja. Stream edustaa tulolähdettä tai tulostuskohdetta, joka voi olla tiedosto, i/o-laite, toinen ohjelma jne. FileInputStream Javassa käytetään tietojen lukemiseen tiedostosta tavuvirtana. Sitä käytetään enimmäkseen binääritietojen, kuten kuvien, äänitiedostojen tai sarjamuotoisten objektien, lukemiseen.

Esimerkki:

File file = new File('path_of_the_file'); FileInputStream inputStream = new FileInputStream(file);>

Javassa, FileOutputStream -toimintoa käytetään tietojen kirjoittamiseen tavu tavulta tiettyyn tiedostoon tai tiedostokuvaajaan. Yleensä raakatavutiedot, kuten kuvat, kirjoitetaan tiedostoon FileOutputStreamin avulla.

Esimerkki:

File file = new File('path_of_the_file'); FileOutputStream outputStream = new FileOutputStream(file);>

34. Mikä on BufferedInputStream- ja BufferedOutputStream-luokkien käytön tarkoitus?

Kun työskentelemme tiedostojen tai streamin parissa, meidän on käytettävä BufferedInputStream- ja BufferedOutputStream-luokkia lisätäksemme ohjelman tulo/lähtötehoa. Nämä molemmat luokat tarjoavat puskurointikyvyn, mikä tarkoittaa, että tiedot tallennetaan puskuriin ennen tiedostoon kirjoittamista tai sen lukemista virrasta. Se myös vähentää sitä, kuinka monta kertaa käyttöjärjestelmämme tarvitsee olla vuorovaikutuksessa verkon tai levyn kanssa. Puskuroinnin avulla ohjelmat voivat kirjoittaa suuren määrän dataa sen sijaan, että ne kirjoittaisivat pieninä paloina. Tämä vähentää myös verkon tai levyn käytön yleiskustannuksia.

BufferedInputStream(InputStream inp); // used to create the bufferinput stream and save the arguments.>
BufferedOutputStream(OutputStream output); // used to create a new buffer with the default size.>

35. Mitä ovat FilterStreamit?

Suoratoistosuodatin tai Suodata virrat palauttaa virran, joka koostuu tämän virran elementeistä, jotka vastaavat annettua predikaattia. Filter()-työskentelyn aikana se ei itse asiassa suorita suodatusta, vaan luo uuden virran, joka kulkiessaan sisältää alkuperäisten virtojen elementit, jotka vastaavat annettua predikaattia.

Esimerkki:

FileInputStream fis =new FileInoutStream('file_path');  FilterInputStream = new BufferedInputStream(fis);>


36. Mikä on I/O-suodatin?

I/O-suodatin, joka määritellään myös Input Output -suodattimeksi, on objekti, joka lukee yhdestä virrasta ja kirjoittaa tietoja tulo- ja lähtölähteisiin. Se käytti java.io-pakettia tämän suodattimen käyttämiseen.

37. Kuinka monella tavalla voit ottaa syötteitä konsolista?

On kaksi tapaa ottaa syötettä Java-konsolista alla mainitulla tavalla:

  1. Komentorivi-argumentin käyttäminen
  2. Puskuroidun lukijaluokan käyttäminen
  3. Konsoliluokan käyttäminen
  4. Skanneriluokan käyttäminen

Alla on kunkin menetelmän käyttöä esittävä ohjelma.

Esimerkki:

Java
// Java Program to implement input // using Command line argument import java.io.*; class GFG {  public static void main(String[] args)  {  // check if length of args array is  // greater than 0  if (args.length > 0) {  System.out.println(  'The command line arguments are:');  // iterating the args array and printing  // the command line arguments  for (String val : args)  System.out.println(val);  }  else  System.out.println('No command line '  + 'arguments found.');  } } // Use below commands to run the code // javac GFG.java // java Main techcodeview.com>
Java
// Java Program to implement // Buffer Reader Class import java.io.*; class GFG {  public static void main(String[] args)  throws IOException  {  // Enter data using BufferReader  BufferedReader read = new BufferedReader(  new InputStreamReader(System.in));  // Reading data using readLine  String x = read.readLine();  // Printing the read line  System.out.println(x);  } }>
Java
// Java program to implement input // Using Console Class public class GfG {  public static void main(String[] args)  {  // Using Console to input data from user  String x = System.console().readLine();  System.out.println('You entered string ' + x);  } }>
Java
// Java program to demonstrate // working of Scanner in Java import java.util.Scanner; class GfG {  public static void main(String args[])  {  // Using Scanner for Getting Input from User  Scanner in = new Scanner(System.in);  String str = in.nextLine();  System.out.println('You entered string ' + str);  } }>

Lähtö:

techcodeview.com>

38. Ero printin, println:n ja printf:n käytössä.

print, println ja printf kaikkia käytetään elementtien tulostamiseen, mutta print tulostaa kaikki elementit ja kohdistin pysyy samalla rivillä. println siirtää kohdistimen seuraavalle riville. Ja printf:n kanssa voimme käyttää myös muototunnisteita.

39. Mitä ovat operaattorit?

Operaattorit ovat erikoistyyppisiä symboleja, joita käytetään joidenkin muuttujien ja arvojen operaatioiden suorittamiseen.

40. Kuinka monen tyyppisiä operaattoreita on saatavilla Javassa?

Alla on mainittu kaikentyyppiset Java-operaattorit:

  1. Aritmeettiset operaattorit
  2. Yksittäiset operaattorit
  3. Tehtäväoperaattori
  4. Relaatiooperaattorit
  5. Loogiset operaattorit
  6. Kolmiosainen operaattori
  7. Bittikohtaiset operaattorit
  8. Vuorooperaattorit
  9. operaattorin esimerkki

Postfix-operaattoreita pidetään Java-operaattorien ensisijaisuuden korkeimpana prioriteettina.

41. Selitä ero>>- ja>>>-operaattoreiden välillä.

Operaattorit, kuten>> ja>>>, näyttävät olevan samoja, mutta toimivat hieman eri tavalla.>>-operaattori siirtää etumerkkibittejä ja>>>-operaattoria käytetään nollalla täytettyjen bittien siirtämiseen pois.

Esimerkki:

Java
// Java Program to demostrate //>> ja>>> operaattorit tuovat java.io.*; // Ohjainluokka GFG { public static void main(String[] args) { int a = -16, b = 1;  // Kohteen>> System.out.println(a >> b) käyttö;  a = -17;  b = 1;  // Tiedoston>>> System.out.println(a >>> b) käyttö;  } }>

Lähtö
-8 2147483639>

42. Mikä Java-operaattori on oikea assosiatiivinen?

On vain yksi operaattori, joka on oikea assosiatiivinen, joka on = operaattori.

43. Mikä on pisteoperaattori?

Javan Dot-operaattorilla pääsee käsiksi luokkaobjektien ilmentymämuuttujiin ja menetelmiin. Sitä käytetään myös luokkiin ja alipaketteihin pääsemiseen paketista.

44. Mikä on kovarianttituottotyyppi?

Kovariantin palautustyyppi määrittää, että palautustyyppi voi vaihdella samaan suuntaan kuin alaluokka. Lapsiluokassa voi olla eri palautustyyppejä ohittavalle menetelmälle, mutta lapsen palautustyypin tulee olla ylätason palautustyypin alatyyppi ja sen vuoksi ohitusmenetelmästä tulee muunnelma palautustyypin suhteen.

Käytämme kovarianttipalautustyyppiä seuraavista syistä:

  • Välttää luokkahierarkiassa esiintyvät hämmentävät tyyppiset heitot ja tekee koodista luettavan, käyttökelpoisen ja ylläpidettävän.
  • Antaa vapauden käyttää tarkempia palautustyyppejä, kun menetelmiä ohitetaan.
  • Auta estämään ajonaikaisia ​​ClassCastExceptions-tapauksia palautuksissa.

45. Mikä on ohimenevä avainsana?

Transient-avainsanaa käytetään serialisoinnin yhteydessä, jos emme halua tallentaa tietyn muuttujan arvoa tiedostoon. Kun JVM löytää ohimenevän avainsanan, se jättää huomioimatta muuttujan alkuperäisen arvon ja tallentaa kyseisen muuttujan tietotyypin oletusarvon.

46. ​​Mitä eroa on menetelmien sleep() ja wait() välillä?

Nukkua()

Odota()

Sleep()-menetelmä kuuluu säieluokkaan.

Wait()-metodi kuuluu objektiluokkaan.

Lepotila ei vapauta lukkoa, jota nykyinen lanka pitää.

wait() vapauta lukko, jolloin muut säikeet voivat hankkia sen.

Tämä menetelmä on staattinen menetelmä.

Tämä menetelmä ei ole staattinen menetelmä.

Sleep() ei anna keskeytettyä poikkeusta.InterruptedException näkyy, jos lanka katkeaa odottaessa.

Käytetään pääasiassa säikeen viivyttämiseen tietyn ajan.

Käytetään pääasiassa ketjun keskeyttämiseen, kunnes toinen säie ilmoittaa asiasta.

Sleep() sisältää kaksi ylikuormitettua menetelmää:

  • uni(pitkä millis)millis: millisekuntia
  • uni (pitkät millit, int nanot) nanot: nanosekuntia

Wait() sisältää kolme ylikuormitettua menetelmää:

  • odota()
  • odota (pitkä aikakatkaisu)
  • odota (pitkä aikakatkaisu, int nanos)

47. Mitä eroja Stringillä ja StringBufferilla on?

merkkijono

StringBuffer

Merkkisarjan tallennus.Tarjoaa toimintoja merkkijonojen kanssa työskentelemiseen.
Se on muuttumaton.Se on muuttuva (voidaan muokata ja niille voidaan suorittaa muita merkkijonotoimintoja).
Ei säiettäoperaatioita merkkijonossa.Se on säikeen turvallinen (kaksi säiettä ei voi kutsua StringBufferin menetelmiä samanaikaisesti)

48. Mitä eroja on StringBufferin ja StringBuilderin välillä?

StringBuffer

StringBuilder

StringBuffer tarjoaa toimintoja merkkijonojen kanssa työskentelemiseen.StringBuilder on luokka, jota käytetään muuttuvan merkkijonon rakentamiseen.
Se on säikeen turvallinen (kaksi säiettä ei voi kutsua StringBufferin menetelmiä samanaikaisesti)Se ei ole säikeen turvallinen (kaksi säiettä voi kutsua menetelmiä samanaikaisesti)
Suhteellisen hidas, koska se on synkronoitu.Koska sitä ei ole synkronoitu, toteutus on nopeampaa

49. Kumpaa merkkijonoa tai merkkijonopuskuria tulisi suosia, kun tietoihin on tehtävä paljon päivityksiä?

Merkkijono on suositeltavampi kuin StringBuffer, koska StringBuilder on nopeampi kuin StringBuffer, mutta StringBuffer-objektit ovat suositeltavia, koska se tarjoaa enemmän säiettä turvallisuutta.


50. Miksi StringBufferia kutsutaan muuttuvaksi?

StringBuffer-luokkaa Javassa käytetään edustamaan muuttuvaa merkkijonoa. Se tarjoaa vaihtoehdon muuttumattomalle String-luokalle antamalla sinun muuttaa merkkijonon sisältöä luomatta jatkuvasti uusia objekteja. Muuttuvat (muokattavat) merkkijonot luodaan StringBuffer-luokan avulla. StringBuffer-luokka Javassa on identtinen String-luokan kanssa paitsi, että se on vaihdettavissa.

Esimerkki:

Java
// Java Program to demonstrate use of stringbuffer public class StringBufferExample {  public static void main(String[] args)  {  StringBuffer s = new StringBuffer();  s.append('Geeks');  s.append('for');  s.append('Geeks');  String message = s.toString();  System.out.println(message);  } }>

Lähtö
techcodeview.com>

51. Miten merkkijonon luominen new():lla eroaa literaalin luomisesta?

Merkkijono käyttäen new() eroaa literaalista, koska kun ilmoitamme merkkijonon, se tallentaa elementit pinomuistiin, kun taas kun se on ilmoitettu käyttämällä new() -funktiota, se varaa dynaamisen muistin kasamuistiin. Objekti luodaan kasomuistiin, vaikka sama sisältöobjekti olisi läsnä.

Syntaksi:

String x = new String('ABC');>


3-768

52. Mikä on taulukko Javassa?

Java-taulukko on tietorakenne, jota käytetään tallentamaan kiinteäkokoinen samantyyppisten elementtien sarja. Taulukon elementteihin pääsee käsiksi niiden indeksillä, joka alkaa 0:sta ja jatkuu miinus 1:n pituuteen asti. Javalla taulukon määritys tehdään hakasulkeiden avulla ja koko määritetään myös ilmoituksen yhteydessä.

Syntaksi:

int[] Arr = new int[5];>

53. Mille muistitaulukoille luodaan Java?

Java-taulukot luodaan kasamuistiin. Kun taulukko luodaan uuden avainsanan avulla, kasaan varataan muistia taulukon elementtien tallentamiseen. Javassa keon muistia hallitsee Java Virtual Machine (JVM), ja se jaetaan myös Java-ohjelman kaikkien säikeiden kesken. Muisti, joka ei ole enää ohjelman käytössä, JVM käyttää roskakeräystä muistin palauttamiseen. Java-taulukot luodaan dynaamisesti, mikä tarkoittaa, että taulukon koko määräytyy ohjelman ajon aikana. Taulukon koko määritetään taulukon määrityksen yhteydessä, eikä sitä voi muuttaa, kun taulukko on luotu.

54. Mitkä ovat taulukon tyypit?

Matriiseja on kahta tyyppiä, eli primitiiviset taulukot ja viittaustaulukot.

  • Yksiulotteiset taulukot: Matriisit, joilla on vain yksi ulottuvuus, eli kokonaislukujen joukko tai merkkijonojoukko, tunnetaan yksiulotteisina taulukoina.

4-768

Syntaksi:

data_type[] Array_Name = new data_type[ArraySize];>
  • Moniulotteiset taulukot: Taulukot, joissa on kaksi tai useampia ulottuvuuksia, kuten kaksi- tai kolmiulotteiset taulukot.

55. Miksi Java-taulukkoindeksi alkaa nollalla?

Taulukon indeksi tarkoittaa etäisyyttä taulukon alusta. Ensimmäisen elementin etäisyys on siis 0, joten aloitusindeksi on 0.

Syntaksi:

[Base Address + (index * no_of_bytes)]>

56. Mitä eroa on int array[]- ja int[]-taulukoilla?

Sekä int array[] että int[] taulukkoa käytetään ilmaisemaan kokonaislukujen taulukko javassa. Ainoa ero niiden välillä on niiden syntaksissa, eikä niiden välillä ole toiminnallisia eroja.

int arr[] is a C-Style syntax to declare an Array.>
int[] arr is a Java-Style syntax to declare an Array.>

Yleensä kuitenkin suositellaan Java-tyylisen syntaksin käyttöä taulukon ilmoittamiseen. Koska se on helppo lukea ja ymmärtää, se on myös johdonmukaisempi muiden Java-kielisten rakenteiden kanssa.

57. Miten taulukko kopioidaan Javassa?

Javassa on useita tapoja kopioida Array vaatimusten mukaan.

  • clone() -menetelmä Javassa: Tätä Java-menetelmää käytetään luomaan matala kopio annetusta taulukosta, mikä tarkoittaa, että uusi taulukko jakaa saman muistin kuin alkuperäinen taulukko.
int[] Arr = { 1, 2, 3, 5, 0}; int[] tempArr = Arr.clone();>
  • arraycopy() -menetelmä: Luodaksesi syvän kopion taulukosta voimme käyttää tätä menetelmää, joka luo uuden taulukon samoilla arvoilla kuin alkuperäinen taulukko.
int[] Arr = {1, 2, 7, 9, 8}; int[] tempArr = new int[Arr.length]; System.arraycopy(Arr, 0, tempArr, 0, Arr.length);>
  • copyOf() -menetelmä: Tällä menetelmällä luodaan uusi taulukko tietyllä pituudella ja kopioidaan alkuperäisen taulukon sisältö uuteen taulukkoon.
int[] Arr = {1, 2, 4, 8}; int[] tempArr = Arrays.copyOf(Arr, Arr.length);>
  • copyOfRange() -menetelmä: Tämä menetelmä on hyvin samanlainen kuin Java:n copyOf()-menetelmä, mutta tämän menetelmän avulla voimme myös määrittää alkuperäisestä taulukosta kopioitavien elementtien alueen.
int[] Arr = {1, 2, 4, 8}; int[] temArr = Arrays.copyOfRange(Arr, 0, Arr.length);>

58. Mitä ymmärrät rosoisella taulukolla?

Javassa rosoinen taulukko on vain kaksiulotteinen taulukko, jossa jokaisella taulukon rivillä voi olla eri pituus. Koska kaikki 2-d-taulukon rivit ovat saman pituisia, rosoinen taulukko mahdollistaa enemmän joustavuutta kunkin rivin koossa. Tämä ominaisuus on erittäin hyödyllinen olosuhteissa, joissa data on eripituinen tai kun muistin käyttö on optimoitava.

Syntaksi:

int[][] Arr = new int[][] {  {1, 2, 8},   {7, 5},   {6, 7, 2, 6} };>

59. Onko mahdollista tehdä taulukosta haihtuva?

Javassa ei ole mahdollista tehdä haihtuvaa. Javan haihtuvia avainsanoja voidaan käyttää vain yksittäisiin muuttujiin, mutta ei taulukoihin tai kokoelmiin. Muuttujan arvo luetaan aina päämuistista ja kirjoitetaan siihen, kun se määritellään haihtuvaksi sen sijaan, että se olisi välimuistissa säikeen paikallisessa muistissa. Tämä helpottaa sen varmistamista, että kaikki muuttujaa käyttävät säikeet näkevät siihen tehdyt muutokset.

60. Mitkä ovat taulukon edut ja haitat?

5-768

Arrayiden edut ovat:

  • Matriisit mahdollistavat suoran ja tehokkaan pääsyn mihin tahansa kokoelman elementtiin. Matriisin elementteihin pääsee käsiksi O(1)-operaatiolla, mikä tarkoittaa, että sen tekemiseen tarvittava aika on vakio ja riippumaton taulukon koosta.
  • Tiedot voidaan tallentaa tehokkaasti muistiin taulukoiden avulla. Matriisin koko tiedetään käännöshetkellä, koska sen elementit on tallennettu vierekkäisille muistialueille.
  • Koska tiedot on tallennettu vierekkäisille muistialueille, taulukot tarjoavat nopean tiedonhaun.
  • Taulukot on helppo toteuttaa ja ymmärtää, joten ne ovat ihanteellinen valinta aloittelijoille, jotka oppivat tietokoneohjelmointia.

Arrayiden haitat ovat:

  • Taulukot luodaan ennalta määrätyllä koolla, joka valitaan sillä hetkellä. Tämä tarkoittaa, että jos taulukon kokoa on laajennettava, on tehtävä uusi taulukko ja tiedot on kopioitava vanhasta taulukosta uuteen, mikä voi viedä paljon aikaa ja muistia.
  • Matriisin muistitilassa voi olla käyttämätöntä muistitilaa, jos taulukko ei ole täysin varattu. Jos muistat huonosti, tämä voi olla ongelma.
  • Verrattuna muihin tietorakenteisiin, kuten linkitettyihin luetteloihin ja puihin, taulukot voivat olla jäykkiä kiinteän koonsa ja kehittyneiden tietotyyppien rajallisen tuen vuoksi.
  • Koska taulukon kaikkien elementtien on oltava samaa tietotyyppiä, se ei tue monimutkaisia ​​tietotyyppejä, kuten objekteja ja rakenteita.

61. Mikä on olio-paradigma?

Paradigma tarkoittaa kirjaimellisesti mallia tai menetelmää. Ohjelmointiparadigmat ovat menetelmiä ratkaista ohjelma, joka on neljää tyyppiä, nimittäin pakottavaa, loogista, toiminnallista ja oliosuuntautunutta. Kun objekteja käytetään peruskokonaisuuksina, joihin menetelmiä sovelletaan, suoritetaan kapselointi- tai periytymistoimintoja, sitä kutsutaan olio-paradigmaksi.

62. Mitkä ovat OOP:n pääkäsitteet Javassa?

OOP:n pääkäsitteet Javassa on mainittu alla:

  • Perintö
  • Polymorfismi
  • Abstraktio
  • Kapselointi

63. Mitä eroa on olio-ohjelmointikielellä ja oliopohjaisella ohjelmointikielellä?

Olio-ohjelmointikieli

Oliopohjainen ohjelmointikieli

Olio-ohjelmointikieli kattaa laajemmat käsitteet, kuten periytymisen, polymorfismin, abstraktion jne.Oliopohjaisen ohjelmoinnin laajuus rajoittuu objektien käyttöön ja kapselointiin.
Se tukee kaikkia sisäänrakennettuja objektejaSe ei tue kaikkia sisäänrakennettuja objekteja
Esimerkkejä: Java, C# jne.Esimerkkejä: Java-skripti, visuaaliset perusteet jne.

64. Miten 'new'-operaattori eroaa Java-operaattorista 'newInstance()'?

uutta operaattoria käytetään objektien luomiseen, mutta jos haluamme päättää luotavan objektin tyypin ajon aikana, emme voi käyttää uutta operaattoria. Tässä tapauksessa meidän on käytettävä newInstance() -menetelmä .

65. Mitä ovat Javan luokat?

Javassa luokat ovat kokoelma objekteja, joilla on samanlaiset ominaisuudet ja attribuutit. Luokat edustavat suunnitelmaa tai mallia, josta objektit luodaan. Luokat eivät ole reaalimaailman kokonaisuuksia, vaan ne auttavat meitä luomaan objekteja, jotka ovat todellisia kokonaisuuksia.

66. Mitä eroa on staattisen (luokka)menetelmän ja ilmentymämenetelmän välillä?

Staattinen (luokka) menetelmä

Instanssimenetelmä

Staattinen menetelmä liittyy luokkaan eikä objektiin.

Ilmentymämenetelmä liittyy objektiin luokan sijaan.

Staattisia menetelmiä voidaan kutsua käyttämällä vain luokan nimeä luomatta luokan esiintymää.

Ilmentymämenetelmä voidaan kutsua luokan tietylle ilmentymälle käyttämällä objektiviittausta.

Staattisilla menetelmillä ei ole pääsyä Tämä avainsana .

Instanssimenetelmillä on pääsy Tämä avainsana .

Tällä menetelmällä voidaan käyttää vain luokan staattisia jäseniä

Tämä menetelmä voi käyttää sekä staattisia että ei-staattisia luokan menetelmiä.

67. Mikä tämä avainsana on Javassa?

6

'tämä' on avainsana, jota käytetään viittaamaan muuttujaan, joka viittaa nykyiseen objektiin.

68. Mitä ovat lyhyet pääsymääritykset ja pääsymääritteiden tyypit?

Access_modifiers_in_java-768

Java Access Specifiers auttaa rajoittamaan luokan, rakentajan, muuttujan, menetelmän tai datajäsenen laajuutta. Javassa on neljä alla mainittua käyttöoikeusmäärityksiä:

  1. Julkinen
  2. Yksityinen
  3. Suojattu
  4. Oletus

69. Mikä on instanssimuuttujaksi määritellyn objektiviittauksen alkuarvo?

Instanssimuuttujaksi määritellyn objektiviittauksen alkuarvo on NULL-arvo.

70. Mikä on esine?

Objekti on tosielämän kokonaisuus, johon liittyy tiettyjä ominaisuuksia ja menetelmiä. Objekti määritellään myös luokan esiintymäksi. Objekti voidaan ilmoittaa käyttämällä uutta avainsanaa.

71. Mitä eri tapoja luoda objekteja Javassa?

Menetelmät objektien luomiseksi Javassa on mainittu alla:

  1. Uuden avainsanan käyttö
  2. Uuden esiintymän käyttö
  3. Clone()-menetelmän käyttäminen
  4. Deserialisoinnin käyttö
  5. Käyttämällä Constructor-luokan newInstance()-metodia

Lisätietoja menetelmistä objektien luomiseksi Javassa on osoitteessa Tämä artikkeli .

72. Mitkä ovat objektikloonauksen edut ja haitat?

Objektien kloonauksen käytöllä on monia etuja ja haittoja, kuten alla mainitaan:

Edut:

  • Javassa '='-määritysoperaattoria ei voi käyttää kloonaamiseen, koska se luo yksinkertaisesti kopion viitemuuttujista. Sellaisen ristiriidan voittamiseksi voidaan käyttää Object-luokan clone()-menetelmää osoitusoperaattorin yli.
  • Clone()-menetelmä on Object-luokan suojattu menetelmä, mikä tarkoittaa, että vain Employee-luokka voi kloonata Työntekijä-objekteja. Tämä tarkoittaa, että mikään muu luokka kuin Employee ei voi kloonata Työntekijä-objekteja, koska se ei tunne Employee-luokan attribuutteja.
  • Koodin koko pienenee, kun toisto vähenee.
  • Mahdollistaa replikoinnin (ikään kuin prototyyppikuvio). Kunkin kentän manuaalinen alustaminen luo suuren koodin, jos objekti on monimutkainen, se on nopeampi kloonauksella.

Haitat:

  • Koska Object.clone()-metodi on suojattu, meidän on tarjottava oma klooni() ja kutsuttava siitä epäsuorasti Object.clone().
  • Jos meillä ei ole menetelmiä, meidän on tarjottava kloonattava käyttöliittymä, koska meidän on annettava JVM-tiedot, jotta voimme suorittaa kloonin() objektillemme. Jos ei, emme voi kloonata kloonata kentistä matalia kopioita, jos palauta vain super.clone() kloonimenetelmästä, joka voi olla ongelmallinen.

73. Mitä hyötyä on tämän siirtämisestä menetelmään nykyisen luokkaobjektin sijaan?

Tämän siirtämisessä menetelmään nykyisen luokkaobjektin sijaan on joitain etuja:

  • tämä on viimeinen muuttuja, jonka vuoksi tätä ei voi antaa millekään uudelle arvolle, kun taas nykyinen luokkaobjekti ei ehkä ole lopullinen ja sitä voidaan muuttaa.
  • tätä voidaan käyttää synkronoidussa lohkossa.

74. Mikä on rakentaja?

Constructor on erityinen menetelmä, jota käytetään objektien alustamiseen. Konstruktoria kutsutaan, kun objekti luodaan. Rakentajan nimi on sama kuin luokassa.

Esimerkki:

// Class Created class XYZ{  private int val;    // Constructor  XYZ(){  val=0;  } };>

75. Mitä tapahtuu, jos et tarjoa rakentajaa luokassa?

Jos et tarjoa rakentajaa luokassa Javassa, kääntäjä luo automaattisesti oletuskonstruktorin ilman argumentteja ja toimintoa, joka on oletuskonstruktori.

76. Kuinka monen tyyppisiä konstruktoreita Javassa käytetään?

Javassa on kahdenlaisia ​​rakentajia, kuten alla mainitaan:

  1. Oletuskonstruktori
  2. Parametrisoitu konstruktori

Oletuskonstruktori: Se on tyyppi, joka ei hyväksy mitään parametrin arvoa. Sitä käytetään objektin attribuuttien alkuarvojen asettamiseen.

class_Name(); // Default constructor called>

Parametrisoitu konstruktori: Se on rakentajan tyyppi, joka hyväksyy parametrit argumentteina. Näitä käytetään arvojen osoittamiseen ilmentymämuuttujille objektien alustuksen aikana.

class_Name(parameter1, parameter2......); // All the values passed as parameter will be // allocated accordingly>

77. Mikä on oletuskonstruktorin tarkoitus?

Rakentajat auttavat luomaan luokan esiintymiä tai niiden voidaan sanoa luovan luokan objekteja. Konstruktoria kutsutaan objektien alustuksen aikana. Oletuskonstruktori on rakentajan tyyppi, joka ei hyväksy mitään parametreja, joten mikä tahansa objektien ominaisuuksille annettu arvo katsotaan oletusarvoiksi.

78. Mitä ymmärrät kopiokonstruktorilla Javassa?

Kopiokonstruktori on konstruktorityyppi, jossa annamme toisen objektin parametriksi, koska kummankin objektin ominaisuudet näyttävät samalta, siksi näyttää siltä, ​​​​että rakentajat luovat kopion objektista.

79. Missä ja miten voit käyttää yksityistä rakentajaa?

Yksityistä rakentajaa käytetään, jos et halua minkään muun luokan instantoivan objektia aliluokkien välttämiseksi. Käytä yksityistä konstruktoria voidaan nähdä toteutettuna esimerkissä.

Esimerkki:

Java
// Java program to demonstrate implementation of Singleton // pattern using private constructors. import java.io.*; class GFG {  static GFG instance = null;  public int x = 10;  // private constructor can't be accessed outside the  // class  private GFG() {}  // Factory method to provide the users with instances  static public GFG getInstance()  {  if (instance == null)  instance = new GFG();  return instance;  } } // Driver Class class Main {  public static void main(String args[])  {  GFG a = GFG.getInstance();  GFG b = GFG.getInstance();  a.x = a.x + 10;  System.out.println('Value of a.x = ' + a.x);  System.out.println('Value of b.x = ' + b.x);  } }>

Lähtö
Value of a.x = 20 Value of b.x = 20>

80. Mitä eroja konstruktorien ja menetelmien välillä on?

Java-konstruktoreita käytetään objektien alustamiseen. Luomisen aikana rakentajia pyydetään asettamaan attribuutteja objekteille lukuun ottamatta näitä muutamia peruseroja niiden välillä:

  1. Konstruktoreita kutsutaan vain, kun objekti luodaan, mutta muita menetelmiä voidaan kutsua useita kertoja objektin elinkaaren aikana.
  2. Rakentajat eivät palauta mitään, kun taas muut menetelmät voivat palauttaa mitä tahansa.
  3. Konstruktoreita käytetään alkutilan määrittämiseen, mutta menetelmiä käytetään tiettyjen toimien suorittamiseen.

81. Mikä on käyttöliittymä?

Java-käyttöliittymä on kokoelma staattisia lopullisia muuttujia ja abstrakteja menetelmiä, jotka määrittelevät sopimuksen tai sopimuksen linkitetyistä luokista. Mikä tahansa luokka, joka toteuttaa rajapinnan, vaaditaan tietyn menetelmäjoukon toteuttamiseksi. Se määrittelee käyttäytymisen, jota luokan on näytettävä, mutta ei yksityiskohtia siitä, kuinka se tulisi toteuttaa.

Syntaksi:

interface  {  // constant fields  // methds that are abstract by default }>

Esimerkki:

Java
// Java Program to demonstrate Interface import java.io.*; interface Shape {  double getArea();  double getPerimeter(); } class Circle implements Shape {  private double radius;  public Circle(double radius) { this.radius = radius; }  public double getArea()  {  return Math.PI * radius * radius;  }  public double getPerimeter()  {  return 2 * Math.PI * radius;  } } class GFG {  public static void main(String[] args)  {  Circle circle = new Circle(5.0);  System.out.println('Area of circle is '  + circle.getArea());  System.out.println('Perimeter of circle is'  + circle.getPerimeter());  } }>

Lähtö
Area of circle is 78.53981633974483 Perimeter of circle is31.41592653589793>

82. Anna joitain käyttöliittymän ominaisuuksia.

Java-ohjelmointikielen käyttöliittymä määritellään abstraktiksi tyypiksi, jota käytetään määrittämään luokan käyttäytymistä. Java-käyttöliittymä on käyttäytymissuunnitelma. Java-käyttöliittymä sisältää staattisia vakioita ja abstrakteja menetelmiä.

Käyttöliittymän ominaisuudet on mainittu alla:

  • Käyttöliittymä voi auttaa saavuttamaan täydellisen abstraktion.
  • Mahdollistaa useiden perintöjen käytön Javassa.
  • Mikä tahansa luokka voi toteuttaa useita rajapintoja, vaikka yksi luokka voi laajentaa vain yhtä luokkaa.
  • Sitä käytetään myös löysän liitoksen aikaansaamiseen.

83. Mikä on merkkirajapinta?

Liitäntä tunnistetaan tyhjäksi rajapinnaksi (ei kenttää tai menetelmiä), sitä kutsutaan merkkirajapinnaksi. Esimerkkejä merkkiliitännöistä ovat sarjoitettavat, kloonattavat ja etäkäyttöliittymät.

84. Mitä eroja on abstraktin luokan ja käyttöliittymän välillä?

Abstract-class-and-interface-768

Abstrakti luokka

Käyttöliittymäluokka

Abstraktista luokasta löytyy sekä abstrakteja että ei-abstrakteja menetelmiä.

Käyttöliittymä sisältää vain abstrakteja menetelmiä.

Abstract Class tukee Final-menetelmiä.

Käyttöliittymäluokka ei tue Final-menetelmiä.

Abstract-luokka ei tue moniperintöä.

Interface Class tukee useita perintöjä.

Abstrakti avainsanaa käytetään ilmoittamaan abstrakti luokka.

Liitäntäavainsanaa käytetään rajapintaluokan ilmoittamiseen.

laajentaa avainsanaa käytetään laajentamaan abstraktiluokkaa. toteuttaa Avainsanaa käytetään käyttöliittymän toteuttamiseen.

Abstract Class sisältää jäseniä, kuten suojattu, yksityinen jne.

Kaikki luokan jäsenet ovat oletuksena julkisia.

85. Mitä tarkoitat tietojen kapseloinnilla?

Kapselointi Java-300:aan

Tietojen kapselointi on käsite OOPS-ominaisuuksista ja luokkien ominaisuuksista, jotka käyttöliittymä on sidottu yhteen. Pohjimmiltaan se niputtaa tiedot ja menetelmät, jotka toimivat kyseisellä tiedolla yhdessä yksikössä. Kapselointi saavutetaan ilmoittamalla luokan ilmentymämuuttujat yksityisiksi, mikä tarkoittaa, että niihin pääsee vain luokassa.

86. Mitkä ovat Java-kapseloinnin edut?

Java-kapseloinnin edut mainitaan alla:

  1. Tietojen piilottaminen: se on tapa rajoittaa datajäsentemme pääsyä piilottamalla toteutustiedot. Kapselointi tarjoaa myös tavan tietojen piilottamiseen. Käyttäjällä ei ole aavistustakaan luokan sisäisestä toteutuksesta.
  2. Lisääntynyt joustavuus: Voimme tehdä luokan muuttujista vain luku - tai vain kirjoitettavia tarpeidemme mukaan.
  3. Uudelleenkäytettävyys: Kapselointi parantaa myös uudelleenkäytettävyyttä ja on helppo muuttaa uusien vaatimusten mukaan.
  4. Koodin testaus on helppoa: Koodi on helppo testata yksikkötestausta varten.

87. Mikä on kapseloinnin ensisijainen hyöty?

Javan kapseloinnin tärkein etu on sen kyky suojata objektin sisäistä tilaa ulkoisilta muutoksilta tai pääsyltä. Se on tapa piilottaa luokan toteutustiedot ulkopuolelta ja paljastaa vain julkinen käyttöliittymä, jota voidaan käyttää vuorovaikutuksessa luokan kanssa. Päähyöty on tarjota tapa hallita ja hallita kohteen tilaa ja käyttäytymistä sekä samalla suojata sitä muutoksilta ja luvattomalta käytöltä.

Esimerkki:

Java
// Java Program to demonstrate use of Encapsulation import java.io.*; class Person {  private String Name;  private int age;  public String getName() { return Name; }  public void setName(String Name) { this.Name = Name; }  public int getAge() { return age; }  public void setAge(int age) { this.age = age; } } // Driver class class GFG {  // main function  public static void main(String[] args)  {  Person p = new Person();  p.setName('Rohan');  p.setAge(29);  System.out.println('Name is ' + p.getName());  System.out.println('Age is ' + p.getAge());  } }>

Lähtö
Name is Rohan Age is 29>

88. Mitä tarkoitat yhdistämisellä?

Aggregointi Javassa

Aggregaatio on termi, joka liittyy kahden luokan väliseen suhteeseen, jota voidaan parhaiten kuvata has-a -suhteeksi. Tämä on yhdistyksen erikoistuin versio. Se on yksisuuntainen assosiaatio, mikä tarkoittaa, että se on yksisuuntainen suhde. Se sisältää viittauksen toiseen luokkaan ja sen sanotaan omistavan tuon luokan.

89. Mikä on IS-A-suhde OOPs Javassa?

'IS-A' on eräänlainen suhde OOPs Javassa, jossa yksi luokka perii toisen luokan.

90. Määritä perintö.

Kun alaluokkaan kuuluva objekti hankkii kaikki superluokasta peräisin olevan emo-objektin ominaisuudet ja käyttäytymisen, sitä kutsutaan periytymiseksi. Luokan sisällä olevaa luokkaa kutsutaan alaluokiksi ja jälkimmäistä superluokkaksi. Alaluokan tai alaluokan sanotaan olevan spesifinen, kun taas yläluokka tai yläluokka on yleinen. Periytys mahdollistaa koodin uudelleenkäytettävyyden.

91. Mitä erilaisia ​​perintötyyppejä on Javassa?

Periytys on menetelmä, jolla lapsiluokka voi periä Super- tai Parent-luokan piirteet. Javassa perintöä on neljää tyyppiä:

  • Yksittäinen perintö: Kun lapsi tai alaluokka laajentaa vain yhtä superluokkaa, sen tiedetään olevan yksiperäinen. Yhden vanhemman luokan ominaisuudet välitetään alatason luokkaan.
  • Monitasoinen perintö: Kun lapsi tai alaluokka laajentaa mitä tahansa muuta alaluokkaa, syntyy periytymishierarkia, joka tunnetaan monitasoisena periytymisenä. Toisin sanoen yhdestä alaluokasta tulee toisen yläluokka.
  • Hierarkkinen perintö: Kun useat alaluokat ovat peräisin samasta pääluokasta, kutsutaan hierarkkista periytymistä. Toisin sanoen luokassa, jolla on yksi vanhempi, on useita alaluokkia.
  • Moniperintö: Kun alaluokka perii useilta yläluokilta, sitä kutsutaan moniperinnoksi. Javassa se tukee vain rajapintojen useaa periytymistä, ei luokkia.

92. Mikä on moniperintö? Tukeeko Java sitä?

Olio-käsitteen komponentti, joka tunnetaan nimellä useat periytykset, sallii luokan periä ominaisuuksia monilta pääluokilta. Kun menetelmiä, joilla on sama allekirjoitus, on sekä ylä- että alaluokissa, syntyy ongelma. Metodin kutsuja ei voi määrittää kääntäjälle, mikä luokkamenetelmä tulee kutsua tai edes mikä luokkametodi tulee asettaa etusijalle.

Huomautus: Java ei tue moniperintöä

Esimerkki:

Java
// Java Program to show multiple Inheritance import java.io.*; interface Animal {  void eat(); } interface Mammal {  void drink(); } class Dog implements Animal, Mammal {  public void eat() { System.out.println('Eating'); }  public void drink() { System.out.println('Drinking'); }  void bark() { System.out.println('Barking'); } } class GFG {  public static void main(String[] args)  {  Dog d = new Dog();  d.eat();  d.drink();  d.bark();  } }>

Lähtö
Eating Drinking Barking>

93. Miten C++:n periytyminen eroaa Javasta?

Periytys C++:ssa

Javalla perinnöllisyys

C++ antaa käyttäjän periä useita luokkia.Java ei tue useita perintöjä.
Kun luokka luodaan C++:ssa, se ei peri objektiluokalta, vaan on olemassa yksinään.Javalla sanotaan aina olevan yksittäinen perintö, koska kaikki luokat perivät tavalla tai toisella objektiluokasta.

94. Onko perinnön käytöllä rajoituksia?

Kyllä, Perinnön käytöllä Javassa on rajoituksia, koska periytymisen takia voidaan periä kaikkea superluokasta ja rajapinnasta, minkä vuoksi alaluokka on liian klusteroitunut ja joskus virhealtis, kun dynaaminen ohitus tai dynaaminen ylikuormitus tehdään tietyissä tilanteissa.

95. Vaikka periytyminen on suosittu OOP-käsite, se on vähemmän edullinen kuin koostumus. Selittää.

Periytys on suosittu olio-ohjelmoinnin (OOP) käsite, jossa luokka voi periä ominaisuudet ja menetelmät mistä tahansa muusta luokasta, jota kutsutaan pää- tai superluokiksi. Toisaalta koostumuksessa luokka voi sisältää toisen luokan esiintymän jäsenmuuttujana, jota usein kutsutaan osaksi tai komponentiksi. Alla on joitain syitä, miksi koostumus on edullisempi kuin perintö:

  • Tiukka kytkentä: Aina kun superluokkaan tehdään muutoksia, nämä muutokset voivat vaikuttaa sen kaikkien alaluokkien tai alaluokkien käyttäytymiseen. Tämä ongelma tekee koodista vähemmän joustavaa ja aiheuttaa myös ongelmia ylläpidon aikana. Tämä ongelma johtaa myös luokkien väliseen tiiviiseen kytkentään.
  • Herkän perusluokan ongelma: Kun perusluokan muutokset voivat rikkoa sen johdettujen luokkien toiminnallisuuden. Tämä ongelma voi vaikeuttaa uusien ominaisuuksien lisäämistä tai olemassa olevien ominaisuuksien muokkaamista. Tämä ongelma tunnetaan Fragile Base -luokan ongelmana.
  • Rajoitettu uudelleenkäyttö: Java:n periytyminen voi johtaa rajoitettuun koodin uudelleenkäyttöön ja myös koodin kopiointiin. Koska alaluokka perii kaikki superluokkansa ominaisuudet ja menetelmät, se voi joskus päätyä tarpeettomaan koodiin, jota ei tarvita. Tämä johtaa vähemmän ylläpidettävään koodikantaan.

96. Mikä on yhdistys?

Assosiaatio on kahden erillisen luokan välinen suhde, joka on muodostettu niiden Objektien kautta. Se edustaa Has-A:n suhdetta.

97. Mitä tarkoitat yhdistämisellä?

Koostumus on aggregoinnin rajoitettu muoto, jossa kaksi entiteettiä ovat erittäin riippuvaisia ​​toisistaan. Se edustaa osa suhde.

98. Mikä on Javan koostumus?

Koostumus merkitsee suhdetta, jossa lapsi ei voi olla olemassa itsenäisesti vanhemmasta. Esimerkiksi Ihmissydän, sydäntä ei ole olemassa ihmisestä erillään.

99. Ilmoita ero koostumuksen ja yhdistämisen välillä.

Aggregointi

Sävellys

Se määrittelee, että objektien välillä on suhde

Se edustaa osaa suhteesta

Objektit ovat toisistaan ​​riippumattomia.

Objektit ovat riippuvaisia ​​toisistaan.

Esitä se käyttämällä täytettyä timanttia.

Esitä se käyttämällä tyhjää timanttia.

Lapsilla esineillä ei ole elinikää.

Lapsilla esineillä on elinikäinen.

100. Voiko rakentaja periytyä?

Ei, emme voi periä rakentajaa.


101. Mitä polymorfismi on?

Polymorfismi määritellään kyvyksi ottaa useampi kuin yksi muoto. Sitä on kahta tyyppiä, nimittäin käännösajan polymorfismia tai menetelmän ylikuormitusta - toimintoa, jota kutsutaan käännösajan aikana. Otetaan esimerkiksi luokan 'alue'. Parametrien lukumäärän perusteella se voi laskea neliön, kolmion tai ympyrän alueen. Ajoajan polymorfismi tai menetelmän ohittaminen - linkit ajon aikana. Luokan sisällä oleva menetelmä ohittaa emoluokan menetelmän.

102. Mikä on ajonaikainen polymorfismi tai dynaaminen menetelmän lähetys?

Dynaaminen menetelmän lähetys on ratkaisumekanismi menetelmän ohittamiseen ajon aikana. Metodin ohitus on menetelmä, jossa aliluokan menetelmällä on sama nimi, parametrit ja palautustyyppi kuin superluokan menetelmällä. Kun ohitettua menetelmää kutsutaan superluokkaviittauksen kautta, java määrittää, mikä versio (yläluokka tai aliluokka) menetelmästä suoritetaan, perustuen objektin tyyppiin, johon viitataan kutsun tapahtuessa. Päätös siis tehdään ajon aikana. Tätä kutsutaan dynaamiseksi menetelmän lähettämiseksi.

103. Mikä on menetelmän ohittaminen?

Menetelmän ohittaminen, joka tunnetaan myös ajonaikaisena polymorfismina, on sellainen, jossa aliluokka sisältää saman menetelmän kuin emoluokka. Meillä on esimerkiksi menetelmä nimeltä 'gfg()' pääluokassa. Menetelmä gfg() on jälleen määritelty alaluokassa. Siten kun gfg():tä kutsutaan alaluokassa, luokan id:n menetelmä suoritetaan. Tässä luokan sisällä oleva gfg() ohitti ulkoisen menetelmän.

104. Mitä menetelmän ylikuormitus on?

Ylikuormitus Java-768:ssa

Menetelmän ohittaminen on menetelmä ajonaikaisen polymorfismin saavuttamiseksi Javassa. Metodin ohittaminen on ominaisuus, jonka avulla aliluokka voi tarjota tietyn toteutuksen menetelmälle, jonka jokin sen pääluokista jo tarjoaa. Kun aliluokan menetelmällä on sama nimi, samat parametrit tai allekirjoitus ja sama palautustyyppi (tai alatyyppi) kuin emoluokan menetelmällä, alaluokan menetelmän sanotaan ohittavan menetelmän superluokka.

105. Voimmeko ohittaa staattisen menetelmän?

Ei, koska staattiset menetelmät ovat osa luokkaa eikä objektia, joten emme voi ohittaa niitä.

106. Voimmeko ohittaa ylikuormitetun menetelmän?

Kyllä, koska ylikuormitettu menetelmä on kääntäjän silmissä täysin erilainen menetelmä. Ohitus ei ole ollenkaan sama asia. Päätös siitä, mitä menetelmää kutsua, siirretään ajonaikaiseen.

107. Voiko main()-metodia ylikuormittaa?

Kyllä Javassa voimme ylikuormittaa päämenetelmän kutsuaksemme päämenetelmää sen ennalta määritetyn kutsumenetelmän avulla.

108. Mitä ovat menetelmän ylikuormitus ja menetelmän ohittaminen?

Menetelmän ylikuormitus: Se tunnetaan myös nimellä Compile Time Polymorphism. Metodin ylikuormituksessa kaksi tai useampi menetelmä jaetaan samassa luokassa eri allekirjoituksella.

Esimerkki:

Java
// Java Program to demonstrate use of Method Overloading import java.io.*; class GFG {  static int multiply(int a, int b) { return a * b; }  static int multiply(int a, int b, int c)  {  return a * b * c;  }  static int multiply(int a, int b, int c, int d)  {  return a * b * c * d;  }  public static void main(String[] args)  {  System.out.println('multiply() with 2 parameters');  System.out.println(multiply(4, 5));  System.out.println('multiply() with 3 parameters');  System.out.println(multiply(2, 3, 4));  System.out.println('multiply() with 4 parameters');  System.out.println(multiply(2, 3, 4, 1));  } }>

Lähtö
multiply() with 2 parameters 20 multiply() with 3 parameters 24 multiply() with 4 parameters 24>

Menetelmän ohittaminen: Metodin ohitus tapahtuu, kun aliluokka voi toteuttaa menetelmän, joka on jo määritetty yläluokassa tai superluokassa. Palautustyypin, nimen ja argumenttien tulee olla samanlaisia ​​kuin superluokan metodit.

Esimerkki:

Java
// Java Program to demonstrate use of Method Overriding import java.io.*; class Vehicle {  void drive()  {  System.out.println('drive() method of base class');  System.out.println('driving the Car.');  } } class Car extends Vehicle {  void drive()  {  System.out.println(  'drive() method of derived class');  System.out.println('Car is driving.');  } } class GFG {  public static void main(String[] args)  {  Car c1 = new Car();  Vehicle v1 = new Vehicle();  c1.drive();  v1.drive();  Vehicle vehicle = new Car();  // drive() method of Vehicle class is overridden by  // Car class drive()  vehicle.drive();  } }>

Lähtö
drive() method of derived class Car is driving. drive() method of base class driving the Car. drive() method of derived class Car is driving.>

Menetelmän ylikuormitus

Menetelmän ohittaminen

Kun kaksi tai useampi menetelmä on samassa luokassa eri parametreilla, mutta samalla nimellä.

Kun alaluokka tarjoaa oman toteutuksensa menetelmälle, joka on jo määritetty yläluokassa.

Menetelmän ylikuormitus voi tapahtua vain samassa luokassa tai alaluokan tai yläluokan välillä.

Menetelmän ohittaminen voi tapahtua vain alaluokassa.

Kun virhe tapahtuu, se havaitaan ohjelman käännöshetkellä.

Kun virhe tapahtuu, se havaitaan ohjelman ajon aikana.

Esimerkki käännösajan polymorfismista.

Esimerkki ajonaikaisesta polymorfismista.

Menetelmä Ylikuormitus voi vaatia periytymistä tai ei.

Menetelmän ohittaminen vaatii aina perinnön.

Se tapahtuu luokassa.

Se suoritetaan kahdessa luokassa, joilla on perintösuhde.

109. Voimmeko ohittaa yksityiset menetelmät?

Yksityisiä menetelmiä ei voi ohittaa Javassa. Metodin ohitus on tapa, jossa aliluokan menetelmä toteutetaan emoluokan menetelmän sijaan. Yksityiset menetelmät ovat käytettävissä vain siinä luokassa, jossa ne on ilmoitettu. Koska tämä menetelmä ei ole muiden luokkien näkyvissä eikä sitä voi käyttää, sitä ei voi ohittaa.

110. Voimmeko muuttaa ohitetun menetelmän laajuutta alaluokassa?

Javassa ei ole mahdollista muokata ohitetun menetelmän laajuutta. Alaluokkamenetelmän laajuuden tulee olla yhtä suuri tai leveämpi kuin Superclass-metodin ohitetun menetelmän laajuus. Esimerkiksi alaluokan ohitetulla menetelmällä voi olla julkinen laajuus tai helpommin saatavilla oleva laajuus, kuten suojattu tai oletusarvo, jos ylimääräisellä menetelmällä on julkinen laajuus. Sillä ei kuitenkaan voi olla eksklusiivisempaa soveltamisalaa, kuten yksityinen.

111. Voimmeko muokata superclass-metodinheittolausetta samalla kun ohitamme sen alaluokassa?

Voimme muokata Superclass-metodinheittolausetta tietyin rajoituksin, voimme muuttaa superclass-metodinheittolausetta ohittaen sen alaluokassa. Alaluokka ohitettu -metodi voi määrittää valitsemattomia poikkeuksia vain, jos superclass-metodi ei ilmoita poikkeuksia. Jos yliluokka-metodi ilmoittaa poikkeuksen, aliluokkametodi voi ilmoittaa saman poikkeuksen, alaluokkapoikkeuksen tai ei ollenkaan poikkeusta. Alaluokkamenetelmä ei kuitenkaan voi ilmoittaa yläluokkamenetelmässä ilmoitettuja laajempia yläpoikkeuksia.

112. Voiko Javassa olla virtuaalisia toimintoja?

Kyllä, Java tukee virtuaalisia toimintoja. Funktiot ovat oletusarvoisesti virtuaalisia ja niistä voidaan tehdä ei-virtuaalisia käyttämällä viimeistä avainsanaa.

113. Mitä abstraktio on?

Abstraktiolla tarkoitetaan olennaisten piirteiden esittämistä ilman taustatietoja. Yksityiskohtaiset tiedot tai toteutus on piilotettu. Yleisin esimerkki abstraktiosta on auto, osaamme käynnistää moottorin, kiihdyttää ja liikkua, mutta moottorin toimintatapa ja sen sisäiset komponentit ovat monimutkaista logiikkaa, joka on piilotettu tavallisilta käyttäjiltä. Tämä tehdään yleensä monimutkaisuuden käsittelemiseksi.

114. Mikä on abstrakti luokka?

Abstraktiksi ilmoitettua luokkaa ei voi ilmentää eli objektia ei voida luoda. Se voi sisältää tai ei sisällä abstrakteja menetelmiä, mutta jos luokassa on vähintään yksi abstrakti menetelmä, se on julistettava abstraktiksi.

Esimerkki abstraktista luokasta abstraktilla menetelmällä:

Java
// Java Program to implement // abstract method import java.io.*; // Abstract class abstract class Fruits {  abstract void run(); } // Driver Class class Apple extends Fruits {  void run()  {  System.out.println('Abstract class example');  }  // main method  public static void main(String args[])  {  Fruits obj = new Apple();  obj.run();  } }>

115. Milloin abstrakteja menetelmiä käytetään?

Abstraktia menetelmää käytetään, kun haluamme käyttää menetelmää, mutta haluamme lapsiluokat päättää toteutuksen, jolloin käytämme abstrakteja menetelmiä yläluokkien kanssa.

116. Kuinka voit välttää serialisoinnin lapsiluokassa, jos perusluokka toteuttaa Serialisoitavaa käyttöliittymää?

Serialisointi lapsiluokassa, jos perusluokka toteuttaa Serializable-rajapintaa, voimme välttää sen määrittelemällä writeObject()-metodin ja heittämällä NotSerializableException().

117. Mikä on Collection Framework Javassa?

Kokoelmat ovat Java-objektien yksiköitä. Kokoelmakehys on joukko Java-käyttöliittymiä ja luokkia, joita käytetään objektikokoelmien esittämiseen ja käsittelemiseen monin eri tavoin. Keräyskehys sisältää luokat (ArrayList, Vector, LinkedList, PriorityQueue, TreeSet) ja useita rajapintoja (Set, List, Queue, Deque), joissa jokaista rajapintaa käytetään tietyntyyppisen tiedon tallentamiseen.

118. Selitä Collection-kehyksessä käytetyt rajapinnat.

Keräyskehys toteuttaa

  1. Kokoelman käyttöliittymä
  2. Luettelon käyttöliittymä
  3. Aseta käyttöliittymä
  4. Jonon käyttöliittymä
  5. Ja käyttöliittymä
  6. Karttakäyttöliittymä

Kokoelman käyttöliittymä: Kokoelma on ensisijainen käytettävissä oleva käyttöliittymä, joka voidaan tuoda käyttämällä java.util.Collectionia.

Syntaksi:

public interface Collection extends iterable>

119. Kuinka voit synkronoida ArrayListin Javassa?

ArrayList voidaan synkronoida kahdella alla mainitulla menetelmällä:

  1. Collections.synchronizedList()
  2. CopyOnWriteArrayListin käyttäminen

Collections.synchronizedList():

public static List synchronizedList(List list)>

CopyOnWriteArrayListin käyttäminen:

  1. Luo tyhjä lista.
  2. Se toteuttaa List-käyttöliittymän
  3. Se on säikeen turvallinen muunnos ArrayLististä
  4. T edustaa yleistä

120. Miksi tarvitsemme synkronoitua ArrayListiä, kun meillä on vektoreita (jotka ovat synkronoituja) Javassa?

ArrayList on tarpeen, vaikka meillä olisi vektoreita tietyistä syistä:

  1. ArrayList on nopeampi kuin Vectors.
  2. ArrayList tukee monisäikeistä käyttöä, kun taas Vectors tukee vain yksisäikeistä käyttöä.
  3. ArrayList on turvallisempi käyttää, koska Vectors tukee yksittäisiä säikeitä ja yksittäiset toiminnot ovat vähemmän turvallisia ja synkronointi kestää kauemmin.
  4. Vektoreita pidetään vanhentuneina Javassa niiden synkronoidun luonteen vuoksi.

121. Miksi emme voi luoda yleistä taulukkoa?

Yleisiä taulukoita ei voida luoda, koska an joukko kantaa elementtien tyyppitiedot ajon aikana, minkä vuoksi se heittää ajon aikana 'ArrayStoreException', jos elementtien tyyppi ei ole samanlainen. Koska yleiset tyyppitiedot poistetaan käännöshetkellä Type Erasure -toiminnolla, taulukkovaraston tarkistus olisi läpäissyt siellä, missä sen olisi pitänyt epäonnistua.

122. Vierekkäisiä muistipaikkoja käytetään yleensä todellisten arvojen tallentamiseen taulukkoon, mutta ei ArrayList-luetteloon. Selittää.

Matriisin elementit tallennetaan vierekkäisiin muistipaikkoihin, mikä tarkoittaa, että jokainen elementti on tallennettu erilliseen lohkoon sen perusteella, että se sijaitsee taulukossa. Koska taulukon elementit on tallennettu vierekkäisiin paikkoihin, mihin tahansa elementtiin on suhteellisen helppo päästä käsiksi sen indeksin perusteella, koska elementin osoite voidaan laskea elementin sijainnin perusteella. Mutta Java toteuttaa ArrayLists-luettelot dynaamisina taulukoina, mikä tarkoittaa, että koko voi muuttua, kun elementtejä poistetaan tai lisätään. ArrayList-elementtejä ei tallenneta vierekkäisiin muistipaikkoihin tämän dynaamisen luonteen huomioon ottamiseksi. Sen sijaan ArrayList käyttää menetelmää, joka tunnetaan laajennettavana taulukona, jossa taustalla olevaa taulukkoa laajennetaan tarpeen mukaan ja elementit kopioidaan sitten uuteen paikkaan. Toisin kuin ArrayList, jonka koko on dynaaminen ja joka ei tallenna elementtejään vierekkäisiin muistipaikkoihin, taulukolla on kiinteä koko ja sen elementit tallennetaan sinne.

123. Selitä tapa muuntaa ArrayList Arrayksi ja Array ArrayListiksi.

Listan muuntaminen ArrayListiksi

Listan muuntamiseen ArrayListiksi on useita tapoja

Convert-Array-to-ArrayList-768

Ohjelmoijat voivat muuntaa taulukon ArrayListiksi käyttämällä Arrays-luokan asList()-menetelmää. Se on Arrays-luokan staattinen menetelmä, joka hyväksyy List-objektin.

Syntaksi:

Arrays.asList(item)>

Esimerkki:

Java
// Java program to demonstrate conversion of // Array to ArrayList of fixed-size. import java.util.*; // Driver Class class GFG {  // Main Function  public static void main(String[] args)  {  String[] temp = { 'Abc', 'Def', 'Ghi', 'Jkl' };  // Conversion of array to ArrayList  // using Arrays.asList  List conv = Arrays.asList(temp);  System.out.println(conv);  } }>

Lähtö
[Abc, Def, Ghi, Jkl]>

ArrayListin muuntaminen Arrayksi

Muunna-ArrayList-to-Array-768

Java-ohjelmoijat voivat muuntaa ArrayListin muotoon

Syntaksi:

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

Esimerkki:

Java
// Java program to demonstrate working of // Objectp[] toArray() import java.io.*; import java.util.List; import java.util.ArrayList; // Driver Class class GFG {  // Main Function  public static void main(String[] args)  {  // List declared  List<Integer>  arr = new ArrayList<Integer>();  arr.add(1);  arr.add(2);  arr.add(3);  arr.add(2);  arr.add(1);  // Conversion  Object[] objects = arr.toArray();  // Printing array of objects  for (Object obj : objects)  System.out.print(obj + ' ');  } }>

Lähtö
1 2 3 2 1>

124. Miten ArrayListin koko kasvaa dynaamisesti? Ja kerro myös, kuinka se toteutetaan sisäisesti.

ArrayLists-taulukkopohjaisen luonteen ansiosta sen koko kasvaa dynaamisesti varmistaen, että elementeille on aina riittävästi tilaa. Kun ArrayList-elementti luodaan ensimmäisen kerran, oletuskapasiteetti on noin 10-16 elementtiä, mikä riippuu periaatteessa Java-versiosta. ArrayList-elementit kopioidaan alkuperäisestä taulukosta uuteen taulukkoon, kun alkuperäisen taulukon kapasiteetti on täynnä. Kun ArrayListin koko kasvaa dynaamisesti, luokka luo uuden isompikokoisen taulukon ja kopioi kaikki elementit vanhasta taulukosta uuteen taulukkoon. Nyt uuden taulukon viittausta käytetään sisäisesti. Tätä taulukon dynaamisen kasvattamisen prosessia kutsutaan koon muutoksiksi.

125. Mikä on vektori Javassa?

Java-vektorit ovat samanlaisia ​​ja voivat tallentaa niiden sisään useita elementtejä. Vektorit noudattavat tiettyjä alla mainittuja sääntöjä:

  1. Vektori voidaan tuoda Java.util.Vectorilla.
  2. Vektori toteutetaan käyttämällä dynaamista taulukkoa, kun vektorin koko kasvaa ja pienenee riippuen siihen lisätyistä elementeistä.
  3. Vektorin elementit indeksinumeroilla.
  4. Vektorit ovat luonteeltaan synkronoituja, mikä tarkoittaa, että ne käyttivät vain yhtä säiettä (vain yksi prosessi suoritetaan tietyllä hetkellä).
  5. Vektori sisältää monia menetelmiä, jotka eivät ole osa kokoelmakehystä.

Syntaksi:

Vector gfg = new Vector(size, increment);>

126. Kuinka tehdä Java ArrayList vain luku -käyttöiseksi?

ArrayList voidaan tehdä valmiiksi vain Collections.unmodifiableList()-metodilla.

Syntaksi:

array_readonly = Collections.unmodifiableList(ArrayList);>

Esimerkki:

Java
// Java program to demonstrate // unmodifiableList() method import java.util.*; public class Main {  public static void main(String[] argv) throws Exception  {  try {  // creating object of ArrayList  <Character> ArrayList<Character>  temp  = new ArrayList<Character>();  // populate the list  temp.add('X');  temp.add('Y');  temp.add('Z');  // printing the list  System.out.println('Initial list: ' + temp);  // getting readonly list  // using unmodifiableList() method  List<Character>  new_array  = Collections.unmodifiableList(temp);  // printing the list  System.out.println('ReadOnly ArrayList: '  + new_array);  // Adding element to new Collection  System.out.println('
If add element in '  + ' the ReadOnly ArrayList');  new_array.add('A');  }  catch (UnsupportedOperationException e) {  System.out.println('Exception is thrown : '  + e);  }  } }>

Lähtö
Initial list: [X, Y, Z] ReadOnly ArrayList: [X, Y, Z] If add element in the ReadOnly ArrayList Exception is thrown : java.lang.UnsupportedOperationException>

127. Mikä on prioriteettijono Javassa?

Priority-Queue-768

Prioriteettijono on abstrakti tietotyyppi, joka on samanlainen kuin tavallinen jono tai pinotietorakenne. Elementteihin tallennetut elementit riippuvat prioriteetista, joka on määritelty matalasta korkeaan. PriorityQueue perustuu prioriteettikekoon.

Syntaksi:

Java
// Java program to demonstrate the // working of PriorityQueue import java.util.*; class PriorityQueueDemo {  // Main Method  public static void main(String args[])  {  // Creating empty priority queue  PriorityQueue<Integer>  var1  = new PriorityQueue<Integer>();  // Adding items to the pQueue using add()  var1.add(10);  var1.add(20);  var1.add(15);  // Printing the top element of PriorityQueue  System.out.println(var1.peek());  } }>

Lähtö
10>

128. Selitä LinkedList-luokka.

LinkedList-luokka on Java, joka käyttää kaksoislinkitettyä listaa elementtien tallentamiseen. Se perii AbstractList-luokan ja toteuttaa List- ja Deque-liitännät. LinkedList-luokan ominaisuudet mainitaan alla:

  1. LinkedList-luokat eivät ole synkronoituja.
  2. Säilyttää lisäysjärjestyksen.
  3. Sitä voidaan käyttää luettelona, ​​pinona tai jonona.

Syntaksi:

LinkedList list_name=new LinkedList();>

129. Mikä on Java-pinoluokka ja mitä eri menetelmiä se tarjoaa?

Javan pinoluokka on LIFO-tietorakenne, joka toteuttaa Last In First Out -tietorakenteen. Se on johdettu Vector-luokasta, mutta siinä on pinoille ominaisia ​​toimintoja. Java-ohjelman Stack-luokka tarjoaa seuraavat menetelmät:

  • kurkistaa(): palauttaa pinon ylimmän kohteen poistamatta sitä
  • tyhjä(): palauttaa true, jos pino on tyhjä, ja false muuten
  • työntää(): työntää esineen pinon päälle
  • pop(): poistaa ja palauttaa pinon ylimmän kohteen
  • Hae(): palauttaa objektin 1-pohjaisen sijainnin pinon yläosasta. Jos objekti ei ole pinossa, se palauttaa -1

130. Mikä on asetettu Java Collections -kehyksessä ja luettele sen eri toteutukset?

Sarjat ovat kokoelmia, jotka eivät tallenna päällekkäisiä elementtejä. He eivät pidä mitään elementtien järjestystä. Java Collections -kehys tarjoaa useita Set-käyttöliittymän toteutuksia, mukaan lukien:

  • HashSet: Javan HashSet tallentaa elementit has-taulukkoon, joka tarjoaa nopeammat haut ja nopeamman lisäyksen. HashSet ei ole tilattu.
  • LinkedHashSet: LinkedHashSet on HashSetin toteutus, joka ylläpitää elementtien lisäysjärjestystä.
  • TreeSet: TreeSet tallentaa elementit lajiteltuun järjestykseen, joka määräytyy elementtien luonnollisen järjestyksen tai luomishetkellä tarjotun mukautetun vertailijan mukaan.

131. Mikä on HashSet-luokka Javassa ja miten se tallentaa elementtejä?

HashSet-luokka toteuttaa Set-rajapinnan Java Collections Frameworkissa ja on HashSet-luokan jäsen. Toisin kuin päällekkäiset arvot, se tallentaa kokoelman erillisiä elementtejä. Tässä toteutuksessa jokainen elementti kartoitetaan taulukossa olevaan indeksiin hash-funktiolla, ja indeksiä käytetään elementin nopeaan käyttöön. Se tuottaa indeksin taulukon elementille, johon se tallennetaan syöteelementin perusteella. Olettaen, että hash-funktio jakaa elementit ryhmien kesken asianmukaisesti, HashSet-luokka tarjoaa vakioaikaisen suorituskyvyn perustoimintoihin (lisää, poista, sisällytä ja kokoa).

132. Mikä on LinkedHashSet Java Collections Frameworkissa?

LinkedHashSet on järjestetty versio Hashsetista, jota ylläpitää kaksinkertaisesti linkitetty luettelo kaikista elementeistä. Se on erittäin hyödyllinen, kun iterointijärjestystä tarvitaan. LinkedHashSetin iteroinnin aikana elementit palautetaan samassa järjestyksessä kuin ne on lisätty.

Syntaksi:

LinkedHashSet hs = new LinkedHashSet();>

Esimerkki:

Java
// Java Program to implement // LinkedHashSet import java.io.*; import java.util.*; // Driver Class class GFG {  // Main Function  public static void main(String[] args)  {  // LinkedHashSet declared  LinkedHashSet<Integer>  hs = new LinkedHashSet<Integer>();  // Add elements in HashSet  hs.add(1);  hs.add(2);  hs.add(5);  hs.add(3);  // Print values  System.out.println('Values:' + hs);  } }>

Lähtö
Values:[1, 2, 5, 3]>

133. Mikä on karttaliittymä Javassa?

Map-Interface-In-Java-660

Karttakäyttöliittymä on Java-kokoelmassa ja sitä voidaan käyttää Java.util-paketin kanssa. Karttarajapintaa käytetään arvojen kartoittamiseen avainarvolomakkeen muodossa. Kartta sisältää kaikki ainutlaatuiset avaimet. Se tarjoaa myös siihen liittyviä menetelmiä, kuten includeKey(), sisältää arvon () jne.

Karttakäyttöliittymässä on useita tyyppisiä karttoja, kuten alla mainitaan:

  1. Lajiteltu kartta
  2. TreeMap
  3. HashMap
  4. LinkedHashMap

134. Selitä Treemap Javassa

TreeMap on eräänlainen kartta, joka tallentaa tiedot avain-arvo-parin muodossa. Se toteutetaan punamustalla puulla. TreeMapin ominaisuuksia ovat:

  1. Se sisältää vain ainutlaatuisia elementtejä.
  2. Siinä ei voi olla NULL-avainta
  3. Sillä voi olla useita NULL-arvoja.
  4. Sitä ei ole synkronoitu.
  5. Se ylläpitää nousevaa järjestystä.

135. Mikä EnumSet on?

EnumSet on Set-rajapinnan erikoistoteutus käytettäväksi luettelointityypin kanssa. Muutamia EnumSetin ominaisuuksia ovat:

  1. Sitä ei ole synkronoitu.
  2. Nopeampi kuin HashSet.
  3. Kaikkien EnumSetin elementtien on oltava peräisin yhdestä luettelotyypistä.
  4. Se ei salli null-objekteja ja heittää NullPointerExceptionin poikkeuksia varten.
  5. Se käyttää vikaturvallista iteraattoria.

Syntaksi:

public abstract class EnumSet>

Parametri: E määrittelee elementit.

136. Mikä on BlockingQueue?

BlockingQueue-768

Estojono on jono, joka tukee toimintoja, jotka odottavat, että jono ei tyhjene, kun elementtiä haetaan ja poistetaan, ja odottavat, että jonossa vapautuu tilaa, kun elementtiä lisätään.

Syntaksi:

public interface BlockingQueue extends Queue>

Parametrit: E on kokoelmaan tallennettujen elementtien tyyppi

137. Mikä on ConcurrentHashMap Javassa ja otatko sen käyttöön?

ConcurrentHashMap on toteutettu Hashtablella.

Syntaksi:

public class ConcurrentHashMap  extends AbstractMap  implements ConcurrentMap, Serializable>

Parametrit : K on avain Objektityyppi ja V on arvo Objektityyppi

138. Voitko käyttää mitä tahansa luokkaa karttaavaimena?

Kyllä, voimme käyttää mitä tahansa luokkaa karttaavaimena, jos se noudattaa tiettyjä alla mainittuja ennalta määritettyjä sääntöjä:

  1. Equals()-metodin ohittavan luokan on ohitettava myös hashCode()-metodi
  2. ConcurrentHashMap-luokka on säikeen turvallinen.
  3. ConcurrentHashMapin oletusarvoinen samanaikaisuustaso on 16.
  4. Nollaobjektien lisääminen ConcurrentHashMapiin ei ole mahdollista avaimena tai arvona.

139. Mikä on iteraattori?

Iteraattori Java-768:ssa

Iterator-käyttöliittymä tarjoaa menetelmiä iterointiin missä tahansa Java-kokoelmassa. Iteraattori korvaa Enumerationin Java Collections Frameworkissa. Se voi saada iteraattoriinstanssin kokoelmasta käyttämällä _iterator()_-metodia. Sen avulla soittaja voi myös poistaa elementtejä alla olevasta kokoelmasta iteroinnin aikana.

140. Mikä on luettelointi?

Luettelo on käyttäjän määrittämä tietotyyppi. Sitä käytetään pääasiassa nimeämiseen integraalivakioihin, nimet tekevät ohjelman helposti luettavan ja ylläpidettävän. Enumin päätavoite on määritellä käyttäjän määrittelemiä tietotyyppejä.

Esimerkki:

// A simple enum example where enum is declared  // outside any class (Note enum keyword instead of  // class keyword)  enum Color  {   RED, GREEN, BLUE;  }>

141. Mitä eroa on kokoelmalla ja kokoelmalla?

Kokoelma

Kokoelmat

Kokoelma on käyttöliittymä.

Kokoelmat on luokkaa.

Se tarjoaa tietorakenteen vakiotoiminnot.

Se on lajitella ja synkronoida kokoelmaelementit.

Se tarjoaa menetelmät, joita voidaan käyttää tietorakenteessa.

Se tarjoaa staattisia menetelmiä, joita voidaan käyttää erilaisiin toimintoihin.

142. Erota Array ja ArrayList Javassa.

Array

ArrayList

Yksi- tai moniulotteinen

Yksiulotteinen

Jokaiselle iteraatiossa käytettävälle ja jokaiselle

Tässä iteraattoria käytetään riverArrayListin läpikulkuun

pituus avainsana palauttaa taulukon koon.

size()-menetelmää käytetään ArrayListin koon laskemiseen.

Taulukon koko on kiinteä.

ArrayList-koko on dynaaminen ja sitä voidaan tarvittaessa suurentaa tai pienentää.

Se on nopeampi, kuten yllä näemme sen kiinteän kokoisena

Se on suhteellisen hitaampi dynaamisen luonteensa vuoksi

Primitiiviset tietotyypit voidaan tallentaa suoraan epätodennäköisiin objekteihin.

Primitiivisiä tietotyyppejä ei lisätä suoraan epätodennäköisiin taulukoihin, vaan ne lisätään epäsuorasti automaattilaatikon ja pakkauksen purkamisen avulla

Niitä ei voi lisätä tähän, joten tyyppi on vaarassa.

Ne voidaan lisätä tähän, jolloin ArrayList on tyyppiturvallinen.

Tehtäväoperaattori palvelee vain tarkoitusta

Tässä käytetään erityistä menetelmää, joka tunnetaan nimellä add()-menetelmä

143. Mitä eroa on Arraylla ja Collectionilla Javassa?

Array

Kokoelmat

Java-taulukolla on kiinteä koko.

Java-kokoelmilla on dynaamisia kokoja.

Arrayssa elementit tallennetaan vierekkäisiin muistipaikkoihin.

Kokoelmissa elementtejä ei välttämättä tallenneta vierekkäisiin muistipaikkoihin.

Objektit ja primitiiviset tietotyypit voidaan tallentaa taulukkoon.

Voimme tallentaa esineitä vain kokoelmiin.

Matriisin koon muuttaminen vaatii manuaalista käsittelyä.

Kokoelmien koon muuttaminen tapahtuu automaattisesti.

Taulukossa on perusmenetelmiä manipulointiin.

Kokoelmissa on kehittyneitä menetelmiä manipulointiin ja iterointiin.

Taulukko on ollut saatavilla Javan alusta lähtien.

Kokoelmat esiteltiin Java 1.2:ssa.

144. Ero ArrayListin ja LinkedListin välillä.

ArrayList

LinkedList

ArrayList on toteutettu laajennettavana taulukkona.

LinkedList on toteutettu kaksoislinkitettynä luettelona.

ArrayListissä elementit tallennetaan vierekkäisiin muistipaikkoihin

LinkedList-elementit tallennetaan ei-vierekkäisiin muistipaikkoihin, koska jokaisella elementillä on viittaus seuraavaan ja edelliseen elementtiin.

ArrayLists ovat nopeampia satunnaiseen käyttöön.

LinkedLists ovat nopeampia lisäys- ja poistotoimintoihin

ArrayLists ovat muistitehokkaampia.

LinkedList on vähemmän muistitehokas

ArrayLists Käytä enemmän muistia taulukon koon säilyttämisen vuoksi.

LinkedList Käyttää vähemmän muistia, koska siinä on vain viittauksia elementteihin

Hakutoiminto on nopeampi ArrayListissä.

Hakutoiminto on hitaampi LinkedListissä

145. Tee ero ArrayListin ja Vectorin välillä Javassa.

ArrayList

Vektori

ArrayLists on toteutettu laajennettavana taulukkona.

Vector on toteutettu kasvavana matriisina.

ArrayList ei ole synkronoitu.

Vektori on synkronoitu.

ArrayLists ovat nopeampia ei-samanaikaisiin operaatioihin.

Vector on hitaampi ei-samanaikaisissa toimissa lisätyn synkronoinnin vuoksi.

ArrayLists otettiin käyttöön Java 1.2:ssa.

Vector otettiin käyttöön JDK 1.0:ssa.

Suositellaan käytettäväksi yksisäikeisessä ympäristössä.

Vektoreita suositellaan käytettäväksi monisäikeisessä ympäristössä.

ArrayLists-ohjelman oletusarvoinen alkukapasiteetti on 10.

Vektoreissa oletusarvoinen alkukapasiteetti on 10, mutta oletuslisäys on kaksinkertainen.

ArrayList-suorituskyky on korkea.

Vektorin suorituskyky on heikko.

146. Mitä eroa on Iteratorilla ja ListIteratorilla?

Iteraattori

ListIterator

Voi kulkea kokoelmassa olevia elementtejä vain eteenpäin.

Pystyy kulkemaan kokoelmassa olevien elementtien läpi sekä eteen- että taaksepäin.

Käytetään kartan, luettelon ja joukon läpikulkuun.

Voi kulkea vain luettelossa, ei kahta muuta.

Indeksejä ei voi saada Iteratorilla

Siinä on menetelmiä, kuten nextIndex() ja previousIndex(), joiden avulla saadaan elementtien indeksit milloin tahansa Listan läpi kulkiessa.

Kokoelmassa olevia elementtejä ei voi muokata tai korvata

Voi muokata tai korvata elementtejä set(E e) avulla

Elementtejä ei voi lisätä, ja se heittää myös ConcurrentModificationExceptionin.

Voit helposti lisätä elementtejä kokoelmaan milloin tahansa.

Tietyt Iteratorin menetelmät ovat next(), remove() ja hasNext().

Tietyt ListIteratorin menetelmät ovat next(), previous(), hasNext(), hasPrevious(), add(E e).

147. Erota HashMap ja HashTable.

HashMap

HashTable

HashMap ei ole synkronoitu

HashTable on synkronoitu

Yksi avain voi olla NULL-arvo

NULL-arvoja ei sallita

Iteraattoria käytetään HashMapin läpikulkuun.

Sekä Iteratoria että Enumertaria voidaan käyttää

HashMap on nopeampi.

HashTable on hitaampi verrattuna HashMapiin.

148. Mitä eroa on Iteraattorilla ja Enumeraatiolla?

Iteraattori

Luettelo

Iteraattori voi kulkea sekä vanhojen että ei-vanhojen elementtien läpi.

Luettelo voi kulkea vain vanhojen elementtien läpi.

Iteraattori on nopea.

Luettelo ei ole nopeaa.

Iteraattorit ovat hitaampia.

Laskeminen on nopeampaa.

Iteraattori voi suorittaa poistotoiminnon kulkiessaan kokoelmaa.

Luettelo voi suorittaa vain poikkioperaatioita kokoelmalle.

149. Mitä eroa on Comparable ja Comparator välillä?

Vertailukelpoinen

Vertailija

Käyttöliittymä on java.lang-paketissa.

Käyttöliittymä on java.util-paketissa.

Tarjoaa vertailuTo()-menetelmän elementtien lajitteluun.

Tarjoaa vertaa()-menetelmän elementtien lajitteluun.

Se tarjoaa yksittäisiä lajittelusarjoja.

Se tarjoaa useita lajittelusarjoja.

Lajittelulogiikan on oltava samassa luokassa, jonka objektia aiot lajitella.

Lajittelulogiikka tulisi olla erillisessä luokassa, jotta voidaan kirjoittaa erilaisia ​​lajitteluja objektien eri attribuuttien perusteella.

Menetelmä lajittelee tiedot kiinteän lajittelujärjestyksen mukaan.

Menetelmä lajittelee tiedot mukautetun lajittelujärjestyksen mukaan.

Se vaikuttaa alkuperäiseen luokkaan.

Se ei vaikuta alkuperäiseen luokkaan.

Toteutettu usein API:ssa kalenterin, Wrapper-luokkien, päivämäärän ja merkkijonon avulla.

Se on toteutettu lajittelemaan kolmannen osapuolen luokkien esiintymiä.

150. Mitä eroa on Aseta ja Kartta?

Aseta

Kartta

Set-käyttöliittymä on toteutettu java.util-paketilla.

Kartta on toteutettu java.util-paketilla.

Se voi laajentaa kokoelman käyttöliittymää.

Se ei laajenna kokoelman käyttöliittymää.

Se ei salli päällekkäisiä arvoja.

Se sallii päällekkäiset arvot.

Joukko voi lajitella vain yhden nolla-arvon.

Kartta voi lajitella useita nolla-arvoja.

Java Intermediate haastattelukysymykset

151. Selitä FailFast-iteraattori ja FailSafe-iteraattori sekä esimerkkejä niistä.

FailFast-iteraattori on iteraattori, joka heittää a ConcurrentModificationException jos se havaitsee, että taustalla olevaa kokoelmaa on muokattu iteraattorin käytön aikana. Tämä on iteraattorien oletuskäyttäytyminen Java Collections Frameworkissa. Esimerkiksi HashMapin iteraattori on FailFast.

Esimerkki:

Java
// Java Program to demonstrate FailFast iterator import java.io.*; import java.util.HashMap; import java.util.Iterator; import java.util.Map; class GFG {  public static void main(String[] args)  {  HashMap<Integer, String> map = new HashMap<>();  map.put(1, 'one');  map.put(2, 'two');  Iterator<Map.Entry<Integer, String> > iterator  = map.entrySet().iterator();  while (iterator.hasNext()) {  Map.Entry<Integer, String> entry  = iterator.next();  // this will throw a  // ConcurrentModificationException  if (entry.getKey() == 1) {  map.remove(1);  }  }  } }>

Lähtö:

Exception in thread 'main' java.util.ConcurrentModificationException>

FailSafe-iteraattori ei heitä a ConcurrentModificationException jos taustalla olevaa kokoelmaa muutetaan iteraattorin käytön aikana. Vaihtoehtoisesti se luo tilannekuvan kokoelmasta iteraattorin luomishetkellä ja iteroi tilannevedoksen yli. Esimerkiksi ConcurrentHashMapin iteraattori on FailSafe.

Esimerkki:

Java
// Java Program to demonstrate FailSafe import java.io.*; import java.util.Iterator; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; class GFG {  public static void main(String[] args)  {  ConcurrentHashMap<Integer, String> map  = new ConcurrentHashMap<>();  map.put(1, 'one');  map.put(2, 'two');  Iterator<Map.Entry<Integer, String> > iterator  = map.entrySet().iterator();  while (iterator.hasNext()) {  Map.Entry<Integer, String> entry = iterator.next();  // this will not throw an exception  if (entry.getKey() == 1) {  map.remove(1);  }  }  } }>

152. Mitä poikkeuskäsittely on?

An Poikkeus on Tapahtuma, joka katkaisee ohjelman normaalin kulun ja vaatii erityiskäsittelyä. Ohjelman suorituksen aikana virheet ja odottamattomat tapahtumat voidaan käsitellä Java Exception Handling -mekanismin avulla. Alla on joitain syitä, miksi Javassa esiintyy poikkeuksia:

  • Laitteen vika
  • Verkkoyhteyden katkeaminen
  • Koodivirheet
  • Ei käytettävissä olevan tiedoston avaaminen
  • Virheellinen käyttäjän syöte
  • Fyysiset rajoitukset (levymuisti loppu)

153. Kuinka monen tyyppisiä poikkeuksia voi esiintyä Java-ohjelmassa?

Poikkeustyypit Java-660:ssa

Javassa on yleensä kahdenlaisia ​​poikkeuksia:

  • Sisäänrakennetut poikkeukset: Java-kirjastot tarjoavat Java-sisäänrakennetut poikkeukset. Nämä poikkeukset voidaan jakaa edelleen kahteen alaluokkaan, eli tarkastettuihin ja valitsemattomiin poikkeuksiin. Alla on joitain Javan sisäänrakennettuja poikkeuksia:
    • ArrayIndexOutOfBoundsExceptions
    • ClassNotFoundException
    • FileNotFoundException
    • IOException
    • NullPointerException
    • Aritmeettinen poikkeus
    • Keskeytetty poikkeus
    • RuntimeException
  • Käyttäjän määrittämät poikkeukset: Ohjelmoijat itse määrittävät käyttäjän määrittämät poikkeukset käsittelemään tiettyjä tilanteita tai virheitä, joita sisäänrakennetut poikkeukset eivät kata. Käyttäjän määrittämien poikkeusten määrittämiseksi on määritettävä uusi luokka, joka laajentaa sopivaa poikkeusluokkaa. Käyttäjän määrittämiä poikkeuksia Javassa käytetään, kun sisäänrakennetut poikkeukset ovat Javassa.

154. Ero virheen ja poikkeuksen välillä.

Virheet

Poikkeukset

Virheistä toipuminen ei ole mahdollista.

Toivu poikkeuksista joko käyttämällä try-catch-estoa tai heittämällä poikkeukset takaisin soittajalle.

Virheet ovat kaikki tarkistamattomia tyyppejä Javassa.

Se sisältää sekä valitut että valitsemattomat tyypit, joita esiintyy.

Virheet johtuvat useimmiten ympäristöstä, jossa ohjelma on käynnissä.

Ohjelma on pääosin vastuussa poikkeusten aiheuttamisesta.

Virheitä voi tapahtua sekä käännös- että suoritusaikana. Käännösaika: Syntaksivirhe, Suoritusaika: Looginen virhe.

Kaikki poikkeukset tapahtuvat ajon aikana, mutta kääntäjä tuntee tarkistetut poikkeukset, kun taas valitsemattomat eivät.

Ne määritellään paketissa java.lang.Error.

Ne on määritelty java.lang.Exception-paketissa

Esimerkkejä : java.lang.StackOverflowError, java.lang.OutOfMemoryError

Esimerkkejä : Tarkistetut poikkeukset: SQLException, IOException Valitsemattomat poikkeukset: ArrayIndexOutOfBoundException, NullPointerException, ArithmeticException.

155. Selitä Java Exception -luokkien hierarkia.

Poikkeus-käsittely-768

Kaikki Javan poikkeus- ja virhetyypit ovat heitettävissä olevan luokan alaluokkia, joka on hierarkian perusluokka. Tätä luokkaa käytetään sitten poikkeuksellisiin olosuhteisiin, jotka käyttäjäohjelmien tulisi saada kiinni. NullPointerException on esimerkki tällaisesta poikkeuksesta. Toista haaraa, virhettä, Java-ajonaikainen järjestelmä käyttää osoittamaan virheitä, jotka liittyvät JRE:hen. StackOverflowError on esimerkki yhdestä sellaisesta virheestä.

156. Selitä ajonaikaiset poikkeukset.

Ajonaikaiset poikkeukset ovat poikkeuksia, jotka tapahtuvat koodin suorittamisen aikana, toisin kuin käännösaikaiset poikkeukset, joita esiintyy kääntämisen aikana. Ajonaikaiset poikkeukset ovat valitsemattomia poikkeuksia, koska JVM ei huomioi niitä.

Esimerkkejä ajonaikaisista poikkeuksista Javassa ovat:

  • NullPointerException: Tämä tapahtuu, kun sovellus yrittää käyttää tyhjää objektiviittausta.
  • ArrayIndexOutOfBoundsException: Tämä tapahtuu, kun sovellus yrittää käyttää taulukkoindeksiä, joka on rajojen ulkopuolella.
  • Aritmeettinen poikkeus: Tämä tapahtuu, kun sovellus yrittää jakaa nollalla.
  • IllegalArgumentException: Tämä tapahtuu, kun menetelmä välitetään laittomaan tai sopimattomaan argumenttiin.

Toisin kuin tarkistetut poikkeukset, ajonaikaiset poikkeukset eivät vaadi ilmoitusta heittolausekkeessa tai sieppausta try-catch-lohkossa. Ajonaikaisten poikkeusten käsittely on kuitenkin suositeltavaa, jotta saadaan mielekkäitä virheilmoituksia ja estetään järjestelmän kaatuminen. Koska ajonaikaiset poikkeukset tarjoavat tarkempaa tietoa ongelmasta kuin tarkistetut poikkeukset, niiden avulla kehittäjät voivat havaita ja korjata ohjelmointivirheet helpommin ja nopeammin.

157. Mikä on NullPointerException?

Se on eräänlainen ajonaikainen poikkeus, joka heitetään, kun ohjelma yrittää käyttää objektiviittausta, jolla on tyhjä arvo. NullPointerExceptionin pääasiallinen käyttötarkoitus on osoittaa, että viitemuuttujalle ei ole annettu arvoa, ja sitä käytetään myös tietorakenteiden, kuten linkitettyjen luetteloiden ja puiden, toteuttamiseen.

158. Milloin ArrayStoreException heitetään?

ArrayStoreException heitetään, kun yritetään tallentaa väärän tyyppistä objektia objektien joukkoon.

Esimerkki:

Java
// Java Program to implement // ArrayStoreException public class GFG {  public static void main(String args[])  {  // Since Double class extends Number class  // only Double type numbers  // can be stored in this array  Number[] a = new Double[2];  // Trying to store an integer value  // in this Double type array  a[0] = new Integer(4);  } }>

Esimerkki:

Exception in thread 'main' java.lang.ArrayStoreException: java.lang.Integer  at GFG.main(GFG.java:6)>

159. Mitä eroa on tarkistetun poikkeuksen ja valitsemattoman poikkeuksen välillä?

Tarkistettu poikkeus:

Tarkistetut poikkeukset ovat poikkeuksia, jotka tarkistetaan ohjelman käännösaikana. Jos ohjelmassa jokin menetelmän koodi heittää tarkistetun poikkeuksen, menetelmän on joko käsiteltävä poikkeus tai määritettävä poikkeus käyttämällä throws-avainsanaa.

Valittuja poikkeuksia on kahdenlaisia:

  • Täysin tarkistetut poikkeukset: myös kaikki sen alatason luokat, kuten IOException ja InterruptedException, tarkistetaan.
  • Osittain tarkistetut poikkeukset: jotkin sen alatason luokista ovat valitsemattomia, kuten poikkeus.

Valitsematon poikkeus:

Valitsemattomia ovat poikkeukset, joita ei tarkisteta ohjelman käännöshetkellä. Error- ja RuntimeException-luokkien poikkeukset ovat valitsemattomia poikkeuksia, kaikki muu heitettävissä on valittu.

160. Mikä on virheen ja poikkeuksen perusluokka?

Poikkeus-käsittely-768

Virhe on käyttäjän suorittama laiton toimenpide, joka aiheuttaa epänormaalia ohjelmaa. Poikkeuksia ovat odottamattomat tapahtumat tai olosuhteet, jotka tulevat ohjelmaa suoritettaessa, poikkeus häiritsee ohjelman ohjeiden normaalia kulkua.

Virheillä ja poikkeuksilla on molemmilla yhteinen yläluokka, joka on java.lang.Throwable.

161. Onko välttämätöntä, että jokaista try-lohkoa seuraa catch-lohko?

Ei, Javassa ei tarvitse käyttää catch blockia try blockin jälkeen, koska voimme luoda toisen yhdistelmän lopuksi blockilla. Lopuksi on lohko, joka juoksee huolimatta siitä, heitetäänkö poikkeus vai ei.

162. Mitä on poikkeuksen leviäminen?

Poikkeuksen leviäminen on prosessi, jossa poikkeus pudotetaan pinon ylhäältä alas. Jos poikkeus ei jää kiinni kerran, se laskee jälleen edelliseen menetelmään ja niin edelleen, kunnes se jää kiinni tai kunnes se saavuttaa puhelupinon alimman osan.

163. Mitä tapahtuu, jos laitat System.exit(0) try or catch -lohkoon? Estäkö lopulta suorituksen?

System.exit(int) voi heittää SecurityExceptionin. Joten, jos suojaustapauksessa poikkeus heitetään, lopuksi esto suoritetaan, muuten JVM suljetaan järjestelmää kutsuttaessa. exit(0), jonka vuoksi lohkoa ei lopulta suoriteta.

164. Mitä ymmärrät objektikloonauksella ja miten saavutat sen Javassa?

Se on prosessi, jolla luodaan tarkka kopio mistä tahansa objektista. Tämän tukemiseksi java-luokan on toteutettava java.lang-paketin Cloneable-liittymä ja ohitettava Object-luokan tarjoama clone()-metodi, jonka syntaksi on:

Protected Object clone() heittää CloneNotSupportedException{ return (Object)super.clone();}Jos Cloneable-käyttöliittymää ei ole otettu käyttöön ja vain menetelmä ohitetaan, se johtaa CloneNotSupportedExceptioniin Javassa.

165. Miten poikkeukset vaikuttavat ohjelmaan, jos se ei käsittele niitä?

Poikkeukset ovat vastuussa ohjelman äkillisestä keskeytyksestä suorituksen aikana, eikä poikkeuksen jälkeen kirjoitettua koodia suoriteta.

166. Mitä hyötyä lopullisesta avainsanasta on?

Viimeistä avainsanaa käytetään tekemään funktioista ei-virtuaalisia. Oletuksena kaikki toiminnot ovat virtuaalisia, joten käytämme viimeistä avainsanaa, jotta ne eivät olisi virtuaalisia.

167. Mitä tarkoitusta avainsanat lopullinen, lopullinen ja viimeistely täyttävät?

i). lopullinen:

final on avainsanaa, jota käytetään muuttujan, menetelmän tai luokan kanssa, jotta niitä ei voida ohittaa.

Esimerkki:

Java
// Java Program to use final // keyword import java.io.*; // Driver Class class GFG {  // Main function  public static void main(String[] args)  {  final int x = 100;  x = 50;  } }>

Lähtö:

./GFG.java:6: error: cannot assign a value to final variable x  x=50;  ^ 1 error>

ii). vihdoinkin

Lopuksi on koodilohko, jota käytetään try-catchissa poikkeusten käsittelyssä. Lopulta lohkoon kirjoitettu koodi suoritetaan huolimatta siitä, onko poikkeus heitetty vai ei.

Esimerkki:

Java
// Java Program to implement finally import java.io.*; // Driver class class GFG {  // Main function  public static void main(String[] args)  {  int x = 10;  // try block  try {  System.out.println('Try block');  }  // finally block  finally {  System.out.println(  'Always runs even without exceptions');  }  } }>

Lähtö
Try block Always runs even without exceptions>

iii). viimeistellä

Se on menetelmä, jota kutsutaan juuri ennen roskien keräyskelpoisten kohteiden poistamista/tuhoamista puhdistustoimintojen suorittamiseksi.

Esimerkki:

Java
/*package whatever // do not write package name here */ import java.io.*; class GFG {  public static void main(String[] args)  {  System.out.println('Main function running');  System.gc();  }  // Here overriding finalize method  public void finalize()  {  System.out.println('finalize method overridden');  } }>

Lähtö
Main function running>

168. Mitä eroa this() ja super() on Javassa?

Tämä( )

super( )

Se edustaa luokan nykyistä esiintymää.

Se edustaa pääluokan nykyistä esiintymää.

Kutsuu saman luokan oletuskonstruktoria.

Kutsuu perusluokan oletuskonstruktorin.

Käytä saman luokan menetelmiä.

Pääsy pääluokan menetelmiin.

Osoittaa nykyisen luokan esiintymän.

Osoittaa superluokan ilmentymän.

169. Mitä on moniajo?

Javassa monitehtävä tarkoittaa ohjelman kykyä suorittaa useita tehtäviä kerralla. Säikeet, jotka ovat yhteen ohjelmaan sisältyviä nopeita toimintoja, voivat tehdä tämän. Useiden asioiden suorittaminen samanaikaisesti tunnetaan moniajoina.

Esimerkki:

Java
// Java program for multitasking import java.io.*; public class MyThread extends Thread {  public void run()  {  // Code to be executed in this thread  for (int i = 0; i < 10; i++) {  System.out.println(  'Thread ' + Thread.currentThread().getId()  + ': ' + i);  }  } } public class GFG {  public static void main(String[] args)  {  MyThread thread1 = new MyThread();  MyThread thread2 = new MyThread();  // Start the threads  thread1.start();  thread2.start();  } }>

170. Mitä tarkoitat monisäikeisellä ohjelmalla?

Javan monisäikeiset ohjelmat sisältävät säikeitä, jotka toimivat samanaikaisesti sen sijaan, että ne toimisivat peräkkäin. Tietokone voi käyttää resurssejaan tehokkaammin yhdistämällä useita tehtäviä kerralla. Mikä tahansa monisäikeinen ohjelma sallii useamman kuin yhden käyttäjän käyttää ohjelmaa samanaikaisesti ilman useiden kopioiden suorittamista. Monisäikeinen ohjelma on suunniteltu suorittamaan useita prosesseja samanaikaisesti, mikä voi parantaa ohjelman suorituskykyä ja antaa ohjelman käyttää useita prosessoreita ja parantaa yleistä suorituskykyä.

171. Mitä etuja monisäikeisestä on?

Monisäikeistyksen käytöllä on useita etuja, jotka ovat seuraavat:

  • Responsiivisuus: Käyttäjän reagointikyky kasvaa, koska monisäikeinen interaktiivinen sovellus sallii koodin suorittamisen myös silloin, kun osa on estetty tai suorittaa pitkän prosessin.
  • Resurssien jakaminen: Prosessi voi suorittaa viestien välityksen ja jaetun muistin monisäikeistyksen vuoksi.
  • Taloudellisuus: Pystymme jakamaan muistia, minkä ansiosta prosessit ovat taloudellisia.
  • Skaalautuvuus: Monisäikeisyys useilla prosessoreilla lisää rinnakkaisuutta.
  • Parempi viestintä: Säikeen synkronointitoiminnot parantavat prosessien välistä viestintää.
  • Moniprosessoriarkkitehtuurin hyödyntäminen
  • Minimoitu järjestelmäresurssien käyttö

172. Millä kahdella tapaa säie voidaan luoda?

Multithreading on Java-ominaisuus, joka mahdollistaa kahden tai useamman ohjelman samanaikaisen suorittamisen prosessorin maksimaalisen käytön varmistamiseksi. Yleensä säikeet ovat pieniä, kevyitä prosesseja, joilla on erilliset suorituspolut. Nämä säikeet käyttävät jaettua muistia, mutta ne toimivat itsenäisesti, joten jos jokin säikeestä epäonnistuu, se ei vaikuta muihin säikeisiin. Voit luoda säikeen kahdella tavalla:

  • Laajentamalla Thread-luokkaa
  • Toteuttamalla suoritettavan käyttöliittymän.

Laajentamalla Thread-luokkaa

Luomme luokan, joka laajentaa java.lang.Säieluokka . Tämä luokka ohittaa Thread-luokassa käytettävissä olevan run()-metodin. Säie aloittaa elämänsä run()-menetelmän sisällä.

Syntaksi:

public class MyThread extends Thread { public void run() {  // thread code goes here  } }>

Toteuttamalla Runnable-käyttöliittymän

Luomme uuden luokan, joka toteuttaa java.lang.Runnable käyttöliittymä ja override run() -menetelmä. Sitten instantoimme Thread-objektin ja kutsumme tämän objektin start()-metodia.

Syntaksi:

public class MyRunnable implements Runnable { public void run() {  // thread code goes here  } }>

173. Mikä lanka on?

Java-säikeet ovat kevyitä aliprosesseja, joissa on pienin prosessiyksikkö, ja niillä on myös erilliset suorituspolut. Nämä säikeet käyttävät jaettua muistia, mutta ne toimivat itsenäisesti, joten jos säikeissä on poikkeus, joka ei vaikuta muiden säikeiden toimintaan, vaikka ne jakavat saman muistin. Säikeellä on oma ohjelmalaskuri, suorituspino ja paikalliset muuttujat, mutta se jakaa saman muistitilan muiden säikeiden kanssa samassa prosessissa. Java tarjoaa sisäänrakennetun tuen monisäikeille Ajettava käyttöliittymä ja Lanka luokka .

174. Erotatko prosessin ja säikeen?

Prosessi ja säie ovat molemmat suoritusyksiköitä tietokonejärjestelmässä, mutta ne eroavat useilla tavoilla:

Käsitellä asiaa

Lanka

Prosessi on suoritettava ohjelma.

Säie on yksittäinen käskysarja prosessin sisällä.

Prosessin lopettaminen vie enemmän aikaa.

Langan lopettaminen vie vähemmän aikaa.

Prosessi vie enemmän aikaa kontekstin vaihtamiseen.

Säie vie vähemmän aikaa kontekstin vaihtamiseen.

Prosessi on vähemmän tehokas viestinnän kannalta.

Lanka on tehokkaampi viestinnässä.

Prosessi on eristetty.

Säikeet jakavat muistia.

Prosessilla on oma prosessinohjauslohko, pino ja osoiteavaruus.

Threadissa on vanhempien PCB, oma säikeenhallintalohko sekä pino ja yhteinen osoiteavaruus.

Prosessi ei jaa tietoja keskenään.

Säikeet jakavat tietoja keskenään.

175. Kuvaile langan elinkaarta?

Kierteen kierto-768

A lanka Javassa milloin tahansa olemassa missä tahansa seuraavista tiloista. Lanka on vain yhdessä näytetyistä tiloista milloin tahansa:

  1. Uusi: Lanka on luotu, mutta se ei ole vielä alkanut.
  2. Ajettavissa: Säie on käynnissä, suorittaa tehtäväänsä tai on valmis suoritettavaksi, jos muita korkeamman prioriteetin säikeitä ei ole.
  3. Estetty: Säie on tilapäisesti keskeytetty odottamassa resurssia tai tapahtumaa.
  4. Odotetaan: Säie odottaa toisen säikeen suorittavan tehtävän tai tietyn ajan kuluvan.
  5. Lopetettu: Säie on suorittanut tehtävänsä tai toinen säie on lopettanut sen.

176. Selitä suspend()-metodi Thread-luokassa.

Javan Thread-luokan suspend()-menetelmä keskeyttää väliaikaisesti säikeen suorittamisen. Kun säiettä keskeytetään, se menee estettyyn tilaan, eikä käyttöjärjestelmä ajoittaisi sitä, mikä tarkoittaa, että se ei pysty suorittamaan tehtäväänsä ennen kuin sitä jatketaan. Modernissa Java-ohjelmointikielessä on olemassa turvallisempia ja joustavampia vaihtoehtoja suspend()-menetelmille. Tämä menetelmä ei palauta mitään arvoa.

Syntaksi:

  public final void   suspend();>

Esimerkki:

Java
// Java program to show thread suspend() method import java.io.*; class MyThread extends Thread {  public void run()  {  for (int i = 0; i < 10; i++) {  System.out.println(' Running thread : ' + i);  try {  Thread.sleep(1000);  }  catch (Interrupted_Exception e) {  e.printStackTrace();  }  }  } } class GFG {  public static void main(String[] args)  {  MyThread t1 = new MyThread();  t1.start();  try {  Thread.sleep(3000);  }  catch (InterruptedException e) {  e.printStackTrace();  }  // suspend the execution of the thread  t1.suspend();  System.out.println('Suspended thread ');  try {  Thread.sleep(3000);  }  catch (InterruptedException e) {  e.printStackTrace();  }  // resume the execution of the thread  t1.resume();  System.out.println('Resumed thread');  } }>

Lähtö:

Thread running: 0 Thread running: 1 Thread running: 2 Suspended thread Resumed thread Thread running: 3 Thread running: 4 Thread running: 5 Thread running: 6 Thread running: 7 Thread running: 8 Thread running: 9>

177. Selitä pääsäie kohdassa Säieluokan suoritus.

Java tarjoaa sisäänrakennetun tuen monisäikeiseen ohjelmointiin. Pääsäikettä pidetään kaikkien muiden ohjelman suorittamisen aikana luotujen säikeiden pääsäikeenä. Pääsäie luodaan automaattisesti, kun ohjelma käynnistyy. Tämä säie suorittaa ohjelman päämenetelmän. Se vastaa Java-ohjelman päälogiikan suorittamisesta sekä käyttäjän syötteiden käsittelystä. Päälanka toimii pohjalankaana, josta kaikki muut alasäikeet synnytetään.

Thread-Class-Execution-768

178. Mikä on demon-säie?

Java:n demon-säie on matalan prioriteetin säiettä, jota käytetään suorittamaan taustatoimintoja tai tehtäviä, joita käytetään jatkuvaan suorittamiseen. kuten roskien kerääminen, signaalien lähetykset, toimintokuuntelijat jne. Javan daemon-säikeillä on alhaisempi prioriteetti kuin käyttäjäsäikeillä, mikä tarkoittaa, että ne voidaan suorittaa vain, kun käyttäjäsäikeitä ei ole käynnissä. Java-daemon-säikeet ovat hyödyllisiä ominaisuuksia, joita tarvitaan taustatehtäviin, jotka eivät vaadi nimenomaista sulkemista tai viimeistelyä. Se mahdollistaa järjestelmäresurssien tehokkaamman käytön, ja sitä käytetään resurssien yksinkertaistamiseen ja pitkäkestoisten tehtävien yksinkertaistamiseen.

179. Millä tavoilla säie voi siirtyä odotustilaan?

Lanka on kevyt prosessi, joka toimii samanaikaisesti toisen säikeen kanssa yhdessä prosessissa. Jokainen säie voi suorittaa eri tehtävän ja jakaa resurssit yhden prosessin sisällä. Java-säie voi siirtyä odotustilaan monin eri tavoin:

  • Sleep()-menetelmä Kutsu: Uni () -menetelmää käytetään säikeen suorittamisen keskeyttämiseen tietyksi ajaksi. Kun säie on taukotilassa, se siirtyy odotustilaan.
  • Odota() -menetelmä: Tätä menetelmää käytetään odottamaan lankaa, kunnes toinen säie ilmoittaa sen heräämisestä. Säie siirtyy odotustilaan, kunnes se saa ilmoituksen toiselta säikeeltä.
  • Join()-menetelmä: Join()-menetelmää voidaan käyttää odottamaan säiettä suorittamisen loppuun. Kutsusäie siirtyy odotustilaan, kunnes kohdesäie on valmis.
  • Odotetaan I/O-toimintoja: Jos säie odottaa Input/Output-toiminnon valmistumista, se siirtyy odotustilaan, kunnes toiminto on valmis.
  • Synkronointiongelmat: Jos monisäikeisessä sovelluksessa on synkronointiongelmia, säikeet voivat siirtyä odotustilaan, kunnes synkronointiongelmat on ratkaistu.

180. Kuinka monisäikeistys tapahtuu tietokoneessa, jossa on yksi prosessori?

Java käyttää tekniikkaa, jota kutsutaan aikajakoksi, jota kutsutaan yleisesti aikaleikkaukseksi, toteuttaakseen monisäikeen tietokoneissa, joissa on yksi prosessori. Rinnakkaissuorituksen ulkonäkö syntyy, kun suoritin vaihtaa aktiivisten säikeiden välillä. Käyttöjärjestelmä on vastuussa CPU-ajan varaamisesta kullekin säikeelle peräkkäin ja säikeiden ajoittamisesta.

Estääkseen säikeiden vuorovaikutuksen toistensa kanssa ja luomasta kilpailutilanteita tai muita ongelmia, Javalla on useita tapoja ohjata säikeiden toimintaa, mukaan lukien synkronointi ja lukitus. On mahdollista luoda monisäikeisiä ohjelmoijia, jotka toimivat oikein ja tehokkaasti yhdellä CPU:lla varustetussa koneessa säätelemällä säikeiden välistä vuorovaikutusta ja varmistamalla, että keskeiset koodin osat synkronoidaan. Toisin kuin saman ohjelman käyttäminen tietokoneessa, jossa on useita suorittimia tai ytimiä, monisäikeistys yhdellä suorittimella voi antaa vain vaikutelman rinnakkaisuudesta, ja todelliset suorituskyvyn lisäykset voivat olla vaatimattomia. Käyttöjärjestelmä jakaa CPU-ajan, joka on käytettävissä, kun useat säikeet ovat käynnissä yhdellä CPU:lla, pieniin aikalohkoihin ja antaa kullekin säikeelle suoritettavan aikajakson. Käyttöjärjestelmän nopea vaihtaminen säikeiden välillä luo vaikutelman rinnakkaisesta suorituksesta. Vaihto säikeiden välillä näyttää olevan välitöntä, koska aikaviipaleet ovat usein hyvin pieniä, millisekuntien tai mikrosekuntien luokkaa.

Java-haastattelukysymyksiä kokeneille

181. Mitkä ovat Java-säieprioriteettityypit? Ja mikä on JVM:n määrittämän säikeen oletusprioriteetti?

Prioriteetit säikeissä on käsite, jossa jokaisella säikeellä on prioriteetti, joka maallikon kielellä voidaan sanoa, että jokaisella objektilla on tässä prioriteetti, jota edustavat numerot välillä 1-10. Javassa on erityyppisiä säikeen ominaisuuksia, jotka mainitaan alla:

  • MIN_PRIORITY
  • MAX_PRIORITY
  • NORM_PRIORITY

Oletusarvoisesti säikeelle on määritetty NORM_PRIORITY.

182. Miksi roskien kerääminen on tarpeen Javassa?

Javalle roskien kerääminen on välttämätöntä muistivuotojen välttämiseksi, jotka voivat aiheuttaa ohjelman kaatumisen ja muuttua epävakaaksi. Javalla ei voi mitenkään välttää roskien keräämistä. Toisin kuin C++, roskienkeräys Javassa auttaa ohjelmoijia keskittymään sovelluksen kehittämiseen muistiresurssien hallinnan ja muistivuodoista huolehtimisen sijaan. Java Virtual Machine (JVM) hallitsee muistia automaattisesti ajoittain suorittamalla roskakeräyksen, joka vapauttaa sovelluksen käyttämättömän muistin. Roskien kerääminen tekee Java-muistista tehokkaan, koska se poistaa viittauksettomat objektit kasamuistista.

183. Mikä on jätekeräyksen haittapuoli?

Monien etujen lisäksi Garbage Collectorilla on tiettyjä alla mainittuja haittoja:

  1. Roskienkeräyksen suurin haittapuoli on, että se voi aiheuttaa taukoja sovelluksen suorittamiseen, koska se tyhjentää muistin, mikä hidastaa sovelluksen suorituskykyä.
  2. Roskien keräysprosessi on epädeterministinen, minkä vuoksi on vaikea ennustaa, milloin roskien kerääminen tapahtuu, mikä aiheuttaa arvaamatonta käyttäytymistä sovelluksissa. Jos esimerkiksi kirjoitamme minkä tahansa ohjelman, ohjelmoijien on vaikea päättää, johtuuko ongelma roskien keräämisestä vai muista ohjelman tekijöistä.
  3. Roskien kerääminen voi myös lisätä muistin käyttöä, jos ohjelma luo ja hylkää paljon lyhytikäisiä esineitä.

184. Selitä ero pienen, suuren ja täyden roskakeräyksen välillä.

Java Virtual Machine (JVM) poistaa kohteet, jotka eivät ole enää käytössä, käyttämällä roskakeräystä, joka tarkistaa ja poistaa nämä objektit säännöllisesti. JVM:ssä on erilaisia ​​roskienkeräystyyppejä, joilla kullakin on erilaiset ominaisuudet ja suorituskyky. Tärkeimmät jätteenkeräystyypit ovat:

  • Pieni roskakeräys: Tätä jätteenkeräystä tunnetaan myös nuoren sukupolven roskankeräyksenä, ja sitä käytetään lyhytikäisten esineiden (nopeasti luotujen ja hylättyjen) muistin keräämiseen ja palauttamiseen.
  • Suurin roskakeräys: Tätä jätteenkeräystä tunnetaan myös vanhan sukupolven roskakeräyksenä, ja sitä käytetään keräämään ja palauttamaan muistia, jota käyttävät pitkäikäiset kohteet (esineet, jotka selviävät useista pienistä roskakeräyksistä ja ylennetään vanhalle sukupolvelle).
  • Täysi roskakeräys: Täydellisen roskakeräyksen aikana kerätään ja hyödynnetään muistoja kaikilta sukupolvilta, mukaan lukien nuorten ja vanhojen muistot. Täysi jätteenkeruu kestää yleensä kauemmin kuin pieni tai suuri roskakeruu, minkä vuoksi sovellus pysähtyy väliaikaisesti.

185. Kuinka tunnistat suuret ja pienet roskakeräykset Javalla?

Suuret jätekeräystyöt selviytymistilassa ja pienet roskienkeräystyöt Eden-tilassa merkin ja lakaisu -rutiinin suorittamiseksi. Ja voimme tunnistaa ne molemmat tulosteen perusteella, jossa sivukokoelma tulostaa GC:n, kun taas suuri kokoelma tulostaa Full GC:n siinä tapauksessa, että roskakeruun kirjaus on otettu käyttöön komennolla -XX:PrintGCDetails tai verbose:gc.

186. Mikä on muistivuoto ja miten se vaikuttaa roskien keräämiseen?

Java-ohjelmassa muistivuodot voivat johtua useista tekijöistä, kuten resurssien sulkemattomuudesta, objektiviittausten pitämisestä pidempään kuin on tarpeen tai liian monen objektin luomisesta tarpeettomasti. On tilanteita, joissa roskankerääjä ei kerää esineitä, koska niihin viitataan. Näissä tilanteissa, joissa sovellus luo paljon objekteja eikä käytä niitä ja jokaisella objektilla on kelvollisia viittauksia, Java-roskienkerääjä ei voi tuhota objekteja. Näitä hyödyttömiä esineitä, jotka eivät anna mitään arvoa ohjelmalle, kutsutaan muistivuotoja. Muistivuodot voivat vaikuttaa jätteenkeräykseen negatiivisesti estämällä roskankerääjää ottamasta takaisin käyttämätöntä muistia. Tämä toiminta johtaa hitaaseen suorituskykyyn tai joskus järjestelmävirheeseen. Ohjelmassa on tärkeää välttää muistivuotoja hallitsemalla resursseja ja objektiviittauksia oikein.

Esimerkki:

Java
// Java Program to demonstrate memory leaks import java.io.*; import java.util.Vector; class GFG {  public static void main(String[] args)  {  Vector a = new Vector(21312312);  Vector b = new Vector(2147412344);  Vector c = new Vector(219944);  System.out.println('Memory Leak in Java');  } }>

Lähtö:

Exception in thread 'main' java.lang.OutOfMemoryError: Java heap space  at java.base/java.util.Vector.(Vector.java:142)  at java.base/java.util.Vector.(Vector.java:155)  at GFG.main(GFG.java:9)>

187. Nimeä joitain java.util.regex-paketissa olevia luokkia.

Javan säännölliset lausekkeet tai Regex on API, jota käytetään merkkijonojen etsimiseen ja manipulointiin Javassa. Se luo merkkijonokuvioita, jotka voivat poimia tarvittavat tiedot merkkijonoista tai yleistää kuvion.

Java.util.regexissä on kolme alla mainittua luokkaa:

  • Kuvioluokka: Osaa määrittää kuvioita
  • Vastausluokka: Voi suorittaa tekstille täsmäysoperaatioita kuvioiden avulla
  • PatternSyntaxException Class: Voi osoittaa syntaksivirheen säännöllisen lausekkeen mallissa.

Lisäksi 3 luokan lisäksi paketti koostuu yhdestä käyttöliittymästä MatchResult Interface, jota voidaan käyttää vastaavuusoperaation tuloksen esittämiseen.

188. Vahvista salasana kirjoittamalla säännöllinen lauseke. Salasanan on alettava aakkosilla, joita seuraa aakkosnumeerisia merkkejä; Sen pituuden on oltava välillä 8-20.

regex = ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&-+=()])(?=S+$).{8, 20}$>

Selitys:

  • ^ käytetään merkkijonon aloitusmerkkiä.
  • (?=.*[0-9]), jota käytetään numerossa, täytyy esiintyä vähintään kerran.
  • (?=.*[a-z]), jota käytetään pienillä kirjaimilla, täytyy esiintyä vähintään kerran.
  • (?=.*[A-Z]) käytetään isoja kirjaimia varten, joiden täytyy esiintyä vähintään kerran alimerkkijonossa.
  • (?=.*[@#$%^&-+=()] käytetään erikoismerkille, jonka täytyy esiintyä vähintään kerran.
  • (?=S+$) välilyönnit eivät salli koko merkkijonoa.
  • .{8, 20} käytetään vähintään 8 merkkiä ja enintään 20 merkkiä.
  • $ käytetään merkkijonon loppuun.

189. Mikä on JDBC?

JDBC Standard API:a käytetään Java-sovellusten ja relaatiotietokantojen linkittämiseen. Se tarjoaa kokoelman luokkia ja rajapintoja, joiden avulla ohjelmoijat voivat käyttää Java-ohjelmointikieltä kommunikoidakseen tietokannan kanssa. JDBC:n luokat ja käyttöliittymä sallivat sovelluksen lähettää käyttäjien tekemiä pyyntöjä määritettyyn tietokantaan. JDBC:ssä on yleensä neljä osaa, joiden avulla se on vuorovaikutuksessa tietokannan kanssa:

  • JDBC API
  • JDBC ohjainpäällikkö
  • JDBC Test Suite
  • JDBC-ODBC-silta-ajurit

JDBC-768

190. Mikä on JDBC-ohjain?

JDBC ohjain on ohjelmistokomponentti, jota käytetään mahdollistamaan Java-sovelluksen vuorovaikutus tietokannan kanssa. JDBC tarjoaa JDBC API:n toteutuksen tietylle tietokannan hallintajärjestelmälle, jonka avulla se voi yhdistää tietokannan, suorittaa SQL-käskyjä ja hakea tietoja. JDBC-ajureita on neljää tyyppiä:

  • JDBC-ODBC Bridge -ohjain
  • Native-API-ohjain
  • Verkkoprotokollan ohjain
  • Ohut kuljettaja

JDBC-ohjain-660

191. Mitä vaiheita tarvitaan yhteyden muodostamiseksi Java-tietokantaan?

On olemassa tiettyjä vaiheita tietokannan ja Java-ohjelman yhdistämiseksi, kuten alla on mainittu:

  • Tuo paketit
  • Lataa ajurit käyttämällä forName()-metodia
  • Rekisteröi ajurit DriverManagerin avulla
  • Muodosta yhteys käyttämällä Connection class -objektia
  • Luo lausunto
  • Suorita kysely
  • Sulje liitännät

192. Mitä ovat JDBC API -komponentit?

JDBC API -komponentit tarjoavat erilaisia ​​menetelmiä ja käyttöliittymiä helpottaakseen tiedonsiirtoa tietokantojen kanssa. Se tarjoaa myös paketteja, kuten java Se ja java EE, jotka tarjoavat mahdollisuuden kirjoittaa kerran ajettaessa missä tahansa (WORA).

Syntaksi:

java.sql.*;>

193. Mikä on JDBC-yhteysliittymä?

Java-tietokantayhteysliitäntä (JDBC) on ohjelmistokomponentti, jonka avulla Java-sovellukset voivat olla vuorovaikutuksessa tietokantojen kanssa. Yhteyden parantamiseksi JDBC vaatii ohjaimet jokaiselle tietokannalle.

194. Mitä JDBC ResultSet -liitäntä tekee?

JDBC ResultSet -liittymää käytetään tietojen tallentamiseen tietokannasta ja käyttämään niitä Java-ohjelmassamme. Voimme myös käyttää ResultSetiä tietojen päivittämiseen käyttämällä updateXXX()-menetelmiä. ResultSet-objekti osoittaa kohdistimen ennen tulostietojen ensimmäistä riviä. Käyttämällä next()-menetelmää voimme iteroida ResultSetin läpi.

195. Mikä on JDBC Rowset?

JDBC RowSet tarjoaa tavan tallentaa tiedot taulukkomuodossa. RowSet on Java-käyttöliittymä, jota voidaan käyttää java.sql-paketissa. Yhteys RowSet-objektin ja tietolähteen välillä säilyy koko sen elinkaaren ajan. Rivijoukot luokitellaan viiteen luokkaan alla mainitun toteutuksen perusteella:

  1. JdbcRowSet
  2. CachedRowSet
  3. WebRowSet
  4. FilteredRowSet
  5. JoinRowSet

196. Mikä on JDBC DriverManager -luokan rooli?

JDBC DriverManager -luokka toimii käyttöliittymänä käyttäjille ja ohjaimille. Sitä käytetään monin tavoin alla mainitulla tavalla:

  • Sitä käytetään luomaan yhteys Java-sovelluksen ja tietokannan välille.
  • Auttaa pitämään kirjaa käytettävissä olevista ohjaimista.
  • Se voi auttaa luomaan yhteyden tietokannan ja asianmukaisten ohjainten välille.
  • Se sisältää kaikki menetelmät, joilla voidaan rekisteröidä tietokannan ajuriluokat ja poistaa niiden rekisteröinti.
  • DriverManager.registerDriver()-menetelmä voi ylläpitää luetteloa itse rekisteröityneistä ohjainluokista.

Java-erojen haastattelukysymykset

197. Erota Iterable ja Iterator.

Iteroitavissa

Iteraattori

Iterable tarjoaa tavan iteroida elementtisarjaa.

Iteraattori auttaa iteroimaan elementtikokoelmaa peräkkäin.

iteraattori() menetelmä palauttaa iteraattorin. hasNext() ja Seuraava() menetelmiä tarvitaan.
Poista() menetelmä on valinnainen. Poista() menetelmä vaaditaan iteraattorissa.

Esimerkkejä ovat Luettelo, Jono ja Aseta.

Esimerkkejä ovat ListIterator, Enumeration ja ArrayIterator.

198. Tee ero luettelon ja joukon välillä.

Lista

Aseta

Tilattu

Tilaamaton

Luettelo sallii kaksoiskappaleet.

Aseta ei salli päällekkäisiä arvoja.

Luetteloon pääsee indeksillä.

Sarjaan päästään hashcodella.

Useita nollaelementtejä voidaan tallentaa.

Null-elementti voidaan tallentaa vain kerran.

Esimerkkejä ovat ArrayList, LinkedList jne.

Esimerkkejä ovat HashSet ja TreeSet. LinkedHashSet jne.

199. Tee ero luettelon ja kartan välillä.

Lista

Kartta

Luettelon käyttöliittymä sallii elementtien kopioinnin.

Kartta ei salli päällekkäisiä elementtejä.

Lista säilyttää lisäysjärjestyksen.

Kartta ei ylläpidä lisäysjärjestystä.

Useita nollaelementtejä voidaan tallentaa.

Kartta sallii enintään yhden nollaavaimen ja minkä tahansa määrän nolla-arvoja.

Lista tarjoaa get()-menetelmän elementin saamiseksi määritetylle indeksille.

Kartta ei tarjoa hakumenetelmää tietyn indeksin elementtien saamiseksi.

Listan toteuttaa ArrayList jne.

Kartan toteuttavat HashMap, TreeMap, LinkedHashMap

200. Erota jonon ja pinon välillä.

Jonottaa

Pino

Jonotietorakennetta käytetään elementtien tallentamiseen, ja sitä käytetään toimintojen, kuten jonon, jonon purkamisen tai jonon lopusta, suorittamiseen.

Pinotietorakennetta käytetään elementtien tallentamiseen, ja sitä käytetään toimintojen suorittamiseen, kuten push, pop pinon yläosasta.

Jonotietorakenne Toteuttaa FIFO-järjestyksen.

Pinotietorakenne Toteuttaa LIFO-tilauksen.

Jonoihin lisääminen ja poistaminen tapahtuu luettelon vastakkaisista päistä. Poistaminen tapahtuu luettelon etuosasta ja lisääminen luettelon takaosaan.

Pinoihin lisääminen ja poistaminen tapahtuu vain listan yhdestä päästä, jota kutsutaan alkuun.

Insert-toimintoa kutsutaan jonooperaatioksi.

Työntötoimintoa kutsutaan työntötoiminnoksi.

Jonoa käytetään yleensä peräkkäiseen käsittelyyn liittyvien ongelmien ratkaisemiseen.

Pinoa käytetään yleensä rekursioon liittyvien ongelmien ratkaisemiseen.

201. Erota PriorityQueue ja TreeSet.

Prioriteettijono

TreeSet

Se käyttää Queuea taustalla olevana tietorakenteena.

Se käyttää joukkoa taustalla olevana tietorakenteena.

Tämä tietorakenne sallii elementtien päällekkäisyyden

Tämä tietorakenne ei salli päällekkäisiä elementtejä

PriorityQueue-luokka toteuttaa Priority Queuen.

TreeSet on toteutettu TreeSet-luokassa.

PriorityQueue tulee JDK 1.5:ssä.

TreeSet tulee JDK 1.4:ssä.

PriorityQueue pq = new PriorityQueue();

reeSet ts = new TreeSet();

202. Erota yksitellen linkitetty luettelo ja kaksinkertaisesti linkitetty luettelo.

Yksittäin linkitetty luettelo

Kaksoislinkitetty lista

Yksittäin linkitetyssä luettelossa on vain kaksi segmenttiä eli tiedot ja linkki.

Kaksinkertaisesti linkitetty luettelo sisältää kolme segmenttiä eli tiedot ja kaksi osoitinta.

Yksittäin linkitetyn luettelon läpikulku on mahdollista vain eteenpäin.

Kaksinkertaisesti linkitetyn luettelon läpikulku on mahdollista vain molempiin suuntiin eteen- ja taaksepäin.

Se käyttää vähemmän muistia, koska jokaisella solmulla on vain yksi osoitin.

Se vaatii enemmän muistia kuin yksittäin linkitetty luettelo, koska jokaisessa solmussa on kaksi osoitinta.

Helppokäyttöinen ja lisää solmut luettelon alkuun.

Hieman monimutkaisempi käyttää ja helppo lisätä luettelon loppuun.

Lisäyksen ja deleetion aikamonimutkaisuus on O(n).

Lisäyksen ja deleetion aikamonimutkaisuus on O(1).

Yksittäin linkitetty luettelo-660

Kaksinkertaisesti linkitetty luettelo-660

203. Erota Failfast ja Failsafe.

FailFast

Idioottivarma

Failsfast epäonnistuu välittömästi, kun se havaitsee samanaikaisen muutoksen iteroinnin aikana.

Failsafe jatkaa alkuperäisen kokoelman toistamista ja luo myös kopion muokattavaksi.

Failfastia käytetään yleensä yksisäikeisissä ympäristöissä.

Failsafea käytetään monisäikeisissä ympäristöissä.

Failfast ei salli muutoksia iteroinnin aikana.

Failsafe sallii muokkaamisen iteroinnin aikana.

Failfast on nopea verrattuna failsafeen, koska se ei sisällä kokoelman kopioimista.

Failsafe on yleensä hidas verrattuna failfastiin.

FailFast-heitot ConcurrentModificationException jos kokoelmaa muokataan iteroinnin aikana.


yhdistävä lajittelu

FailSafe ei tee mitään poikkeusta, vaan sen sijaan se luo kopion kokoelmasta iteroitavaksi.

204. Erota HashMap ja TreeMap.

HashMap

TreeMap

Hasmap käyttää hashtablea tallentaakseen avainarvopareja.

Treemap käyttää punamustia puita avainarvoparien tallentamiseen.

Hashmap ei ylläpidä mitään erityistä järjestystä avain-arvo-pareille.

Treemap ylläpitää luonnollista järjestystä avainten perusteella.

Iteraatiojärjestystä ei taata hashmapissa.

Iterointi on lajiteltu avainten perusteella.

Hashmapit ovat nopeampia hakemisessa Treemapiin verrattuna.

Haku Treemapissa on hitaampaa, koska se käyttää puun läpikulkua avainten löytämiseen.

Hashmap toteutetaan käyttämällä linkitettyjen luetteloiden taulukkoa.

TreeMap on toteutettu punamustalla puulla.

Hashmap käyttää Object-luokan equals()-metodia avaimien vertailuun.

TreeMap käyttää vertailuTo()-menetelmää avaimien vertaamiseen.

205. Erota Queue ja Deque.

Jonottaa

Mistä

Jono on lineaarinen tietorakenne, jota käytetään elementtien kokoelman tallentamiseen.

Deque, joka tunnetaan myös nimellä kaksipäinen jono, on myös lineaarinen tietorakenne, joka tallentaa kokoelman elementtejä, joiden molemmista päistä poistetaan ja lisätään operaatioita.

Jonon elementit voidaan lisätä vain tietorakenteen loppuun.

Elementtejä voidaan lisätä tietorakenteen molemmista päistä.

Jono voidaan toteuttaa käyttämällä Array tai Linked List.

Dequeue voidaan toteuttaa käyttämällä Circular Array tai Double Linked List.

Jonoja käytetään yleensä jonotuslistan tai tehtäväjonon toteuttamiseen.

Purkua käytetään pinon toteuttamiseen tai elementtien purkamiseen molemmista päistä.

Jono-660

Kaksinkertainen jono-660

206. Erota HashSet ja TreeSet.

HashSet

TreeSet

HashSet on järjestämätön.

TreeSet perustuu luonnolliseen järjestykseen.

HashSet sallii nollaelementit.

TreeSet ei salli nollaelementtejä.

HashSet on HashSet-luokan toteuttama.

TreeSet on TreeSet-luokan toteuttama.

HashSet hs = new HashSet();

TreeSet ts = uusi Puujoukko();

Java-haastattelukysymykset – UKK

Q1. Mikä on Java-kehittäjän palkka Intiassa?

Eri resurssien mukaan Java-taustakehittäjän keskipalkka on yli 14 lakhs vuodessa, mikä on 30 % korkeampi kuin mikään muu kehittäjärooli . Täältä voit myös tarkistaa uusimman kurssimme GeekforGeeks-harjoitusportaali voi myös olla apua.

Q5. Kuinka erottua joukosta Java-haastattelussa?

Erotut joukosta Java-haastattelussa osoittamalla syvällistä Java-konseptien ja käytännön sovellusten ymmärtämistä. Esittele ongelmanratkaisutaitojasi selittämällä lähestymistapaasi monimutkaisiin skenaarioihin ja tarjoamalla tehokkaita ratkaisuja. Korosta lisäksi kaikki asiaankuuluvat projektit tai panokset, joita olet tehnyt Java-yhteisölle. Innostuksen osoittaminen, hyvä kommunikointi ja halu oppia voivat myös jättää positiivisen vaikutelman.