logo

„Java“ interviu klausimai ir atsakymai

„Java“ yra viena populiariausių programavimo kalbų pasaulyje, žinoma dėl savo universalumo, perkeliamumo ir plataus pritaikymo spektro. Dėl savo funkcijų ir našumo „Java“ yra dažniausiai naudojama kalba tokiose geriausiose įmonėse kaip „Uber“, „Airbnb“, „Google“, „Netflix“, „Instagram“, „Spotify“, „Amazon“ ir daugelyje kitų.

Šiame straipsnyje mes pateiksime Daugiau nei 200 pagrindinių „Java“ interviu klausimų pritaikyta tiek naujokams, tiek patyrusiems specialistams, turintiems 3, 5 ir 8 metų patirtį. Čia aptariame viską, įskaitant pagrindines „Java“ koncepcijas, objektinį programavimą (OOP), daugiagiją, išimčių tvarkymą, dizaino modelius, „Java“ kolekcijas ir dar daugiau, kas tikrai padės jums įveikti „Java“ interviu.

Core-Java-Interviu-Klausimai



Turinys

„Java“ interviu klausimai pirmakursiams

1. Ar Java platforma yra nepriklausoma, jei tada kaip?

Taip, „Java“ yra nuo platformos nepriklausoma kalba. Skirtingai nuo daugelio programavimo kalbų, javac kompiliatorius sukompiliuoja programą, kad sudarytų baito kodą arba .class failą. Šis failas nepriklauso nuo veikiančios programinės ar aparatinės įrangos, tačiau jam reikalingas JVM (Java Virtual Machine) failas, iš anksto įdiegtas operacinėje sistemoje, kad būtų galima toliau vykdyti baitų kodą.

Nors JVM priklauso nuo platformos , baitų kodas gali būti sukurtas bet kurioje sistemoje ir gali būti vykdomas bet kurioje kitoje sistemoje, nepaisant to, kad naudojama aparatinė ar programinė įranga, kuri daro Java platformą nepriklausomą.

2. Kokios yra populiariausios „Java“ funkcijos?

„Java“ yra viena garsiausių ir dažniausiai naudojamų kalbų realiame pasaulyje, „Java“ turi daug funkcijų, dėl kurių ji yra geresnė nei bet kuri kita kalba, kai kurios iš jų yra paminėtos toliau:

„Java-768“ savybės

  • Paprasta : Java yra gana paprasta suprasti ir sintaksė
  • Nepriklausoma nuo platformos: „Java“ yra nepriklausoma nuo platformos, tai reiškia, kad galime paleisti tą pačią programą bet kurioje programinėje ir aparatinėje įrangoje ir gauti tą patį rezultatą.
  • Interpretuojama : Java interpretuojama taip pat kaip kompiliatoriaus kalba.
  • Tvirtas : tokios funkcijos kaip šiukšlių surinkimas, išimčių tvarkymas ir kt., dėl kurių kalba tvirta.
  • Objektinis : Java yra į objektus orientuota kalba, kuri palaiko klasės, objektų, keturių OOPS ramsčių ir kt.
  • Apsaugota : Kadangi galime tiesiogiai bendrinti programą su vartotoju, nesidalindami faktine programa, „Java“ tampa saugia kalba.
  • Didelis našumas: greičiau nei kitos tradicinės interpretuojamos programavimo kalbos.
  • Dinamiškas : palaiko dinaminį klasių ir sąsajų įkėlimą.
  • Paskirstyta : „Java“ funkcija leidžia pasiekti failus iškviečiant metodus iš bet kurio prijungto įrenginio.
  • Daugiagija : vienu metu atlikite kelias užduotis, nustatydami kelias gijas
  • Neutrali architektūra : tai nepriklauso nuo architektūros.

3. Kas yra JVM?

JVM-768

JVM reiškia Java virtualią mašiną, tai yra Java interpretatorius. Ji yra atsakinga už „Java“ sukurto baito kodo įkėlimą, patikrinimą ir vykdymą.

Nors tai priklauso nuo platformos, o tai reiškia, kad JVM programinė įranga yra skirtinga skirtingoms operacinėms sistemoms, ji vaidina labai svarbų vaidmenį, kad Java platforma būtų nepriklausoma.

Norėdami sužinoti daugiau apie temą, žr JVM Java .

4. Kas yra JIT?

JIT-768

JIT reiškia (Just-in-Time) kompiliatorius yra JRE (Java Runtime Environment) dalis, jis naudojamas geresniam Java programų veikimui vykdymo metu. JIT naudojimas yra paminėtas žingsnis po žingsnio, nurodytas toliau:

  1. Šaltinio kodas yra sudarytas naudojant javac kompiliatorius, kad sudarytų baitinį kodą
  2. Bytekodas toliau perduodamas JVM
  3. JIT yra JVM dalis, JIT yra atsakinga už baitinio kodo kompiliavimą į vietinį mašinos kodą vykdymo metu.
  4. JIT kompiliatorius yra įjungtas visame pasaulyje, o jis suaktyvinamas, kai iškviečiamas metodas. Sukompiliuotam metodui JVM tiesiogiai iškviečia sukompiliuotą kodą, užuot jį interpretavęs.
  5. Kaip JVM vadina sudarytą kodą, kuris padidina našumą ir vykdymo greitį.

Norėdami sužinoti daugiau apie temą, žr JIT Java .

5. Kokios yra JVM atminties saugyklos?

JVM-Sritys-768

JVM susideda iš kelių atminties saugyklų, kaip nurodyta toliau:

  1. Klasės (metodo) sritis: saugo kiekvienos klasės klasės lygio duomenis, pvz., vykdymo konstantos telkinį, lauko ir metodo duomenis bei metodų kodą.
  2. Krūva: sukuriami objektai arba saugomi objektai. Jis naudojamas atminčiai paskirstyti objektams vykdymo metu.
  3. Stack: saugo duomenis ir dalinius rezultatus, kurių prireiks grąžinant metodo vertę ir atliekant dinaminį susiejimą
  4. Programos skaitiklio registras: saugo šiuo metu vykdomos „Java“ virtualiosios mašinos komandos adresą.
  5. Native Method Stack: saugo visus programoje naudojamus vietinius metodus.

Norėdami sužinoti daugiau apie temą, žr JVM atminties saugyklos .

6. Kas yra klasės krautuvas?

Classloader yra JRE (Java Runtime Environment) dalis, kuri vykdant baitinį kodą arba sukurtą .class failą yra atsakinga už dinamišką Java klasių ir sąsajų įkėlimą į JVM (Java Virtual Machine). Dėl klasių kroviklių Java vykdymo laiko sistemai nereikia žinoti apie failus ir failų sistemas.

Norėdami sužinoti daugiau apie temą, žr „ClassLoader“ Java.

7. Skirtumas tarp JVM, JRE ir JDK.

JVM : JVM, taip pat žinomas kaip Java virtualioji mašina, yra JRE dalis. JVM yra vertėjo tipas, atsakingas už baitinio kodo konvertavimą į mašininio skaitymo kodą. Pati JVM priklauso nuo platformos, tačiau interpretuoja baitų kodą, kuris yra nuo platformos nepriklausoma priežastis, kodėl Java yra nepriklausoma nuo platformos.

JRE : JRE reiškia Java Runtime Environment, tai yra diegimo paketas, suteikiantis aplinką Java programai ar programai paleisti bet kuriame kompiuteryje.

JDK : JDK reiškia Java plėtros rinkinį, kuris suteikia aplinką Java programoms kurti ir vykdyti. JDK yra paketas, kurį sudaro du dalykai: kūrimo įrankiai, skirti sukurti aplinką Java programoms kurti, ir JRE, skirtas Java programoms ar programoms vykdyti.

Norėdami sužinoti daugiau apie temą, žr JVM, JRE ir JDK skirtumai .

8. Kuo skiriasi Java ir C++?

Pagrindas

C++

Java

Platforma

C++ priklauso nuo platformos

„Java“ yra nepriklausoma nuo platformos

Taikymas

C++ dažniausiai naudojamas sistemos programavimui

Java daugiausia naudojama taikomųjų programų programavimui

Aparatūra

C++ yra arčiau aparatinės įrangos

„Java“ nėra tokia interaktyvi su aparatine įranga

Pasaulinė apimtis

C++ palaiko pasaulinę ir vardų erdvės apimtį.

„Java“ nepalaiko pasaulinės apimties.

Nepalaiko

Funkcijos, palaikomos Java, bet ne C++:

  • sriegio atrama
  • dokumentacijos komentaras
  • nepasirašytas poslinkis į dešinę(>>>)

Funkcijos, palaikomos C++, bet ne Java:

  • eiti į
  • Rodyklės
  • Skambinti pagal nuorodą
  • Struktūros ir sąjungos
  • Daugybinis paveldėjimas
  • Virtualios funkcijos

Oi

C++ yra į objektą orientuota kalba. Tai nėra viena šaknų hierarchija.

„Java“ taip pat yra į objektus orientuota kalba. Tai yra vienos šaknies hierarchija, nes viskas gaunama iš vienos klasės (java.lang.Object).

Paveldėjimo medis

C++ visada sukuria naują paveldėjimo medį.

Java naudoja vieną paveldėjimo medį, nes Java klasės yra Java objektų klasių antrinės dalys.

9. Paaiškinkite viešą statinį void main(String args[]) Java.

Pagrindinė_funkcija

Skirtingai nuo bet kurios kitos programavimo kalbos, pvz., C, C++ ir tt Java, mes paskelbėme pagrindinę funkciją kaip viešą statinį tuščią pagrindą (String args[]). Sąvokų reikšmės nurodytos toliau:

  1. viešas : publika yra prieigos modifikatorius, atsakingas už paminėjimą, kas gali pasiekti elementą arba metodą ir kokia yra riba. Ji yra atsakinga už tai, kad pagrindinė funkcija būtų prieinama visame pasaulyje. Jis paskelbiamas viešai, kad JVM galėtų jį iškviesti iš klasės ribų, nes jos nėra dabartinėje klasėje.
  2. statinis : static yra raktinis žodis, naudojamas tam, kad galėtume naudoti elementą nepradėdami klasės, kad išvengtume nereikalingo atminties paskirstymo.
  3. tuštuma : void yra raktinis žodis ir naudojamas nurodyti, kad metodas nieko negrąžina. Kadangi pagrindinė funkcija negrąžina nieko, ką naudojame tuščiu.
  4. pagrindinis : pagrindinis reiškia, kad deklaruota funkcija yra pagrindinė funkcija. Tai padeda JVM nustatyti, kad deklaruota funkcija yra pagrindinė funkcija.
  5. Styginių argai[] : Jame saugomi „Java“ komandinės eilutės argumentai ir yra java.lang.String klasės tipo masyvas.

10. Kas yra Java String Pool?

„Java String Pool“ yra krūvos atminties vieta, kurioje saugomos visos programoje apibrėžtos eilutės. Atskira vieta krūvoje yra ten, kur saugomas kintamasis, kuriame saugoma eilutė. Kai sukuriame naują eilutės objektą, JVM patikrina, ar objektas yra eilutės telkinyje. Jei eilutė yra telkinyje, ta pati objekto nuoroda bendrinama su kintamuoju, kitaip sukuriamas naujas objektas.

Java-String-Pool-768

Pavyzdys:

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

11. Kas bus, jei paskelbsime, kad nepaskelbsime pagrindinio statinio?

Pagrindinį metodą galime deklaruoti nenaudodami statikos ir negaudami klaidų. Tačiau pagrindinis metodas nebus traktuojamas kaip įėjimo į programą ar programą taškas.

12. Kas yra Java paketai?

Java paketai gali būti apibrėžti kaip susijusių klasių, sąsajų ir tt tipų grupavimas, suteikiantis prieigą prie apsaugos ir vardų erdvės valdymo.

13. Kodėl naudojami paketai?

Paketai naudojami „Java“, kad būtų išvengta pavadinimų konfliktų, kontroliuojama prieiga ir palengvinama klasių, sąsajų ir tt paieška / vietos nustatymas ir naudojimas.

14. Kokie yra Java paketų pranašumai?

Yra įvairių „Java“ paketų apibrėžimo pranašumų.

  • Paketuose išvengiama vardų susidūrimų.
  • Paketas suteikia lengvesnę prieigos kontrolę.
  • Taip pat galime turėti paslėptas klases, kurios nėra matomos išorėje ir yra naudojamos pakuotėje.
  • Lengviau rasti susijusias klases.

15. Kiek tipų paketų yra Java?

„Java“ yra dviejų tipų paketai

  • Vartotojo nustatyti paketai
  • Build In paketai

16. Paaiškinkite skirtingus Java duomenų tipus.

„Java“ yra 2 tipų duomenų tipai, kaip nurodyta toliau:

  1. Primityvus duomenų tipas
  2. Neprimityvus duomenų tipas arba objekto duomenų tipas

Primityvus duomenų tipas: Primityvūs duomenys yra atskiros reikšmės, neturinčios jokių specialių galimybių. Yra 8 primityvūs duomenų tipai:

  • loginis : išsaugo vertę true arba false
  • baitas : išsaugo 8 bitų pasirašytą dviejų komplemento sveikąjį skaičių
  • char : saugo vieną 16 bitų unikodo simbolį
  • trumpas : saugo 16 bitų pasirašytą dviejų komplemento sveikąjį skaičių
  • tarpt : saugo 32 bitų pasirašytą dviejų komplemento sveikąjį skaičių
  • ilgai : saugo 64 bitų dviejų komplemento sveikąjį skaičių
  • plūdė : saugo vieno tikslumo 32 bitų IEEE 754 slankiojo kablelio
  • dvigubai : saugo dvigubo tikslumo 64 bitų IEEE 754 slankiojo kablelio

Neprimityvus duomenų tipas: nuorodos duomenų tipuose bus kintamojo reikšmių atminties adresas, nes jis negali tiesiogiai išsaugoti reikšmių atmintyje. Neprimityvių tipai yra paminėti žemiau:

  • Stygos
  • Masyvas
  • Klasė
  • Objektas
  • Sąsaja

17. Kada naudojamas baitinis duomenų tipas?

Baitas yra 8 bitų pasirašytas sveikasis skaičius iš dviejų papildymų. Mažiausia baitų palaikoma reikšmė yra –128, o didžiausia – 127. Jis naudojamas tokiomis sąlygomis, kai reikia sutaupyti atminties, o reikalingų skaičių riba yra nuo -128 iki 127.

18. Ar galime deklaruoti žymeklį Java?

Ne, Java neteikia Pointer palaikymo. Kadangi Java turėjo būti saugesnė, nes kuri žymeklio funkcija nėra pateikta Java.

19. Kokia yra numatytoji baitų duomenų tipo reikšmė Java?

Numatytoji „Java“ baitų duomenų tipo reikšmė yra 0.

20. Kokia yra numatytoji slankiojo ir dvigubo duomenų tipo reikšmė Java?

Numatytoji „Float“ reikšmė yra 0.0f, o „double“ – 0.0d Java.

21. Kas yra „Wrapper“ klasė „Java“?

Įvynioklis paprastai vadinamas didesniu subjektu, kuris apima mažesnį objektą. Čia, Java, įvyniojimo klasė yra objektų klasė, apimanti primityvius duomenų tipus.

Primityvūs duomenų tipai yra tie, iš kurių galima sukurti kitus duomenų tipus. Pavyzdžiui, sveikieji skaičiai gali lemti ilgų, baitinių, trumpųjų ir tt sudarymą. Kita vertus, eilutė negali, todėl ji nėra primityvi.

Grįžtant prie įpakavimo klasės, „Java“ yra 8 įpakavimo klasės. Jie yra loginiai, baitai, trumpieji, sveikieji skaičiai, simboliai, ilgi, plūduriuoti ir dvigubi. Be to, pasirinktines įvyniojimo klases taip pat galima sukurti „Java“, kuri yra panaši į „Structure“ koncepciją C programavimo kalboje. Sukuriame savo įvyniojimo klasę su reikalingais duomenų tipais.

22. Kodėl mums reikalingos vyniojimo pamokos?

Įpakavimo klasė yra objektų klasė, apimanti primityvius duomenų tipus, ir mums jų reikia dėl šių priežasčių:

  1. Įvyniojimo klasės yra galutinės ir nekintamos
  2. Pateikiami tokie metodai kaip valueOf(), parseInt() ir kt.
  3. Tai suteikia automatinio dėžės ir išpakavimo funkciją.

23. Atskirkite egzempliorių ir vietinius kintamuosius.

Pavyzdžio kintamasis

Vietinis kintamasis

Paskelbta už metodo ribų, tiesiogiai iškviečiamas metodo.

Paskelbta metodo ribose.

Turi numatytąją reikšmę.

sąrašai java

Nėra numatytosios vertės

Jis gali būti naudojamas visoje klasėje.

Taikymo sritis apsiriboja metodu.

24. Kokios numatytosios reikšmės priskiriamos Java kintamiesiems ir egzemplioriams?

„Java“ programoje Kai nepainicijuojome egzempliorių kintamųjų, kompiliatorius juos inicijuoja numatytosiomis reikšmėmis. Numatytosios egzempliorių ir kintamųjų reikšmės priklauso nuo jų duomenų tipų. Kai kurie įprasti numatytųjų duomenų tipų tipai yra šie:

  • Numatytoji skaičių tipų (baitas, trumpas, int, ilgas, plūduriuojantis ir dvigubas) reikšmė yra 0.
  • Numatytoji loginio tipo vertė yra false.
  • Numatytoji objektų tipų (klasių, sąsajų ir masyvų) reikšmė yra nulinė.
  • Nulinis simbolis u0000 yra numatytoji char tipo reikšmė.

Pavyzdys:

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

Išvestis
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. Kas yra klasės kintamasis?

„Java“ kalboje klasės kintamasis (taip pat žinomas kaip statinis kintamasis) yra kintamasis, kuris deklaruojamas klasėje, bet už bet kurio metodo, konstruktoriaus ar bloko ribų. Klasės kintamieji deklaruojami naudojant statinį raktinį žodį ir jais dalijasi visi klasės egzemplioriai (objektai), taip pat pati klasė. Nesvarbu, kiek objektų yra išvesta iš klasės, kiekvienas klasės kintamasis egzistuotų tik vieną kartą.

Pavyzdys:

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

Išvestis
Number of objects created are 3>

26. Kokia numatytoji reikšmė saugoma vietiniuose kintamuosiuose?

Nėra numatytos reikšmės, saugomos su vietiniais kintamaisiais. Be to, primityvūs kintamieji ir objektai neturi numatytųjų reikšmių.

27. Paaiškinkite skirtumą tarp egzemplioriaus kintamojo ir klasės kintamojo.

Pavyzdžio kintamasis: Klasės kintamąjį be statinio modifikatoriaus, žinomo kaip egzemplioriaus kintamasis, paprastai bendrina visi klasės egzemplioriai. Šie kintamieji gali turėti skirtingas reikšmes tarp kelių objektų. Egzemplioriaus kintamojo turinys yra visiškai nepriklausomas nuo vieno objekto egzemplioriaus nuo kito, nes yra susijęs su konkrečiu klasės objekto egzemplioriumi.

Pavyzdys:

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

Išvestis
Name John>

Klasės kintamasis: Klasės kintamasis gali būti deklaruojamas bet kur klasės lygiu naudojant raktinį žodį static. Šie kintamieji gali turėti tik vieną reikšmę, kai jie taikomi įvairiems objektams. Šiuos kintamuosius gali bendrinti visi klasės nariai, nes jie nėra susieti su jokiu konkrečiu klasės objektu.

Pavyzdys:

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

Išvestis
Area of circle: 78.53975>

28. Kas yra statinis kintamasis?

Statinis raktinis žodis naudojamas dalytis tuo pačiu tam tikros klasės kintamuoju arba metodu. Statiniai kintamieji yra kintamieji, kuriuos paskelbus sukuriama viena kintamojo kopija ir dalijamasi tarp visų objektų klasės lygiu.

29. Kuo skiriasi System.out, System.err ir System.in?

System.out – Tai yra „PrintStream“, kuris naudojamas simboliams rašyti arba, galima sakyti, gali išvesti duomenis, kuriuos norime įrašyti komandų eilutės sąsajos konsolėje / terminale.

Pavyzdys:

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 – Jis naudojamas klaidų pranešimams rodyti.

Pavyzdys:

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

Išvestis:

This is how we throw error with System.err>

Nors „System.err“ turi daug panašumų, abu jie taip pat turi gana daug skirtumų, patikrinkime juos.

System.out System.err

Jis spausdins pagal standartą iš sistemos.

Bus spausdinama pagal standartinę klaidą.

Jis dažniausiai naudojamas rezultatams rodyti konsolėje.

Jis dažniausiai naudojamas klaidų tekstams išvesti.

Jis pateikia išvestį konsolėje su numatyta (juoda) spalva.

Tai taip pat suteikia išvestį konsolėje, tačiau dauguma IDE suteikia jai raudoną spalvą, kad atskirtų.

System.in – Tai yra „InputStream“, naudojamas įvestis iš terminalo lango nuskaityti. Negalime naudoti System.in tiesiogiai, todėl naudojame skaitytuvo klasę, kad gautume įvestį su system.in.

Pavyzdys:

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

Išvestis:

3 4 Addition: 7>

30. Ką jūs suprantate kaip IO srautas?

2-768

„Java“ pateikia įvairius srautus su savo įvesties / išvesties paketu, kuris padeda vartotojui atlikti visas įvesties-išvesties operacijas. Šie srautai palaiko visų tipų objektus, duomenų tipus, simbolius, failus ir tt, kad būtų galima visiškai atlikti įvesties / išvesties operacijas.

31. Kuo skiriasi Reader/Writer klasių hierarchija ir InputStream/OutputStream klasių hierarchija?

Pagrindinis skirtumas tarp jų yra tas, kad baitų srauto duomenis skaito ir įrašo įvesties / išvesties srauto klasės. Simbolius tvarko Skaitytojo ir Rašytojo klasės. Priešingai nei Reader/Writer klasės, kurios kaip parametrus priima simbolių masyvus, įvesties/išvesties srauto klasės metodai priima baitų matricas. Palyginti su įvesties / išvesties srautais, Reader / Writer klasės yra efektyvesnės, tvarko visus Unicode simbolius ir yra naudingos internalizavimui. Vietoj dvejetainių duomenų, pvz., paveikslėlių, naudokite Reader/Writer klases, nebent tai darote.

Pavyzdys:

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

Išvestis
-32 79 -48 32 -22>

32. Kokie visų srautų užsiėmimai yra patys geriausi?

Visas srauto klases galima suskirstyti į dviejų tipų klases, kurios yra „ByteStream“ ir „CharacterStream“ klasės. „ByteStream“ klasės dar skirstomos į „InputStream“ ir „OutputStream“ klases. „CharacterStream“ klasės taip pat skirstomos į „Reader“ ir „Writer“ klases. Visų „InputStream“ klasių „SuperMost“ klasės yra java.io.InputStream, o visų išvesties srauto klasių – java.io.OutPutStream. Panašiai visų skaitytojų klasių didžiausia klasė yra java.io.Reader, o visoms rašytojų klasėms – java.io.Writer.

33. Kas yra FileInputStream ir FileOutputStream?

Duomenims skaityti ir rašyti „Java“ siūlo I/O srautus. Srautas reiškia įvesties šaltinį arba išvesties paskirties vietą, kuri gali būti failas, įvesties / išvesties įrenginys, kita programa ir kt. FileInputStream Java yra naudojamas duomenims iš failo nuskaityti kaip baitų srautą. Jis dažniausiai naudojamas dvejetainiams duomenims, tokiems kaip vaizdai, garso failai ar serijiniai objektai, skaityti.

Pavyzdys:

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

Java programoje FileOutputStream Funkcija naudojama įrašyti duomenis baitais po baito į nurodytą failą arba failo aprašą. Paprastai neapdoroti baitų duomenys, pvz., paveikslėliai, įrašomi į failą naudojant FileOutputStream.

Pavyzdys:

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

34. Koks yra BufferedInputStream ir BufferedOutputStream klasių naudojimo tikslas?

Kai dirbame su failais ar srautu, norėdami padidinti programos įvesties / išvesties našumą, turime naudoti BufferedInputStream ir BufferedOutputStream klases. Šios abi klasės suteikia buferio funkciją, o tai reiškia, kad duomenys bus saugomi buferyje prieš įrašant į failą arba nuskaitant jį iš srauto. Tai taip pat sumažina kartų, kai mūsų OS turi sąveikauti su tinklu arba disku, skaičių. Buferis leidžia programoms įrašyti didelį duomenų kiekį, o ne juos rašyti mažais gabalėliais. Tai taip pat sumažina prieigos prie tinklo ar disko išlaidas.

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. Kas yra FilterStreams?

Srauto filtras arba Filtruoti srautus grąžina srautą, susidedantį iš šio srauto elementų, atitinkančių nurodytą predikatą. Veikdamas filtras () jis iš tikrųjų nefiltruoja, o sukuria naują srautą, kuriame yra pradinių srautų elementai, atitinkantys nurodytą predikatą.

Pavyzdys:

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


36. Kas yra I/O filtras?

Įvesties / išvesties filtras, taip pat apibrėžiamas kaip įvesties išvesties filtras, yra objektas, kuris skaito iš vieno srauto ir įrašo duomenis į įvesties ir išvesties šaltinius. Šiam filtrui naudoti buvo naudojamas java.io paketas.

37. Kiek būdų galite gauti įvestį iš konsolės?

Yra du būdai, kaip gauti įvestį iš „Java“ konsolės, kaip nurodyta toliau:

  1. Komandinės eilutės argumento naudojimas
  2. Naudojant buferinę skaitytuvo klasę
  3. Naudojant konsolės klasę
  4. Naudojant skaitytuvo klasę

Toliau pateikiama programa, demonstruojanti kiekvieno metodo naudojimą.

Pavyzdys:

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

Išvestis:

techcodeview.com>

38. Print, println ir printf naudojimo skirtumas.

print, println ir printf visi naudojami elementams spausdinti, bet print spausdina visus elementus ir žymeklis lieka toje pačioje eilutėje. println perkelia žymeklį į kitą eilutę. Ir su printf taip pat galime naudoti formato identifikatorius.

39. Kas yra operatoriai?

Operatoriai yra specialūs simbolių tipai, naudojami kai kurioms operacijoms su kintamaisiais ir reikšmėmis atlikti.

40. Kiek operatorių tipų yra Java?

Visų tipų „Java“ operatoriai yra paminėti toliau:

  1. Aritmetiniai operatoriai
  2. Unary operatoriai
  3. Užduočių operatorius
  4. Santykių operatoriai
  5. Loginiai operatoriai
  6. Trečias operatorius
  7. Bitiniai operatoriai
  8. Pamainos operatoriai
  9. operatoriaus pavyzdys

Postfix operatoriai yra laikomi didžiausia pirmenybe pagal Java operatorių pirmumą.

41. Paaiškinkite, kuo skiriasi>> ir>>> operatoriai.

Tokie operatoriai kaip>> ir>>> atrodo vienodi, bet veikia šiek tiek kitaip.>> operatorius perkelia ženklo bitus, o operatorius>>> naudojamas nuliniams bitams perkelti.

Pavyzdys:

Java
// Java Program to demostrate //>> ir>>> operatoriai importuoja java.io.*; // Tvarkyklės klasė GFG { public static void main(String[] args) { int a = -16, b = 1;  //>> System.out.println(a >> b) naudojimas;  a = -17;  b = 1;  //>>> System.out.println(a >>> b) naudojimas;  } }>>  
Išvestis
-8 2147483639>

42. Kuris Java operatorius yra teisingas asociatyvus?

Yra tik vienas operatorius, kuris yra teisingas asociatyvus, kuris yra = operatorius.

43. Kas yra taško operatorius?

„Java“ operatorius „Dot“ naudojamas norint pasiekti klasės objektų egzempliorių kintamuosius ir metodus. Jis taip pat naudojamas norint pasiekti klases ir antrinius paketus iš paketo.

44. Kas yra kovariacinės grąžos tipas?

Kovarianto grąžinimo tipas nurodo, kad grąžinimo tipas gali skirtis ta pačia kryptimi kaip ir poklasis. Antrinėje klasėje galimi skirtingi nepaisančio metodo grąžinimo tipai, tačiau vaiko grąžinimo tipas turi būti pirminio grąžinimo tipo potipis ir dėl to nepaisymo metodas tampa variantu grąžinimo tipo atžvilgiu.

Kovariantinį grąžinimo tipą naudojame dėl šių priežasčių:

  • Išvengia painiavos klasės hierarchijoje esančių tipų atidavimo būdų, todėl kodas tampa skaitomas, tinkamas naudoti ir prižiūrimas.
  • Suteikia laisvę pasirinkti konkretesnius grąžinimo tipus, kai nepaisoma metodų.
  • Pagalba užkertant kelią vykdymo laiko „ClassCastExceptions“ grąžinimo metu.

45. Kas yra trumpalaikis raktažodis?

Laikinasis raktinis žodis naudojamas serializacijos metu, jei nenorime išsaugoti konkretaus kintamojo reikšmės faile. Kai JVM aptinka trumpalaikį raktinį žodį, jis nepaiso pradinės kintamojo reikšmės ir išsaugo numatytąją to kintamojo duomenų tipo reikšmę.

46. ​​Kuo skiriasi miego() ir laukimo() metodai?

Miegas ()

Laukti()

Sleep() metodas priklauso gijų klasei.

Wait() metodas priklauso objektų klasei.

Miego režimas neatleidžia užrakto, kurį laiko dabartinis siūlas.

wait() atleiskite užraktą, kuris leidžia kitoms gijomis jį gauti.

Šis metodas yra statinis metodas.

Šis metodas nėra statinis metodas.

Sleep() nepateikia InterruptedException.InterruptedException rodoma, jei gija nutrūksta laukiant.

Dažniausiai naudojamas gijos atidėjimui tam tikram laikui.

Dažniausiai naudojamas gijai pristabdyti, kol apie tai praneša kita gija.

Sleep() turi du perkrautus metodus:

  • miego (ilgas mili)milis: milisekundės
  • miegas (ilgas milis, int nanos) nanos: nanosekundės

„Palauk“ () turi tris perkrautus metodus:

  • laukti()
  • laukti (ilgas laikas)
  • laukti (ilgas skirtasis laikas, int nanos)

47. Kuo skiriasi String ir StringBuffer?

Styga

StringBuffer

Simbolių sekos saugojimas.Suteikia funkcionalumą darbui su stygomis.
Tai nekintama.Jis yra kintamas (gali būti modifikuojamas ir su jais galima atlikti kitas eilučių operacijas).
Eilėje jokių gijų operacijų.Tai saugus siūlams (dvi gijos negali iškviesti StringBuffer metodų vienu metu)

48. Kuo skiriasi StringBuffer ir StringBuilder?

StringBuffer

StringBuilder

StringBuffer suteikia galimybę dirbti su eilutėmis.StringBuilder yra klasė, naudojama kuriant kintamą eilutę.
Tai saugus siūlams (dvi gijos negali iškviesti StringBuffer metodų vienu metu)Tai nėra saugus gijai (dvi gijos gali iškviesti metodus vienu metu)
Palyginti lėtas, nes yra sinchronizuotas.Kadangi nesinchronizuota, diegimas yra greitesnis

49. Kuriam iš String ar String Buffer turėtų būti teikiama pirmenybė, kai reikia atlikti daug duomenų atnaujinimų?

Eilutei teikiama pirmenybė, o ne StringBuffer, nes StringBuilder yra greitesnis nei StringBuffer, tačiau pirmenybė teikiama StringBuffer objektams, nes tai užtikrina didesnį gijos saugumą.


50. Kodėl StringBuffer vadinamas kintamu?

„Java“ „StringBuffer“ klasė naudojama keičiamai simbolių eilutei pavaizduoti. Ji siūlo alternatyvą nekintamajai stygų klasei, nes leidžia keisti eilutės turinį nuolat nekuriant naujų objektų. Keičiamos (modifikuojamos) eilutės sukuriamos StringBuffer klasės pagalba. „Java“ „StringBuffer“ klasė yra identiška „String“ klasei, išskyrus tai, kad ji yra keičiama.

Pavyzdys:

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

Išvestis Eilutė naudojant new() skiriasi nuo pažodinio, nes kai deklaruojame eilutę, ji išsaugo elementus kamino atmintyje, o kai deklaruojama naudojant new(), krūvos atmintyje ji priskiria dinaminę atmintį. Objektas sukuriamas krūvos atmintyje, net jei yra tas pats turinio objektas.

Sintaksė:

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


3-768

52. Kas yra masyvas Java?

„Java“ masyvas yra duomenų struktūra, naudojama fiksuoto dydžio to paties tipo elementų sekai saugoti. Masyvo elementus galima pasiekti pagal jų indeksą, kuris prasideda nuo 0 ir siekia iki minus 1 ilgio. Masyvo deklaravimas Java programoje atliekamas laužtiniais skliaustais, o dydis taip pat nurodomas deklaruojant.

Sintaksė:

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

53. Kuriuose atminties masyvai kuriami Java?

„Java“ masyvai sukuriami krūvos atmintyje. Kai masyvas sukuriamas naudojant naują raktinį žodį, krūvoje paskirstoma atmintis masyvo elementams saugoti. „Java“ programoje krūvos atmintį valdo „Java“ virtualioji mašina (JVM) ir ji taip pat yra bendrinama su visomis „Java“ programos gijomis. Atmintis, kurios programa nebenaudoja, JVM atminčiai atgauti naudoja šiukšlių rinktuvą. „Java“ masyvai kuriami dinamiškai, o tai reiškia, kad masyvo dydis nustatomas programos vykdymo metu. Masyvo dydis nurodomas deklaruojant masyvą ir jo negalima pakeisti sukūrus masyvą.

54. Kokie yra masyvo tipai?

Yra dviejų tipų masyvai, ty primityviosios masyvai ir nuorodų masyvai.

  • Vienmačiai masyvai: Masyvai, turintys tik vieną matmenį, ty sveikųjų skaičių masyvas arba eilučių masyvas, yra žinomi kaip vienmačiai masyvai.

4-768

Sintaksė:

data_type[] Array_Name = new data_type[ArraySize];>
  • Daugiamačiai masyvai: Masyvai, turintys du ar daugiau matmenų, pvz., dvimačiai arba trimačiai masyvai.

55. Kodėl Java masyvo indeksas prasideda 0?

Masyvo indeksas reiškia atstumą nuo masyvo pradžios. Taigi, pirmasis elementas turi 0 atstumą, todėl pradinis indeksas yra 0.

Sintaksė:

[Base Address + (index * no_of_bytes)]>

56. Kuo skiriasi int array[] ir int[] masyvas?

Tiek int array[], tiek int[] masyvas naudojami sveikųjų skaičių masyvui deklaruoti Java. Vienintelis skirtumas tarp jų yra jų sintaksė, tarp jų nėra funkcinių skirtumų.

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

Tačiau paprastai rekomenduojama naudoti Java stiliaus sintaksę masyvo deklaravimui. Kadangi jį lengva skaityti ir suprasti, jis labiau atitinka kitas Java kalbos konstrukcijas.

57. Kaip nukopijuoti masyvą Java?

„Java“ yra keli būdai, kaip nukopijuoti masyvą, atsižvelgiant į reikalavimus.

  • Clone () metodas Java: Šis Java metodas naudojamas norint sukurti negilią nurodyto masyvo kopiją, o tai reiškia, kad naujasis masyvas turės tą pačią atmintį kaip ir pradinis masyvas.
int[] Arr = { 1, 2, 3, 5, 0}; int[] tempArr = Arr.clone();>
  • arraycopy() metodas: Norėdami sukurti gilią masyvo kopiją, galime naudoti šį metodą, kuris sukuria naują masyvą su tomis pačiomis reikšmėmis kaip ir pradinis masyvas.
int[] Arr = {1, 2, 7, 9, 8}; int[] tempArr = new int[Arr.length]; System.arraycopy(Arr, 0, tempArr, 0, Arr.length);>
  • copyOf() metodas: Šis metodas naudojamas kuriant naują tam tikro ilgio masyvą ir kopijuojant pradinio masyvo turinį į naują masyvą.
int[] Arr = {1, 2, 4, 8}; int[] tempArr = Arrays.copyOf(Arr, Arr.length);>
  • copyOfRange() metodas: Šis metodas yra labai panašus į „Java“ metodą copyOf(), tačiau šis metodas taip pat leidžia nurodyti elementų diapazoną, kurį reikia nukopijuoti iš pradinio masyvo.
int[] Arr = {1, 2, 4, 8}; int[] temArr = Arrays.copyOfRange(Arr, 0, Arr.length);>

58. Ką jūs suprantate kaip dantytas masyvas?

„Java“ dantytas masyvas yra tik dvimatis masyvas, kuriame kiekviena masyvo eilutė gali būti skirtingo ilgio. Kadangi visos 2 d masyvo eilutės yra vienodo ilgio, tačiau dantytas masyvas suteikia daugiau lankstumo nustatant kiekvienos eilutės dydį. Ši funkcija labai naudinga tokiomis sąlygomis, kai duomenų ilgis skiriasi arba kai reikia optimizuoti atminties naudojimą.

Sintaksė:

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

59. Ar galima masyvą padaryti nepastoviu?

„Java“ programoje neįmanoma sukurti nepastovios. Nepastovus Java raktažodžiai gali būti taikomi tik atskiriems kintamiesiems, bet ne masyvams ar kolekcijoms. Kintamojo reikšmė visada skaitoma iš pagrindinės atminties ir įrašoma į ją, kai ji apibrėžiama kaip nepastovi, o ne saugoma gijos vietinėje atmintyje. Taip lengviau įsitikinti, kad visos gijos, kurios pasiekia kintamąjį, gali matyti jo pakeitimus.

60. Kokie yra masyvo privalumai ir trūkumai?

5-768

Masyvų pranašumai yra šie:

  • Tiesioginė ir veiksminga prieiga prie bet kurio kolekcijos elemento yra įmanoma naudojant masyvus. Masyvo elementus galima pasiekti naudojant O(1) operaciją, o tai reiškia, kad tam reikalingas laikas yra pastovus ir nepriklauso nuo masyvo dydžio.
  • Duomenys gali būti efektyviai saugomi atmintyje naudojant masyvus. Masyvo dydis yra žinomas kompiliavimo metu, nes jo elementai yra saugomi gretimose atminties srityse.
  • Dėl to, kad duomenys saugomi gretimose atminties srityse, masyvai užtikrina greitą duomenų gavimą.
  • Masyvus lengva įdiegti ir suprasti, todėl jie yra idealus pasirinkimas pradedantiesiems, besimokantiems kompiuterių programavimo.

Masyvų trūkumai yra šie:

  • Masyvai sukuriami iš anksto nustatyto dydžio, kuris pasirenkamas tuo metu. Tai reiškia, kad jei reikia išplėsti masyvo dydį, reikės sukurti naują masyvą ir nukopijuoti duomenis iš senojo masyvo į naują, o tai gali užtrukti daug laiko ir atminties.
  • Masyvo atminties erdvėje gali būti nepanaudotos atminties vietos, jei masyvas nėra visiškai užimtas. Jei blogai atsimenate, tai gali būti problema.
  • Palyginti su kitomis duomenų struktūromis, pvz., susietais sąrašais ir medžiais, masyvai gali būti nelanksti dėl fiksuoto dydžio ir riboto sudėtingų duomenų tipų palaikymo.
  • Kadangi visi masyvo elementai turi būti to paties tipo duomenų, jis nepalaiko sudėtingų duomenų tipų, pvz., objektų ir struktūrų.

61. Kas yra į objektą orientuota paradigma?

Paradigma pažodžiui reiškia modelį arba metodą. Programavimo paradigmos yra keturių tipų programos sprendimo metodai, būtent imperatyvioji, loginė, funkcinė ir į objektą orientuota. Kai objektai naudojami kaip baziniai objektai, kuriems taikomi metodai, vykdomos inkapsuliavimo arba paveldėjimo funkcijos, tai vadinama objektu orientuota paradigma.

62. Kokios yra pagrindinės „Java“ OOP sąvokos?

Pagrindinės „Java“ OOP sąvokos yra paminėtos toliau:

  • Paveldėjimas
  • Polimorfizmas
  • Abstrakcija
  • Inkapsuliavimas

63. Kuo skiriasi objektinio programavimo kalba nuo objektinio programavimo kalbos?

Objektinis programavimo kalba

Objektinio programavimo kalba

Objektinė programavimo kalba apima didesnes sąvokas, tokias kaip paveldėjimas, polimorfizmas, abstrakcija ir kt.Objektais pagrįsto programavimo apimtis apsiriboja objektų naudojimu ir inkapsuliavimu.
Jis palaiko visus įmontuotus objektusTai nepalaiko visų įmontuotų objektų
Pavyzdžiai: Java, C# ir kt.Pavyzdžiai: „Java“ scenarijus, vaizdo pagrindai ir kt.

64. Kuo „new“ operatorius skiriasi nuo „newInstance()“ operatoriaus „Java“?

naujas operatorius naudojamas objektams kurti, bet jei norime nuspręsti, kokio tipo objektas bus kuriamas vykdymo metu, jokiu būdu negalime naudoti naujojo operatoriaus. Šiuo atveju turime naudoti newInstance() metodas .

65. Kas yra „Java“ klasės?

Java, klasės yra objektų, turinčių panašias charakteristikas ir atributus, rinkinys. Klasės yra brėžinys arba šablonas, iš kurio kuriami objektai. Klasės nėra realaus pasaulio subjektai, bet padeda mums sukurti objektus, kurie yra realaus pasaulio subjektai.

66. Kuo skiriasi statinis (klasės) metodas ir egzemplioriaus metodas?

Statinis (klasės) metodas

Instancijos metodas

Statinis metodas yra susietas su klase, o ne su objektu.

Pavyzdžio metodas yra susietas su objektu, o ne su klase.

Statinius metodus galima iškviesti naudojant klasės pavadinimą tik nesukūrus klasės egzemplioriaus.

Egzempliorių metodas gali būti iškviestas konkrečiame klasės egzemplioriuje, naudojant objekto nuorodą.

Statiniai metodai neturi prieigos tai raktažodį .

Egzempliorių metodai turi prieigą prie tai raktažodį .

Šis metodas gali pasiekti tik statinius klasės narius

Šis metodas gali pasiekti tiek statinius, tiek nestatinius klasės metodus.

67. Kas yra šis raktinis žodis Java?

6

„tai“ yra raktinis žodis, naudojamas nurodyti kintamąjį, kuris nurodo dabartinį objektą.

68. Kas yra trumposios prieigos specifikacijos ir prieigos specifikacijų tipai?

Access_modifiers_in_java-768

„Java“ prieigos specifikacijos padeda apriboti klasės, konstruktoriaus, kintamojo, metodo ar duomenų nario apimtį. Toliau paminėti keturi „Java“ prieigos specifikacijų tipai:

  1. Viešas
  2. Privatus
  3. Apsaugotas
  4. Numatytas

69. Kokia bus pradinė objekto nuorodos reikšmė, kuri apibrėžiama kaip egzemplioriaus kintamasis?

Pradinė objekto nuorodos reikšmė, kuri apibrėžiama kaip egzemplioriaus kintamasis, yra NULL reikšmė.

70. Kas yra objektas?

Objektas yra realaus gyvenimo esybė, turinti tam tikras su juo susijusias savybes ir metodus. Objektas taip pat apibrėžiamas kaip klasės egzempliorius. Objektą galima deklaruoti naudojant naują raktinį žodį.

71. Kokie yra skirtingi Java objektų kūrimo būdai?

„Java“ objektų kūrimo būdai paminėti toliau:

  1. Naudojant naują raktinį žodį
  2. Naudojant naują egzempliorių
  3. Naudojant klono() metodą
  4. Deserializacijos naudojimas
  5. Naudojant Constructor klasės metodą newInstance().

Norėdami sužinoti daugiau apie „Java“ objektų kūrimo metodus, žr Šis straipsnis .

72. Kokie yra objektų klonavimo privalumai ir trūkumai?

Objektų klonavimas turi daug privalumų ir trūkumų, kaip nurodyta toliau:

Privalumai:

  • „Java“ priskyrimo operatorius „=“ negali būti naudojamas klonavimui, nes jis tiesiog sukuria referencinių kintamųjų kopiją. Norint pašalinti tokį neatitikimą, objektų klasės metodas clone() gali būti naudojamas per priskyrimo operatorių.
  • Metodas Clone() yra apsaugotas objektas klasės metodas, o tai reiškia, kad tik darbuotojų klasė gali klonuoti darbuotojų objektus. Tai reiškia, kad jokia kita klasė, išskyrus Darbuotoją, negali klonuoti Darbuotojų objektų, nes ji nežino darbuotojų klasės atributų.
  • Kodo dydis mažėja, kai kartojimasis mažėja.
  • Leidžia replikuoti (toks kaip prototipo šablonas) rankiniu būdu inicijuojant kiekvieną lauką sukuriamas didelis kodas, jei objektas yra sudėtingas, tai greičiau klonuojant.

Trūkumai:

  • Kadangi metodas Object.clone() yra apsaugotas, reikia pateikti savo kloną() ir iš jo netiesiogiai iškviesti Object.clone().
  • Jei neturime jokių metodų, turime pateikti klonuojamą sąsają, nes turime pateikti JVM informaciją, kad galėtume atlikti savo objekto klonavimą (). tiesiog grąžinkite super.clone() iš klonavimo metodo, kuris gali būti problemiškas.

73. Kokie yra privalumai, kai tai perkeliama į metodą, o ne į patį dabartinės klasės objektą?

Yra keletas privalumų, kai tai perkeliama į metodą, o ne patį dabartinį klasės objektą:

  • tai yra galutinis kintamasis, dėl kurio jo negalima priskirti jokiai naujai reikšmei, o dabartinės klasės objektas gali būti negalutinis ir gali būti pakeistas.
  • tai galima naudoti sinchronizuotame bloke.

74. Kas yra konstruktorius?

Konstruktorius yra specialus metodas, naudojamas objektams inicijuoti. Konstruktorius iškviečiamas, kai sukuriamas objektas. Konstruktoriaus pavadinimas yra toks pat kaip ir klasės.

Pavyzdys:

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

75. Kas atsitiks, jei klasėje nepateiksite konstruktoriaus?

Jei „Java“ klasėje nepateiksite konstruktoriaus, kompiliatorius automatiškai sugeneruos numatytąjį konstruktorių be argumentų ir operacijos, kuris yra numatytasis konstruktorius.

76. Kiek tipų konstruktorių naudojama Java?

„Java“ yra dviejų tipų konstruktoriai, kaip nurodyta toliau:

  1. Numatytasis konstruktorius
  2. Parametrizuotas konstruktorius

Numatytasis konstruktorius: tai tipas, kuris nepriima jokios parametro reikšmės. Jis naudojamas objekto atributų pradinėms reikšmėms nustatyti.

class_Name(); // Default constructor called>

Parametrizuotas konstruktorius: tai konstruktoriaus tipas, kuris priima parametrus kaip argumentus. Jie naudojami objektų inicijavimo metu priskiriant reikšmes egzempliorių kintamiesiems.

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

77. Kokia yra numatytojo konstruktoriaus paskirtis?

Konstruktoriai padeda sukurti klasės egzempliorius arba, galima sakyti, sukuria klasės objektus. Konstruktorius iškviečiamas objektų inicijavimo metu. Numatytasis konstruktorius yra konstruktoriaus tipas, kuris nepriima jokių parametrų, todėl bet kokia objektų savybėms priskirta reikšmė yra laikoma numatytosiomis reikšmėmis.

78. Ką jūs suprantate kaip „Java“ kopijavimo konstruktorius?

Kopijavimo konstruktorius yra konstruktoriaus tipas, kuriame kaip parametrą perduodame kitą objektą, nes abiejų objektų savybės atrodo vienodos, todėl atrodo, kad konstruktoriai sukuria objekto kopiją.

79. Kur ir kaip galite pasinaudoti privačiu konstruktoriumi?

Privatus konstruktorius naudojamas, jei nenorite, kad jokia kita klasė sukurtų objektą, kad būtų išvengta poklasių. Privataus konstruktoriaus naudojimas gali būti matomas kaip įdiegtas pavyzdyje.

Pavyzdys:

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

Išvestis
Value of a.x = 20 Value of b.x = 20>

80. Kuo skiriasi konstruktoriai ir metodai?

Java konstruktoriai naudojami objektams inicijuoti. Kuriant konstruktoriai raginami nustatyti objektų atributus, išskyrus kelis pagrindinius skirtumus tarp jų:

  1. Konstruktoriai iškviečiami tik tada, kai sukuriamas objektas, tačiau kiti metodai gali būti iškviesti kelis kartus per objekto gyvavimo laiką.
  2. Konstruktoriai nieko negrąžina, o kiti metodai gali grąžinti bet ką.
  3. Konstruktoriai naudojami pradinei būsenai nustatyti, tačiau metodai naudojami konkretiems veiksmams atlikti.

81. Kas yra sąsaja?

„Java“ sąsaja yra statinių galutinių kintamųjų ir abstrakčių metodų rinkinys, apibrėžiantis sutartį arba susitarimą dėl susietų klasių rinkinio. Bet kuri klasė, kuri įgyvendina sąsają, reikalinga tam tikram metodų rinkiniui įgyvendinti. Jis nurodo elgesį, kurį turi parodyti klasė, bet ne specifiką, kaip ji turėtų būti įgyvendinta.

Sintaksė:

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

Pavyzdys:

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

Išvestis
Area of circle is 78.53981633974483 Perimeter of circle is31.41592653589793>

82. Pateikite kai kurias sąsajos savybes.

Java programavimo kalbos sąsaja apibrėžiama kaip abstraktus tipas, naudojamas klasės elgsenai nurodyti. „Java“ sąsaja yra elgesio planas. „Java“ sąsajoje yra statinių konstantų ir abstrakčių metodų.

Toliau nurodytos sąsajos ypatybės:

  • Sąsaja gali padėti pasiekti visišką abstrakciją.
  • Leidžia mums naudoti kelis paveldėjimus Java.
  • Bet kuri klasė gali įdiegti kelias sąsajas, net jei viena klasė gali išplėsti tik vieną klasę.
  • Jis taip pat naudojamas norint pasiekti laisvą sujungimą.

83. Kas yra žymeklio sąsaja?

Sąsaja atpažįstama kaip tuščia sąsaja (nėra lauko ar metodų), ji vadinama žymeklio sąsaja. Žymeklių sąsajų pavyzdžiai yra serializuojamos, klonuojamos ir nuotolinės sąsajos.

84. Kuo skiriasi abstrakčioji klasė ir sąsaja?

Abstract-class-and-interface-768

Abstrakti klasė

Sąsajos klasė

Abstrakčioje klasėje galima rasti ir abstrakčius, ir neabstrakčius metodus.

Sąsaja apima tik abstrakčius metodus.

Abstract Class palaiko galutinius metodus.

Sąsajos klasė nepalaiko galutinių metodų.

Abstract klasė nepalaiko kelių paveldėjimo.

Sąsajos klasė palaiko kelis paveldėjimus.

Abstract Keyword yra naudojamas deklaruoti abstrakčią klasę.

Sąsajos raktinis žodis naudojamas sąsajos klasei deklaruoti.

pratęsti raktinis žodis naudojamas abstrakčiai klasei išplėsti. padargai Raktinis žodis naudojamas sąsajai įgyvendinti.

Abstract Class turi tokius narius kaip apsaugotas, privatus ir kt.

Visi klasės nariai pagal numatytuosius nustatymus yra vieši.

85. Ką reiškia duomenų inkapsuliacija?

Inkapsuliavimas į Java-300

Duomenų inkapsuliavimas yra OOPS savybių ir klasių charakteristikų sąvoka, kurios sąsaja yra susieta. Iš esmės ji sujungia duomenis ir metodus, kurie veikia su tais duomenimis viename vienete. Inkapsuliavimas pasiekiamas paskelbus klasės egzempliorių kintamuosius privačiais, o tai reiškia, kad juos galima pasiekti tik klasėje.

86. Kokie yra Java Encapsulation privalumai?

„Java“ kapsuliavimo pranašumai yra paminėti toliau:

  1. Duomenų slėpimas: tai būdas apriboti mūsų duomenų narių prieigą paslepiant diegimo detales. Inkapsuliavimas taip pat suteikia duomenų slėpimo būdą. Vartotojas neturės supratimo apie vidinį klasės įgyvendinimą.
  2. Didesnis lankstumas: priklausomai nuo mūsų reikalavimų, klasės kintamuosius galime padaryti tik skaitomus arba tik rašomus.
  3. Pakartotinis naudojimas: Inkapsuliavimas taip pat pagerina pakartotinį naudojimą ir yra lengvai keičiamas atsižvelgiant į naujus reikalavimus.
  4. Testuoti kodą lengva: kodą lengva išbandyti vieneto testavimui.

87. Kokia yra pagrindinė inkapsuliavimo nauda?

Pagrindinis Java Encapsulation privalumas yra jos gebėjimas apsaugoti vidinę objekto būseną nuo išorinių modifikacijų ar prieigos. Tai būdas paslėpti klasės įgyvendinimo detales nuo išorinės prieigos ir atskleisti tik viešąją sąsają, kurią galima naudoti sąveikai su klase. Pagrindinis pranašumas yra galimybė kontroliuoti ir valdyti objekto būseną ir elgesį, taip pat apsaugoti jį nuo pakeitimų ir neteisėtos prieigos.

Pavyzdys:

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

Išvestis
Name is Rohan Age is 29>

88. Ką turite omenyje sakydami agregaciją?

„Java“ agregavimas

Apibendrinimas yra terminas, susijęs su dviejų klasių ryšiu, geriausiai apibūdinamas kaip „turi-a“ ryšys. Ši rūšis yra labiausiai specializuota asociacijos versija. Tai vienakryptė asociacija, tai reiškia, kad tai vienpusis ryšys. Jame yra nuoroda į kitą klasę ir sakoma, kad ji priklauso šiai klasei.

89. Koks yra „IS-A“ ryšys OOPs Java?

„IS-A“ yra OOP „Java“ santykių tipas, kai viena klasė paveldi kitą klasę.

90. Apibrėžkite paveldėjimą.

Kai objektas, priklausantis poklasiui, įgyja visas pirminio objekto, kuris yra iš superklasės, savybes ir elgesį, tai yra žinoma kaip paveldėjimas. Klasė klasėje vadinama poklasiu, o pastaroji – superklase. Teigiama, kad poklasė arba antrinė klasė yra specifinė, o viršutinė arba pagrindinė klasė yra bendrinė. Paveldėjimas suteikia kodo pakartotinio naudojimo.

91. Kokie yra skirtingi paveldėjimo tipai Java?

Paveldėjimas yra metodas, kuriuo Child klasė gali paveldėti Super arba Parent klasės požymius. Java, paveldėjimas yra keturių tipų:

  • Vienkartinis paveldėjimas: Kai vaikas arba poklasis išplečia tik vieną superklasę, žinoma, kad tai yra vienas paveldėjimas. Vieno iš tėvų klasės ypatybės perduodamos antrinei klasei.
  • Daugiapakopis paveldėjimas: Kai antrinis ar poklasis išplečia bet kurį kitą poklasį, sukuriama paveldėjimo hierarchija, kuri yra žinoma kaip daugiapakopis paveldėjimas. Kitaip tariant, vienas poklasis tampa kito pagrindine klase.
  • Hierarchinis paveldėjimas: Kai keli poklasiai yra kilę iš tos pačios pirminės klasės, vadinama hierarchiniu paveldėjimu. Kitaip tariant, klasė, kurioje yra vienas iš tėvų, turi daug poklasių.
  • Daugkartinis paveldėjimas: Kai antrinė klasė paveldi iš kelių pirminių klasių, tai vadinama daugialypiu paveldėjimu. „Java“ ji palaiko tik kelis sąsajų, o ne klasių, paveldėjimą.

92. Kas yra daugkartinis paveldėjimas? Ar palaiko Java?

Į objektą orientuotos sąvokos komponentas, žinomas kaip daugybinis paveldėjimas, leidžia klasei paveldėti ypatybes iš daugelio pirminių klasių. Kai metodai su tuo pačiu parašu yra ir superklasėse, ir poklasiuose, iškyla problema. Metodo skambintojas negali nurodyti kompiliatoriui, kuris klasės metodas turi būti iškviestas ar net kuriam klasės metodui turėtų būti suteikta pirmenybė.

Pastaba: „Java“ nepalaiko kelių paveldėjimo

Pavyzdys:

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

Išvestis
Eating Drinking Barking>

93. Kuo C++ paveldimumas skiriasi nuo Java?

Paveldėjimas C++

Paveldėjimas Java

C++ leidžia vartotojui paveldėti kelias klases.„Java“ nepalaiko kelių paveldėjimo būdų.
Kai klasė sukuriama C++, ji nepaveldi iš objektų klasės, o egzistuoja pati.Visada sakoma, kad Java turi vieną paveldėjimą, nes visos klasės vienu ar kitu būdu paveldi iš objektų klasės.

94. Ar yra kokių nors paveldėjimo apribojimų?

Taip, yra „Java“ naudojimo paveldėjimo apribojimas, nes dėl paveldėjimo galima paveldėti viską nuo super klasės ir sąsajos, dėl kurios poklasis yra per daug sugrupuotas ir kartais gali atsirasti klaidų, kai tam tikrose situacijose atliekamas dinaminis perrašymas arba dinaminis perkrovimas.

dvimačio masyvo programa c

95. Nors paveldėjimas yra populiari OOP koncepcija, ji yra mažiau naudinga nei kompozicija. Paaiškinkite.

Paveldėjimas yra populiari objektinio programavimo (OOP) koncepcija, pagal kurią klasė gali paveldėti savybes ir metodus iš bet kurios kitos klasės, kuri vadinama pagrindine arba superklase. Kita vertus, kompozicijoje klasėje gali būti kitos klasės egzempliorius kaip nario kintamasis, kuris dažnai vadinamas dalimi arba komponentu. Žemiau pateikiamos kelios priežastys, kodėl kompozicija yra naudingesnė nei paveldėjimas:

  • Tvirtas sujungimas: Kaskart, kai atliekami bet kokie superklasės pakeitimai, šie pakeitimai gali turėti įtakos visų jos antrinių ar poklasių elgesiui. Dėl šios problemos kodas tampa mažiau lankstus ir taip pat kyla problemų atliekant techninę priežiūrą. Ši problema taip pat sukelia glaudų ryšį tarp klasių.
  • Trapios bazinės klasės problema: Kai bazinės klasės pakeitimai gali pažeisti jos išvestinių klasių funkcionalumą. Dėl šios problemos gali būti sunku pridėti naujų arba modifikuoti esamas. Ši problema žinoma kaip trapios bazės klasės problema.
  • Ribotas pakartotinis naudojimas: Paveldėjimas Java gali sukelti ribotą kodo pakartotinį naudojimą ir kodo dubliavimą. Kadangi poklasis paveldi visas savo superklasės savybes ir metodus, kartais gali atsirasti nereikalingas kodas, kurio nereikia. Tai lemia mažiau prižiūrimą kodų bazę.

96. Kas yra asociacija?

Asociacija yra ryšys tarp dviejų atskirų klasių, sukurtų per jų objektus. Tai atspindi Has-A santykius.

97. Ką turite omenyje sakydami agregaciją?

Sudėtis yra ribota agregavimo forma, kai du subjektai yra labai priklausomi vienas nuo kito. Tai atstovauja dalis santykiai.

98. Kokia yra Java sudėtis?

Kompozicija reiškia santykius, kuriuose vaikas negali egzistuoti savarankiškai iš tėvų. Pavyzdžiui, Žmogaus širdis, širdis neegzistuoja atskirai nuo žmogaus.

99. Nurodykite skirtumą tarp sudėties ir apibendrinimo.

Sujungimas

Sudėtis

Jis apibrėžia ryšį tarp objektų

Tai atspindi santykių dalį

Objektai nepriklauso vienas nuo kito.

Objektai priklauso vienas nuo kito.

Pavaizduokite jį naudodami užpildytą deimantą.

Pavaizduokite jį naudodami tuščią deimantą.

Vaikiški daiktai neturi viso gyvenimo.

Vaikiški daiktai turi visą gyvenimą.

100. Ar konstruktorius gali būti paveldimas?

Ne, mes negalime paveldėti konstruktoriaus.


101. Kas yra polimorfizmas?

Polimorfizmas apibrėžiamas kaip galimybė įgyti daugiau nei vieną formą. Jis yra dviejų tipų, ty kompiliavimo laiko polimorfizmas arba metodo perkrovimas – funkcija, iškviečiama kompiliavimo metu. Pavyzdžiui, paimkite klasės „zoną“. Pagal parametrų skaičių jis gali apskaičiuoti kvadrato, trikampio ar apskritimo plotą. Vykdymo laiko polimorfizmas arba metodo nepaisymas – nuorodos vykdymo metu. Klasėje esantis metodas nepaiso pagrindinės klasės metodo.

102. Kas yra vykdymo laiko polimorfizmas arba dinaminis metodo išsiuntimas?

Dinaminis metodo išsiuntimas yra sprendimo mechanizmas, skirtas metodo nepaisymui vykdymo metu. Metodo nepaisymas yra toks, kai poklasio metodas turi tą patį pavadinimą, parametrus ir grąžinimo tipą kaip ir superklasės metodas. Kai nepaisytas metodas iškviečiamas per superklasės nuorodą, java nustato, kuri šio metodo versija (superklasė ar poklasis) turi būti vykdoma, atsižvelgiant į objekto, į kurį kreiptasi, tipą iškvietimo metu. Taigi sprendimas priimamas vykdymo metu. Tai vadinama dinaminio metodo išsiuntimu.

103. Kas yra metodo nepaisymas?

Metodo nepaisymas, taip pat žinomas kaip vykdymo laiko polimorfizmas, yra toks, kai antrinėje klasėje yra tas pats metodas kaip ir pagrindinėje klasėje. Pavyzdžiui, pagrindinėje klasėje turime metodą, pavadintą „gfg()“. Metodas gfg() vėl apibrėžiamas poklasėje. Taigi, kai poklasyje iškviečiamas gfg(), vykdomas klasės ID metodas. Čia gfg() klasėje nepaiso metodo išorėje.

104. Kas yra metodo perkrova?

Perkraunama Java-768

Metodo nepaisymas yra metodas, leidžiantis pasiekti „Java“ vykdymo laiko polimorfizmą. Metodo nepaisymas yra funkcija, leidžianti antrinei klasei pateikti konkretų metodo įgyvendinimą, kurį jau teikia viena iš pirminių klasių. Kai antrinėje klasėje esantis metodas turi tą patį pavadinimą, tuos pačius parametrus arba parašą ir tą patį grąžinimo tipą (arba potipį) kaip ir jo pagrindinėje klasėje esantis metodas, sakoma, kad poklasio metodas nepaiso metodo superklasė.

105. Ar galime nepaisyti statinio metodo?

Ne, kadangi statiniai metodai yra klasės, o ne objekto dalis, todėl negalime jų nepaisyti.

106. Ar galime nepaisyti perkrauto metodo?

Taip, nes perkrautas metodas kompiliatoriaus akimis yra visiškai kitoks metodas. Nepaisymas visai nėra tas pats dalykas. Sprendimas, kurį metodą skambinti, atidedamas vykdymo laikui.

107. Ar galime perkrauti main() metodą?

Taip, Java, mes galime perkrauti pagrindinį metodą, kad iškviestume pagrindinį metodą, naudodami iš anksto nustatytą iškvietimo metodą.

108. Kas yra metodo perkrovimas ir metodo nepaisymas?

Metodo perkrovimas: Jis taip pat žinomas kaip kompiliavimo laiko polimorfizmas. Perkrovus metodą, du ar daugiau metodų yra bendrinami toje pačioje klasėje su skirtingu parašu.

Pavyzdys:

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

Išvestis
multiply() with 2 parameters 20 multiply() with 3 parameters 24 multiply() with 4 parameters 24>

Metodo nepaisymas: Metodo nepaisymas įvyksta, kai poklasis gali įgyvendinti metodą, kuris jau yra apibrėžtas pagrindinėje klasėje arba superklasėje. Grąžinimo tipas, pavadinimas ir argumentai turi būti panašūs į superklasės metodus.

Pavyzdys:

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

Išvestis
drive() method of derived class Car is driving. drive() method of base class driving the Car. drive() method of derived class Car is driving.>

Metodas Perkrovimas

Metodo nepaisymas

Kai du ar keli metodai yra toje pačioje klasėje su skirtingais parametrais, bet tuo pačiu pavadinimu.

Kai poklasis pateikia savo metodo, kuris jau yra apibrėžtas pagrindinėje klasėje, įgyvendinimą.

Metodo perkrovimas gali įvykti tik toje pačioje klasėje arba tarp poklasio ar pagrindinės klasės.

Metodo nepaisymas gali įvykti tik poklasyje.

Kai įvyksta klaida, ji užfiksuojama programos kompiliavimo metu.

Kai įvyksta klaida, ji užfiksuojama programos vykdymo metu.

Kompiliavimo laiko polimorfizmo pavyzdys.

Vykdymo laiko polimorfizmo pavyzdys.

Perkrovos metodas gali reikalauti paveldėjimo arba ne.

Metodo nepaisymas visada reikalauja paveldėjimo.

Tai vyksta klasėje.

Jis atliekamas dviejose klasėse, turinčiose paveldėjimo ryšį.

109. Ar galime nepaisyti privačių metodų?

Neįmanoma nepaisyti privačių metodų Java. Metodo nepaisymas yra tada, kai poklasio metodas yra įdiegtas vietoj metodo iš pagrindinės klasės. Privatūs metodai pasiekiami tik toje klasėje, kurioje jie deklaruoti. Kadangi šis metodas nėra matomas kitoms klasėms ir jo negalima pasiekti, jo negalima nepaisyti.

110. Ar galime pakeisti nepaisyto metodo apimtį poklasyje?

„Java“ neįmanoma pakeisti nepaisyto metodo apimties. Poklasio metodo taikymo sritis turi būti lygi arba platesnė už Superclass metodo nepaisyto metodo taikymo sritį. Pavyzdžiui, nepaisytas metodas poklasyje gali turėti viešą apimtį arba labiau prieinamą sritį, pvz., apsaugotą arba numatytąjį, jei nepaisytas metodas superklasėje turi viešą taikymo sritį. Tačiau jis negali turėti išskirtinės apimties, kaip privatus.

111. Ar galime modifikuoti superklasės metodo metimų sąlygą, nepaisydami jos poklasyje?

Mes galime modifikuoti Superclass metodo metimų sąlygą su tam tikrais apribojimais, galime pakeisti superklasės metodo metimų sąlygą, nepaisydami jos poklasyje. Nepaisytas poklasio metodas gali nurodyti tik nepažymėtas išimtis, jei superklasės metodas nedeklaruoja jokių išimčių. Jei superklasės metodas deklaruoja išimtį, poklasio metodas gali paskelbti tą pačią išimtį, poklasio išimtį arba išvis jokios išimties. Tačiau poklasio metodas negali deklaruoti pirminės išimties, kuri yra platesnė nei deklaruojama superklasės metodu.

112. Ar galite turėti virtualias funkcijas Java?

Taip, „Java“ palaiko virtualias funkcijas. Funkcijos pagal numatytuosius nustatymus yra virtualios ir gali būti nevirtualios naudojant galutinį raktinį žodį.

113. Kas yra abstrakcija?

Abstrakcija reiškia esminių bruožų atvaizdavimą neįtraukiant fono detalių. Išsami informacija arba įgyvendinimas yra paslėpti. Dažniausias abstrakcijos pavyzdys yra automobilis, mes žinome, kaip įjungti variklį, pagreitinti ir judėti, tačiau variklio veikimo būdas ir jo vidiniai komponentai yra sudėtinga logika, paslėpta nuo paprastų vartotojų. Paprastai tai daroma siekiant išspręsti sudėtingumą.

114. Kas yra abstrakčioji klasė?

Klasė, paskelbta kaip abstrakti, negali būti pakartota, ty objekto negalima sukurti. Jame gali būti arba nebūti abstrakčių metodų, tačiau jei klasė turi bent vieną abstraktų metodą, ji turi būti paskelbta abstrakčia.

Abstrakčios klasės su abstrakčiu metodu pavyzdys:

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. Kada naudojami abstraktūs metodai?

Abstraktus metodas naudojamas, kai norime naudoti metodą, bet norime, kad antrinės klasės nuspręstų, kaip įgyvendinti, tokiu atveju mes naudojame abstrakčius metodus su pagrindinėmis klasėmis.

116. Kaip išvengti serializavimo antrinėje klasėje, jei pagrindinė klasė įgyvendina Serializable sąsają?

Serializavimas antrinėje klasėje, jei pagrindinė klasė įgyvendina Serializable sąsają, galime to išvengti apibrėžę writeObject() metodą ir išmesdami NotSerializableException().

117. Kas yra „Java“ rinkinio sistema?

Kolekcijos yra Java objektų vienetai. Kolekcijos sistema yra „Java“ sąsajų ir klasių rinkinys, naudojamas įvairiais būdais reprezentuoti ir valdyti objektų kolekcijas. Rinkimo sistemoje yra klasės (ArrayList, Vector, LinkedList, PriorityQueue, TreeSet) ir kelios sąsajos (Set, List, Queue, Deque), kuriose kiekviena sąsaja naudojama tam tikro tipo duomenims saugoti.

118. Paaiškinkite įvairias Kolekcijos sistemoje naudojamas sąsajas.

Kolekcijos sistema įgyvendinama

  1. Kolekcijos sąsaja
  2. Sąrašo sąsaja
  3. Nustatyti sąsają
  4. Eilės sąsaja
  5. Ir sąsaja
  6. Žemėlapio sąsaja

Kolekcijos sąsaja: Kolekcija yra pagrindinė galima sąsaja, kurią galima importuoti naudojant java.util.Collection.

Sintaksė:

public interface Collection extends iterable>

119. Kaip galite sinchronizuoti „ArrayList“ programoje „Java“?

ArrayList galima sinchronizuoti dviem toliau nurodytais būdais:

  1. Naudojant Collections.synchronizedList()
  2. Naudojant CopyOnWriteArrayList

Naudojant Collections.synchronizedList():

public static List synchronizedList(List list)>

CopyOnWriteArrayList naudojimas:

  1. Sukurkite tuščią sąrašą.
  2. Tai įgyvendina sąrašo sąsają
  3. Tai saugus „ArrayList“ variantas
  4. T reiškia bendrąjį

120. Kodėl mums reikia sinchronizuoto ArrayList, kai turime vektorių (kurie yra sinchronizuoti) Java?

ArrayList reikalingas net tada, kai turime vektorių dėl tam tikrų priežasčių:

  1. „ArrayList“ yra greitesnis nei „Vectors“.
  2. „ArrayList“ palaiko kelių gijų naudojimą, o „Vectors“ palaiko tik vienos gijos naudojimą.
  3. „ArrayList“ yra saugesnis naudoti, nes „Vectors“ palaiko atskiras gijas, o atskiros operacijos yra mažiau saugios ir sinchronizuojama ilgiau.
  4. „Java“ vektoriai laikomi pasenusiais dėl jų sinchronizavimo.

121. Kodėl negalime sukurti bendrojo masyvo?

Bendrųjų masyvų sukurti negalima, nes an masyvas neša tipo informaciją apie savo elementus vykdymo metu, todėl vykdymo metu ji išmeta „ArrayStoreException“, jei elementų tipas nėra panašus. Kadangi generinių vaistų tipo informacija ištrinama kompiliavimo metu naudojant tipo ištrynimą, masyvo saugyklos patikrinimas būtų atliktas ten, kur turėjo nepavykti.

122. Gretimos atminties vietos paprastai naudojamos tikrosioms reikšmėms saugoti masyve, bet ne ArrayList. Paaiškinkite.

Masyvo elementai yra saugomi gretimose atminties vietose, o tai reiškia, kad kiekvienas elementas yra saugomas atskirame bloke, pagrįstame juo esančiame masyve. Kadangi masyvo elementai saugomi gretimose vietose, bet kurį elementą gali būti gana lengva pasiekti pagal jo indeksą, nes elemento adresą galima apskaičiuoti pagal elemento vietą. Tačiau „Java“ įgyvendina „ArrayLists“ kaip dinaminius masyvus, o tai reiškia, kad dydis gali keistis pašalinus arba pridėjus elementus. „ArrayList“ elementai nesaugomi gretimose atminties vietose, kad būtų galima pritaikyti šį dinaminį pobūdį. Vietoj to, „ArrayList“ naudoja metodą, žinomą kaip išplečiamasis masyvas, kuriame esantis masyvas prireikus išplečiamas iki didesnio dydžio, o elementai nukopijuojami į naują vietą. Priešingai nei ArrayList, kuris turi dinaminį dydį ir nesaugo savo elementų gretimose atminties vietose, masyvo dydis yra fiksuotas ir jo elementai yra saugomi ten.

123. Paaiškinkite ArrayList konvertavimo į Array ir Array į ArrayList metodą.

Sąrašo konvertavimas į ArrayList

Yra keletas būdų, kaip sąrašą konvertuoti į ArrayList

Konvertuoti masyvą į masyvo sąrašą-768

Programuotojai gali konvertuoti masyvą į ArrayList naudodami Arrays klasės metodą asList(). Tai statinis Arrays klasės metodas, priimantis objektą Sąrašas.

Sintaksė:

Arrays.asList(item)>

Pavyzdys:

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

Išvestis
[Abc, Def, Ghi, Jkl]>

ArrayList konvertavimas į Array

Konvertuoti-ArrayList-į-Array-768

Java programuotojai gali konvertuoti ArrayList į

Sintaksė:

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

Pavyzdys:

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

Išvestis
1 2 3 2 1>

124. Kaip ArrayList dydis dinamiškai auga? Taip pat nurodykite, kaip tai įgyvendinama viduje.

Dėl „ArrayLists“ masyvo prigimties jis dinamiškai auga, užtikrinant, kad elementams visada būtų pakankamai vietos. Kai pirmą kartą sukuriamas „ArrayList“ elementas, numatytoji talpa yra maždaug 10–16 elementų, kurie iš esmės priklauso nuo „Java“ versijos. ArrayList elementai nukopijuojami iš pradinio masyvo į naują masyvą, kai pradinio masyvo talpa yra pilna. Dinamiškai didėjant ArrayList dydžiui, klasė sukuria naują didesnių dydžių masyvą ir nukopijuoja visus elementus iš senojo masyvo į naują. Dabar naujojo masyvo nuoroda naudojama viduje. Šis dinamiško masyvo didinimo procesas žinomas kaip dydžio keitimas.

125. Kas yra vektorius Java?

„Java“ vektoriai yra panašūs ir juose gali saugoti kelis elementus. Vektoriai laikosi tam tikrų toliau nurodytų taisyklių:

  1. Vektorius gali būti importuojamas naudojant Java.util.Vector.
  2. Vektorius įgyvendinamas naudojant dinaminį masyvą, nes vektoriaus dydis didėja ir mažėja priklausomai nuo įterptų elementų.
  3. Vektoriaus elementai naudojant indekso numerius.
  4. Vektoriai yra sinchronizuoti iš prigimties, tai reiškia, kad jie naudojo tik vieną giją (tam tikru metu atliekamas tik vienas procesas).
  5. Vektoryje yra daug metodų, kurie nėra kolekcijų sistemos dalis.

Sintaksė:

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

126. Kaip padaryti, kad Java ArrayList būtų tik skaitomas?

ArrayList galima paruošti tik naudojant kolekcijų pateiktą metodą, naudojant metodą Collections.unmodifiableList().

Sintaksė:

array_readonly = Collections.unmodifiableList(ArrayList);>

Pavyzdys:

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

Išvestis
Initial list: [X, Y, Z] ReadOnly ArrayList: [X, Y, Z] If add element in the ReadOnly ArrayList Exception is thrown : java.lang.UnsupportedOperationException>

127. Kas yra prioritetinė eilė Java?

Prioritetas-Eilė-768

Prioritetinė eilė yra abstraktus duomenų tipas, panašus į įprastą eilę arba kamino duomenų struktūrą. Elementuose saugomi elementai priklauso nuo prioriteto, apibrėžto nuo žemo iki aukšto. „PriorityQueue“ yra pagrįsta prioritetų krūva.

Sintaksė:

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

Išvestis
10>

128. Paaiškinkite LinkedList klasę.

„LinkedList“ klasė yra „Java“, kuri elementams saugoti naudoja dvigubai susietą sąrašą. Jis paveldi AbstractList klasę ir įgyvendina List ir Deque sąsajas. „LinkedList“ klasės ypatybės nurodytos toliau:

  1. „LinkedList“ klasės yra nesinchronizuojamos.
  2. Palaiko įterpimo tvarką.
  3. Jis gali būti naudojamas kaip sąrašas, krūva arba eilė.

Sintaksė:

LinkedList list_name=new LinkedList();>

129. Kas yra „Java“ „Stack“ klasė ir kokie įvairūs jos teikiami metodai?

„Java“ „Stack“ klasė yra LIFO duomenų struktūra, įgyvendinanti „Last In First Out“ duomenų struktūrą. Jis yra kilęs iš Vector klasės, bet turi specifinių krūvų funkcijų. „Java“ „Stack“ klasė pateikia šiuos metodus:

  • žvilgtelėti (): grąžina viršutinį elementą iš krūvos jo nepašalindamas
  • tuščia(): grąžina „true“, jei krūva tuščia, o kitu atveju „false“.
  • stumti (): stumia daiktą ant krūvos viršaus
  • pop(): pašalina ir grąžina viršutinį elementą iš krūvos
  • Paieška(): grąžina 1, pagrįstą objekto padėtį iš krūvos viršaus. Jei objekto nėra krūvoje, jis grąžina -1

130. Kas yra nustatyta „Java Collections“ sistemoje ir išvardykite įvairius jos įgyvendinimus?

Rinkiniai yra kolekcijos, kuriose nesaugomi pasikartojantys elementai. Jie nesilaiko jokios elementų tvarkos. „Java Collections“ sistemoje yra keletas „Set“ sąsajos įdiegimų, įskaitant:

  • HashSet: „HashSet“ programoje „Java“ išsaugo elementus „has“ lentelėje, kuri suteikia greitesnę paiešką ir greitesnį įterpimą. HashSet neužsakytas.
  • LinkedHashSet: LinkedHashSet yra HashSet įgyvendinimas, kuris palaiko elementų įterpimo tvarką.
  • Medžių rinkinys: „TreeSet“ saugo elementus surūšiuota tvarka, kuri nustatoma pagal natūralią elementų tvarką arba tinkintą palyginimo priemonę, pateiktą kūrimo metu.

131. Kas yra HashSet klasė Java ir kaip ji saugo elementus?

„HashSet“ klasė įgyvendina „Set“ sąsają „Java Collections Framework“ ir yra „HashSet“ klasės narė. Skirtingai nuo pasikartojančių reikšmių, ji saugo atskirų elementų rinkinį. Šiame įgyvendinime kiekvienas elementas susietas su indeksu masyve, naudojant maišos funkciją, o indeksas naudojamas norint greitai pasiekti elementą. Jis sukuria masyvo, kuriame jis saugomas, elemento indeksą pagal įvesties elementą. Darant prielaidą, kad maišos funkcija tinkamai paskirsto elementus tarp segmentų, HashSet klasė užtikrina pastovų pagrindinių operacijų (pridėjimo, pašalinimo, talpinimo ir dydžio) našumą.

132. Kas yra LinkedHashSet Java Collections Framework?

„LinkedHashSet“ yra užsakyta „Hashset“ versija, kurią palaiko dvigubai susietas visų elementų sąrašas. Tai labai naudinga, kai reikia kartojimo tvarkos. Iteracijos metu „LinkedHashSet“ elementai grąžinami ta pačia tvarka, kaip jie įterpiami.

Sintaksė:

LinkedHashSet hs = new LinkedHashSet();>

Pavyzdys:

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

Išvestis
Values:[1, 2, 5, 3]>

133. Kas yra „Java“ žemėlapio sąsaja?

Žemėlapio sąsaja Java-660

Žemėlapio sąsaja yra Java kolekcijoje ir gali būti naudojama su Java.util paketu. Žemėlapio sąsaja naudojama reikšmėms atvaizduoti rakto-reikšmės formos pavidalu. Žemėlapyje yra visi unikalūs raktai. Be to, jame pateikiami su juo susiję metodai, pvz., includeKey(), yra reikšmė () ir kt.

Žemėlapio sąsajoje yra kelių tipų žemėlapiai, kaip nurodyta toliau:

  1. Rūšiuotas žemėlapis
  2. TreeMap
  3. HashMap
  4. LinkedHashMap

134. Paaiškinkite medžio žemėlapį Java

TreeMap yra žemėlapio tipas, kuriame duomenys saugomi raktų ir reikšmių poros pavidalu. Jis įgyvendinamas naudojant raudonai juodą medį. „TreeMap“ savybės yra šios:

  1. Jame yra tik unikalūs elementai.
  2. Jame negali būti NULL rakto
  3. Jis gali turėti kelias NULL reikšmes.
  4. Jis nesinchronizuotas.
  5. Jis palaiko didėjančią tvarką.

135. Kas yra EnumSet?

„EnumSet“ yra specializuotas „Set“ sąsajos įgyvendinimas, skirtas naudoti su sąrašo tipu. Kai kurios „EnumSet“ funkcijos yra šios:

  1. Jis nesinchronizuotas.
  2. Greičiau nei HashSet.
  3. Visi EnumSet elementai turi būti iš vieno sąrašo tipo.
  4. Tai neleidžia nulinių objektų ir meta NullPointerException išimtims.
  5. Jis naudoja saugų iteratorių.

Sintaksė:

public abstract class EnumSet>

Parametras: E nurodo elementus.

136. Kas yra BlockingQueue?

Blokavimo eilė-768

Blokavimo eilė – tai eilė, palaikanti operacijas, kurios laukia, kol eilė taps tuščia, kol gaunamas ir pašalinamas elementas, ir laukiama, kol eilėje atsiras vietos, kol elementas bus įtrauktas.

Sintaksė:

public interface BlockingQueue extends Queue>

Parametrai: E yra kolekcijoje saugomų elementų tipas

137. Kas yra „ConcurrentHashMap“ programoje „Java“ ir ar jūs jį įdiegiate?

ConcurrentHashMap yra įdiegtas naudojant Hashtable.

Sintaksė:

public class ConcurrentHashMap  extends AbstractMap  implements ConcurrentMap, Serializable>

Parametrai : K yra raktas Objekto tipas, o V yra reikšmė Objekto tipas

138. Ar galite naudoti bet kurią klasę kaip žemėlapio raktą?

Taip, mes galime naudoti bet kurią klasę kaip žemėlapio raktą, jei ji atitinka tam tikras iš anksto nustatytas taisykles, nurodytas toliau:

  1. Klasė, nepaisanti lygybės() metodo, taip pat turi nepaisyti hashCode() metodo
  2. „ConcurrentHashMap“ klasė yra saugi nuo gijų.
  3. Numatytasis ConcurrentHashMap lygiagretumo lygis yra 16.
  4. Nulinių objektų įterpimas į „ConcurrentHashMap“ neįmanomas kaip raktas arba kaip reikšmė.

139. Kas yra iteratorius?

Iteratorius Java-768

Iteratoriaus sąsaja pateikia metodus, leidžiančius kartoti bet kurią „Java“ kolekciją. Iteratorius yra „Java Collections Framework“ sąrašo pakeitimas. Jis gali gauti iteratoriaus egzempliorių iš kolekcijos, naudodamas _iterator()_ metodą. Tai taip pat leidžia skambinančiajam iteracijos metu pašalinti elementus iš pagrindinės kolekcijos.

140. Kas yra surašymas?

Sąrašas yra vartotojo apibrėžtas duomenų tipas. Jis daugiausia naudojamas pavadinimams priskirti integralinėms konstantoms, pavadinimai leidžia lengvai skaityti ir prižiūrėti programą. Pagrindinis sąrašo tikslas yra apibrėžti vartotojo apibrėžtus duomenų tipus.

Pavyzdys:

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

141. Kuo skiriasi kolekcija ir kolekcijos?

Kolekcija

Kolekcijos

Kolekcija yra sąsaja.

Kolekcijos yra klasė.

Tai suteikia standartines duomenų struktūros funkcijas.

Tai skirta rūšiuoti ir sinchronizuoti kolekcijos elementus.

Jame pateikiami metodai, kuriuos galima naudoti duomenų struktūrai.

Jame pateikiami statiniai metodai, kurie gali būti naudojami įvairioms operacijoms.

142. Atskirkite „Array“ ir „ArrayList“ programoje „Java“.

Masyvas

ArrayList

Vienmatis arba daugiamatis

Vienmatis

Kiekvienam naudotam iteracijai ir kiekvienam

Čia iteratorius naudojamas norint pereiti riverArrayList

Ilgio raktinis žodis grąžina masyvo dydį.

size() metodas naudojamas ArrayList dydžiui apskaičiuoti.

Masyvas turi fiksuoto dydžio.

ArrayList dydis yra dinamiškas ir prireikus gali būti padidintas arba sumažintas.

Tai greičiau, kaip matome aukščiau, fiksuoto dydžio

Jis yra palyginti lėtesnis dėl savo dinamiškumo

Primityvūs duomenų tipai gali būti saugomi tiesiogiai mažai tikėtinuose objektuose.

Primityvūs duomenų tipai nėra tiesiogiai pridedami prie mažai tikėtinų masyvų, jie pridedami netiesiogiai naudojant automatinį dėžutę ir išpakavimą

Jų čia pridėti negalima, todėl tipas yra nesaugus.

Jie gali būti pridėti čia, todėl ArrayList tipas yra saugus.

Priskyrimo operatorius tarnauja tik tikslui

Čia naudojamas specialus metodas, žinomas kaip add() metodas

143. Kuo skiriasi „Array“ ir „Collection“ programoje „Java“?

Masyvas

Kolekcijos

„Java“ masyvas turi fiksuotą dydį.

„Java“ kolekcijos yra dinaminio dydžio.

Masyve Elementai saugomi gretimose atminties vietose.

Kolekcijose elementai nebūtinai saugomi gretimose atminties vietose.

Objektai ir primityvūs duomenų tipai gali būti saugomi masyve.

Mes galime saugoti tik kolekcijose esančius objektus.

Norint pakeisti masyvo dydį, reikia manipuliuoti rankiniu būdu.

Dydžio keitimas kolekcijose tvarkomas automatiškai.

Masyve yra pagrindiniai manipuliavimo metodai.

Kolekcijose yra pažangių manipuliavimo ir iteracijos metodų.

Masyvas yra prieinamas nuo Java pradžios.

Kolekcijos buvo pristatytos Java 1.2 versijoje.

144. ArrayList ir LinkedList skirtumas.

ArrayList

LinkedList

ArrayList yra įdiegtas kaip išplečiamas masyvas.

LinkedList yra įdiegtas kaip dvigubai susietas sąrašas.

„ArrayList“ Elementai saugomi gretimose atminties vietose

LinkedList elementai saugomi negretimose atminties vietose, nes kiekvienas elementas turi nuorodą į kitą ir ankstesnį elementus.

„ArrayLists“ yra greitesnis atsitiktinei prieigai.

„LinkedLists“ yra greitesnis atliekant įterpimo ir ištrynimo operacijas

„ArrayLists“ yra efektyvesnis atmintyje.

„LinkedList“ yra mažiau efektyvus atmintyje

ArrayLists Naudokite daugiau atminties, nes išlaikysite masyvo dydį.

LinkedList Naudoja mažiau atminties, nes turi tik nuorodas į elementus

geriausi automobiliai pasaulyje

ArrayList paieškos operacija yra greitesnė.

LinkedList paieškos operacija vyksta lėčiau

145. Atskirkite ArrayList ir Vector Java.

ArrayList

Vektorius

ArrayLists yra įdiegtas kaip išplečiamas masyvas.

Vektorius yra įdiegtas kaip auginamas masyvas.

ArrayList nėra sinchronizuotas.

Vektorius yra sinchronizuotas.

„ArrayLists“ yra greitesnis atliekant nelygiagrečias operacijas.

Vektorius yra lėtesnis nelygiagrečioms operacijoms dėl papildomų sinchronizavimo išlaidų.

„ArrayLists“ buvo pristatyti „Java 1.2“.

Vektorius buvo pristatytas JDK 1.0.

Rekomenduojama naudoti vieno sriegio aplinkoje.

Vektorius rekomenduojama naudoti kelių gijų aplinkoje.

Numatytoji pradinė ArrayLists talpa yra 10.

Vektoriuose numatytoji pradinė talpa yra 10, bet numatytasis prieaugis yra dvigubai didesnis.

ArrayList našumas yra didelis.

Vektoriaus našumas yra mažas.

146. Kuo skiriasi Iterator ir ListIterator?

Iteratorius

ListIterator

Gali važiuoti kolekcijoje esančiais elementais tik į priekį.

Gali kirsti kolekcijoje esančius elementus tiek pirmyn, tiek atgal.

Naudojamas norint pereiti žemėlapį, sąrašą ir rinkinį.

Gali pereiti tik sąrašą, o ne kitus du.

Indeksų negalima gauti naudojant „Iterator“.

Jis turi tokius metodus kaip nextIndex() ir previousIndex(), kad bet kuriuo metu einant per sąrašą gautų elementų indeksus.

Negalima keisti ar pakeisti kolekcijoje esančių elementų

Gali keisti arba pakeisti elementus rinkinio pagalba (E e)

Negalima pridėti elementų, taip pat meta ConcurrentModificationException.

Galite bet kada lengvai pridėti elementų prie kolekcijos.

Tam tikri Iteratoriaus metodai yra next(), remove() ir hasNext().

Tam tikri ListIterator metodai yra next(), previous(), hasNext(), hasPrevious(), add(E e).

147. Atskirkite HashMap ir HashTable.

HashMap

HashTable

HashMap nėra sinchronizuotas

HashTable yra sinchronizuotas

Vienas raktas gali būti NULL reikšmė

NULL reikšmės neleidžiamos

Iteratorius naudojamas HashMap perkėlimui.

Galima naudoti ir Iterator, ir Enumertar

HashMap yra greitesnis.

„HashTable“ yra lėtesnis, palyginti su „HashMap“.

148. Kuo skiriasi Iteratorius ir išvardijimas?

Iteratorius

Surašymas

Iteratorius gali pereiti ir senus, ir nepasenusius elementus.

Sąrašas gali pereiti tik senus elementus.

Iteratorius yra greitas.

Sąrašas nėra greitas.

Iteratoriai yra lėtesni.

Sąrašas greitesnis.

Iteratorius gali atlikti pašalinimo operaciją eidamas kolekciją.

Sąrašas gali atlikti tik rinkinio perėjimo operacijas.

149. Kuo skiriasi Comparable ir Comparator?

Palyginamas

Palyginimas

Sąsaja yra java.lang pakete.

Sąsaja yra java.util pakete.

Suteikia palyginimo į () metodą elementams rūšiuoti.

Pateikiamas palyginimo () metodas elementams rūšiuoti.

Jame pateikiamos vienos rūšiavimo sekos.

Jame pateikiamos kelios rūšiavimo sekos.

Rūšiavimo logika turi būti toje pačioje klasėje, kurios objektą ketinate rūšiuoti.

Rūšiavimo logika turėtų būti atskira klasė, kad būtų galima parašyti skirtingą rūšiavimą pagal skirtingus objektų atributus.

Metodas rūšiuoja duomenis pagal fiksuotą rūšiavimo tvarką.

Metodas rūšiuoja duomenis pagal pritaikytą rūšiavimo tvarką.

Tai turi įtakos pradinei klasei.

Tai neturi įtakos pradinei klasei.

API dažnai diegiama pagal kalendorių, įvyniojimo klases, datą ir eilutę.

Jis įdiegtas siekiant rūšiuoti trečiųjų šalių klasių egzempliorius.

150. Kuo skiriasi Nustatyti ir Žemėlapis?

Nustatyti

Žemėlapis

Set sąsaja įgyvendinama naudojant java.util paketą.

Žemėlapis įgyvendintas naudojant java.util paketą.

Jis gali išplėsti kolekcijos sąsają.

Tai nepratęsia kolekcijos sąsajos.

Tai neleidžia pasikartojančių verčių.

Tai leidžia pasikartojančias vertes.

Rinkinys gali rūšiuoti tik vieną nulinę reikšmę.

Žemėlapis gali rūšiuoti kelias nulines reikšmes.

Java Intermediate Interviu klausimai

151. Paaiškinkite „FailFast“ iteratorių ir „FailSafe“ iteratorių kartu su kiekvieno iš jų pavyzdžiais.

FailFast iteratorius yra iteratorius, kuris meta a ConcurrentModificationException jei aptinka, kad pagrindinė kolekcija buvo pakeista naudojant iteratorių. Tai numatytasis iteratorių elgesys Java kolekcijų sistemoje. Pavyzdžiui, HashMap iteratorius yra FailFast.

Pavyzdys:

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

Išvestis:

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

FailSafe iteratorius neišmeta a ConcurrentModificationException jei pagrindinė kolekcija modifikuojama naudojant iteratorių. Arba sukuria momentinę kolekcijos nuotrauką tuo metu, kai sukuriamas iteratorius, ir kartoja per momentinę nuotrauką. Pavyzdžiui, ConcurrentHashMap iteratorius yra FailSafe.

Pavyzdys:

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. Kas yra išimčių tvarkymas?

An Išimtis yra Įvykis, kuris nutraukia įprastą programos eigą ir reikalauja specialaus apdorojimo. Vykdant programą, klaidas ir neplanuotus įvykius galima pašalinti naudojant „Java Exception Handling“ mechanizmą. Toliau pateikiamos kelios priežastys, kodėl „Java“ atsiranda išimčių:

  • Įrenginio gedimas
  • Tinklo ryšio praradimas
  • Kodo klaidos
  • Nepasiekiamo failo atidarymas
  • Neteisinga vartotojo įvestis
  • Fiziniai apribojimai (netrūko disko atminties)

153. Kiek rūšių išimčių gali būti Java programoje?

Išimčių tipai Java-660

Paprastai „Java“ yra dviejų tipų išimtys:

  • Integruotos išimtys: Integruotas „Java“ išimtis teikia „Java“ bibliotekos. Šios išimtys gali būti toliau skirstomos į dvi subkategorijas, ty pažymėtas ir nepažymėtas išimtis. Toliau pateikiamos kai kurios integruotos „Java“ išimtys:
    • ArrayIndexOutOfBoundsExceptions
    • ClassNotFoundException
    • FileNotFoundException
    • IO išimtis
    • NullPointerException
    • Aritmetinė išimtis
    • PertrauktaIšimtis
    • RuntimeException
  • Vartotojo nustatytos išimtys: Vartotojo nustatytas išimtis apibrėžia patys programuotojai, kad galėtų valdyti tam tikras konkrečias situacijas ar klaidas, kurių neapima įmontuotos išimtys. Norint apibrėžti vartotojo nustatytas išimtis, reikia apibrėžti naują klasę, kuri išplečia atitinkamą išimčių klasę. Vartotojo nustatytos „Java“ išimtys naudojamos, kai „Java“ yra integruotos išimtys.

154. Klaidos ir išimties skirtumas.

Klaidos

Išimtys

Atsigauti po klaidų neįmanoma.

Atsigaukite nuo išimčių naudodami „try-catch“ bloką arba grąžindami išimtis skambinančiajam.

Klaidos yra nepažymėtos Java.

Tai apima ir pažymėtus, ir nepažymėtus tipus.

Klaidas dažniausiai sukelia aplinka, kurioje programa veikia.

Programa dažniausiai yra atsakinga už išimčių padarymą.

Klaidos gali atsirasti tiek kompiliavimo metu, tiek vykdymo metu. Kompiliavimo laikas: sintaksės klaida, vykdymo laikas: loginė klaida.

Visos išimtys atsiranda vykdymo metu, tačiau pažymėtos išimtys kompiliatoriui žinomos, o nepažymėtos – ne.

Jie apibrėžti java.lang.Error pakete.

Jie apibrėžti java.lang.Exception pakete

Pavyzdžiai : java.lang.StackOverflowError, java.lang.OutOfMemoryError

Pavyzdžiai : Pažymėtos išimtys: SQLException, IOException Nepažymėtos išimtys: ArrayIndexOutOfBoundException, NullPointerException, ArithmeticException.

155. Paaiškinkite Java Exception klasių hierarchiją.

Išimtis-Tvarkymas-768

konvertuoti eilutę į int Java

Visi „Java“ išimčių ir klaidų tipai yra klasės, kuri yra pagrindinė hierarchijos klasė, poklasiai. Tada ši klasė naudojama išskirtinėms sąlygoms, kurias turėtų užfiksuoti vartotojo programos. NullPointerException yra tokios išimties pavyzdys. Kita šaka, klaida, naudojama „Java“ vykdymo laiko sistemoje, kad nurodytų klaidas, susijusias su JRE. StackOverflowError yra vienos iš tokių klaidų pavyzdys.

156. Paaiškinkite vykdymo laiko išimtis.

Vykdymo laiko išimtys yra išimtys, atsirandančios vykdant kodą, o ne kompiliavimo laiko išimtys, atsirandančios kompiliavimo metu. Vykdymo laiko išimtys yra nepažymėtos išimtys, nes JVM į jas neatsižvelgia.

„Java“ vykdymo laiko išimčių pavyzdžiai:

  • NullPointerException: tai atsitinka, kai programa bando naudoti nulinio objekto nuorodą.
  • ArrayIndexOutOfBoundsException: tai atsitinka, kai programa bando pasiekti masyvo indeksą, kuris yra už ribų.
  • Aritmetinė išimtis: tai atsitinka, kai programa bando padalyti iš nulio.
  • IllegalArgumentException: tai atsitinka, kai metodas perduodamas neteisėtu arba netinkamu argumentu.

Skirtingai nuo pažymėtų išimčių, vykdymo laiko išimtys nereikalauja deklaracijos išmetimo sąlygoje arba fiksavimo bandymo gaudymo bloke. Tačiau patartina tvarkyti vykdymo laiko išimtis, kad būtų pateikti reikšmingi klaidų pranešimai ir išvengta sistemos gedimo. Kadangi vykdymo laiko išimtys suteikia konkretesnės informacijos apie problemą nei patikrintos išimtys, jos leidžia kūrėjams lengviau ir greičiau aptikti ir ištaisyti programavimo klaidas.

157. Kas yra NullPointerException?

Tai yra vykdymo laiko išimties tipas, kuris išmetamas, kai programa bando naudoti objekto nuorodą, kurios reikšmė yra nulinė. Pagrindinis NullPointerException panaudojimas yra nurodyti, kad nuorodos kintamajam nėra priskirta jokia reikšmė, taip pat ji naudojama duomenų struktūroms, pvz., susietiems sąrašams ir medžiams, įgyvendinti.

158. Kada metamas ArrayStoreException?

ArrayStoreException išmetamas, kai objektų masyve bandoma įrašyti netinkamo tipo objektą.

Pavyzdys:

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

Pavyzdys:

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

159. Kuo skiriasi pažymėta išimtis ir nepažymėta išimtis?

Patikrinta išimtis:

Patikrintos išimtys yra išimtys, kurios tikrinamos programos kompiliavimo metu. Programoje, jei koks nors metodo kodas išmeta pažymėtą išimtį, metodas turi apdoroti išimtį arba nurodyti išimtį naudodamas raktinį žodį throws.

Pažymėtos išimtys yra dviejų tipų:

  • Visiškai patikrintos išimtys: taip pat tikrinamos visos antrinės klasės, pvz., IOException ir InterruptedException.
  • Iš dalies pažymėtos išimtys: kai kurios antrinės klasės yra nepažymėtos, pavyzdžiui, išimtis.

Nepažymėta išimtis:

Nepažymėtos yra išimtys, kurios nėra tikrinamos programos kompiliavimo metu. Klasių Error ir RuntimeException išimtys yra nepažymėtos išimtys, o visa kita, esanti metama, yra pažymėta.

160. Kokia yra pagrindinė klaidos ir išimties klasė?

Išimtis-Tvarkymas-768

Klaida – tai neteisėta vartotojo atliekama operacija, dėl kurios atsiranda programos anomalijų. Išimtys yra netikėti įvykiai ar sąlygos, atsirandančios vykdant programą, išimtis sutrikdo įprastą programos instrukcijų eigą.

Klaidos ir išimtys turi bendrą pirminę klasę, kuri yra java.lang.Throwable klasė.

161. Ar būtina, kad po kiekvieno trynimo bloko būtų sekamas gaudymo blokas?

Ne, „Java“ nebūtina naudoti gaudymo bloko po trynimo bloko, nes galime sukurti kitą derinį su galutinai blokuoti. Galiausiai yra blokas, kuris veikia nepaisant to, ar išimtis išmesta, ar ne.

162. Kas yra išimčių platinimas?

Išimčių platinimas yra procesas, kurio metu išimtis nuleidžiama iš krūvos viršaus į apačią. Jei nepagaunama vieną kartą, išimtis vėl nukrenta iki ankstesnio metodo ir taip toliau, kol ji užfiksuojama arba kol pasiekia skambučių krūvos apačią.

163. Kas atsitiks, jei į try or catch bloką įdėsite System.exit(0)? Ar pagaliau bus vykdomas blokavimas?

System.exit(int) turi galimybę mesti SecurityException. Taigi, jei saugumo atveju išmeta išimtis, galiausiai bus vykdomas blokavimas, kitaip JVM bus uždarytas skambinant System. exit(0), dėl kurio galiausiai blokas nebus vykdomas.

164. Ką jūs suprantate apie objektų klonavimą ir kaip tai pasiekiate Java?

Tai tikslios bet kokio objekto kopijos kūrimo procesas. Kad tai paremtų, java klasė turi įdiegti java.lang paketo Cloneable sąsają ir nepaisyti objektų klasės, kurios sintaksė yra, pateiktą clone() metodą:

Protected Object clone() meta CloneNotSupportedException{ return (Object)super.clone();}Jei Cloneable sąsaja neįdiegta, o tik metodas nepaisomas, „Java“ programoje „CloneNotSupportedException“.

165. Kaip išimtys veikia programą, jei ji jų netvarko?

Išimtys yra atsakingos už staigų programos vykdymo nutraukimą vykdant, o kodas, parašytas po išimties, nevykdomas.

166. Kam naudingas galutinis raktinis žodis?

Paskutinis raktinis žodis naudojamas funkcijoms padaryti nevirtualias. Pagal numatytuosius nustatymus visos funkcijos yra virtualios, todėl, kad jos nebūtų virtualios, naudojame galutinį raktinį žodį.

167. Kokį tikslą atlieka raktažodžiai final, final ir finalize?

i). galutinis:

galutinis yra raktinis žodis, naudojamas su kintamuoju, metodu arba klase, kad jų nebūtų galima nepaisyti.

Pavyzdys:

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

Išvestis:

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

ii). pagaliau

pagaliau yra kodo blokas, naudojamas su try-catch išimčių tvarkymui. Kodas, parašytas pagaliau blokuojant, paleidžiamas nepaisant to, kad išimtis išmesta ar ne.

Pavyzdys:

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

Išvestis
Try block Always runs even without exceptions>

iii). užbaigti

Tai metodas, kuris iškviečiamas prieš pat ištrinant / sunaikinant objektus, kurie yra tinkami šiukšlių rinkimui, kad būtų atlikta valymo veikla.

Pavyzdys:

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

Išvestis
Main function running>

168. Kuo skiriasi this() ir super() Java?

tai ( )

super ( )

Tai rodo dabartinį klasės egzempliorių.

Tai rodo dabartinį pirminės klasės egzempliorių.

Iškviečia numatytąjį tos pačios klasės konstruktorių.

Iškviečia numatytąjį bazinės klasės konstruktorių.

Pasiekite tos pačios klasės metodus.

Pasiekite pirminės klasės metodus.

Nurodo esamą klasės egzempliorių.

Nurodo aukščiausios klasės egzempliorių.

169. Kas yra daugiafunkcinis darbas?

Daugiafunkcinis darbas Java reiškia programos gebėjimą vienu metu atlikti kelias užduotis. Tai gali padaryti gijos, kurios yra greitos operacijos, esančios vienoje programoje. Daugelio dalykų vykdymas vienu metu yra žinomas kaip kelių užduočių atlikimas.

Pavyzdys:

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. Ką turite omenyje sakydami daugiasriegią programą?

„Java“ kelių gijų programose yra gijų, kurios veikia vienu metu, o ne paeiliui. Kompiuteris gali efektyviau naudoti savo išteklius derindamas kelias užduotis vienu metu. Bet kuri programa su daugiasriegiu ryšiu leidžia daugiau nei vienam vartotojui vienu metu naudoti programą, nepaleidžiant kelių kopijų. Daugiagija programa skirta paleisti kelis procesus vienu metu, o tai gali pagerinti programos našumą ir leidžia programai naudoti kelis procesorius bei pagerina bendrą pralaidumą.

171. Kokie yra kelių gijų privalumai?

Yra keli daugiasriegio sriegio naudojimo pranašumai, kurie yra šie:

  • Reagavimas: Vartotojo reagavimas didėja, nes interaktyvi kelių gijų programa leidžia paleisti kodą net tada, kai sekcija užblokuota arba vykdomas ilgas procesas.
  • Išteklių bendrinimas: procesas gali perduoti pranešimus ir bendrai naudoti atmintį dėl kelių gijų.
  • Ekonomija: Mes galime dalytis atmintimi, todėl procesai yra ekonomiški.
  • Mastelio keitimas: kelių gijų naudojimas keliuose CPU įrenginiuose padidina lygiagretumą.
  • Geresnis bendravimas: gijų sinchronizavimo funkcijos pagerina tarpprocesinį ryšį.
  • Daugiaprocesorinės architektūros panaudojimas
  • Minimalus sistemos išteklių naudojimas

172. Kokiais dviem būdais galima sukurti giją?

Multithreading yra „Java“ funkcija, leidžianti vienu metu vykdyti dvi ar daugiau programos dalių, kad būtų galima maksimaliai išnaudoti centrinį procesorių. Apskritai gijos yra maži, lengvi procesai su atskirais vykdymo keliais. Šios gijos naudoja bendrinamą atmintį, tačiau veikia nepriklausomai, taigi, jei kuri nors gija sugenda, tai neturi įtakos kitoms gijomis. Yra du būdai sukurti giją:

  • Išplėsdami gijų klasę
  • Įdiegus Runnable sąsają.

Išplėsdami gijų klasę

Sukuriame klasę, kuri praplečia java.lang.Gijų klasė . Ši klasė nepaiso metodo run() galimo gijų klasėje. Siūlas pradeda savo gyvenimą naudojant run() metodą.

Sintaksė:

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

Įdiegus Runnable sąsają

Sukuriame naują klasę, kuri įgyvendina java.lang.Runnable sąsaja ir nepaisyti run() metodo. Tada sukuriame Thread objektą ir iškviečiame šio objekto metodą start().

Sintaksė:

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

173. Kas yra siūlas?

„Java“ gijos yra lengvi antriniai procesai su mažiausiu procesų vienetu, taip pat turi atskirus vykdymo kelius. Šios gijos naudoja bendrinamą atmintį, tačiau jos veikia nepriklausomai, taigi, jei gijose yra išimtis, kuri neturi įtakos kitų gijų veikimui, nepaisant to, kad jos dalijasi ta pačia atmintimi. Gija turi savo programos skaitiklį, vykdymo krūvą ir vietinius kintamuosius, tačiau ji dalijasi ta pačia atminties vieta su kitomis tame pačiame procese gijomis. „Java“ teikia integruotą kelių gijų palaikymą per Paleidžiama sąsaja ir Siūlų klasė .

174. Atskirti procesą ir giją?

Procesas ir gija yra kompiuterinės sistemos vykdymo vienetai, tačiau jie skiriasi keliais būdais:

Procesas

Siūlas

Procesas yra vykdoma programa.

Gija yra viena proceso instrukcijų seka.

Procesui užbaigti reikia daugiau laiko.

Siūlai nutraukti reikia mažiau laiko.

Procesas užtrunka daugiau laiko konteksto perjungimui.

Gijos kontekstui perjungti reikia mažiau laiko.

Procesas yra mažiau efektyvus komunikacijos požiūriu.

Siūlas yra efektyvesnis bendravimo požiūriu.

Procesas yra izoliuotas.

Gijos dalijasi atmintimi.

Procesas turi savo proceso valdymo bloką, krūvą ir adresų erdvę.

Thread turi tėvų PCB, savo gijų valdymo bloką ir krūvą bei bendrą adresų erdvę.

Procesas nesidalija duomenimis tarpusavyje.

Gijos dalijasi duomenimis viena su kita.

175. Apibūdinkite siūlo gyvavimo ciklą?

Siūlų ciklas-768

A siūlas Java bet kuriuo metu egzistuoja bet kurioje iš šių būsenų. Siūlas bet kuriuo momentu yra tik vienoje iš parodytų būsenų:

  1. Nauja: Tema sukurta, bet dar neprasidėjo.
  2. Galima paleisti: Gija veikia, vykdo savo užduotį arba yra paruošta paleisti, jei nėra kitų aukštesnio prioriteto gijų.
  3. Užblokuota: Gija laikinai sustabdyta, laukiama šaltinio ar įvykio.
  4. Laukiama: Gija laukia, kol kita gija atliks užduotį arba praeis tam tikras laikas.
  5. Nutraukta: Gija baigė savo užduotį arba buvo nutraukta kitos gijos.

176. Paaiškinkite suspend() metodą Thread klasėje.

„Java“ programos Thread klasės metodas suspend() laikinai sustabdo gijos vykdymą. Kai gija sustabdoma, ji pereina į užblokuotą būseną ir operacinė sistema jos neplanuos, o tai reiškia, kad ji negalės atlikti savo užduoties, kol ji nebus atnaujinta. Šiuolaikinėje Java programavimo kalboje yra saugesnių ir lankstesnių suspend() metodų alternatyvų. Šis metodas negrąžina jokios vertės.

Sintaksė:

  public final void   suspend();>

Pavyzdys:

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

Išvestis:

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. Paaiškinkite pagrindinę giją dalyje Thread class execution.

„Java“ teikia integruotą daugiasriegio programavimo palaikymą. Pagrindinė gija laikoma visų kitų gijų, sukurtų vykdant programą, pirmine gija. Paleidus programą, pagrindinė gija sukuriama automatiškai. Ši gija vykdo pagrindinį programos metodą. Jis yra atsakingas už pagrindinės Java programos logikos vykdymą ir vartotojo įvesties operacijų tvarkymą. Pagrindinis siūlas tarnauja kaip pagrindinis siūlas, iš kurio atsiranda visi kiti antriniai siūlai.

Siūlas-klasė-vykdymas-768

178. Kas yra demono gija?

„Java“ demono gija yra žemo prioriteto gija, naudojama foninėms operacijoms arba užduotims, kurios naudojamos nuolat atlikti, atlikti. pvz., šiukšlių surinkimas, signalų siuntimas, veiksmų klausytojai ir tt Java demonų gijos turi mažesnį prioritetą nei vartotojo gijos, o tai reiškia, kad jos gali būti vykdomos tik tada, kai neveikia jokios vartotojo gijos. „Java“ demonų gijos yra naudingos funkcijos, reikalingos atliekant fonines užduotis, kurioms nereikia aiškaus išjungimo ar užbaigimo. Tai leidžia efektyviau naudoti sistemos išteklius ir yra naudojamas ištekliams supaprastinti bei gali supaprastinti ilgai trunkančias užduotis.

179. Kokiais būdais siūlas gali patekti į laukimo būseną?

Gijas yra lengvas procesas, kuris vyksta kartu su kita gija viename procese. Kiekviena gija gali atlikti skirtingą užduotį ir dalytis ištekliais viename procese. „Java“ gija gali patekti į laukimo būseną įvairiais būdais:

  • Sleep() metodas Call: The sleep () metodas naudojamas gijos vykdymui pristabdyti tam tikram laikui. Kai gija pristabdoma, ji pereina į laukimo būseną.
  • Palauk () metodas: Šis metodas naudojamas laukiant gijos, kol kita gija praneš, kad ji atsibustų. Gija pereina į laukimo būseną, kol gaus pranešimą iš kitos gijos.
  • Prisijungti () metodas: Join() metodas gali būti naudojamas laukti, kol gija baigs vykdyti. Skambučio gija pereina į laukimo būseną, kol bus baigta tikslinė gija.
  • Laukiama I/O operacijų: Jei gija laukia, kol bus baigta įvesties / išvesties operacija, ji pereina į laukimo būseną, kol operacija bus baigta.
  • Sinchronizavimo problemos: Jei kelių gijų programoje yra kokių nors sinchronizavimo problemų, gijos gali pereiti į laukimo būseną, kol bus išspręstos sinchronizavimo problemos.

180. Kaip kompiuteris su vienu procesoriumi vyksta daugiasriegiu būdu?

„Java“ naudoja techniką, vadinamą laiko pasidalijimu, paprastai vadinamą laiko pjaustymu, kad įdiegtų kelių gijų kūrimą kompiuteriuose su vienu CPU. Lygiagrečio vykdymo išvaizda sukuriama procesoriaus perjungimui tarp aktyvių gijų. Operacinė sistema yra atsakinga už procesoriaus laiko paskirstymą kiekvienai gijai ir gijų planavimą.

Siekdama, kad gijos negalėtų sąveikauti viena su kita ir nesukurtų lenktynių situacijų ar kitų problemų, „Java“ turi daugybę būdų, kaip valdyti gijų elgesį, įskaitant sinchronizavimą ir užrakinimą. Reguliuojant sąveiką tarp gijų ir užtikrinant, kad svarbiausios kodo dalys būtų sinchronizuojamos, įmanoma sukurti kelių gijų programuotojus, kurie tinkamai ir efektyviai veiktų mašinoje su vienu CPU. Priešingai nei paleisti tą pačią programą kompiuteryje su keliais procesoriais arba branduoliais, kelių gijų sujungimas viename procesoriuje gali sukelti tik lygiagretumo vaizdą, o tikrasis našumo padidėjimas gali būti nedidelis. Operacinė sistema padalija procesoriaus laiką, kuris pasiekiamas, kai viename procesoriuje veikia daug gijų, į mažas laiko dalis ir kiekvienai gijai suteikia laiko dalį vykdyti. Greitas operacinės sistemos perjungimas tarp gijų sukuria lygiagrečio vykdymo vaizdą. Atrodo, kad gijų perjungimas vyksta nedelsiant, nes laiko skiltys dažnai yra labai mažos, milisekundžių arba mikrosekundžių eilės.

„Java“ interviu klausimai patyrusiems

181. Kokie yra skirtingi Java gijų prioritetų tipai? O koks yra numatytasis JVM priskirtos gijos prioritetas?

Prioritetai gijose yra sąvoka, kai kiekviena gija turi prioritetą, o neprofesionalių kalba galima sakyti, kad kiekvienas objektas čia turi prioritetą, o tai vaizduojama skaičiais nuo 1 iki 10. Toliau paminėtos įvairios Java gijų ypatybės:

  • MIN_PRIORITY
  • MAX_PRIORITY
  • NORM_PRIORITY

Pagal numatytuosius nustatymus gijai priskirta NORM_PRIORITY.

182. Kodėl Java šiukšlių surinkimas reikalingas?

„Java“ atveju šiukšlių rinkimas yra būtinas, kad būtų išvengta atminties nutekėjimo, dėl kurio programa gali strigti ir tapti nestabili. „Java“ nėra jokio būdo išvengti šiukšlių surinkimo. Skirtingai nei C++, „Java“ šiukšlių rinkimas padeda programuotojams sutelkti dėmesį į programos kūrimą, o ne valdyti atminties išteklius ir nerimauti dėl atminties nutekėjimo. „Java“ virtualioji mašina (JVM) automatiškai tvarko atmintį periodiškai paleisdama šiukšlių rinktuvą, kuri atlaisvina nepanaudotą programos atmintį. Šiukšlių surinkimas daro „Java“ atmintį efektyvią, nes pašalina nenurodytus objektus iš krūvos atminties.

183. Koks yra šiukšlių surinkimo trūkumas?

Be daugelio privalumų, šiukšlių surinkėjas turi ir tam tikrų toliau nurodytų trūkumų:

  1. Pagrindinis šiukšlių surinkimo trūkumas yra tas, kad jis gali sukelti programos vykdymo pauzes, nes ji išvalo atmintį, o tai sulėtina programos veikimą.
  2. Šiukšlių surinkimo procesas yra nedeterministinis, todėl sunku nuspėti, kada įvyksta šiukšlių surinkimas, o tai sukelia nenuspėjamą programų elgesį. Pavyzdžiui, jei rašome kokią nors programą, programuotojams sunku nuspręsti, ar problemą sukėlė šiukšlių rinkimas, ar bet kokie kiti programos veiksniai.
  3. Šiukšlių surinkimas taip pat gali padidinti atminties naudojimą, jei programa sukuria ir išmeta daug trumpalaikių objektų.

184. Paaiškinkite skirtumą tarp smulkaus, didelio ir pilno šiukšlių išvežimo.

„Java“ virtualioji mašina (JVM) pašalina nebenaudojamus objektus naudodama šiukšlių rinktuvą, kuris periodiškai tikrina ir pašalina šiuos objektus. JVM yra įvairių šiukšlių surinkimo tipų, kurių kiekvienas turi skirtingas charakteristikas ir poveikį. Pagrindinės šiukšlių surinkimo rūšys yra šios:

  • Nedidelis šiukšlių išvežimas: Taip pat žinomas kaip jaunosios kartos šiukšlių surinkimas, šis šiukšlių rinkimo tipas naudojamas rinkti ir atgauti atmintį, kurią naudoja trumpalaikiai objektai (objektai, kurie greitai sukuriami ir išmetami).
  • Pagrindinis šiukšlių surinkimas: Taip pat žinomas kaip senosios kartos šiukšlių rinkimas, šis šiukšlių rinkimo tipas naudojamas rinkti ir atkurti atmintį, kurią naudoja ilgaamžiai objektai (objektai, kurie išgyvena daugybę nedidelių šiukšlių rinkimų ir yra reklamuojami senajai kartai).
  • Pilnas šiukšlių išvežimas: Viso šiukšlių išvežimo metu surenkami ir atkuriami visų kartų prisiminimai, įskaitant jaunų ir senų. Visiškas šiukšlių surinkimas paprastai užtrunka ilgiau nei smulkus ar didelis šiukšlių surinkimas, todėl programa laikinai sustabdoma.

185. Kaip atpažinsite pagrindines ir smulkias šiukšlių kolekcijas Java?

Pagrindiniai šiukšlių surinkimo darbai išgyvenusiųjų erdvėje ir smulkūs šiukšlių surinkimo darbai Edeno erdvėje, siekiant atlikti žymėjimo ir šlavimo procedūrą. Ir mes galime juos identifikuoti pagal išvestį, kurioje mažoji kolekcija spausdina GC, o pagrindinė kolekcija spausdina visą GC tuo atveju, kai šiukšlių surinkimo registravimas įgalintas naudojant -XX:PrintGCDetails arba verbose:gc.

186. Kas yra atminties nutekėjimas ir kaip tai veikia šiukšlių surinkimą?

Java Atminties nutekėjimą gali sukelti įvairūs veiksniai, pvz., netinkamas išteklių uždarymas, objektų nuorodų laikymas ilgiau nei būtina arba per daug objektų be reikalo sukūrimas. Būna situacijų, kai šiukšlių surinkėjas nesurenka objektų, nes yra nuoroda į tuos objektus. Tokiose situacijose, kai programa sukuria daug objektų ir jų nenaudoja, o kiekvienas objektas turi tam tikras galiojančias nuorodas, šiukšlių rinkėjas Java negali sunaikinti objektų. Šie nenaudingi objektai, kurie nesuteikia jokios programos vertės, yra žinomi kaip atminties nutekėjimas. Atminties nutekėjimas gali neigiamai paveikti šiukšlių surinkimą, nes neleis šiukšlių surinkėjui susigrąžinti nepanaudotą atmintį. Dėl tokio elgesio sulėtės veikimas arba kartais sutriks sistema. Programoje svarbu išvengti atminties nutekėjimo tinkamai valdant išteklius ir objektų nuorodas.

Pavyzdys:

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

Išvestis:

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. Pavadinkite kai kurias java.util.regex pakete esančias klases.

„Regular Expressions“ arba „Regex“ programoje „Java“ yra API, naudojama „Java“ eilučių paieškai ir manipuliavimui. Jis sukuria eilučių šablonus, kurie gali išgauti reikalingus duomenis iš eilučių arba apibendrinti šabloną.

Java.util.regex yra 3 toliau nurodytos klasės:

  • Rašto klasė: gali apibrėžti modelius
  • Atitikties klasė: gali atlikti teksto suderinimo operacijas, naudodamas šablonus
  • PatternSyntaxException Class: gali nurodyti sintaksės klaidą reguliariosios išraiškos šablone.

Be 3 klasių, paketą sudaro viena sąsaja MatchResult Interface, kuri gali būti naudojama atitikties operacijos rezultatui pavaizduoti.

188. Parašykite reguliarųjį reiškinį slaptažodžiui patvirtinti. Slaptažodis turi prasidėti abėcėle, o po jo rašyti raidiniai ir skaitiniai simboliai; Jo ilgis turi būti nuo 8 iki 20.

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

Paaiškinimas:

  • ^ naudojamas eilutės pradžios simboliui.
  • (?=.*[0-9]), naudojamas skaitmeniui, turi būti bent kartą.
  • (?=.*[a-z]), vartojamas mažosioms abėcėlėms, turi būti bent kartą.
  • (?=.*[A-Z]), naudojamas didžiosioms raidėms, kurios poeilėje turi atsirasti bent kartą.
  • (?=.*[@#$%^&-+=()] naudojamas specialiesiems simboliams, kurie turi atsirasti bent kartą.
  • (?=S+$) tarpai neleidžiami visoje eilutėje.
  • .{8, 20} naudojami mažiausiai 8 simboliams ir daugiausia 20 simbolių.
  • $ naudojamas eilutės pabaigai.

189. Kas yra JDBC?

JDBC standartinė API naudojama Java programoms ir reliacinėms duomenų bazėms susieti. Jame pateikiamas klasių ir sąsajų rinkinys, leidžiantis programuotojams naudoti Java programavimo kalbą bendraujant su duomenų baze. JDBC klasės ir sąsaja leidžia programai siųsti vartotojų pateiktas užklausas į nurodytą duomenų bazę. Paprastai yra keturi JDBC komponentai, kuriais ji sąveikauja su duomenų baze:

  • JDBC API
  • JDBC tvarkyklės vadovas
  • JDBC testų rinkinys
  • JDBC-ODBC tilto tvarkyklės

JDBC-768

190. Kas yra JDBC tvarkyklė?

JDBC tvarkyklė yra programinės įrangos komponentas, naudojamas įgalinti Java taikomąją programą sąveikauti su duomenų baze. JDBC suteikia JDBC API įdiegimą konkrečiai duomenų bazių valdymo sistemai, kuri leidžia prijungti duomenų bazę, vykdyti SQL sakinius ir gauti duomenis. Yra keturių tipų JDBC tvarkyklės:

  • JDBC-ODBC tilto tvarkyklė
  • Native-API tvarkyklė
  • Tinklo protokolo tvarkyklė
  • Plonas vairuotojas

JDBC-Driver-660

191. Kokius veiksmus reikia atlikti norint prisijungti prie duomenų bazės Java?

Norint sujungti duomenų bazę ir „Java“ programą, reikia atlikti tam tikrus veiksmus, kaip nurodyta toliau:

  • Importuokite paketus
  • Įkelkite tvarkykles naudodami forName() metodą
  • Užregistruokite tvarkykles naudodami DriverManager
  • Užmegzkite ryšį naudodami objektą Ryšio klasė
  • Sukurkite pareiškimą
  • Vykdykite užklausą
  • Uždarykite jungtis

192. Kokie yra JDBC API komponentai?

JDBC API komponentai teikia įvairius metodus ir sąsajas, kad būtų lengvas bendravimas su duomenų bazėmis, taip pat pateikiami paketai, tokie kaip java Se ir java EE, kurie suteikia galimybę rašyti vieną kartą paleidus bet kur (WORA).

Sintaksė:

java.sql.*;>

193. Kas yra JDBC ryšio sąsaja?

Java duomenų bazės ryšio sąsaja (JDBC) yra programinės įrangos komponentas, leidžiantis Java programoms sąveikauti su duomenų bazėmis. Norint sustiprinti ryšį, JDBC reikia tvarkyklių kiekvienai duomenų bazei.

194. Ką turi JDBC ResultSet sąsaja?

JDBC ResultSet sąsaja naudojama duomenims iš duomenų bazės saugoti ir naudoti mūsų Java programoje. Taip pat galime naudoti ResultSet norėdami atnaujinti duomenis naudodami updateXXX() metodus. ResultSet objektas nukreipia žymeklį prieš pirmąją rezultatų duomenų eilutę. Naudodami next() metodą, galime kartoti per ResultSet.

195. Kas yra JDBC Rowset?

JDBC RowSet suteikia galimybę duomenis saugoti lentelės pavidalu. RowSet yra „Java“ sąsaja, kurią galima naudoti java.sql pakete. Ryšys tarp RowSet objekto ir duomenų šaltinio palaikomas visą jo gyvavimo ciklą. Eilučių rinkiniai yra suskirstyti į penkias kategorijas pagal toliau nurodytą įgyvendinimą:

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

196. Koks yra JDBC DriverManager klasės vaidmuo?

JDBC DriverManager klasė veikia kaip vartotojų ir tvarkyklių sąsaja. Jis naudojamas įvairiais būdais, kaip nurodyta toliau:

  • Jis naudojamas sukurti ryšį tarp Java programos ir duomenų bazės.
  • Padeda sekti turimas tvarkykles.
  • Tai gali padėti užmegzti ryšį tarp duomenų bazės ir atitinkamų tvarkyklių.
  • Jame yra visi metodai, kuriais galima užregistruoti ir išregistruoti duomenų bazės tvarkyklių klases.
  • DriverManager.register Driver() metodas gali tvarkyti save užsiregistravusių tvarkyklių klasių sąrašą.

„Java“ skirtumų interviu klausimai

197. Atskirkite Iterable ir Iterator.

Pakartojama

Iteratorius

Iterable suteikia galimybę kartoti elementų seką.

Iteratorius padeda kartoti elementų rinkinį nuosekliai.

iteratorius () metodas grąžina iteratorių. hasNext () ir Kitas() reikalingi metodai.
pašalinti () metodas yra neprivalomas. pašalinti () metodas reikalingas iteratoriuje.

Pavyzdžiai yra Sąrašas, eilė ir nustatymas.

Pavyzdžiai yra ListIterator, Enumeration ir ArrayIterator.

198. Atskirkite sąrašą ir rinkinį.

Sąrašas

Nustatyti

Užsakyta

Neužsakyta

Sąrašas leidžia dublikatus.

Nustatymas neleidžia pasikartojančių verčių.

Sąrašas pasiekiamas naudojant rodyklę.

Rinkinys pasiekiamas naudojant maišos kodą.

Galima saugoti kelis nulinius elementus.

Nulinis elementas gali būti saugomas tik vieną kartą.

Pavyzdžiai yra „ArrayList“, „LinkedList“ ir kt.

Pavyzdžiai yra HashSet ir TreeSet. LinkedHashSet ir kt.

199. Atskirkite sąrašą ir žemėlapį.

Sąrašas

Žemėlapis

Sąrašo sąsaja leidžia dubliuoti elementus.

Žemėlapis neleidžia pasikartojančių elementų.

Sąraše palaikoma įterpimo tvarka.

Žemėlapis nepalaiko įterpimo tvarkos.

Galima saugoti kelis nulinius elementus.

Žemėlapyje leidžiama naudoti daugiausia vieną nulinį raktą ir bet kokį nulinių reikšmių skaičių.

Sąraše pateikiamas metodas get() gauti elementą nurodytame indekse.

Žemėlapis nepateikia gavimo metodo, kaip gauti elementus pagal nurodytą indeksą.

Sąrašą įgyvendina „ArrayList“ ir kt.

Žemėlapį įgyvendina HashMap, TreeMap, LinkedHashMap

200. Atskirkite eilę ir krūvą.

Eilė

Stack

Eilės duomenų struktūra naudojama elementams saugoti ir naudojama tokioms operacijoms kaip eilė, ištraukimas iš eilės arba eilės pabaigos.

Duomenų dėklo struktūra naudojama elementams saugoti ir naudojama tokioms operacijoms kaip stumti, pop iš dėklo viršaus atlikti.

Eilių duomenų struktūra Įgyvendina FIFO tvarką.

Stack duomenų struktūra Įgyvendina LIFO užsakymą.

Įterpimas ir ištrynimas į eiles vyksta iš priešingų sąrašo galų. Ištrinama sąrašo priekyje, o įterpiama sąrašo gale.

Įterpimas ir ištrynimas į krūvas vyksta tik iš vieno sąrašo galo, vadinamo viršuje.

Įterpimo operacija vadinama eilės operacija.

Įterpimo operacija vadinama stūmimo operacija.

Eilė paprastai naudojama sprendžiant problemas, susijusias su nuosekliu apdorojimu.

Stack paprastai naudojamas su rekursija susijusioms problemoms spręsti.

201. Atskirkite „PriorityQueue“ ir „TreeSet“.

Prioritetinė eilė

Medžių rinkinys

Ji naudoja eilę kaip pagrindinę duomenų struktūrą.

Jis naudoja rinkinį kaip pagrindinę duomenų struktūrą.

Ši duomenų struktūra leidžia dubliuoti elementus

Ši duomenų struktūra neleidžia dubliuoti elementų

Priority Queue yra įdiegta PriorityQueue klasės.

TreeSet įgyvendina TreeSet klasė.

PriorityQueue yra JDK 1.5 versijoje.

„TreeSet“ yra JDK 1.4 versijoje.

PriorityQueue pq = new PriorityQueue();

reeSet ts = new TreeSet();

202. Atskirkite vienkartinį sąrašą ir dvigubai susietą sąrašą.

Atskirai susietas sąrašas

Dvigubai susietas sąrašas

Atskirai susietame sąraše yra tik du segmentai, ty duomenys ir nuoroda.

Dvigubai susietame sąraše yra trys segmentai, ty duomenys, ir dvi rodyklės.

Perėjimas atskirai susietame sąraše galimas tik pirmyn.

Perėjimas dvigubai susietame sąraše galimas tik abiem kryptimis pirmyn ir atgal.

Jis naudoja mažiau atminties, nes kiekvienas mazgas turi tik vieną rodyklę.

Tam reikia daugiau atminties nei atskirai susietam sąrašui, nes kiekvienas mazgas turi dvi nuorodas.

Lengva naudoti ir įterpti mazgus sąrašo pradžioje.

Šiek tiek sudėtingiau naudoti ir lengviau įterpti sąrašo pabaigoje.

Įterpimo ir ištrynimo laiko sudėtingumas yra O (n).

Įterpimo ir ištrynimo laiko sudėtingumas yra O (1).

Singly-Linked-List-660

Dvigubai susietas sąrašas-660

203. Atskirkite Failfast ir Failsafe.

FailFast

FailSafe

Failsfast sugenda iš karto, kai iteracijos metu aptinka tuo pačius pakeitimus.

„Filsafe“ ir toliau kartoja originalią kolekciją ir taip pat sukuria kopiją, kurią norite modifikuoti.

Failfast paprastai naudojamas vienos gijos aplinkoje.

Failsafe naudojamas kelių gijų aplinkoje.

Failfast neleidžia atlikti jokių pakeitimų iteracijos metu.

Failsafe leidžia modifikuoti iteracijos metu.

„Failfast“ yra greitas, palyginti su saugiu, nes jis neapima kolekcijos kopijavimo.

Failsafe paprastai yra lėtas, palyginti su failfast.

FailFast metimai ConcurrentModificationException jei kolekcija modifikuojama iteracijos metu.


„FailSafe“ nedaro jokių išimčių, o sukuria kolekcijos kopiją, kad ją būtų galima pakartoti.

204. Atskirkite HashMap ir TreeMap.

HashMap

TreeMap

Hasmap naudoja maišos lentelę, kad išsaugotų raktų ir reikšmių poras.

„Treemap“ raktų ir reikšmių porai saugoti naudoja raudonai juodus medžius.

analoginis ryšys

Hashmap nepalaiko jokios konkrečios raktų ir verčių porų tvarkos.

„Treemap“ palaiko natūralią tvarką, pagrįstą raktais.

Iteracijos tvarka maišos diagramoje negarantuojama.

Iteracija yra rūšiuojama pagal raktus.

Hashmaps yra greitesnis, palyginti su Treemap.

„Treemap“ nuskaitymas yra lėtesnis, nes raktams rasti naudojamas medžio perėjimas.

Hashmap įgyvendinamas naudojant susietų sąrašų masyvą.

TreeMap yra įgyvendintas naudojant raudonai juodą medį.

Hashmap naudoja Object klasės metodą equals() raktams palyginti.

„TreeMap“ raktams palyginti naudoja palyginimo į () metodą.

205. Atskirkite eilę ir dekę.

Eilė

Apie ką

Eilė yra linijinė duomenų struktūra, naudojama elementų rinkiniui saugoti.

Deque, taip pat žinoma kaip dvipusė eilė, taip pat yra linijinė duomenų struktūra, kurioje saugomas elementų rinkinys su pašalinimo ir pridėjimo iš abiejų galų operacijomis.

Elementai eilėje gali būti įterpti tik duomenų struktūros pabaigoje.

Elementus galima įterpti iš abiejų duomenų struktūros galų.

Eilę galima įdiegti naudojant masyvą arba susietą sąrašą.

Nutraukimas iš eilės gali būti įgyvendintas naudojant žiedinį masyvą arba dvigubai susietą sąrašą.

Eilės paprastai naudojamos laukiančiųjų sąrašui arba užduočių eilei įgyvendinti.

Deque naudojamas kamino ar elementų ištraukimui iš abiejų galų.

Eilė-660

Dviguba eilė-660

206. Atskirkite HashSet ir TreeSet.

HashSet

Medžių rinkinys

HashSet yra netvarkingas.

TreeSet yra pagrįsta natūralia tvarka.

HashSet leidžia nulinius elementus.

TreeSet neleidžia nulinių elementų.

HashSet įgyvendina HashSet klasė.

TreeSet įgyvendina TreeSet klasė.

HashSet hs = new HashSet();

TreeSet ts = new TreeSet();

„Java“ interviu klausimai – DUK

Q1. Koks yra „Java“ kūrėjo atlyginimas Indijoje?

Remiantis įvairiais ištekliais, vidutinis „Java Backend“ kūrėjo atlyginimas yra didesnis nei 14 lakhų per metus, o tai yra 30% daugiau nei bet kuris kitas kūrėjo vaidmuo . Čia taip pat galite peržiūrėti naujausią mūsų kursą GeekforGeeks praktikos portalas taip pat gali būti naudinga.

Q5. Kaip galiu išsiskirti „Java“ interviu?

Norėdami išsiskirti „Java“ interviu, pademonstruokite gilų „Java“ sąvokų ir praktinių programų supratimą. Parodykite savo problemų sprendimo įgūdžius paaiškindami savo požiūrį į sudėtingus scenarijus ir pateikdami veiksmingus sprendimus. Be to, paryškinkite visus susijusius projektus ar indėlį į „Java“ bendruomenę. Parodytas entuziazmas, geras bendravimas ir noras mokytis taip pat gali palikti teigiamą įspūdį.