Java intervijas jautājumi un atbildes
Java ir viena no populārākajām programmēšanas valodām pasaulē, kas pazīstama ar savu daudzpusību, pārnesamību un plašo lietojumu klāstu. Java ir visvairāk izmantotā valoda tādos populārākajos uzņēmumos kā Uber, Airbnb, Google, Netflix, Instagram, Spotify, Amazon un daudzos citos tā funkciju un veiktspējas dēļ.
Šajā rakstā mēs sniegsim 200+ galvenie Java intervijas jautājumi pielāgots gan pirmajiem, gan pieredzējušiem profesionāļiem ar 3, 5 un 8 gadu pieredzi. Šeit mēs aplūkojam visu, tostarp Java pamatjēdzienus, objektorientēto programmēšanu (OOP), daudzpavedienu izmantošanu, izņēmumu apstrādi, dizaina modeļus, Java kolekcijas un daudz ko citu, kas noteikti palīdzēs jums uzlauzt Java intervijas.
Satura rādītājs
- Java intervijas jautājumi pirmkursniekiem
- Java Intermediate Intervija Jautājumi
- Java intervijas jautājumi pieredzējušiem
- Java atšķirību intervijas jautājumi
Java intervijas jautājumi pirmkursniekiem
1. Vai Java platforma ir neatkarīga, ja tad kā?
Jā, Java ir no platformas neatkarīga valoda. Atšķirībā no daudzām programmēšanas valodām javac kompilators apkopo programmu, lai izveidotu baitkoda vai .class failu. Šis fails nav atkarīgs no programmatūras vai aparatūras, kas darbojas, taču tam ir nepieciešams operētājsistēmā iepriekš instalēts JVM (Java Virtual Machine) fails, lai turpinātu baitkoda izpildi.
Lai gan JVM ir atkarīgs no platformas , baitu kodu var izveidot jebkurā sistēmā un izpildīt jebkurā citā sistēmā, neskatoties uz to, ka tiek izmantota aparatūra vai programmatūra, kas padara Java platformu neatkarīgu.
2. Kādas ir populārākās Java funkcijas?
Java ir viena no slavenākajām un visbiežāk lietotajām valodām reālajā pasaulē, Java ir daudz funkciju, kas padara to labāku par jebkuru citu valodu, dažas no tām ir minētas tālāk:
- Vienkārši : Java ir diezgan vienkārši saprotama un sintakse
- Platformas neatkarīga: Java ir neatkarīga no platformas, tas nozīmē, ka mēs varam palaist vienu un to pašu programmu jebkurā programmatūrā un aparatūrā un iegūsim tādu pašu rezultātu.
- Interpretēja : Java tiek interpretēta, kā arī uz kompilatoru balstīta valoda.
- Robusts : tādas funkcijas kā atkritumu savākšana, izņēmumu apstrāde utt., kas padara valodu stabilu.
- Objektorientēts : Java ir uz objektu orientēta valoda, kas atbalsta klases, objektu, četru OOPS pīlāru utt. jēdzienus.
- Nodrošināts : Tā kā mēs varam tieši koplietot lietojumprogrammu ar lietotāju, nekoplietojot faktisko programmu, Java kļūst par drošu valodu.
- Augsta veiktspēja: ātrāk nekā citas tradicionālās interpretētās programmēšanas valodas.
- Dinamisks : atbalsta klašu un interfeisu dinamisku ielādi.
- Izplatīts : Java funkcija ļauj mums piekļūt failiem, izsaucot metodes no jebkuras pievienotas mašīnas.
- Daudzpavedienu : veiciet vairākus uzdevumus vienlaikus, definējot vairākus pavedienus
- Neitrāla arhitektūra : tas nav atkarīgs no arhitektūras.
3. Kas ir JVM?
JVM apzīmē Java virtuālo mašīnu, tas ir Java tulks. Tas ir atbildīgs par Java izveidotā baitkoda ielādi, pārbaudi un izpildi.
Lai gan tas ir atkarīgs no platformas, kas nozīmē, ka JVM programmatūra dažādām operētājsistēmām ir atšķirīga, tai ir būtiska loma, lai Java platforma kļūtu neatkarīga.
Lai uzzinātu vairāk par tēmu, skatiet JVM Java valodā .
4. Kas ir JIT?
JIT apzīmē (Just-in-Time) kompilators ir JRE (Java Runtime Environment) daļa, to izmanto Java lietojumprogrammu labākai darbībai izpildes laikā. JIT izmantošana ir minēta soli pa solim, kas minēts tālāk:
- Avota kods ir apkopots ar javac kompilators, lai izveidotu baitkodu
- Baitkods tiek tālāk nodots JVM
- JIT ir daļa no JVM, JIT ir atbildīgs par baitkoda kompilēšanu vietējā mašīnkodā izpildes laikā.
- JIT kompilators ir iespējots visā garumā, savukārt tas tiek aktivizēts, kad tiek izsaukta metode. Kompilētai metodei JVM tieši izsauc kompilēto kodu, nevis to interpretē.
- Kā JVM sauc kompilēto kodu, kas palielina izpildes veiktspēju un ātrumu.
Lai uzzinātu vairāk par tēmu, skatiet JIT Java valodā .
5. Kādas atmiņas krātuves ir pieejamas, izmantojot JVM?
JVM sastāv no dažām atmiņas krātuvēm, kā minēts tālāk:
- Klases (metodes) apgabals: saglabā katras klases klases līmeņa datus, piemēram, izpildlaika konstantes pūla, lauka un metodes datus, kā arī metožu kodu.
- Kaudze: objekti tiek izveidoti vai objekti tiek saglabāti. To izmanto, lai piešķirtu atmiņu objektiem izpildes laikā.
- Stack: saglabā datus un daļējos rezultātus, kas būs nepieciešami, atgriežot metodes vērtību un veicot dinamisku saistīšanu
- Programmu skaitītāju reģistrs: saglabā pašlaik izpildāmās Java virtuālās mašīnas instrukcijas adresi.
- Native Method Stack: saglabā visas lietojumprogrammā izmantotās vietējās metodes.
Lai uzzinātu vairāk par tēmu, skatiet JVM atmiņas krātuves .
6. Kas ir klases ielādētājs?
Classloader ir JRE (Java Runtime Environment) daļa, baitkoda vai izveidotā .class faila izpildes laikā classloader ir atbildīgs par Java klašu un saskarņu dinamisku ielādi JVM (Java Virtual Machine). Klases ielādētāju dēļ Java izpildlaika sistēmai nav jāzina par failiem un failu sistēmām.
Lai uzzinātu vairāk par tēmu, skatiet ClassLoader Java valodā.
7. Atšķirība starp JVM, JRE un JDK.
JVM : JVM, kas pazīstams arī kā Java virtuālā mašīna, ir daļa no JRE. JVM ir tulka veids, kas atbild par baitkoda pārveidošanu mašīnlasāmā kodā. Pats JVM ir atkarīgs no platformas, taču tas interpretē baitkodu, kas ir no platformas neatkarīgs iemesls, kāpēc Java ir no platformas neatkarīga.
JRE : JRE apzīmē Java Runtime Environment, tā ir instalācijas pakotne, kas nodrošina vidi Java programmas vai lietojumprogrammas palaišanai jebkurā datorā.
JDK : JDK apzīmē Java izstrādes komplektu, kas nodrošina vidi Java programmu izstrādei un izpildei. JDK ir pakotne, kas ietver divas lietas: izstrādes rīki, lai nodrošinātu vidi Java programmu izstrādei, un JRE, lai izpildītu Java programmas vai lietojumprogrammas.
Lai uzzinātu vairāk par tēmu, skatiet Atšķirības starp JVM, JRE un JDK .
8. Kādas ir atšķirības starp Java un C++?
| Pamats | C++ | Java |
|---|---|---|
| Platforma | C++ ir atkarīgs no platformas | Java ir platformas neatkarīga |
| Pieteikums | C++ galvenokārt tiek izmantots sistēmas programmēšanai | Java galvenokārt tiek izmantota lietojumprogrammu programmēšanai |
| Aparatūra | C++ ir tuvāk aparatūrai | Java nav tik interaktīva ar aparatūru |
| Globālais tvērums | C++ atbalsta globālo un nosaukumvietas darbības jomu. | Java neatbalsta globālo tvērumu. |
| Neatbalsta | Funkcionalitātes, ko atbalsta Java, bet ne C++, ir:
| Funkcionalitātes, ko atbalsta C++, bet ne Java, ir:
|
| Hmm... | C++ ir objektorientēta valoda. Tā nav viena saknes hierarhija. | Java ir arī objektorientēta valoda. Tā ir vienas saknes hierarhija, jo viss tiek iegūts no vienas klases (java.lang.Object). |
| Mantojuma koks | C++ vienmēr izveido jaunu mantojuma koku. | Java izmanto vienotu mantojuma koku, jo Java klases ir Java objektu klašu atvasinājums. |
9. Izskaidrojiet publisko statisko void main(String args[]) Java.
Atšķirībā no jebkuras citas programmēšanas valodas, piemēram, C, C++ utt. Java mēs deklarējām galveno funkciju kā publisku statisku tukšu galveno (String args[]). Terminu nozīmes ir minētas zemāk:
- publiski : publika ir piekļuves pārveidotājs, kas atbild par to, kas var piekļūt elementam vai metodei un kāds ir ierobežojums. Tā ir atbildīga par to, lai galvenā funkcija būtu pieejama visā pasaulē. Tas tiek publiskots, lai JVM varētu to izsaukt ārpus klases, jo pašreizējā klasē tā nav.
- statisks : static ir atslēgvārds, ko izmanto, lai mēs varētu izmantot elementu, neuzsākot klasi, lai izvairītos no nevajadzīgas atmiņas piešķiršanas.
- nederīgs : void ir atslēgvārds, un to izmanto, lai norādītu, ka metode neko neatgriež. Tā kā galvenā funkcija neatgriež neko, ko mēs izmantojam, nederīgu.
- galvenais : galvenais norāda, ka deklarētā funkcija ir galvenā funkcija. Tas palīdz JVM noteikt, ka deklarētā funkcija ir galvenā funkcija.
- Stīgu args[] : Tas saglabā Java komandrindas argumentus un ir java.lang.String klases masīvs.
10. Kas ir Java String Pool?
Java virkņu pūls ir vieta kaudzes atmiņā, kurā tiek glabātas visas programmā definētās virknes. Atsevišķa vieta kaudzē ir tur, kur tiek glabāts mainīgais, kas glabā virkni. Ikreiz, kad veidojam jaunu virknes objektu, JVM pārbauda objekta klātbūtni virknes pūlā. Ja pūlā ir pieejama virkne, tā pati objekta atsauce tiek koplietota ar mainīgo, pretējā gadījumā tiek izveidots jauns objekts.
Piemērs:
String str1='Hello'; // 'Hello' will be stored in String Pool // str1 will be stored in stack memory
11. Kas notiks, ja mēs paziņosim, ka galvenais netiek pasludināts par statisku?
Mēs varam deklarēt galveno metodi, neizmantojot statiku un nesaņemot kļūdas. Taču galvenā metode netiks uzskatīta par ieejas punktu lietojumprogrammai vai programmai.
12. Kas ir paketes Java?
Java pakotnes var definēt kā saistītu klašu, saskarņu utt. veidu grupējumu, kas nodrošina piekļuvi aizsardzībai un nosaukumvietas pārvaldībai.
13. Kāpēc tiek izmantotas paketes?
Paketes tiek izmantotas Java, lai novērstu nosaukumu konfliktus, kontrolētu piekļuvi un atvieglotu meklēšanu/atrašanu un klašu, interfeisu utt. lietošanu.
14. Kādas ir pakešu priekšrocības Java?
Java pakotņu definēšanai ir dažādas priekšrocības.
- Pakas ļauj izvairīties no vārdu sadursmēm.
- Pakete nodrošina vieglāku piekļuves kontroli.
- Mums var būt arī slēptās klases, kas nav redzamas ārpusē un tiek izmantotas paketē.
- Saistītās klases ir vieglāk atrast.
15. Cik pakotņu veidu ir Java?
Java ir divu veidu pakotnes
- Lietotāja definētas pakotnes
- Iebūvētās paketes
16. Izskaidrojiet dažādus datu tipus Java.
Programmā Java ir divu veidu datu veidi, kā minēts tālāk:
- Primitīvs datu tips
- Datu tips, kas nav primitīvs, vai objekta datu tips
Primitīvais datu tips: primitīvie dati ir atsevišķas vērtības bez īpašām iespējām. Ir 8 primitīvi datu veidi:
- Būla : saglabā vērtību patiesa vai nepatiesa
- baits : saglabā veselu skaitli ar 8 bitu zīmi ar divu komplementu
- char : saglabā vienu 16 bitu unikoda rakstzīmi
- īss : saglabā veselu skaitli ar 16 bitu zīmi ar divu komplementu
- starpt : saglabā 32 bitu parakstīto divu komplementa veselu skaitli
- garš : saglabā 64 bitu divu komplementa veselu skaitli
- peldēt : saglabā vienas precizitātes 32 bitu IEEE 754 peldošo komatu
- dubultā : saglabā dubultas precizitātes 64 bitu IEEE 754 peldošo komatu
Neprimitīvs datu tips: atsauces datu tipi satur mainīgā lieluma vērtību atmiņas adresi, jo tas nevar tieši saglabāt vērtības atmiņā. Neprimitīvo veidu veidi ir minēti zemāk:
- Stīgas
- Masīvs
- Klase
- Objekts
- Interfeiss
17. Kad tiek izmantots baitu datu tips?
Baits ir vesels skaitlis ar 8 bitu zīmi ar diviem papildinājumiem. Minimālā vērtība, ko atbalsta baiti, ir -128 un 127 ir maksimālā vērtība. To izmanto apstākļos, kad mums ir nepieciešams ietaupīt atmiņu, un nepieciešamo skaitļu ierobežojums ir no -128 līdz 127.
18. Vai mēs varam deklarēt rādītāju Java valodā?
Nē, Java nenodrošina Pointer atbalstu. Tā kā Java vajadzēja būt drošākai, jo kura rādītāja funkcija nav nodrošināta Java.
19. Kāda ir baitu datu tipa noklusējuma vērtība Java?
Java baitu datu tipa noklusējuma vērtība ir 0.
20. Kāda ir Java float un double datatype noklusējuma vērtība?
Java noklusējuma pludiņa vērtība ir 0.0f un dubultā vērtība ir 0.0d.
21. Kas ir Wrapper klase Java?
Iesaiņotājs parasti tiek apzīmēts ar lielāku entītiju, kas iekapsulē mazāku entītiju. Šeit Java iesaiņojuma klase ir objektu klase, kas iekapsulē primitīvos datu tipus.
Primitīvie datu tipi ir tie, no kuriem var izveidot papildu datu tipus. Piemēram, veseli skaitļi var novest pie garu, baitu, īsu u.c. konstrukciju. No otras puses, virkne nevar, tāpēc tā nav primitīva.
Atgriežoties pie iesaiņojuma klases, Java satur 8 iesaiņojuma klases. Tie ir Būla, baiti, īsi, veseli skaitļi, rakstzīmes, garie, peldošie un dubultie. Turklāt pielāgotas iesaiņojuma klases var izveidot arī Java valodā, kas ir līdzīga struktūras jēdzienam C programmēšanas valodā. Mēs izveidojam paši savu iesaiņojuma klasi ar nepieciešamajiem datu tipiem.
22. Kāpēc mums ir vajadzīgas iesaiņojuma nodarbības?
Iesaiņojuma klase ir objektu klase, kas iekapsulē primitīvos datu tipus, un mums tie ir nepieciešami šādu iemeslu dēļ:
- Iesaiņojuma klases ir galīgas un nemainīgas
- Nodrošina tādas metodes kā valueOf(), parseInt() utt.
- Tas nodrošina automātiskās kastes un izpakošanas funkciju.
23. Atšķiriet instanču un vietējos mainīgos.
| Gadījuma mainīgais | Vietējais mainīgais |
|---|---|
| Pasludināts ārpus metodes, tieši izsaukts ar metodi. | Deklarēts metodes ietvaros. |
| Ir noklusējuma vērtība. | Nav noklusējuma vērtības |
| To var izmantot visā klasē. | Darbības joma ir ierobežota līdz metodei. |
24. Kādas noklusējuma vērtības tiek piešķirtas Java mainīgajiem un gadījumiem?
Java Ja neesam inicializējuši gadījumu mainīgos, kompilators tos inicializē ar noklusējuma vērtībām. Gadījumu un mainīgo noklusējuma vērtības ir atkarīgas no to datu veidiem. Daži izplatīti noklusējuma datu tipu veidi ir:
- Ciparu veidu (baits, īss, int, long, float un double) noklusējuma vērtība ir 0.
- Būla tipa noklusējuma vērtība ir false.
- Objektu tipu (klases, saskarnes un masīvi) noklusējuma vērtība ir nulle.
- Nulles rakstzīme u0000 ir char tipa noklusējuma vērtība.
Piemērs:
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); } } Izvade
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 ir klases mainīgais?
Java valodā klases mainīgais (pazīstams arī kā statisks mainīgais) ir mainīgais, kas tiek deklarēts klasē, bet ārpus jebkuras metodes, konstruktora vai bloka. Klases mainīgie tiek deklarēti ar statisko atslēgvārdu, un tos koplieto visi klases gadījumi (objekti), kā arī pati klase. Neatkarīgi no tā, cik objektu ir iegūti no klases, katrs klases mainīgais pastāvētu tikai vienu reizi.
Piemērs:
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); } } Izvade
Number of objects created are 3
26. Kāda ir noklusējuma vērtība, kas tiek saglabāta lokālos mainīgajos?
Ar vietējiem mainīgajiem netiek saglabāta noklusējuma vērtība. Turklāt primitīviem mainīgajiem un objektiem nav noklusējuma vērtību.
27. Izskaidrojiet atšķirību starp instances mainīgo un klases mainīgo.
Gadījuma mainīgais: Klases mainīgais bez statiskā modifikatora, kas pazīstams kā instances mainīgais, parasti tiek koplietots visiem klases gadījumiem. Šiem mainīgajiem var būt atšķirīgas vērtības starp vairākiem objektiem. Instanču mainīgā saturs ir pilnīgi neatkarīgs no viena objekta instances no cita, jo tas ir saistīts ar konkrētu klases objekta gadījumu.
Piemērs:
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()); } } Izvade
Name John
Klases mainīgais: Klases mainīgo mainīgo var deklarēt jebkur klases līmenī, izmantojot atslēgvārdu static. Šiem mainīgajiem var būt tikai viena vērtība, ja tie tiek lietoti dažādiem objektiem. Šos mainīgos var koplietot visi klases dalībnieki, jo tie nav saistīti ar kādu konkrētu klases objektu.
Piemērs:
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()); } } Izvade
Area of circle: 78.53975
28. Kas ir statisks mainīgais?
Statiskais atslēgvārds tiek izmantots, lai koplietotu to pašu mainīgo vai metodi noteiktā klasē. Statiskie mainīgie ir mainīgie, kas pēc deklarēšanas tiek izveidota viena mainīgā kopija un koplietota starp visiem objektiem klases līmenī.
29. Kāda ir atšķirība starp System.out, System.err un System.in?
System.out — Tā ir PrintStream, ko izmanto rakstzīmju rakstīšanai vai var teikt, ka tā var izvadīt datus, kurus vēlamies rakstīt komandrindas interfeisa konsolē/terminālī.
Piemērs:
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 — To izmanto, lai parādītu kļūdu ziņojumus.
Piemērs:
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'); } } Izvade:
This is how we throw error with System.err
Lai gan System.err ir daudz līdzību, abiem ir arī diezgan daudz atšķirību, pārbaudīsim tās.
| System.out | System.err |
|---|---|
| Tas tiks drukāts atbilstoši standartam no sistēmas. | Tas izdrukās standarta kļūdu. |
| To galvenokārt izmanto, lai parādītu rezultātus konsolē. | To galvenokārt izmanto kļūdu tekstu izvadīšanai. |
| Tas nodrošina izvadi konsolē ar noklusējuma (melno) krāsu. | Tas arī nodrošina izvadi konsolē, bet lielākā daļa IDE piešķir tai sarkanu krāsu, lai to atšķirtu. |
System.in — Tā ir InputStream, ko izmanto, lai nolasītu ievadi no termināļa loga. Mēs nevaram izmantot System.in tieši, tāpēc mēs izmantojam skenera klasi, lai iegūtu ievadi ar system.in.
Piemērs:
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); } } Izvade:
3 4 Addition: 7
30. Ko jūs saprotat ar IO straumi?
Java piedāvā dažādas straumes ar savu I/O pakotni, kas palīdz lietotājam veikt visas ievades-izejas darbības. Šīs straumes atbalsta visu veidu objektus, datu tipus, rakstzīmes, failus utt., lai pilnībā izpildītu I/O darbības.
31. Kāda ir atšķirība starp Reader/Writer klases hierarhiju un InputStream/OutputStream klases hierarhiju?
Galvenā atšķirība starp tām ir tā, ka baitu straumes datus lasa un raksta ievades/izejas straumes klases. Rakstzīmes apstrādā lasītāju un rakstītāju klases. Atšķirībā no Reader/Writer klasēm, kurās kā parametri tiek pieņemti rakstzīmju masīvi, ievades/izvades straumes klases metodes pieņem baitu masīvus. Salīdzinot ar ievades/izvades straumēm, Reader/Writer klases ir efektīvākas, apstrādā visas unikoda rakstzīmes un ir noderīgas internalizācijai. Bināro datu, piemēram, attēlu, vietā izmantojiet Reader/Writer klases, ja vien to nedarāt.
Piemērs:
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(); } } } Izvade
-32 79 -48 32 -22
32. Kuras ir vislielākās klases visām straumēm?
Visas straumes klases var iedalīt divu veidu klasēs, kas ir ByteStream klases un CharacterStream klases. ByteStream klases tiek iedalītas InputStream klasēs un OutputStream klasēs. CharacterStream klases ir sadalītas arī lasītāju klasēs un rakstītāju klasēs. SuperMost klases visām InputStream klasēm ir java.io.InputStream, un visām izvades straumes klasēm ir java.io.OutPutStream. Līdzīgi visām lasītāju klasēm vislielākā klase ir java.io.Reader, un visām rakstītāju klasēm tā ir java.io.Writer.
33. Kas ir FileInputStream un FileOutputStream?
Lai lasītu un rakstītu datus, Java piedāvā I/O straumes. Straume apzīmē ievades avotu vai izvades galamērķi, kas varētu būt fails, i/o ierīce, cita programma utt. FileInputStream Java izmanto, lai nolasītu datus no faila kā baitu straumi. To galvenokārt izmanto bināro datu, piemēram, attēlu, audio failu vai sērijveida objektu, lasīšanai.
Piemērs:
File file = new File('path_of_the_file'); FileInputStream inputStream = new FileInputStream(file); Java valodā, FileOutputStream funkcija tiek izmantota, lai ierakstītu datus pa baitam noteiktā failā vai faila deskriptorā. Parasti neapstrādātus baitu datus, piemēram, attēlus, ieraksta failā, izmantojot FileOutputStream.
Piemērs:
File file = new File('path_of_the_file'); FileOutputStream outputStream = new FileOutputStream(file); 34. Kāds ir klases BufferedInputStream un BufferedOutputStream izmantošanas mērķis?
Kad mēs strādājam ar failiem vai straumi, tad, lai palielinātu programmas ievades/izvades veiktspēju, mums ir jāizmanto klases BufferedInputStream un BufferedOutputStream. Šīs abas klases nodrošina buferizācijas iespēju, kas nozīmē, ka dati tiks saglabāti buferī pirms ierakstīšanas failā vai lasīšanas no straumes. Tas arī samazina reižu skaitu, kad mūsu OS ir jāsadarbojas ar tīklu vai disku. Buferizācija ļauj programmām rakstīt lielu datu apjomu, nevis rakstīt tos mazos gabalos. Tas arī samazina pieskaitāmās izmaksas, kas saistītas ar piekļuvi tīklam vai diskam.
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 ir FilterStreams?
Straumes filtrs vai Filtrēt straumes atgriež straumi, kas sastāv no šīs straumes elementiem, kas atbilst dotajam predikātam. Filtra () darbības laikā tas faktiski neveic filtrēšanu, bet tā vietā izveido jaunu straumi, kas, šķērsojot, satur sākotnējo straumju elementus, kas atbilst dotajam predikātam.
Piemērs:
FileInputStream fis =new FileInoutStream('file_path'); FilterInputStream = new BufferedInputStream(fis);
36. Kas ir I/O filtrs?
I/O filtrs, kas definēts arī kā ievades izvades filtrs, ir objekts, kas nolasa no vienas straumes un ieraksta datus ievades un izvades avotos. Lai izmantotu šo filtru, tā izmantoja java.io pakotni.
37. Cik daudzos veidos varat iegūt ievadi no konsoles?
Ir divas tālāk minētās metodes, kā iegūt ievadi no Java konsoles:
- Komandrindas argumenta izmantošana
- Buferētās lasītāja klases izmantošana
- Izmantojot konsoles klasi
- Skenera klases izmantošana
Programma, kas demonstrē katras metodes izmantošanu, ir sniegta zemāk.
Piemērs:
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); } } Izvade:
techcodeview.com
38. Atšķirība print, println un printf lietošanā.
print, println un printf visi tiek izmantoti elementu drukāšanai, bet print izdrukā visus elementus un kursors paliek tajā pašā rindā. println pārvieto kursoru uz nākamo rindiņu. Un ar printf mēs varam izmantot arī formāta identifikatorus.
39. Kas ir operatori?
Operatori ir īpašie simbolu veidi, ko izmanto dažu operāciju veikšanai ar mainīgajiem lielumiem un vērtībām.
40. Cik operatoru veidi ir pieejami Java?
Tālāk ir minēti visi Java operatoru veidi:
- Aritmētiskie operatori
- Unārie operatori
- Uzdevuma operators
- Relāciju operatori
- Loģiskie operatori
- Trīskāršs operators
- Bitu operatori
- Maiņu operatori
- operatora piemērs
Postfix operatori tiek uzskatīti par visaugstāko prioritāti saskaņā ar Java operatoru prioritāti.
41. Izskaidrojiet atšķirību starp>> un>>> operatoriem.
Operatori, piemēram,>> un>>>, šķiet, ir vienādi, taču darbojas nedaudz savādāk.>> operators maina zīmes bitus, un operators>>> tiek izmantots nulles aizpildīto bitu pārvietošanai.
Piemērs:
Java // Java Program to demostrate //>> un>>> operatori importē java.io.*; // Draiveri klase GFG { public static void main(String[] args) { int a = -16, b = 1; //>> System.out.println(a >> b) izmantošana; a = -17; b = 1; //>>> System.out.println(a >>> b) izmantošana; } } Izvade
-8 2147483639
42. Kurš Java operators ir pareizais asociatīvais?
Ir tikai viens operators, kas ir pareizais asociatīvais operators, kas ir = operators.
43. Kas ir punktu operators?
Java operators Dot tiek izmantots, lai piekļūtu klases objektu gadījumu mainīgajiem un metodēm. To izmanto arī, lai no pakotnes piekļūtu klasēm un apakšpaketēm.
44. Kas ir kovariants atdeves veids?
Kovariants atgriešanās veids norāda, ka atgriešanās veids var mainīties tādā pašā virzienā kā apakšklase. Pakārtotajai metodei var būt dažādi atgriešanas veidi bērnklasē, taču bērna atgriešanas veidam ir jābūt vecāka atgriešanās veida apakštipam, un šī ignorējošā metode kļūst par variantu attiecībā uz atgriešanas veidu.
Mēs izmantojam kovariantu atgriešanās veidu šādu iemeslu dēļ:
- Novērš klašu hierarhijā esošo tipu aprauju neskaidrības un padara kodu lasāmu, lietojamu un uzturējamu.
- Sniedz brīvību noteikt konkrētākus atgriešanas veidus, ignorējot metodes.
- Palīdziet novērst izpildlaika ClassCastExceptions atgriešanas laikā.
45. Kas ir īslaicīgs atslēgvārds?
Pārejošs atslēgvārds tiek izmantots serializācijas laikā, ja mēs nevēlamies failā saglabāt konkrēta mainīgā vērtību. Kad JVM saskaras ar pārejošu atslēgvārdu, tas ignorē mainīgā sākotnējo vērtību un saglabā šī mainīgā datu tipa noklusējuma vērtību.
46. Kāda ir atšķirība starp miega() un gaidīšanas() metodēm?
| Gulēt() | Pagaidi () |
|---|---|
| Sleep() metode pieder pavedienu klasei. | Wait() metode pieder objektu klasei. |
| Miega režīms neatbrīvo slēdzeni, ko satur pašreizējais pavediens. | gaidiet () atlaidiet slēdzeni, kas ļauj citiem pavedieniem to iegūt. |
| Šī metode ir statiska metode. | Šī metode nav statiska metode. |
| Sleep() neizmet InterruptedException. | InterruptedException tiek parādīts, ja pavediens tiek pārtraukts gaidīšanas laikā. |
| Galvenokārt izmanto, lai aizkavētu pavedienu uz noteiktu laiku. | Galvenokārt izmanto, lai pauzētu pavedienu, līdz brīdim, kad par to paziņo cits pavediens. |
| Miega režīmam () ir divas pārslodzes metodes:
| Pagaidiet () ir trīs pārslogotas metodes:
|
47. Kādas ir atšķirības starp String un StringBuffer?
| Stīga | StringBuffer |
|---|---|
| Rakstzīmju secības glabāšana. | Nodrošina funkcionalitāti darbam ar stīgām. |
| Tas ir nemainīgs. | Tas ir mainīgs (var tikt modificēts un ar tiem var veikt citas virknes darbības). |
| Virknē nav nevienas pavediena darbības. | Tas ir drošs pret pavedieniem (divi pavedieni nevar vienlaikus izsaukt StringBuffer metodes) |
48. Kādas ir atšķirības starp StringBuffer un StringBuilder?
| StringBuffer | StringBuilder |
|---|---|
| StringBuffer nodrošina funkcionalitāti darbam ar virknēm. | StringBuilder ir klase, ko izmanto, lai izveidotu mainīgu virkni. |
| Tas ir drošs pret pavedieniem (divi pavedieni nevar vienlaikus izsaukt StringBuffer metodes) | Tas nav pavedienam drošs (divas pavedieni var izsaukt metodes vienlaikus) |
| Salīdzinoši lēns, jo tas ir sinhronizēts. | Tā kā tas nav sinhronizēts, ieviešana ir ātrāka |
49. Kuram no virknes vai virknes bufera būtu jādod priekšroka, ja datos ir jāveic daudz atjauninājumu?
Virknei tiek dota priekšroka, nevis StringBuffer, jo StringBuilder ir ātrāks par StringBuffer, taču priekšroka tiek dota StringBuffer objektiem, jo tas nodrošina lielāku pavedienu drošību.
50. Kāpēc StringBuffer sauc par mainīgu?
StringBuffer klase Java tiek izmantota, lai attēlotu maināmu rakstzīmju virkni. Tā piedāvā alternatīvu nemainīgajai stīgu klasei, ļaujot mainīt virknes saturu, nepārtraukti neradot jaunus objektus. Ar klases StringBuffer palīdzību tiek veidotas mainīgas (modificējamas) virknes. StringBuffer klase Java ir identiska klasei String, izņemot to, ka tā ir maināma.
Piemērs:
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); } } Izvade
techcodeview.com
51. Kā virknes izveide, izmantojot new(), atšķiras no literāla izveides?
Virkne, kas izmanto new() atšķiras no literāļa, jo, kad mēs deklarējam virkni, tā saglabā elementus steka atmiņā, turpretim, kad tā tiek deklarēta, izmantojot new(), tā piešķir dinamisko atmiņu kaudzes atmiņā. Objekts tiek izveidots kaudzes atmiņā pat tad, ja atrodas viens un tas pats satura objekts.
Sintakse:
String x = new String('ABC');
52. Kas ir masīvs Java?
Masīvs Java ir datu struktūra, kas tiek izmantota, lai saglabātu noteikta izmēra viena veida elementu secību. Masīva elementiem var piekļūt pēc to indeksa, kas sākas no 0 un sasniedz garumu mīnus 1. Masīva deklarēšana Java valodā tiek veikta ar kvadrātiekavām un deklarācijas laikā tiek norādīts arī izmērs.
Sintakse:
int[] Arr = new int[5];
53. Kuros atmiņas masīvus veido Java?
Java masīvi tiek izveidoti kaudzes atmiņā. Kad masīvs tiek izveidots ar jauna atslēgvārda palīdzību, kaudzē tiek atvēlēta atmiņa masīva elementu glabāšanai. Java kaudzes atmiņu pārvalda Java virtuālā mašīna (JVM), un tā tiek koplietota arī starp visiem Java programmas pavedieniem. Atmiņu, ko programma vairs neizmanto, JVM izmanto atkritumu savācēju, lai atgūtu atmiņu. Java masīvi tiek izveidoti dinamiski, kas nozīmē, ka masīva lielums tiek noteikts programmas izpildes laikā. Masīva lielums tiek norādīts masīva deklarēšanas laikā, un pēc masīva izveides to nevar mainīt.
54. Kādi ir masīva veidi?
Ir divu veidu masīvi, t.i., primitīvie masīvi un atsauces masīvi.
- Viendimensijas masīvi: Masīvus, kuriem ir tikai viena dimensija, t.i., veselu skaitļu masīvs vai virkņu masīvs, sauc par viendimensijas masīviem.
Sintakse:
data_type[] Array_Name = new data_type[ArraySize];
- Daudzdimensiju masīvi: Masīvi, kuriem ir divas vai vairākas dimensijas, piemēram, divdimensiju vai trīsdimensiju masīvi.
55. Kāpēc Java masīva indekss sākas ar 0?
Masīva indekss apzīmē attālumu no masīva sākuma. Tātad pirmajam elementam ir 0 attālums, tāpēc sākuma indekss ir 0.
Sintakse:
[Base Address + (index * no_of_bytes)]
56. Kāda ir atšķirība starp int masīvu[] un int[] masīvu?
Gan int masīvs[], gan int[] masīvs tiek izmantoti, lai java deklarētu veselu skaitļu masīvu. Vienīgā atšķirība starp tām ir to sintaksē, starp tām nav funkcionalitātes atšķirības.
int arr[] is a C-Style syntax to declare an Array.
int[] arr is a Java-Style syntax to declare an Array.
Tomēr parasti ir ieteicams izmantot Java stila sintaksi, lai deklarētu masīvu. Tā kā tas ir viegli lasāms un saprotams, tas arī vairāk atbilst citām Java valodas konstrukcijām.
57. Kā kopēt masīvu Java?
Programmā Java ir vairāki veidi, kā kopēt masīvu, pamatojoties uz prasībām.
- clone () metode Java: Šī Java metode tiek izmantota, lai izveidotu seklu dotā masīva kopiju, kas nozīmē, ka jaunajam masīvam būs tāda pati atmiņa kā sākotnējam masīvam.
int[] Arr = { 1, 2, 3, 5, 0}; int[] tempArr = Arr.clone(); - arraycopy() metode: Lai izveidotu dziļu masīva kopiju, mēs varam izmantot šo metodi, kas izveido jaunu masīvu ar tādām pašām vērtībām kā sākotnējam masīvam.
int[] Arr = {1, 2, 7, 9, 8}; int[] tempArr = new int[Arr.length]; System.arraycopy(Arr, 0, tempArr, 0, Arr.length); - copyOf() metode: Šo metodi izmanto, lai izveidotu jaunu masīvu ar noteiktu garumu, un sākotnējā masīva saturs tiek kopēts jaunajā masīvā.
int[] Arr = {1, 2, 4, 8}; int[] tempArr = Arrays.copyOf(Arr, Arr.length); - copyOfRange() metode: Šī metode ir ļoti līdzīga copyOf() metodei Java, taču šī metode arī ļauj norādīt elementu diapazonu, ko kopēt no sākotnējā masīva.
int[] Arr = {1, 2, 4, 8}; int[] temArr = Arrays.copyOfRange(Arr, 0, Arr.length); 58. Ko jūs saprotat ar robaino masīvu?
Robains masīvs Java valodā ir tikai divdimensiju masīvs, kurā katrai masīva rindai var būt atšķirīgs garums. Tā kā visām 2 d masīva rindām ir vienāds garums, bet robains masīvs nodrošina lielāku elastību katras rindas izmērā. Šī funkcija ir ļoti noderīga apstākļos, kad datiem ir dažāds garums vai ja nepieciešams optimizēt atmiņas lietojumu.
Sintakse:
int[][] Arr = new int[][] { {1, 2, 8}, {7, 5}, {6, 7, 2, 6} }; 59. Vai ir iespējams masīvu padarīt nepastāvīgu?
Java nav iespējams izveidot nepastāvīgu. Nepastāvīgus atslēgvārdus Java var lietot tikai atsevišķiem mainīgajiem, bet ne masīviem vai kolekcijām. Mainīgā vērtība vienmēr tiek nolasīta no galvenās atmiņas un ierakstīta tajā, ja tā ir definēta kā nepastāvīga, nevis tiek saglabāta kešatmiņā pavediena lokālajā atmiņā. Tādējādi ir vieglāk nodrošināt, ka visi pavedieni, kas piekļūst mainīgajam, var redzēt tajā veiktās izmaiņas.
60. Kādas ir masīva priekšrocības un trūkumi?
Masīvu priekšrocības ir:
- Tieša un efektīva piekļuve jebkuram kolekcijas elementam ir iespējama, izmantojot masīvus. Masīva elementiem var piekļūt, izmantojot operāciju O(1), kas nozīmē, ka tam nepieciešamais laiks ir nemainīgs un nav atkarīgs no masīva lieluma.
- Datus var efektīvi saglabāt atmiņā, izmantojot masīvus. Masīva lielums ir zināms kompilēšanas laikā, jo tā elementi tiek glabāti blakus esošajos atmiņas reģionos.
- Sakarā ar to, ka dati tiek glabāti blakus esošajos atmiņas apgabalos, masīvi nodrošina ātru datu izgūšanu.
- Masīvus ir viegli ieviest un saprast, padarot tos par ideālu izvēli iesācējiem, kas apgūst datorprogrammēšanu.
Masīvu trūkumi ir:
- Masīvi tiek izveidoti ar iepriekš noteiktu izmēru, kas tiek izvēlēts tajā brīdī. Tas nozīmē, ka, ja masīva lielums ir jāpaplašina, būs jāizveido jauns masīvs un dati būs jākopē no vecā masīva uz jauno masīvu, kas var aizņemt daudz laika un atmiņas.
- Ja masīvs nav pilnībā aizņemts, masīva atmiņas vietā var būt neizmantota atmiņas vieta. Ja jums ir slikta atmiņa, tā var būt problēma.
- Salīdzinājumā ar citām datu struktūrām, piemēram, saistītiem sarakstiem un kokiem, masīvi var būt neelastīgi to fiksētā izmēra un ierobežotā atbalsta dēļ sarežģītiem datu veidiem.
- Tā kā visiem masīva elementiem ir jābūt viena veida datu tipiem, tas neatbalsta sarežģītus datu tipus, piemēram, objektus un struktūras.
61. Kas ir objektorientētā paradigma?
Paradigma burtiski nozīmē modeli vai metodi. Programmēšanas paradigmas ir metodes, lai atrisinātu četru veidu programmu, proti, imperatīvu, loģisku, funkcionālu un objektu orientētu. Ja objekti tiek izmantoti kā bāzes entītijas, kurām tiek izmantotas metodes, tiek veiktas iekapsulēšanas vai mantošanas funkcijas, to sauc par objektu orientētu paradigmu.
62. Kādi ir galvenie OOP jēdzieni Java?
Tālāk ir minēti galvenie Java OOP jēdzieni:
- Mantojums
- Polimorfisms
- Abstrakcija
- Iekapsulēšana
63. Ar ko atšķiras objektorientētā programmēšanas valoda un objektorientētā programmēšanas valoda?
| Objektorientētā programmēšanas valoda | Objektu programmēšanas valoda |
|---|---|
| Objektorientētā programmēšanas valoda aptver lielākus jēdzienus, piemēram, mantošanu, polimorfismu, abstrakciju utt. | Objektu programmēšanas joma ir ierobežota ar objektu izmantošanu un iekapsulēšanu. |
| Tā atbalsta visus iebūvētos objektus | Tas neatbalsta visus iebūvētos objektus |
| Piemēri: Java, C# utt. | Piemēri: Java skripts, vizuālie pamati utt. |
64. Ar ko Java operators ‘new’ atšķiras no operatora ‘newInstance()?
jaunais operators tiek izmantots, lai izveidotu objektus, bet, ja mēs vēlamies izlemt, kāda veida objekts tiks izveidots izpildes laikā, mēs nevaram izmantot jauno operatoru. Šajā gadījumā mums ir jāizmanto newInstance() metode .
65. Kas ir klases Java?
Java valodā klases ir objektu kolekcija, kam ir līdzīgas īpašības un atribūti. Klases attēlo projektu vai veidni, no kuras tiek izveidoti objekti. Klases nav reālās pasaules entītijas, bet palīdz mums izveidot objektus, kas ir reālās pasaules entītijas.
66. Kāda ir atšķirība starp statisko (klases) metodi un instances metodi?
| Statiskā (klases) metode | Instanču metode |
|---|---|
| Statiskā metode ir saistīta ar klasi, nevis objektu. | Gadījuma metode ir saistīta ar objektu, nevis klasi. |
| Statiskās metodes var izsaukt, izmantojot klases nosaukumu, tikai neveidojot klases gadījumu. | Gadījuma metodi var izsaukt noteiktā klases instancē, izmantojot objekta atsauci. |
| Statiskām metodēm nav piekļuves šis atslēgvārds . | Instanču metodēm ir piekļuve šis atslēgvārds . |
| Šī metode var piekļūt tikai statiskiem klases dalībniekiem | Šī metode var piekļūt gan statiskām, gan nestatiskām klases metodēm. |
67. Kas ir šis atslēgvārds Java?
“this” ir atslēgvārds, ko izmanto, lai atsauktos uz mainīgo, kas attiecas uz pašreizējo objektu.
68. Kas ir īsie piekļuves parametri un piekļuves specifikāciju veidi?
Java Access Specifiers palīdz ierobežot klases, konstruktora, mainīgā, metodes vai datu dalībnieka tvērumu. Tālāk ir minēti četri Java piekļuves specifikāciju veidi:
- Publisks
- Privāts
- Aizsargāts
- Noklusējums
69. Kāda būs objekta atsauces sākotnējā vērtība, kas definēta kā instances mainīgais?
Objekta atsauces sākotnējā vērtība, kas definēta kā gadījuma mainīgais, ir NULL vērtība.
70. Kas ir objekts?
Objekts ir reālas dzīves vienība, kurai ir ar to saistītas noteiktas īpašības un metodes. Objekts tiek definēts arī kā klases gadījums. Objektu var deklarēt, izmantojot jaunu atslēgvārdu.
71. Kādi ir dažādi veidi, kā izveidot objektus Java?
Objektu izveides metodes Java ir minētas tālāk:
- Izmantojot jaunu atslēgvārdu
- Izmantojot jaunu gadījumu
- Izmantojot klona() metodi
- Deserializācijas izmantošana
- Izmantojot Constructor klases metodi newInstance().
Lai uzzinātu vairāk par metodēm, kā izveidot objektus Java, skatiet Šis raksts .
72. Kādas ir objektu klonēšanas priekšrocības un trūkumi?
Objektu klonēšanas izmantošanai ir daudz priekšrocību un trūkumu, kā minēts tālāk:
Priekšrocības:
- Java valodā piešķiršanas operatoru “=” nevar izmantot klonēšanai, jo tas vienkārši izveido atsauces mainīgo kopiju. Lai pārvarētu šādu neatbilstību, objektu klases metodi clone () var izmantot, izmantojot piešķiršanas operatoru.
- Metode Clone () ir aizsargāta klases objekta metode, kas nozīmē, ka tikai darbinieku klase var klonēt darbinieku objektus. Tas nozīmē, ka neviena cita klase, izņemot Darbinieks, nevar klonēt darbinieku objektus, jo tā nezina darbinieku klases atribūtus.
- Koda lielums samazinās, samazinoties atkārtojumam.
- Ļauj replikāciju (tādu kā prototipa modeli), manuāli iniciējot katru lauku, tiek izveidots liels kods, ja objekts ir sarežģīts, tas ātrāk ar klonēšanu.
Trūkumi:
- Tā kā metode Object.clone() ir aizsargāta, ir jānodrošina savs klons() un no tā netieši jāizsauc Object.clone().
- Ja mums nav nekādu metožu, mums ir jānodrošina klonējams interfeiss, jo mums ir jānodrošina JVM informācija, lai mēs varētu veikt klonēšanu() mūsu objektam. Ja nē, mēs nevaram klonēt klonēt seklā lauku kopiju vienkārši atgrieziet super.clone() no klona metodes, kas var būt problemātiska.
73. Kādas ir priekšrocības, ja to iedod metodē, nevis pašu pašreizējo klases objektu?
Ir dažas priekšrocības, ja to nodod metodē, nevis pašu pašreizējo klases objektu:
- šis ir pēdējais mainīgais, kura dēļ to nevar piešķirt nevienai jaunai vērtībai, savukārt pašreizējās klases objekts var nebūt galīgs un to var mainīt.
- to var izmantot sinhronizētajā blokā.
74. Kas ir konstruktors?
Konstruktors ir īpaša metode, ko izmanto objektu inicializācijai. Konstruktors tiek izsaukts, kad tiek izveidots objekts. Konstruktora nosaukums ir tāds pats kā klases nosaukums.
Piemērs:
// Class Created class XYZ{ private int val; // Constructor XYZ(){ val=0; } }; 75. Kas notiek, ja klasē nenodrošina konstruktoru?
Ja Java klasē nenodrošina konstruktoru, kompilators automātiski ģenerē noklusējuma konstruktoru bez argumentiem un darbības, kas ir noklusējuma konstruktors.
76. Cik konstruktoru veidi tiek izmantoti Java?
Java ir divu veidu konstruktori, kā minēts tālāk:
- Noklusējuma konstruktors
- Parametrizēts konstruktors
Noklusējuma konstruktors: tas ir veids, kas nepieņem nevienu parametra vērtību. To izmanto, lai iestatītu objekta atribūtu sākotnējās vērtības.
class_Name(); // Default constructor called
Parametrētais konstruktors: tas ir konstruktora veids, kas pieņem parametrus kā argumentus. Tos izmanto, lai objektu inicializācijas laikā piešķirtu vērtības instanču mainīgajiem.
class_Name(parameter1, parameter2......); // All the values passed as parameter will be // allocated accordingly
77. Kāds ir noklusējuma konstruktora mērķis?
Konstruktori palīdz izveidot klases gadījumus vai var teikt, ka tie rada klases objektus. Konstruktors tiek izsaukts objektu inicializācijas laikā. Noklusējuma konstruktors ir konstruktora veids, kas nepieņem nevienu parametru, tāpēc jebkura vērtība, kas tiek piešķirta objektu īpašībām, tiek uzskatīta par noklusējuma vērtībām.
78. Ko jūs saprotat ar kopiju konstruktoru Java?
Kopiju konstruktors ir konstruktora tips, kurā mēs nododam citu objektu kā parametru, jo kuras abu objektu īpašības šķiet vienādas, tāpēc šķiet, ka konstruktori veido objekta kopiju.
79. Kur un kā var izmantot privāto konstruktoru?
Privāts konstruktors tiek izmantots, ja nevēlaties, lai kāda cita klase izveidotu objektu, lai izvairītos no apakšklases. Izmantot privāto konstruktoru var uzskatīt par ieviestu piemērā.
Piemērs:
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); } } Izvade
Value of a.x = 20 Value of b.x = 20
80. Kādas ir atšķirības starp konstruktoriem un metodēm?
Java konstruktori tiek izmantoti objektu inicializēšanai. Izveidošanas laikā konstruktori tiek aicināti iestatīt objektu atribūtus, izņemot dažas pamata atšķirības starp tiem:
- Konstruktori tiek izsaukti tikai tad, kad objekts ir izveidots, bet citas metodes var izsaukt vairākas reizes objekta dzīves laikā.
- Konstruktori neko neatdod, savukārt citas metodes var atdot jebko.
- Konstruktori tiek izmantoti sākotnējā stāvokļa iestatīšanai, bet metodes tiek izmantotas konkrētu darbību veikšanai.
81. Kas ir interfeiss?
Java saskarne ir statisku galīgo mainīgo un abstrakto metožu kolekcija, kas nosaka līgumu vai vienošanos par saistītu klašu kopu. Jebkurai klasei, kas ievieš saskarni, ir nepieciešama noteikta metožu kopa. Tas nosaka uzvedību, kas jāuzrāda klasei, bet ne specifiku, kā tā būtu jāievieš.
Sintakse:
interface { // constant fields // methds that are abstract by default } Piemērs:
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()); } } Izvade
Area of circle is 78.53981633974483 Perimeter of circle is31.41592653589793
82. Norādiet dažas saskarnes funkcijas.
Interfeiss Java programmēšanas valodā ir definēts kā abstrakts tips, ko izmanto, lai norādītu klases uzvedību. Java saskarne ir darbības plāns. Java saskarne satur statiskas konstantes un abstraktas metodes.
Interfeisa funkcijas ir minētas zemāk:
- Interfeiss var palīdzēt sasniegt pilnīgu abstrakciju.
- Ļauj mums Java izmantot vairākus mantojumus.
- Jebkura klase var ieviest vairākas saskarnes, pat ja viena klase var paplašināt tikai vienu klasi.
- To izmanto arī, lai panāktu vaļīgu savienojumu.
83. Kas ir marķiera interfeiss?
Interfeiss tiek atpazīts kā tukšs interfeiss (nav lauka vai metožu), to sauc par marķiera interfeisu. Marķieru saskarņu piemēri ir serializējamās, klonējamās un attālās saskarnes.
84. Kādas ir atšķirības starp abstrakto klasi un saskarni?
| Abstraktā klase | Interfeisa klase |
|---|---|
| Abstraktajā klasē var atrast gan abstraktas, gan neabstraktas metodes. | Interfeiss satur tikai abstraktas metodes. |
| Abstract Class atbalsta galīgās metodes. | Interfeisa klase neatbalsta galīgās metodes. |
| Abstract klase neatbalsta vairākkārtēju pārmantošanu. | Interfeisa klase atbalsta vairākus mantojumus. |
| Abstract Keyword tiek izmantots, lai deklarētu abstrakto klasi. | Interfeisa atslēgvārds tiek izmantots interfeisa klases deklarēšanai. |
| pagarināt atslēgvārds tiek izmantots, lai paplašinātu abstrakto klasi. | īsteno Atslēgvārds tiek izmantots saskarnes ieviešanai. |
| Abstract Class ir tādi dalībnieki kā aizsargāti, privāti utt. | Visi klases dalībnieki pēc noklusējuma ir publiski. |
85. Ko jūs domājat ar datu iekapsulēšanu?
Datu iekapsulēšana ir OOPS īpašību jēdziens un to klašu raksturlielumi, kuras saskarne ir saistīta. Būtībā tas apvieno datus un metodes, kas darbojas ar šiem datiem vienā vienībā. Iekapsulēšana tiek panākta, deklarējot klases gadījumu mainīgos kā privātus, kas nozīmē, ka tiem var piekļūt tikai klasē.
86. Kādas ir Java Encapsulation priekšrocības?
Iekapsulēšanas priekšrocības Java valodā ir minētas zemāk:
- Datu slēpšana: tas ir veids, kā ierobežot mūsu datu dalībnieku piekļuvi, slēpjot ieviešanas informāciju. Iekapsulēšana nodrošina arī datu slēpšanas veidu. Lietotājam nebūs ne jausmas par klases iekšējo ieviešanu.
- Palielināta elastība: mēs varam padarīt klases mainīgos tikai lasāmus vai tikai rakstāmus atkarībā no mūsu prasībām.
- Atkārtota izmantošana: iekapsulēšana arī uzlabo atkārtotu lietojamību, un to ir viegli mainīt atbilstoši jaunām prasībām.
- Koda testēšana ir vienkārša: kods ir viegli pārbaudāms vienības testēšanai.
87. Kāds ir iekapsulēšanas galvenais ieguvums?
Galvenā Java Encapsulation priekšrocība ir tās spēja aizsargāt objekta iekšējo stāvokli no ārējām modifikācijām vai piekļuves. Tas ir veids, kā paslēpt klases ieviešanas informāciju no ārējās piekļuves un tikai atklāt publisku saskarni, ko var izmantot, lai mijiedarbotos ar klasi. Galvenais ieguvums ir nodrošināt iespēju kontrolēt un pārvaldīt objekta stāvokli un uzvedību, kā arī vienlaikus aizsargāt to no modifikācijas un nesankcionētas piekļuves.
Piemērs:
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()); } } Izvade
Name is Rohan Age is 29
88. Ko jūs domājat ar apkopošanu?
Apkopošana ir termins, kas saistīts ar attiecībām starp divām klasēm, ko vislabāk raksturo kā “ir-a” attiecības. Šis ir visspecializētākā asociācijas versija. Tā ir vienvirziena asociācija, kas nozīmē, ka tās ir vienvirziena attiecības. Tas satur atsauci uz citu klasi, un tiek uzskatīts, ka tai pieder šī klase.
89. Kādas ir “IS-A” attiecības OOPs Java?
“IS-A” ir OOPs Java attiecību veids, kurā viena klase manto citu klasi.
90. Definējiet Mantojumu.
Ja objekts, kas pieder apakšklasei, iegūst visas virsklases galvenā objekta īpašības un uzvedību, to sauc par mantojumu. Klasi klasē sauc par apakšklasi, bet pēdējo sauc par virsklasi. Tiek uzskatīts, ka apakšklase vai bērnu klase ir specifiska, savukārt virsklase vai vecākklase ir vispārīga. Mantojums nodrošina koda atkārtotu izmantošanu.
91. Kādi ir dažādi Java mantojuma veidi?
Mantojums ir metode, ar kuru Child klase var mantot Super vai Parent klases pazīmes. Java valodā mantojumam ir četri veidi:
- Viens mantojums: Ja bērns vai apakšklase paplašina tikai vienu virsklasi, ir zināms, ka tas ir viens mantojums. Viena vecāka klases rekvizīti tiek nodoti bērnklasei.
- Daudzlīmeņu mantošana: Kad bērns vai apakšklase paplašina jebkuru citu apakšklasi, tiek izveidota mantojuma hierarhija, ko sauc par daudzlīmeņu pārmantošanu. Citiem vārdiem sakot, viena apakšklase kļūst par citas apakšklasi.
- Hierarhiskā mantošana: Ja vairākas apakšklases izriet no vienas un tās pašas vecākklases, to sauc par hierarhisko mantojumu. Citiem vārdiem sakot, klasē, kurā ir viens no vecākiem, ir daudz apakšklases.
- Daudzkārtēja mantošana: Ja bērnu klase manto no vairākām vecāku klasēm, to sauc par vairāku mantojumu. Java versijā tas atbalsta tikai interfeisu vairāku mantojumu, nevis klases.
92. Kas ir daudzkārtēja mantošana? Vai to atbalsta Java?
Objektorientētā jēdziena sastāvdaļa, kas pazīstama kā vairāki mantojumi, ļauj klasei mantot rekvizītus no daudzām vecākklasēm. Ja metodes ar vienu un to pašu parakstu atrodas gan virsklasēs, gan apakšklasēs, rodas problēma. Metodes izsaucējs nevar norādīt kompilatoram, kura klases metode ir jāizsauc vai pat kurai klases metodei jāpiešķir prioritāte.
Piezīme: Java neatbalsta vairāku mantojumu
Piemērs:
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(); } } Izvade
Eating Drinking Barking
93. Ar ko C++ mantošana atšķiras no Java?
| Mantojums C++ valodā | Mantojums Java valodā |
|---|---|
| C++ ļauj lietotājam mantot vairākas klases. | Java neatbalsta vairākus mantojumus. |
| Kad klase tiek izveidota programmā C++, tā netiek mantota no objektu klases, tā pastāv pati par sevi. | Vienmēr tiek teikts, ka Javai ir viens mantojums, jo visas klases vienā vai otrā veidā manto no objektu klases. |
94. Vai mantojuma izmantošanai ir kādi ierobežojumi?
Jā, mantojuma izmantošanai Java ir ierobežots, jo mantojuma dēļ var mantot visu, sākot no superklases un interfeisa, kuras dēļ apakšklase ir pārāk sagrupēta un dažkārt ir pakļauta kļūdām, ja noteiktās situācijās tiek veikta dinamiska ignorēšana vai dinamiska pārslodze.
95. Lai gan mantošana ir populārs OOP jēdziens, tas ir mazāk izdevīgs nekā kompozīcija. Paskaidrojiet.
Mantojums ir populārs objektorientētās programmēšanas (OOP) jēdziens, kurā klase var mantot rekvizītus un metodes no jebkuras citas klases, ko dēvē par vecāku vai virsklasi. No otras puses, kompozīcijā klase var saturēt citas klases gadījumu kā locekļa mainīgo, ko bieži dēvē par daļu vai komponentu. Tālāk ir minēti daži iemesli, kāpēc kompozīcija ir izdevīgāka nekā mantošana:
- Stingrs savienojums: Ikreiz, kad tiek veiktas kādas izmaiņas virsklasē, šīs izmaiņas var ietekmēt visu tās atvasināto vai apakšklases uzvedību. Šī problēma padara kodu mazāk elastīgu, kā arī rada problēmas apkopes laikā. Šī problēma rada arī ciešu savienojumu starp klasēm.
- Trauslas bāzes klases problēma: Kad izmaiņas bāzes klasē var izjaukt tās atvasināto klašu funkcionalitāti. Šī problēma var apgrūtināt jaunu līdzekļu pievienošanu vai esošo pārveidošanu. Šī problēma ir pazīstama kā trauslā bāzes klases problēma.
- Ierobežota atkārtota izmantošana: Java mantošana var izraisīt ierobežotu koda atkārtotu izmantošanu un arī koda dublēšanos. Tā kā apakšklase manto visas savas virsklases īpašības un metodes, dažreiz tā var beigties ar nevajadzīgu kodu, kas nav vajadzīgs. Tas rada mazāk uzturējamu kodu bāzi.
96. Kas ir asociācija?
Asociācija ir saistība starp divām atsevišķām klasēm, kas izveidotas, izmantojot to objektus. Tas atspoguļo Has-A attiecības.
97. Ko jūs domājat ar apkopošanu?
Sastāvs ir ierobežots apkopošanas veids, kurā divas entītijas ir ļoti atkarīgas viena no otras. Tas pārstāv daļa no attiecibas.
98. Kāds ir Java sastāvs?
Sastāvs nozīmē attiecības, kurās bērns nevar pastāvēt neatkarīgi no vecāka. Piemēram, cilvēka sirds, sirds neeksistē atsevišķi no cilvēka.
99. Norādiet atšķirību starp sastāvu un apkopojumu.
| Apkopošana | Sastāvs |
|---|---|
| Tas nosaka attiecības starp objektiem | Tas atspoguļo attiecību daļu |
| Objekti ir neatkarīgi viens no otra. | Objekti ir atkarīgi viens no otra. |
| Atveidojiet to, izmantojot pildīto dimantu. | Atveidojiet to, izmantojot tukšo dimantu. |
| Bērnu priekšmetiem nav mūža. | Bērnu priekšmetiem ir mūžs. |
100. Vai konstruktors var tikt mantots?
Nē, mēs nevaram mantot konstruktoru.
101. Kas ir polimorfisms?
Polimorfisms tiek definēts kā spēja iegūt vairāk nekā vienu formu. Tam ir divi veidi, proti, kompilēšanas laika polimorfisms vai metodes pārslodze - funkcija, kas tiek izsaukta kompilēšanas laikā. Piemēram, ņemiet klases “apgabalu”. Pamatojoties uz parametru skaitu, tas var aprēķināt kvadrāta, trīsstūra vai apļa laukumu. Izpildes laika polimorfisms vai metodes ignorēšana — saites izpildes laikā. Klasē esošā metode ignorē vecākklases metodi.
102. Kas ir izpildlaika polimorfisms jeb dinamiskās metodes nosūtīšana?
Dinamiskā metodes nosūtīšana ir atrisināšanas mehānisms metodes ignorēšanai izpildes laikā. Metodes ignorēšana ir metode, kurā apakšklases metodei ir tāds pats nosaukums, parametri un atgriešanas veids kā metodei virsklasē. Kad ignorētā metode tiek izsaukta, izmantojot virsklases atsauci, Java nosaka, kura šīs metodes versija (virsklase vai apakšklase) ir jāizpilda, pamatojoties uz objekta veidu, uz kuru atsaucas izsaukuma laikā. Tādējādi lēmums tiek pieņemts izpildes laikā. To sauc par dinamiskās metodes nosūtīšanu.
103. Kas ir metodes ignorēšana?
Metodes ignorēšana, kas pazīstama arī kā izpildlaika polimorfisms, ir tāda, kurā pakārtotā klase satur to pašu metodi kā vecākklase. Piemēram, mums ir metode ar nosaukumu “gfg()” vecāku klasē. Metode gfg() atkal ir definēta apakšklasē. Tādējādi, kad apakšklasē tiek izsaukta gfg(), tiek izpildīta metode klases ID ietvaros. Šeit gfg () klasē ignorēja metodi ārpusē.
104. Kas ir metodes pārslodze?
Metodes ignorēšana ir metode Java izpildlaika polimorfisma sasniegšanai. Metodes ignorēšana ir līdzeklis, kas ļauj pakārtotajai klasei nodrošināt konkrētu metodes ieviešanu, ko jau nodrošina kāda no tās vecākklasēm. Ja metodei bērnklasē ir tāds pats nosaukums, tie paši parametri vai paraksts un tāds pats atgriešanas veids (vai apakštips) kā metodei tās vecākklasē, tiek uzskatīts, ka apakšklases metode ignorē metodi superklase.
105. Vai varam ignorēt statisko metodi?
Nē, jo statiskās metodes ir klases daļa, nevis objekts, tāpēc mēs tās nevaram ignorēt.
106. Vai mēs varam ignorēt pārslodzes metodi?
Jā, jo pārslodzes metode kompilatora acīs ir pavisam cita metode. Ignorēšana nepavisam nav tas pats. Lēmums par to, kuru metodi izsaukt, tiek atlikta izpildlaikā.
107. Vai var pārslogot main() metodi?
Jā, Java mēs varam pārslogot galveno metodi, lai izsauktu galveno metodi, izmantojot tās iepriekš definēto izsaukšanas metodi.
108. Kas ir metodes pārslodze un metodes ignorēšana?
Metodes pārslodze: To sauc arī par kompilēšanas laika polimorfismu. Metodes pārslogošanā divas vai vairākas metodes tiek koplietotas vienā klasē ar atšķirīgu parakstu.
Piemērs:
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)); } } Izvade
multiply() with 2 parameters 20 multiply() with 3 parameters 24 multiply() with 4 parameters 24
Metodes ignorēšana: Metodes ignorēšana notiek, ja apakšklase var nodrošināt tādas metodes ieviešanu, kas jau ir definēta mātes klasē vai virsklasē. Atgriešanas veidam, nosaukumam un argumentiem jābūt līdzīgiem superklases metodēm.
Piemērs:
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(); } } Izvade
drive() method of derived class Car is driving. drive() method of base class driving the Car. drive() method of derived class Car is driving.
| Metode Pārslodze | Metodes ignorēšana |
|---|---|
| Ja divas vai vairākas metodes ir vienā klasē ar dažādiem parametriem, bet vienu un to pašu nosaukumu. | Kad apakšklase nodrošina savu metodes ieviešanu, kas jau ir definēta vecākklasē. |
| Metodes pārslodze var notikt tikai tajā pašā klasē vai starp apakšklasi vai vecākklasi. | Metodes ignorēšana var notikt tikai apakšklasē. |
| Ja rodas kļūda, tā tiek uztverta programmas kompilēšanas laikā. | Ja rodas kļūda, tā tiek uztverta programmas izpildlaikā. |
| Kompilācijas laika polimorfisma piemērs. | Darbības laika polimorfisma piemērs. |
| Metode Pārslodzei var būt vai nav nepieciešama mantošana. | Metodes ignorēšanai vienmēr ir nepieciešama mantošana. |
| Tas notiek klasē. | To veic divās klasēs ar mantojuma attiecībām. |
109. Vai mēs varam ignorēt privātās metodes?
Java nav iespējams ignorēt privātās metodes. Metodes ignorēšana ir vieta, kur tiek ieviesta apakšklases metode, nevis vecākklases metode. Privātās metodes ir pieejamas tikai klasē, kurā tās ir deklarētas. Tā kā šī metode nav redzama citām klasēm un tai nevar piekļūt, to nevar ignorēt.
110. Vai varam mainīt ignorētās metodes apjomu apakšklasē?
Programmā Java nav iespējams modificēt ignorētās metodes tvērumu. Apakšklases metodes tvērumam ir jābūt vienādam ar vai plašākam par Superclass metodes ignorētās metodes tvērumu. Piemēram, ignorētajai metodei apakšklasē var būt publiska vai pieejamāka tvērums, piemēram, aizsargāta vai noklusējuma tvērums, ja ignorētajai metodei virsklasē ir publiska tvērums. Tomēr tai nevar būt ekskluzīvāka darbības joma, piemēram, privāta.
111. Vai mēs varam modificēt virsklases metodes metienu klauzulu, vienlaikus ignorējot to apakšklasē?
Mēs varam modificēt Superclass metodes metienu klauzulu ar dažiem ierobežojumiem, mēs varam mainīt superklases metodes metienu klauzulu, vienlaikus ignorējot to apakšklasē. Apakšklases ignorētā metode var norādīt tikai nepārbaudītus izņēmumus, ja virsklases metode nedeklarē nekādus izņēmumus. Ja virsklases metode deklarē izņēmumu, apakšklases metode var deklarēt to pašu izņēmumu, apakšklases izņēmumu vai vispār bez izņēmuma. Tomēr apakšklases metode nevar deklarēt vecāku izņēmumu, kas ir plašāks par virsklases metodē deklarētajiem.
112. Vai Java var izmantot virtuālās funkcijas?
Jā, Java atbalsta virtuālās funkcijas. Funkcijas pēc noklusējuma ir virtuālas, un tās var padarīt nevirtuālas, izmantojot pēdējo atslēgvārdu.
113. Kas ir abstrakcija?
Abstrakcija attiecas uz būtisku pazīmju attēlošanu, neiekļaujot fona detaļas. Detalizēta informācija vai ieviešana ir paslēpta. Visizplatītākais abstrakcijas piemērs ir automašīna, mēs zinām, kā ieslēgt dzinēju, paātrināt un pārvietoties, taču dzinēja darbības veids un tā iekšējās sastāvdaļas ir sarežģīta loģika, kas ir paslēpta no vispārējiem lietotājiem. Tas parasti tiek darīts, lai risinātu sarežģītību.
114. Kas ir abstraktā klase?
Klase, kas deklarēta kā abstrakta, nevar tikt instantiēta, t.i., objektu nevar izveidot. Tajā var būt vai var nebūt abstraktas metodes, bet, ja klasei ir vismaz viena abstrakta metode, tā ir jāpasludina par abstraktu.
Abstraktas klases piemērs ar abstraktu metodi:
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. Kad tiek izmantotas abstraktās metodes?
Abstraktā metode tiek izmantota, ja mēs vēlamies izmantot metodi, bet vēlamies bērnklasēm izlemt par ieviešanu, tādā gadījumā mēs izmantojam abstraktās metodes ar vecākklasēm.
116. Kā var izvairīties no serializācijas bērnklasē, ja bāzes klase realizē serializējamo saskarni?
Serializācija bērnu klasē, ja bāzes klase ievieš Serializable interfeisu, mēs varam izvairīties no tā, definējot writeObject() metodi un izmetot NotSerializableException().
117. Kas ir kolekcijas ietvars Java?
Kolekcijas ir Java objektu vienības. Kolekciju ietvars ir Java saskarņu un klašu kopums, ko izmanto, lai attēlotu objektu kolekcijas un dažādos veidos manipulētu ar tām. Kolekciju ietvars satur klases (ArrayList, Vector, LinkedList, PriorityQueue, TreeSet) un vairākas saskarnes (Set, List, Queue, Deque), kur katra saskarne tiek izmantota noteikta veida datu glabāšanai.
118. Izskaidrojiet dažādas kolekcijas ietvaros izmantotās saskarnes.
Ievieš kolekcijas ietvaru
- Kolekcijas saskarne
- Saraksta interfeiss
- Iestatīt interfeisu
- Rindas interfeiss
- Un interfeiss
- Kartes interfeiss
Kolekcijas saskarne: Kolekcija ir primārā pieejamā saskarne, ko var importēt, izmantojot java.util.Collection.
Sintakse:
public interface Collection extends iterable
119. Kā jūs varat sinhronizēt ArrayList Java?
ArrayList var sinhronizēt, izmantojot divas tālāk minētās metodes:
- Collections.synchronizedList() izmantošana
- Izmantojot CopyOnWriteArrayList
Izmantojot Collections.synchronizedList():
public static List synchronizedList(List list)
Izmantojot CopyOnWriteArrayList:
- Izveidojiet tukšu sarakstu.
- Tas ievieš List interfeisu
- Tas ir pavedieniem drošs ArrayList variants
- T apzīmē vispārīgu
120. Kāpēc mums ir nepieciešams sinhronizēts ArrayList, ja mums ir vektori (kas ir sinhronizēti) Java?
ArrayList ir nepieciešams pat tad, ja mums ir vektori noteiktu iemeslu dēļ:
- ArrayList ir ātrāks nekā Vectors.
- ArrayList atbalsta daudzpavedienu izmantošanu, savukārt Vectors atbalsta tikai viena pavediena izmantošanu.
- ArrayList ir drošāk lietojams, jo Vectors atbalsta atsevišķus pavedienus, un atsevišķas darbības ir mazāk drošas un prasa ilgāku laiku, lai sinhronizētu.
- Java vektori tiek uzskatīti par novecojušiem to sinhronizācijas dēļ.
121. Kāpēc mēs nevaram izveidot vispārīgu masīvu?
Vispārējus masīvus nevar izveidot, jo an masīvs nes tipa informāciju par tā elementiem izpildlaikā, tāpēc izpildlaikā tas izmet “ArrayStoreException”, ja elementu tips nav līdzīgs. Tā kā vispārīgā tipa informācija tiek dzēsta kompilēšanas laikā, izmantojot Type Erasure, masīva krātuves pārbaude būtu izturēta tur, kur tai vajadzēja būt neveiksmīgai.
122. Blakus esošās atmiņas vietas parasti tiek izmantotas faktisko vērtību glabāšanai masīvā, bet ne ArrayList. Paskaidrojiet.
Masīva elementi tiek glabāti blakus esošās atmiņas vietās, kas nozīmē, ka katrs elements tiek saglabāts atsevišķā blokā, pamatojoties uz to, kas atrodas masīvā. Tā kā masīva elementi tiek glabāti blakus esošās vietās, jebkuram elementam var būt salīdzinoši viegli piekļūt pēc tā indeksa, jo elementa adresi var aprēķināt, pamatojoties uz elementa atrašanās vietu. Bet Java ievieš ArrayLists kā dinamiskus masīvus, kas nozīmē, ka lielums var mainīties, kad elementi tiek noņemti vai pievienoti. ArrayList elementi netiek glabāti blakus esošās atmiņas vietās, lai pielāgotos šim dinamiskajam raksturam. Tā vietā ArrayList izmanto metodi, kas pazīstama kā paplašināms masīvs, kurā pamatā esošais masīvs tiek paplašināts līdz lielākam izmēram pēc vajadzības un elementi pēc tam tiek kopēti uz jauno vietu. Atšķirībā no ArrayList, kuram ir dinamisks izmērs un kura elementi netiek glabāti blakus esošās atmiņas vietās, masīvam ir noteikts izmērs un tā elementi tiek glabāti tur.
123. Izskaidrojiet metodi, kā pārveidot ArrayList par Array un Array par ArrayList.
Saraksta konvertēšana uz ArrayList
Ir vairākas metodes, lai sarakstu pārvērstu par ArrayList
Programmētāji var pārveidot masīvu par ArrayList, izmantojot klases Arrays metodi asList(). Tā ir statiska Arrays klases metode, kas pieņem List objektu.
Sintakse:
Arrays.asList(item)
Piemērs:
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); } } Izvade
[Abc, Def, Ghi, Jkl]
ArrayList konvertēšana uz Array
Java programmētāji var pārveidot ArrayList par
Sintakse:
List_object.toArray(new String[List_object.size()])
Piemērs:
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 + ' '); } } Izvade
1 2 3 2 1
124. Kā ArrayList lielums dinamiski pieaug? Un arī norādiet, kā tas tiek īstenots iekšēji.
Pateicoties ArrayLists masīvam, tā izmērs dinamiski pieaug, nodrošinot, ka elementiem vienmēr ir pietiekami daudz vietas. Kad pirmo reizi tiek izveidots ArrayList elements, noklusējuma jauda ir aptuveni 10–16 elementi, kas būtībā ir atkarīgs no Java versijas. ArrayList elementi tiek kopēti no sākotnējā masīva uz jauno masīvu, kad sākotnējā masīva ietilpība ir pilna. Tā kā ArrayList lielums dinamiski palielinās, klase izveido jaunu lielāku izmēru masīvu un kopē visus elementus no vecā masīva uz jauno masīvu. Tagad jaunā masīva atsauce tiek izmantota iekšēji. Šis masīva dinamiskas palielināšanas process ir pazīstams kā izmēru maiņa.
125. Kas ir vektors Java valodā?
Java vektori ir līdzīgi un tajos var saglabāt vairākus elementus. Vektori ievēro dažus tālāk minētos noteikumus:
- Vektoru var importēt, izmantojot Java.util.Vector.
- Vektors tiek realizēts, izmantojot dinamisku masīvu, jo vektora izmērs palielinās un samazinās atkarībā no tajā ievietotajiem elementiem.
- Vektora elementi, izmantojot indeksu skaitļus.
- Vektori pēc būtības ir sinhronizēti, tas nozīmē, ka tie izmantoja tikai vienu pavedienu (konkrētā laikā tiek veikts tikai viens process).
- Vektors satur daudzas metodes, kas neietilpst kolekciju sistēmā.
Sintakse:
Vector gfg = new Vector(size, increment);
126. Kā padarīt Java ArrayList tikai lasāmu?
ArrayList var sagatavot tikai, izmantojot kolekciju nodrošināto metodi, izmantojot metodi Collections.unmodifiableList().
Sintakse:
array_readonly = Collections.unmodifiableList(ArrayList);
Piemērs:
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); } } } Izvade
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 ir prioritārā rinda Java?
Prioritātes rinda ir abstrakts datu tips, kas līdzīgs parastai rindai vai steku datu struktūrai. Elementos saglabātie elementi ir atkarīgi no prioritātes, kas noteikta no zemas līdz augstai. PriorityQueue ir balstīta uz prioritāšu kaudzi.
Sintakse:
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()); } } Izvade
10
128. Izskaidrojiet LinkedList klasi.
LinkedList klase ir Java, kas elementu glabāšanai izmanto divkārši saistītu sarakstu. Tas pārmanto AbstractList klasi un ievieš List un Deque saskarnes. LinkedList klases īpašības ir minētas zemāk:
- LinkedList klases nav sinhronizētas.
- Saglabā ievietošanas secību.
- To var izmantot kā sarakstu, kaudzi vai rindu.
Sintakse:
LinkedList list_name=new LinkedList();
129. Kas ir Stack klase Java un kādas ir dažādas metodes, ko tā nodrošina?
Stack klase Java ir LIFO datu struktūra, kas īsteno datu struktūru Last In First Out. Tas ir atvasināts no Vector klases, bet tam ir funkcijas, kas raksturīgas kaudzēm. Java klase Stack nodrošina šādas metodes:
- palūrēt (): atgriež augšējo vienumu no kaudzes, to neizņemot
- tukšs (): atgriež true, ja steka ir tukša, un false pretējā gadījumā
- push (): nospiež priekšmetu kaudzes augšpusē
- pop(): noņem un atgriež augšējo vienumu no kaudzes
- Meklēt(): atgriež objekta pozīciju 1, pamatojoties uz steka augšpusi. Ja objekts neatrodas kaudzē, tas atgriež -1
130. Kas ir iestatīts Java kolekciju sistēmā un uzskaitiet tās dažādās implementācijas?
Kopas ir kolekcijas, kurās netiek glabāti elementu dublikāti. Viņi nesaglabā nekādu elementu secību. Java kolekciju ietvars nodrošina vairākas Set saskarnes implementācijas, tostarp:
- HashSet: Java HashSet saglabā elementus has tabulā, kas nodrošina ātrāku uzmeklēšanu un ātrāku ievietošanu. HashSet nav pasūtīts.
- LinkedHashSet: LinkedHashSet ir HashSet ieviešana, kas uztur elementu ievietošanas secību.
- TreeSet: TreeSet saglabā elementus sakārtotā secībā, ko nosaka elementu dabiskā secība vai pielāgots salīdzinātājs, kas nodrošināts izveides laikā.
131. Kas ir HashSet klase Java un kā tā saglabā elementus?
HashSet klase ievieš Set saskarni Java kolekciju sistēmā un ir HashSet klases dalībnieks. Atšķirībā no dublētām vērtībām, tajā tiek saglabāta atšķirīgu elementu kolekcija. Šajā īstenošanā katrs elements tiek kartēts uz indeksu masīvā, izmantojot jaucējfunkciju, un indekss tiek izmantots, lai ātri piekļūtu elementam. Tas izveido indeksu elementam masīvā, kur tas tiek glabāts, pamatojoties uz ievades elementu. Pieņemot, ka jaucējfunkcija pareizi sadala elementus starp segmentiem, HashSet klase nodrošina pastāvīgu veiktspēju pamata operācijām (pievienošanai, noņemšanai, saturam un izmēram).
132. Kas ir LinkedHashSet Java Collections Framework?
LinkedHashSet ir sakārtota Hashset versija, ko uztur divkārši saistīts saraksts visos elementos. Tas ir ļoti noderīgi, ja ir nepieciešama iterācijas secība. Iterācijas laikā pakalpojumā LinkedHashSet elementi tiek atgriezti tādā pašā secībā, kā tie tiek ievietoti.
Sintakse:
LinkedHashSet hs = new LinkedHashSet();
Piemērs:
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); } } Izvade
Values:[1, 2, 5, 3]
133. Kas ir kartes saskarne Java?
Kartes saskarne atrodas Java kolekcijā, un to var izmantot kopā ar Java.util pakotni. Kartes interfeiss tiek izmantots vērtību kartēšanai atslēgas vērtības formas veidā. Kartē ir visas unikālās atslēgas. Tas arī nodrošina ar to saistītas metodes, piemēram, includeKey (), satur vērtību () utt.
Kā minēts tālāk, kartes saskarnē ir vairāki karšu veidi:
- Sakārtota karte
- TreeMap
- HashMap
- LinkedHashMap
134. Izskaidrojiet koka karti Java valodā
TreeMap ir kartes veids, kas glabā datus atslēgu un vērtību pāra veidā. Tas tiek īstenots, izmantojot sarkan-melno koku. TreeMap funkcijas ir:
- Tas satur tikai unikālus elementus.
- Tam nevar būt NULL atslēga
- Tam var būt vairākas NULL vērtības.
- Tas nav sinhronizēts.
- Tas uztur augošu secību.
135. Kas ir EnumSet?
EnumSet ir specializēta Set saskarnes ieviešana lietošanai ar uzskaites veidu. Dažas EnumSet funkcijas ir:
- Tas nav sinhronizēts.
- Ātrāk nekā HashSet.
- Visiem EnumSet elementiem ir jābūt no viena uzskaitījuma veida.
- Tas neatļauj nulles objektus un izņēmuma gadījumos izmanto NullPointerException.
- Tas izmanto atteices drošu iteratoru.
Sintakse:
public abstract class EnumSet
Parametrs: E norāda elementus.
136. Kas ir BlockingQueue?
Bloķēšanas rinda ir rinda, kas atbalsta darbības, kas elementa izgūšanas un noņemšanas laikā gaida, līdz rinda kļūs tukša, un gaida, kamēr rindā kļūs pieejama vieta, pievienojot elementu.
Sintakse:
public interface BlockingQueue extends Queue
Parametri: E ir kolekcijā saglabāto elementu veids
137. Kas ir ConcurrentHashMap Java un vai jūs to ieviešat?
ConcurrentHashMap tiek ieviests, izmantojot Hashtable.
Sintakse:
public class ConcurrentHashMap extends AbstractMap implements ConcurrentMap, Serializable
Parametri : K ir atslēga Objekta tips un V ir vērtība Objekta tips
138. Vai varat izmantot jebkuru klasi kā kartes taustiņu?
Jā, mēs varam izmantot jebkuru klasi kā kartes atslēgu, ja tā atbilst noteiktiem iepriekš definētiem noteikumiem, kas minēti tālāk:
- Klasei, kas ignorē vienāds() metodi, ir jāignorē arī metode hashCode().
- Paralēlā HashMap klase ir pavedienu droša.
- ConcurrentHashMap noklusējuma vienlaicības līmenis ir 16.
- Nulles objektu ievietošana programmā ConcurrentHashMap nav iespējama kā atslēga vai kā vērtība.
139. Kas ir iterators?
Iteratora interfeiss nodrošina metodes, kā atkārtot jebkuru Java kolekciju. Iterators ir uzskaitījuma aizstāšana Java kolekciju sistēmā. Tas var iegūt iteratora gadījumu no kolekcijas, izmantojot metodi _iterator()_. Tas arī ļauj zvanītājam iterācijas laikā noņemt elementus no pamatā esošās kolekcijas.
140. Kas ir uzskaitījums?
Uzskaitījums ir lietotāja definēts datu tips. To galvenokārt izmanto, lai piešķirtu nosaukumus integrālajām konstantēm, nosaukumi padara programmu viegli lasāmu un uzturējamu. Enum galvenais mērķis ir definēt lietotāja definētus datu tipus.
Piemērs:
// A simple enum example where enum is declared // outside any class (Note enum keyword instead of // class keyword) enum Color { RED, GREEN, BLUE; } 141. Kāda ir atšķirība starp kolekciju un kolekcijām?
| Kolekcija | Kolekcijas |
|---|---|
| Kolekcija ir interfeiss. | Kolekcijas ir klase. |
| Tas nodrošina datu struktūras standarta funkcionalitāti. | Tā ir kolekcijas elementu kārtošana un sinhronizēšana. |
| Tas nodrošina metodes, kuras var izmantot datu struktūrai. | Tas nodrošina statiskas metodes, kuras var izmantot dažādām darbībām. |
142. Atšķiriet Array un ArrayList Java.
| Masīvs | ArrayList |
|---|---|
| Viendimensijas vai daudzdimensiju | Viendimensijas |
| Katram iterācijai izmantotajam un katram | Šeit iterators tiek izmantots, lai šķērsotu riverArrayList |
| garums atslēgvārds atgriež masīva lielumu. | size() metode tiek izmantota, lai aprēķinātu ArrayList lielumu. |
| Masīvam ir fiksēts izmērs. | ArrayList lielums ir dinamisks, un vajadzības gadījumā to var palielināt vai samazināt. |
| Tas ir ātrāks, kā iepriekš redzams fiksēta izmēra | Tas ir salīdzinoši lēnāks tā dinamiskā rakstura dēļ |
| Primitīvos datu tipus var glabāt tieši maz ticamos objektos. | Primitīvie datu tipi netiek tieši pievienoti maz ticamiem masīviem, tie tiek pievienoti netieši, izmantojot autoboxing un unboxing |
| Šeit tos nevar pievienot, tāpēc tips atrodas nedrošajā. | Tos var pievienot šeit, tādējādi padarot ArrayList tipa drošu. |
| Piešķiršanas operators kalpo tikai mērķim | Šeit tiek izmantota īpaša metode, kas pazīstama kā add() metode |
143. Kāda ir atšķirība starp masīvu un kolekciju Java?
| Masīvs | Kolekcijas |
|---|---|
| Java masīvam ir fiksēts izmērs. | Java kolekcijām ir dinamiski izmēri. |
| Masīvā elementi tiek glabāti blakus esošās atmiņas vietās. | Kolekcijās Elementi ne vienmēr tiek saglabāti blakus esošās atmiņas vietās. |
| Objektus un primitīvos datu tipus var glabāt masīvā. | Mēs varam glabāt tikai objektus kolekcijās. |
| Lai mainītu masīva izmērus, ir nepieciešamas manuālas manipulācijas. | Izmēru maiņa kolekcijās tiek veikta automātiski. |
| Masīvam ir pamata manipulācijas metodes. | Kolekcijās ir uzlabotas manipulācijas un iterācijas metodes. |
| Masīvs ir pieejams kopš Java sākuma. | Kolekcijas tika ieviestas Java 1.2 versijā. |
144. Atšķirība starp ArrayList un LinkedList.
| ArrayList | LinkedList |
|---|---|
| ArrayList tiek ieviests kā paplašināms masīvs. | LinkedList tiek ieviests kā divkārši saistīts saraksts. |
| Programmā ArrayList elementi tiek glabāti blakus esošās atmiņas vietās | LinkedList elementi tiek glabāti blakus esošās atmiņas vietās, jo katram elementam ir atsauce uz nākamo un iepriekšējo elementu. |
| ArrayLists ir ātrāks nejaušai piekļuvei. | LinkedLists ir ātrāks ievietošanas un dzēšanas darbībām |
| ArrayLists ir efektīvāki atmiņu. | LinkedList ir mazāk efektīva atmiņai |
| ArrayLists Izmantojiet vairāk atmiņas, jo tiek saglabāts masīva lielums. | LinkedList Izmanto mazāk atmiņas, jo tajā ir tikai atsauces uz elementiem |
| ArrayList meklēšanas darbība ir ātrāka. | LinkedList meklēšanas darbība ir lēnāka |
145. Atšķiriet ArrayList un Vector Java.
| ArrayList | Vektors |
|---|---|
| ArrayLists tiek īstenoti kā paplašināms masīvs. | Vektors tiek ieviests kā audzējams masīvs. |
| ArrayList nav sinhronizēts. | Vektors ir sinhronizēts. |
| ArrayLists ir ātrāki operācijām, kas nav vienlaicīgas. | Vektors ir lēnāks operācijām, kas nav vienlaicīgas, jo ir pievienota sinhronizācija. |
| ArrayLists tika ieviesti Java 1.2. | Vektors tika ieviests JDK 1.0. |
| Ieteicams lietošanai vidē ar vienu vītni. | Vektori ir ieteicami lietošanai daudzpavedienu vidē. |
| ArrayLists noklusējuma sākotnējā ietilpība ir 10. | Programmā Vectors noklusējuma sākotnējā ietilpība ir 10, bet noklusējuma palielinājums ir divreiz lielāks. |
| ArrayList veiktspēja ir augsta. | Vektora veiktspēja ir zema. |
146. Kāda ir atšķirība starp Iterator un ListIterator?
| Iterators | ListIterator |
|---|---|
| Var šķērsot kolekcijā esošos elementus tikai virzienā uz priekšu. | Var šķērsot kolekcijā esošos elementus gan uz priekšu, gan atpakaļ. |
| Izmanto, lai šķērsotu karti, sarakstu un kopu. | Var šķērsot tikai sarakstu, nevis pārējos divus. |
| Indeksus nevar iegūt, izmantojot Iteratoru | Tam ir tādas metodes kā nextIndex() un previousIndex(), lai jebkurā laikā, šķērsojot sarakstu, iegūtu elementu indeksus. |
| Nevar mainīt vai aizstāt kolekcijā esošos elementus | Var modificēt vai aizstāt elementus, izmantojot komplektu (E e) |
| Nevar pievienot elementus, un tiek parādīts arī ConcurrentModificationException. | Jebkurā laikā var viegli pievienot kolekcijai elementus. |
| Dažas Iterator metodes ir next(), remove() un hasNext(). | Dažas ListIterator metodes ir next(), previous(), hasNext(), hasPrevious(), add(E e). |
147. Atšķiriet HashMap un HashTable.
| HashMap | HashTable |
|---|---|
| HashMap nav sinhronizēta | HashTable ir sinhronizēta |
| Viena atslēga var būt NULL vērtība | NULL vērtības nav atļautas |
| Iterators tiek izmantots, lai šķērsotu HashMap. | Var izmantot gan Iterator, gan Enumertar |
| HashMap ir ātrāks. | HashTable ir lēnāks, salīdzinot ar HashMap. |
148. Kāda ir atšķirība starp iteratoru un uzskaitījumu?
| Iterators | Uzskaitījums |
|---|---|
| Iterators var šķērsot gan mantotos, gan nemantotos elementus. | Uzskaitīšana var šķērsot tikai mantotos elementus. |
| Iterators ir ātrs. | Uzskaitīšana nav ātra. |
| Iteratori ir lēnāki. | Uzskaitīšana notiek ātrāk. |
| Iterators var veikt noņemšanas darbību, šķērsojot kolekciju. | Uzskaitījums kolekcijā var veikt tikai traversa darbības. |
149. Kāda ir atšķirība starp salīdzināmo un salīdzināmo?
| Salīdzināms | Salīdzinātājs |
|---|---|
| Interfeiss ir pieejams java.lang pakotnē. | Interfeiss ir pieejams java.util pakotnē. |
| Nodrošina salīdzināšanas metodi elementu kārtošanai. | Nodrošina salīdzināšanas () metodi elementu kārtošanai. |
| Tas nodrošina atsevišķas šķirošanas secības. | Tas nodrošina vairākas šķirošanas secības. |
| Šķirošanas loģikai jāatrodas tajā pašā klasē, kuras objektu plānojat kārtot. | Šķirošanas loģikai jābūt atsevišķā klasē, lai rakstītu dažādu šķirošanu, pamatojoties uz dažādiem objektu atribūtiem. |
| Metode sakārto datus atbilstoši noteiktai šķirošanas secībai. | Metode sakārto datus atbilstoši pielāgotajai šķirošanas secībai. |
| Tas ietekmē sākotnējo klasi. | Tas neietekmē sākotnējo klasi. |
| API bieži tiek ieviests pēc kalendāra, iesaiņojuma klasēm, datuma un virknes. | Tas ir ieviests, lai kārtotu trešo pušu klašu gadījumus. |
150. Kāda ir atšķirība starp Iestatīt un Karte?
| Iestatīt | Karte |
|---|---|
| Set interfeiss ir ieviests, izmantojot java.util pakotni. | Karte ir ieviesta, izmantojot java.util pakotni. |
| Tas var paplašināt kolekcijas saskarni. | Tas nepaplašina kolekcijas saskarni. |
| Tas nepieļauj vērtību dublikātus. | Tas ļauj dublēt vērtības. |
| Kopa var kārtot tikai vienu nulles vērtību. | Karte var kārtot vairākas nulles vērtības. |
Java Intermediate Intervija Jautājumi
151. Izskaidrojiet FailFast iteratoru un FailSafe iteratoru kopā ar piemēriem katram.
FailFast iterators ir iterators, kas izmet a ConcurrentModificationException ja tā konstatē, ka pamatā esošā kolekcija ir modificēta, kamēr tiek izmantots iterators. Šī ir noklusējuma iteratoru darbība Java kolekciju sistēmā. Piemēram, HashMap iterators ir FailFast.
Piemērs:
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); } } } } Izvade:
Exception in thread 'main' java.util.ConcurrentModificationException
FailSafe iterators neizmet a ConcurrentModificationException ja pamatā esošā kolekcija tiek modificēta, kamēr tiek izmantots iterators. Alternatīvi, tas izveido kolekcijas momentuzņēmumu laikā, kad tiek izveidots iterators, un atkārto momentuzņēmumu. Piemēram, ConcurrentHashMap iterators ir FailSafe.
Piemērs:
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 ir izņēmumu apstrāde?
An Izņēmums ir notikums, kas pārtrauc parasto programmas plūsmu un prasa īpašu apstrādi. Programmas izpildes laikā kļūdas un neplānotas situācijas var novērst, izmantojot Java izņēmumu apstrādes mehānismu. Tālāk ir norādīti daži iemesli, kāpēc Java rodas izņēmumiem.
- Ierīces kļūme
- Tīkla savienojuma zudums
- Koda kļūdas
- Nepieejama faila atvēršana
- Nederīga lietotāja ievade
- Fiziskie ierobežojumi (nepietiek diska atmiņas)
153. Cik izņēmumu veidu var būt Java programmā?
Java parasti ir divu veidu izņēmumi:
- Iebūvētie izņēmumi: Java iebūvētos izņēmumus nodrošina Java bibliotēkas. Šos izņēmumus var iedalīt divās apakškategorijās, t.i., atzīmētajos un neatzīmētajos izņēmumos. Tālāk ir norādīti daži Java iebūvētie izņēmumi:
- ArrayIndexOutOfBoundsIzņēmumi
- ClassNotFoundException
- FileNotFoundException
- IOIzņēmums
- NullPointerException
- Aritmētiskais izņēmums
- PārtrauktsIzņēmums
- RuntimeException
- Lietotāja noteikti izņēmumi: Lietotāja definētos izņēmumus definē paši programmētāji, lai risinātu dažas īpašas situācijas vai kļūdas, uz kurām neattiecas iebūvētie izņēmumi. Lai definētu lietotāja definētus izņēmumus, ir jādefinē jauna klase, kas paplašina atbilstošo izņēmumu klasi. Ja Java ir iebūvēti izņēmumi, tiek izmantoti lietotāja definēti izņēmumi.
154. Atšķirība starp kļūdu un izņēmumu.
| Kļūdas | Izņēmumi |
|---|---|
| Atkopšana no kļūdām nav iespējama. | Atgūstiet no izņēmumiem, izmantojot “try-catch” bloku vai atdodot izņēmumus zvanītājam. |
| Kļūdas Java ir neatzīmētas. | Tas ietver gan pārbaudītos, gan neatzīmētos veidus. |
| Kļūdas galvenokārt izraisa vide, kurā programma darbojas. | Programma lielākoties ir atbildīga par izņēmumu izraisīšanu. |
| Kļūdas var rasties gan kompilēšanas laikā, gan izpildes laikā. Kompilēšanas laiks: sintakses kļūda, izpildes laiks: loģiska kļūda. | Visi izņēmumi notiek izpildlaikā, bet pārbaudītie izņēmumi ir zināmi kompilatoram, bet neatzīmētie nav zināmi. |
| Tie ir definēti pakotnē java.lang.Error. | Tie ir definēti pakotnē java.lang.Exception |
| Piemēri : java.lang.StackOverflowError, java.lang.OutOfMemoryError | Piemēri : Atzīmētie izņēmumi: SQLException, IOException Neatzīmētie izņēmumi: ArrayIndexOutOfBoundException, NullPointerException, ArithmeticException. |
155. Izskaidrojiet Java Exception klašu hierarhiju.
Visi Java izņēmumu un kļūdu veidi ir izmetamās klases apakšklases, kas ir hierarhijas pamatklase. Pēc tam šī klase tiek izmantota ārkārtējiem apstākļiem, kas lietotāja programmām ir jānoķer. NullPointerException ir šāda izņēmuma piemērs. Vēl vienu atzaru, kļūdu izmanto Java izpildlaika sistēma, lai norādītu uz kļūdām, kas saistītas ar JRE. StackOverflowError ir vienas šādas kļūdas piemērs.
156. Izskaidrojiet izpildlaika izņēmumus.
Izpildlaika izņēmumi ir izņēmumi, kas rodas koda izpildes laikā, pretstatā kompilēšanas laika izņēmumiem, kas rodas kompilēšanas laikā. Izpildlaika izņēmumi ir neatzīmēti izņēmumi, jo JVM tos neņem vērā.
Java izpildlaika izņēmumu piemēri:
- NullPointerException: tas notiek, kad lietojumprogramma mēģina izmantot nulles objekta atsauci.
- ArrayIndexOutOfBoundsException: tas notiek, kad lietojumprogramma mēģina piekļūt masīva indeksam, kas ir ārpus robežām.
- Aritmētiskais izņēmums: tas notiek, kad lietojumprogramma mēģina dalīt ar nulli.
- IllegalArgumentException: tas notiek, ja metode tiek nodota nelikumīgam vai nepiemērotam argumentam.
Atšķirībā no pārbaudītajiem izņēmumiem izpildlaika izņēmumiem nav nepieciešama deklarācija metienu klauzulā vai uztveršana try-catch blokā. Tomēr ir ieteicams rīkoties ar izpildlaika izņēmumiem, lai nodrošinātu nozīmīgus kļūdu ziņojumus un novērstu sistēmas avāriju. Tā kā izpildlaika izņēmumi sniedz precīzāku informāciju par problēmu nekā pārbaudītie izņēmumi, tie ļauj izstrādātājiem vieglāk un ātrāk noteikt un labot programmēšanas kļūdas.
157. Kas ir NullPointerException?
Tas ir izpildlaika izņēmuma veids, kas tiek izmests, kad programma mēģina izmantot objekta atsauci, kurai ir nulles vērtība. NullPointerException galvenais lietojums ir norādīt, ka atsauces mainīgajam netiek piešķirta vērtība, kā arī to izmanto datu struktūru, piemēram, saistīto sarakstu un koku, ieviešanai.
158. Kad tiek izmests ArrayStoreException?
ArrayStoreException tiek izmests, ja objektu masīvā tiek mēģināts saglabāt nepareiza veida objektu.
Piemērs:
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); } } Piemērs:
Exception in thread 'main' java.lang.ArrayStoreException: java.lang.Integer at GFG.main(GFG.java:6)
159. Kāda ir atšķirība starp pārbaudīto izņēmumu un neatzīmēto izņēmumu?
Pārbaudīts izņēmums:
Pārbaudītie izņēmumi ir izņēmumi, kas tiek pārbaudīti programmas kompilēšanas laikā. Ja programmā kāds kods metodes ietvaros izmet pārbaudītu izņēmumu, tad metodei ir jāapstrādā izņēmums vai jānorāda izņēmums, izmantojot atslēgvārdu throws.
Pārbaudītie izņēmumi ir divu veidu:
- Pilnībā pārbaudīti izņēmumi: tiek pārbaudītas arī visas tās pakārtotās klases, piemēram, IOException un InterruptedException.
- Daļēji pārbaudīti izņēmumi: dažas tās pakārtotās klases nav atzīmētas, piemēram, izņēmums.
Neatzīmēts izņēmums:
Neatzīmēti ir izņēmumi, kas netiek pārbaudīti programmas kompilēšanas laikā. Izņēmumi zem Error un RuntimeException klasēm ir neatzīmēti izņēmumi, viss pārējais zem throwable ir atzīmēts.
160. Kāda ir kļūdu un izņēmumu bāzes klase?
Kļūda ir lietotāja veikta nelikumīga darbība, kas izraisa novirzes programmā. Izņēmumi ir neparedzēti notikumi vai apstākļi, kas rodas programmas darbības laikā, izņēmums traucē normālu programmas norādījumu plūsmu.
Gan kļūdām, gan izņēmumiem ir kopīga vecāku klase, kas ir java.lang.Throwable.
161. Vai ir nepieciešams, lai katram try blokam būtu jāseko noķeršanas blokam?
Nē, Java nav nepieciešams izmantot noķeršanas bloku pēc try block, jo mēs varam izveidot citu kombināciju ar beigu bloku. Visbeidzot ir bloks, kas darbojas, neskatoties uz to, ka izņēmums tiek izmests vai nē.
162. Kas ir izņēmuma izplatīšana?
Izņēmuma izplatīšana ir process, kurā izņēmums tiek nomests no skursteņa augšdaļas uz leju. Ja vienreiz tas netiek notverts, izņēmums atkal tiek izmantots iepriekšējā metodē un tā tālāk, līdz tas tiek noķerts vai sasniedz zvanu steka apakšējo daļu.
163. Kas notiks, ja ieliksit System.exit(0) try or catch blokā? Vai beidzot bloķēs izpildi?
System.exit(int) ir iespēja mest SecurityException. Tātad, ja drošības gadījumā tiek izmests izņēmums, tad beidzot tiks izpildīts bloks, pretējā gadījumā JVM tiks aizvērts, zvanot sistēmai. exit(0), kura dēļ bloks beidzot netiks izpildīts.
164. Ko jūs saprotat ar objektu klonēšanu un kā jūs to panākat Java?
Tas ir jebkura objekta precīzas kopijas izveides process. Lai to atbalstītu, java klasei ir jāievieš java.lang pakotnes Cloneable interfeiss un jāignorē klona() metode, ko nodrošina objektu klase, kuras sintakse ir:
Protected Object clone() met CloneNotSupportedException{ return (Object)super.clone();}Ja Cloneable interfeiss nav ieviests un tiek ignorēta tikai metode, Java programmā CloneNotSupportedException.
165. Kā izņēmumi ietekmē programmu, ja tā tos neapstrādā?
Izņēmumi ir atbildīgi par pēkšņu programmas darbības pārtraukšanu izpildes laikā, un kods, kas rakstīts pēc izņēmuma, netiek izpildīts.
166. Kāds ir gala atslēgvārda lietojums?
Pēdējais atslēgvārds tiek izmantots, lai padarītu funkcijas nevirtuālas. Pēc noklusējuma visas funkcijas ir virtuālas, tāpēc, lai padarītu to nevirtuālu, mēs izmantojam pēdējo atslēgvārdu.
167. Kādam mērķim ir atslēgvārdi final, final un finalize?
i). fināls:
gala ir atslēgvārds, kas tiek izmantots ar mainīgo, metodi vai klasi, lai tos nevarētu ignorēt.
Piemērs:
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; } } Izvade:
./GFG.java:6: error: cannot assign a value to final variable x x=50; ^ 1 error
ii). beidzot
visbeidzot ir koda bloks, ko izmanto ar try-catch izņēmumu apstrādē. Beidzot blokā ierakstītais kods tiek izpildīts, neskatoties uz to, ka izņēmums tiek izmests vai nē.
Piemērs:
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'); } } } Izvade
Try block Always runs even without exceptions
iii). pabeigt
Tā ir metode, kas tiek izsaukta tieši pirms to objektu dzēšanas/iznīcināšanas, kuri ir piemēroti atkritumu savākšanai, lai veiktu tīrīšanas darbību.
Piemērs:
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'); } } Izvade
Main function running
168. Kāda ir atšķirība starp this() un super() Java?
| šis ( ) | super( ) |
|---|---|
| Tas apzīmē pašreizējo klases gadījumu. | Tas attēlo vecākklases pašreizējo gadījumu. |
| Izsauc tās pašas klases noklusējuma konstruktoru. | Izsauc bāzes klases noklusējuma konstruktoru. |
| Piekļūstiet tās pašas klases metodēm. | Piekļūstiet vecākklases metodēm. |
| Norāda pašreizējo klases gadījumu. | Norāda uz superklases gadījumu. |
169. Kas ir daudzuzdevumu veikšana?
Java vairākuzdevumu veikšana attiecas uz programmas spēju vienlaikus veikt vairākus uzdevumus. To var paveikt pavedieni, kas ir ātras darbības, kas ietvertas vienā programmā. Daudzu lietu izpilde vienlaikus ir pazīstama kā daudzuzdevumu veikšana.
Piemērs:
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. Ko jūs domājat ar daudzpavedienu programmu?
Java vairākpavedienu programmās ir pavedieni, kas darbojas vienlaikus, nevis secīgi. Dators var efektīvāk izmantot savus resursus, vienlaikus apvienojot vairākus uzdevumus. Jebkura programma ar multithreading ļauj vairākiem lietotājiem vienlaikus izmantot programmu, nepalaižot vairākas kopijas. Daudzpavedienu programma ir paredzēta vairāku procesu vienlaicīgai palaišanai, kas var uzlabot programmas veiktspēju un ļauj programmai izmantot vairākus procesorus un uzlabo kopējo caurlaidspēju.
171. Kādas ir daudzpavedienu priekšrocības?
Daudzpavedienu izmantošanai ir vairākas priekšrocības, kas ir šādas:
- Atsaucība: lietotāju atsaucība palielinās, jo daudzpavedienu interaktīvā lietojumprogramma ļauj palaist kodu pat tad, ja sadaļa ir bloķēta vai tiek izpildīts ilgstošs process.
- Resursu koplietošana: process var veikt ziņojumu pārsūtīšanu un koplietoto atmiņu daudzpavedienu dēļ.
- Ekonomika: mēs varam koplietot atmiņu, tāpēc procesi ir ekonomiski.
- Mērogojamība: daudzpavedienu izmantošana vairākās CPU mašīnās palielina paralēlismu.
- Labāka komunikācija: pavedienu sinhronizācijas funkcijas uzlabo starpprocesu saziņu.
- Daudzprocesoru arhitektūras izmantošana
- Minimizēta sistēmas resursu izmantošana
172. Kādi ir divi veidi, kā var izveidot pavedienu?
Multithreading ir Java līdzeklis, kas ļauj vienlaikus izpildīt divas vai vairākas programmas daļas, lai maksimāli izmantotu centrālo procesoru. Kopumā pavedieni ir mazi, viegli procesi ar atsevišķiem izpildes ceļiem. Šie pavedieni izmanto koplietojamo atmiņu, taču tie darbojas neatkarīgi, tāpēc, ja kāds pavediens neizdodas, tas neietekmē citus pavedienus. Ir divi veidi, kā izveidot pavedienu:
- Paplašinot pavedienu klasi
- Ieviešot Runnable saskarni.
Paplašinot pavedienu klasi
Mēs izveidojam klasi, kas paplašina java.lang.Pavedienu klase . Šī klase ignorē klasē Thread pieejamo metodi run(). Pavediens sāk savu dzīvi, izmantojot run() metodi.
Sintakse:
public class MyThread extends Thread { public void run() { // thread code goes here } } Ieviešot Runnable saskarni
Mēs izveidojam jaunu klasi, kas ievieš java.lang.Runnable interfeiss un ignorēšanas palaišanas() metode. Pēc tam mēs izveidojam Thread objektu un šim objektam izsaucam start() metodi.
Sintakse:
public class MyRunnable implements Runnable { public void run() { // thread code goes here } } 173. Kas ir pavediens?
Java pavedieni ir viegls apakšprocess ar mazāko procesu vienību, un tiem ir arī atsevišķi izpildes ceļi. Šie pavedieni izmanto koplietoto atmiņu, taču tie darbojas neatkarīgi, tādēļ, ja pavedienos ir izņēmums, kas neietekmē citu pavedienu darbību, neskatoties uz to, ka tiem ir viena un tā pati atmiņa. Pavedumam ir savs programmu skaitītājs, izpildes steks un lokālie mainīgie, taču tam ir viena un tā pati atmiņas vieta ar citiem pavedieniem tajā pašā procesā. Java nodrošina iebūvētu atbalstu vairāku pavedienu veidošanai, izmantojot Darbināms interfeiss un Vītnes klase .
174. Atšķirt procesu un pavedienu?
Gan process, gan pavediens ir izpildes vienības datorsistēmā, taču tās atšķiras vairākos veidos:
| Process | Pavediens |
|---|---|
| Process ir programma, kas tiek izpildīta. | Pavediens ir viena instrukciju secība procesa ietvaros. |
| Procesa pabeigšana prasa vairāk laika. | Vītnes pārtraukšana prasa mazāk laika. |
| Process aizņem vairāk laika konteksta maiņai. | Pavediens aizņem mazāk laika konteksta pārslēgšanai. |
| Šis process ir mazāk efektīvs saziņas ziņā. | Pavediens ir efektīvāks komunikācijas ziņā. |
| Process ir izolēts. | Pavedieni koplieto atmiņu. |
| Procesam ir savs procesa vadības bloks, kaudze un adrešu telpa. | Pavedienam ir vecāku PCB, savs pavedienu vadības bloks, kā arī stack un kopējā adrešu telpa. |
| Process nedala datus savā starpā. | Pavedieni koplieto datus savā starpā. |
175. Aprakstiet pavediena dzīves ciklu?
A pavediens Java jebkurā brīdī pastāv jebkurā no šiem stāvokļiem. Pavediens jebkurā brīdī atrodas tikai vienā no parādītajiem stāvokļiem:
- Jaunums: Pavediens ir izveidots, bet vēl nav sākts.
- Darbināms: Pavediens darbojas, izpilda savu uzdevumu vai ir gatavs palaišanai, ja nav citu augstākas prioritātes pavedienu.
- Bloķēts: Pavediens ir īslaicīgi apturēts, gaidot resursu vai notikumu.
- Gaida: Pavediens gaida, kad cits pavediens veiks uzdevumu vai paies noteikts laiks.
- Izbeigts: Pavediens ir pabeidzis savu uzdevumu vai to pārtraucis cits pavediens.
176. Izskaidrojiet suspend() metodi zem Thread klases.
Java klases Thread metode suspend() uz laiku aptur pavediena izpildi. Kad pavediens tiek apturēts, tas nonāk bloķētā stāvoklī, un operētājsistēma to neplāno, kas nozīmē, ka tā nevarēs izpildīt savu uzdevumu, kamēr tā netiks atsākta. Mūsdienu Java programmēšanas valodā ir drošākas un elastīgākas alternatīvas suspend() metodēm. Šī metode neatgriež nekādu vērtību.
Sintakse:
public final void suspend();
Piemērs:
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'); } } Izvade:
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. Izskaidrojiet galveno pavedienu sadaļā Thread class izpilde.
Java nodrošina iebūvētu atbalstu daudzpavedienu programmēšanai. Galvenais pavediens tiek uzskatīts par vecāku pavedienu visiem pārējiem pavedieniem, kas tiek izveidoti programmas izpildes laikā. Galvenais pavediens tiek automātiski izveidots, kad programma sāk darboties. Šis pavediens izpilda programmas galveno metodi. Tas ir atbildīgs par Java programmas galvenās loģikas izpildi, kā arī par lietotāja ievades darbību apstrādi. Galvenais pavediens kalpo kā pamatvītne, no kuras tiek iegūti visi pārējie bērnu pavedieni.
178. Kas ir dēmona pavediens?
Java dēmona pavediens ir zemas prioritātes pavediens, ko izmanto, lai veiktu fona darbības vai uzdevumus, kas tiek izmantoti nepārtrauktai izpildei. piemēram, atkritumu savākšana, signālu nosūtīšana, darbību uztvērēji utt. Java dēmonu pavedieniem ir zemāka prioritāte nekā lietotāju pavedieniem, kas nozīmē, ka tos var izpildīt tikai tad, ja nedarbojas neviens lietotāja pavediens. Java dēmonu pavedieni ir noderīgi līdzekļi, kas nepieciešami fona uzdevumiem, kuriem nav nepieciešama skaidra izslēgšana vai pabeigšana. Tas ļauj efektīvāk izmantot sistēmas resursus un tiek izmantots, lai vienkāršotu resursus un var vienkāršot ilgstošus uzdevumus.
179. Kādi ir veidi, kā pavediens var nonākt gaidīšanas stāvoklī?
Pavediens ir viegls process, kas vienā procesā darbojas vienlaikus ar otru pavedienu. Katrs pavediens var izpildīt atšķirīgu uzdevumu un koplietot resursus viena procesa ietvaros. Java pavediens var nonākt gaidīšanas stāvoklī dažādos veidos:
- Sleep() metode Izsaukums: miega režīms () metode tiek izmantota, lai uz noteiktu laiku apturētu pavediena izpildi. Kamēr pavediens ir apturēts, tas pāriet gaidīšanas stāvoklī.
- Gaidīšanas () metode: Šo metodi izmanto, lai gaidītu pavedienu, līdz otrs pavediens signalizē par pamodināšanu. Pavediens pāriet gaidīšanas stāvoklī, līdz tas saņem paziņojumu no cita pavediena.
- Pievienošanās() metode: Join() metodi var izmantot, lai gaidītu, līdz pavediens pabeigs izpildi. Izsaukšanas pavediens nonāk gaidīšanas stāvoklī, līdz mērķa pavediens ir pabeigts.
- Gaida I/O darbības: Ja pavediens gaida ievades/izvades darbības pabeigšanu, tas pāriet gaidīšanas stāvoklī, līdz darbība tiek pabeigta.
- Sinhronizācijas problēmas: Ja lietojumprogrammā ar vairākiem pavedieniem rodas sinhronizācijas problēmas, pavedieni var nonākt gaidīšanas stāvoklī, līdz tiek atrisinātas sinhronizācijas problēmas.
180. Kā datorā ar vienu centrālo procesoru notiek multi-threading?
Java izmanto paņēmienu, ko sauc par laika dalīšanu, ko parasti dēvē par laika sadalīšanu, lai datoros ar vienu centrālo procesoru ieviestu vairāku pavedienu izmantošanu. Paralēlās izpildes izskatu rada CPU pārslēgšanās starp aktīvajiem pavedieniem. Operētājsistēma ir atbildīga par CPU laika piešķiršanu katram pavedienam pēc kārtas un pavedienu plānošanu.
Lai pārtrauktu pavedienu mijiedarbību savā starpā un sacīkšu situāciju vai citu problēmu rašanos, Java piedāvā vairākus veidus, kā regulēt pavedienu darbību, tostarp sinhronizāciju un bloķēšanu. Ir iespējams izveidot daudzpavedienu programmētājus, kas pareizi un efektīvi darbojas iekārtā ar vienu centrālo procesoru, regulējot mijiedarbību starp pavedieniem un pārliecinoties, ka svarīgākās koda daļas tiek sinhronizētas. Atšķirībā no vienas un tās pašas programmas palaišanas datorā ar vairākiem CPU vai kodoliem, vairāku vītņu izmantošana vienā CPU var radīt tikai paralēlisma izskatu, un faktiskais veiktspējas pieaugums var būt neliels. Operētājsistēma sadala CPU laiku, kas ir pieejams, kad vienā CPU darbojas daudzi pavedieni, mazās laika daļās un piešķir katram pavedienam izpildāmu laika daļu. Operētājsistēmas ātra pārslēgšanās starp pavedieniem rada paralēlas izpildes izskatu. Šķiet, ka pārslēgšanās starp pavedieniem ir tūlītēja, jo laika šķēlumi bieži ir ļoti niecīgi, milisekundēs vai mikrosekundēs.
Java intervijas jautājumi pieredzējušiem
181. Kādi ir dažādi Java pavedienu prioritāšu veidi? Un kāda ir JVM piešķirtā pavediena noklusējuma prioritāte?
Pavedienu prioritātes ir jēdziens, kurā katram pavedienam ir prioritāte, un nespeciālistu valodā var teikt, ka šeit prioritāte ir katram objektam, ko attēlo skaitļi no 1 līdz 10. Tālāk ir minēti dažādi Java pavedienu rekvizītu veidi:
- MIN_PRIORITĀTE
- MAX_PRIORITĀTE
- NORM_PRIORITĀTE
Pēc noklusējuma pavedienam ir piešķirts NORM_PRIORITY.
182. Kāpēc Java ir nepieciešama atkritumu savākšana?
Javai atkritumu savākšana ir nepieciešama, lai izvairītos no atmiņas noplūdēm, kas var izraisīt programmas avāriju un kļūt nestabilas. Java nav iespējams izvairīties no atkritumu savākšanas. Atšķirībā no C++, Java atkritumu savākšana palīdz programmētājiem koncentrēties uz lietojumprogrammas izstrādi, nevis pārvaldīt atmiņas resursus un uztraukties par atmiņas noplūdi. Java virtuālā mašīna (JVM) automātiski pārvalda atmiņu periodiski, palaižot atkritumu savācēju, kas atbrīvo lietojumprogrammā neizmantoto atmiņu. Atkritumu savākšana padara Java atmiņu efektīvu, jo tā no kaudzes atmiņas noņem objektus, uz kuriem nav atsauces.
183. Kāds ir atkritumu savākšanas trūkums?
Papildus daudzām priekšrocībām, atkritumu savācējam ir daži zemāk minētie trūkumi:
- Galvenais atkritumu savākšanas trūkums ir tas, ka tā var izraisīt lietojumprogrammas izpildes pauzes, jo tā darbojas, lai notīrītu atmiņu, kas palēnina lietojumprogrammas veiktspēju.
- Atkritumu savākšanas process nav determinēts, tāpēc ir grūti paredzēt, kad notiek atkritumu savākšana, kas izraisa neparedzamu lietojumprogrammu darbību. Piemēram, ja mēs rakstām kādu programmu, programmētājiem ir grūti izlemt, vai problēmu izraisa atkritumu savākšana vai kādi citi programmas faktori.
- Atkritumu savākšana var arī palielināt atmiņas izmantošanu, ja programma izveido un izmet daudz īslaicīgu objektu.
184. Izskaidrojiet atšķirību starp mazo, lielo un pilno atkritumu savākšanu.
Java virtuālā mašīna (JVM) noņem objektus, kas vairs netiek izmantoti, izmantojot atkritumu savācēju, kas periodiski pārbauda un noņem šos objektus. JVM ir dažādi atkritumu savākšanas veidi, un katram no tiem ir atšķirīgas īpašības un ietekme uz veiktspēju. Galvenie atkritumu savākšanas veidi ir:
- Neliela atkritumu izvešana: Šis atkritumu savākšanas veids, kas pazīstams arī kā jaunās paaudzes atkritumu savākšana, tiek izmantots, lai savāktu un atgūtu atmiņu, ko izmanto īslaicīgi objekti (objekti, kas tiek ātri izveidoti un izmesti).
- Galvenā atkritumu savākšana: Šis atkritumu savākšanas veids, kas pazīstams arī kā vecās paaudzes atkritumu savākšana, tiek izmantots, lai savāktu un atgūtu atmiņu, ko izmanto ilgstoši objekti (objekti, kas pārdzīvo vairākas nelielas atkritumu savākšanas un tiek virzīti uz veco paaudzi).
- Pilna atkritumu izvešana: Pilnas atkritumu savākšanas laikā tiek savāktas un atgūtas atmiņas no visām paaudzēm, tostarp atmiņas par jauniem un veciem. Pilnīga atkritumu savākšana parasti aizņem ilgāku laiku nekā neliela vai liela atkritumu savākšana, kā rezultātā lietotne uz laiku tiek apturēta.
185. Kā jūs identificēsit lielākās un mazākās atkritumu kolekcijas Java?
Lieli atkritumu savākšanas darbi izdzīvotāju zonā un nelieli atkritumu savākšanas darbi Ēdenes telpā, lai veiktu iezīmēšanas un slaucīšanas darbību. Un mēs varam identificēt tos abus, pamatojoties uz izvadi, kurā neliela kolekcija drukā GC, turpretim galvenā kolekcija drukā Full GC gadījumā, ja atkritumu savākšanas reģistrēšana ir iespējota ar -XX:PrintGCDetails vai verbose:gc.
186. Kas ir atmiņas noplūde, un kā tā ietekmē atkritumu savākšanu?
Java programmā atmiņas noplūdes var izraisīt dažādi faktori, piemēram, resursu nepareiza aizvēršana, objektu atsauces turēšana ilgāk nekā nepieciešams vai nevajadzīga pārāk daudz objektu izveidošana. Ir situācijas, kad atkritumu savācējs nesavāc objektus, jo ir atsauce uz tiem objektiem. Šādās situācijās, kad lietojumprogramma izveido daudz objektu un neizmanto tos un katram objektam ir derīgas atsauces, Java atkritumu savācējs nevar iznīcināt objektus. Šos bezjēdzīgos objektus, kas programmai nesniedz nekādu vērtību, sauc par atmiņas noplūdēm. Atmiņas noplūde var negatīvi ietekmēt atkritumu savākšanu, neļaujot atkritumu savācējam atgūt neizmantoto atmiņu. Šāda rīcība novedīs pie lēnas veiktspējas vai dažkārt sistēmas kļūmes. Programmā ir svarīgi izvairīties no atmiņas noplūdēm, pareizi pārvaldot resursus un objektu atsauces.
Piemērs:
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'); } } Izvade:
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. Nosauciet dažas java.util.regex pakotnē esošās klases.
Java regulārās izteiksmes jeb Regex ir API, ko izmanto Java virkņu meklēšanai un manipulācijām ar tām. Tas rada virkņu modeļus, kas var iegūt nepieciešamos datus no virknēm vai var vispārināt modeli.
Vietnē java.util.regex ir 3 tālāk minētās klases:
- Rakstu klase: var definēt modeļus
- Atbilstības klase: var veikt teksta saskaņošanas darbības, izmantojot modeļus
- PatternSyntaxException klase: var norādīt uz sintakses kļūdu regulārās izteiksmes modelī.
Papildus 3 klašu pakotnei ir arī viena saskarne MatchResult Interface, ko var izmantot, lai attēlotu atbilstības operācijas rezultātu.
188. Uzrakstiet regulāro izteiksmi, lai apstiprinātu paroli. Parolei jāsākas ar alfabētu un pēc tam jāraksta burtciparu rakstzīmes; Tās garumam jābūt no 8 līdz 20.
regex = ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&-+=()])(?=S+$).{8, 20}$ Paskaidrojums:
- ^ izmanto virknes sākuma rakstzīmei.
- (?=.*[0-9]), ko izmanto ciparam, ir jāatkārto vismaz vienu reizi.
- (?=.*[a-z]), ko izmanto mazajiem burtiem, ir jāatkārto vismaz vienu reizi.
- (?=.*[A-Z]), ko izmanto lielo burtu alfabētam, kam apakšvirknē ir jāatrodas vismaz vienu reizi.
- (?=.*[@#$%^&-+=()], ko izmanto speciālajai rakstzīmei, kurai ir jāatkārtojas vismaz vienu reizi.
- (?=S+$) atstarpes nav atļautas visā virknē.
- .{8, 20} izmanto vismaz 8 rakstzīmes un ne vairāk kā 20 rakstzīmes.
- $, ko izmanto virknes beigām.
189. Kas ir JDBC?
JDBC standarta API tiek izmantots, lai saistītu Java lietojumprogrammas un relāciju datu bāzes. Tas nodrošina klašu un saskarņu kolekciju, kas ļauj programmētājiem izmantot Java programmēšanas valodu, lai sazinātos ar datu bāzi. JDBC klases un saskarne ļauj lietojumprogrammai nosūtīt lietotāju veiktos pieprasījumus uz norādīto datu bāzi. Parasti ir četri JDBC komponenti, ar kuriem tas mijiedarbojas ar datu bāzi:
- JDBC API
- JDBC draivera vadītājs
- JDBC testa komplekts
- JDBC-ODBC tilta draiveri
190. Kas ir JDBC draiveris?
JDBC draiveris ir programmatūras komponents, ko izmanto, lai Java lietojumprogramma varētu mijiedarboties ar datu bāzi. JDBC nodrošina JDBC API ieviešanu konkrētai datu bāzes pārvaldības sistēmai, kas ļauj tai savienot datu bāzi, izpildīt SQL paziņojumus un izgūt datus. Ir četri JDBC draiveru veidi:
- JDBC-ODBC tilta draiveris
- Native-API draiveris
- Tīkla protokola draiveris
- Plāns vadītājs
191. Kādas darbības jāveic, lai izveidotu savienojumu ar datubāzi Java?
Ir noteiktas darbības, lai savienotu datubāzi un Java programmu, kā minēts tālāk:
- Importējiet pakotnes
- Ielādējiet draiverus, izmantojot metodi forName().
- Reģistrējiet draiverus, izmantojot DriverManager
- Izveidojiet savienojumu, izmantojot objektu Connection class
- Izveidojiet paziņojumu
- Izpildiet vaicājumu
- Aizveriet savienojumus
192. Kas ir JDBC API komponenti?
JDBC API komponenti nodrošina dažādas metodes un saskarnes ērtai saziņai ar datu bāzēm, kā arī nodrošina tādas pakotnes kā java Se un java EE, kas nodrošina iespēju rakstīt vienreiz palaist jebkur (WORA).
Sintakse:
java.sql.*;
193. Kas ir JDBC savienojuma interfeiss?
Java datu bāzes savienojamības saskarne (JDBC) ir programmatūras komponents, kas ļauj Java lietojumprogrammām mijiedarboties ar datu bāzēm. Lai uzlabotu savienojumu, JDBC katrai datubāzei ir nepieciešami draiveri.
194. Ko nodrošina JDBC ResultSet saskarne?
JDBC ResultSet saskarne tiek izmantota, lai saglabātu datus no datu bāzes un izmantotu tos mūsu Java programmā. Mēs varam arī izmantot ResultSet, lai atjauninātu datus, izmantojot updateXXX() metodes. ResultSet objekts norāda kursoru pirms rezultātu datu pirmās rindas. Izmantojot nākamo () metodi, mēs varam atkārtot, izmantojot ResultSet.
195. Kas ir JDBC Rowset?
JDBC rindu kopa nodrošina veidu, kā saglabāt datus tabulas veidā. RowSet ir java saskarne, ko var izmantot java.sql pakotnē. Savienojums starp RowSet objektu un datu avotu tiek uzturēts visā tā dzīves ciklā. RowSets ir iedalītas piecās kategorijās, pamatojoties uz tālāk minēto ieviešanu.
- JdbcRowSet
- CachedRowSet
- WebRowSet
- FilteredRowSet
- JoinRowSet
196. Kāda ir JDBC DriverManager klases loma?
JDBC DriverManager klase darbojas kā interfeiss lietotājiem un draiveriem. To izmanto daudzos veidos, kā minēts tālāk:
- To izmanto, lai izveidotu savienojumu starp Java lietojumprogrammu un datu bāzi.
- Palīdz sekot līdzi pieejamajiem draiveriem.
- Tas var palīdzēt izveidot savienojumu starp datu bāzi un atbilstošajiem draiveriem.
- Tajā ir visas metodes, kas var reģistrēt un dereģistrēt datu bāzes draiveru klases.
- DriverManager.register Driver() metode var uzturēt to draiveru klašu sarakstu, kuras ir reģistrējušās pašas.
Java atšķirību intervijas jautājumi
197. Atšķiriet Iterable un Iterator.
| Atkārtojams | Iterators |
|---|---|
| Iterable nodrošina veidu, kā atkārtot elementu secību. | Iterators palīdz secīgi atkārtot elementu kolekciju. |
| iterators () metode atgriež iteratoru. | hasNext() un Nākamais() metodes ir nepieciešamas. |
| noņemt () metode nav obligāta. | noņemt () metode ir nepieciešama iteratorā. |
| Piemēri ir Saraksts, rinda un iestatījums. | Piemēri ir ListIterator, Enumeration un ArrayIterator. |
198. Atšķiriet sarakstu un kopu.
| Saraksts | Iestatīt |
|---|---|
| Pasūtīts | Nesakārtots |
| Saraksts pieļauj dublikātus. | Iestatījums neļauj dublēt vērtības. |
| Sarakstam var piekļūt, izmantojot indeksu. | Komplektam var piekļūt, izmantojot hashcode. |
| Var saglabāt vairākus nulles elementus. | Null elementu var saglabāt tikai vienu reizi. |
| Piemēri ir ArrayList, LinkedList utt. | Piemēri ir HashSet un TreeSet. LinkedHashSet utt. |
199. Atšķiriet sarakstu un karti.
| Saraksts | Karte |
|---|---|
| Saraksta interfeiss ļauj dublēt elementus. | Karte neatļauj dublēt elementus. |
| Sarakstā tiek saglabāta ievietošanas secība. | Karte neuztur ievietošanas secību. |
| Var saglabāt vairākus nulles elementus. | Karte pieļauj ne vairāk kā vienu nulles atslēgu un jebkuru nulles vērtību skaitu. |
| Sarakstā ir sniegta metode get(), lai iegūtu elementu noteiktā indeksā. | Karte nenodrošina iegūšanas metodi, lai iegūtu elementus noteiktā rādītājā. |
| Sarakstu īsteno ArrayList utt. | Karti ievieš HashMap, TreeMap, LinkedHashMap |
200. Atšķiriet rindas un kaudzes.
| Rinda | Kaudze |
|---|---|
| Rindas datu struktūra tiek izmantota elementu glabāšanai un tiek izmantota, lai veiktu tādas darbības kā rinda, rindas aizmugure vai rindas beigas. | Stack datu struktūra tiek izmantota elementu glabāšanai un tiek izmantota, lai veiktu tādas darbības kā push, pop no steka augšdaļas. |
| Rindas datu struktūra Realizē FIFO pasūtījumu. | Stack datu struktūra Realizē LIFO pasūtījumu. |
| Ievietošana un dzēšana rindās notiek no saraksta pretējiem galiem. Dzēšana notiek no saraksta priekšpuses un ievietošana notiek saraksta aizmugurē. | Ievietošana un dzēšana kaudzēs notiek tikai no viena saraksta gala, ko sauc par augšējo. |
| Ievietošanas darbību sauc par rindas darbību. | Ievietošanas darbību sauc par push darbību. |
| Rinda parasti tiek izmantota, lai atrisinātu problēmas, kas saistītas ar secīgu apstrādi. | Stack parasti tiek izmantots, lai atrisinātu problēmas, kas saistītas ar rekursiju. |
201. Atšķiriet PriorityQueue un TreeSet.
| Prioritātes rinda | TreeSet |
|---|---|
| Tā izmanto rindas kā pamatā esošo datu struktūru. | Tas izmanto kopu kā pamatā esošo datu struktūru. |
| Šī datu struktūra pieļauj elementu dublikātus | Šī datu struktūra nepieļauj elementu dublikātus |
| Priority Queue tiek ieviesta ar PriorityQueue klasi. | TreeSet ir ieviesusi TreeSet klase. |
| PriorityQueue ir pieejams JDK 1.5 versijā. | TreeSet ir pieejams JDK 1.4 versijā. |
| PriorityQueue pq = new PriorityQueue(); | reeSet ts = new TreeSet(); |
202. Atšķiriet atsevišķi saistīto sarakstu un divkārši saistīto sarakstu.
| Atsevišķi saistītais saraksts | Divkārši saistīts saraksts |
|---|---|
| Atsevišķi saistītajā sarakstā ir tikai divi segmenti, t.i., dati un saite. | Divkārši saistītais saraksts satur trīs segmentus, t.i., datus un divus rādītājus. |
| Ceļošana atsevišķi saistītā sarakstā ir iespējama tikai virzienā uz priekšu. | Pārvietošanās divkāršā sarakstā ir iespējama tikai abos virzienos uz priekšu un atpakaļ. |
| Tas izmanto mazāk atmiņas, jo katram mezglam ir tikai viens rādītājs. | Tam nepieciešams vairāk atmiņas nekā atsevišķi saistītam sarakstam, jo katram mezglam ir divas norādes. |
| Viegli lietojams un ievietojiet mezglus saraksta sākumā. | Nedaudz sarežģītāks lietošanā un viegli ievietojams saraksta beigās. |
| Ievietošanas un dzēšanas laika sarežģītība ir O (n). | Ievietošanas un dzēšanas laika sarežģītība ir O (1). |
| | |
203. Atšķiriet Failfast un Failsafe.
| FailFast | Bezatteices |
|---|---|
| Failsfast neizdodas nekavējoties, kad iterācijas laikā konstatē vienlaicīgu modifikāciju. | Failsafe turpina atkārtot oriģinālo kolekciju un arī izveido kopiju, ko mainīt. |
| Failfast parasti izmanto viena vītnes vidēs. | Failsafe tiek izmantots daudzpavedienu vidēs. |
| Failfast neatļauj nekādas izmaiņas iterācijas laikā. | Failsafe ļauj veikt izmaiņas iterācijas laikā. |
| Failfast ir ātrs, salīdzinot ar bezatteices, jo tas nav saistīts ar kolekcijas kopēšanu. | Failsafe parasti ir lēns, salīdzinot ar failfast. |
| FailFast metieni ConcurrentModificationException ja kolekcija tiek modificēta iterācijas laikā. | FailSafe neizdod nekādus izņēmumus, bet tā vietā izveido kolekcijas kopiju, ko atkārtot. |
204. Atšķiriet HashMap un TreeMap.
| HashMap | TreeMap |
|---|---|
| Hasmap izmanto hashtable, lai saglabātu atslēgu un vērtību pārus. | Treemap izmanto sarkanmelnus kokus, lai saglabātu atslēgu un vērtību pāri. |
| Hashmap neuztur nekādu īpašu secību atslēgu un vērtību pāriem. | Treemap saglabā dabisku secību, pamatojoties uz atslēgām. |
| Hashmapā iterācijas secība netiek garantēta. | Iterācija ir sakārtota pēc atslēgām. |
| Hashmaps ir ātrāk izguvei, salīdzinot ar Treemap. | Izguve programmā Treemap ir lēnāka, jo tā izmanto koku šķērsošanu, lai atrastu atslēgas. |
| Hashmap tiek ieviests, izmantojot saistīto sarakstu masīvu. | TreeMap tiek ieviests, izmantojot sarkanmelnu koku. |
| Hashmap izmanto Object klases metodi equals(), lai salīdzinātu atslēgas. | TreeMap atslēgu salīdzināšanai izmanto metodi salīdzinātTo(). |
205. Atšķiriet Queue un Deque.
| Rinda | Par ko |
|---|---|
| Rinda ir lineāra datu struktūra, ko izmanto elementu kolekcijas glabāšanai. | Deque, kas pazīstama arī kā dubultā rinda, ir arī lineāra datu struktūra, kurā tiek glabāta elementu kolekcija ar darbībām, kas jānoņem un jāpievieno no abiem galiem. |
| Elementus rindā var ievietot tikai datu struktūras beigās. | Elementus var ievietot no abiem datu struktūras galiem. |
| Rinda var tikt ieviesta, izmantojot masīvu vai saistīto sarakstu. | Rindas noņemšanu var ieviest, izmantojot apļveida masīvu vai divkārši saistīto sarakstu. |
| Rindas parasti izmanto, lai ieviestu gaidīšanas sarakstu vai uzdevumu rindu. | Deque tiek izmantots, lai ieviestu skursteni vai elementu atdalīšanu no abiem galiem. |
| | |
206. Atšķiriet HashSet un TreeSet.
| HashSet | TreeSet |
|---|---|
| HashSet nav sakārtots. | TreeSet pamatā ir dabiska sakārtotība. |
| HashSet pieļauj nulles elementus. | TreeSet neatļauj nulles elementus. |
| HashSet ir ieviesusi HashSet klase. | TreeSet ir ieviesusi TreeSet klase. |
| HashSet hs = new HashSet(); | TreeSet ts = jauns TreeSet(); |
Java intervijas jautājumi — FAQ
Q1. Kāda ir Java izstrādātāja alga Indijā?
Saskaņā ar dažādiem resursiem Java aizmugursistēmas izstrādātāja vidējā alga ir vairāk nekā 14 lakhs gadā, kas ir par 30% vairāk nekā jebkura cita izstrādātāja loma . Šeit varat arī apskatīt mūsu jaunāko kursu par GeekforGeeks prakses portāls var arī noderēt.
Q5. Kā es varu izcelties Java intervijā?
Lai izceltos Java intervijā, demonstrējiet dziļu Java koncepciju un praktisko lietojumu izpratni. Parādiet savas problēmu risināšanas prasmes, izskaidrojot savu pieeju sarežģītiem scenārijiem un nodrošinot efektīvus risinājumus. Turklāt iezīmējiet visus atbilstošos projektus vai ieguldījumu, ko esat veicis Java kopienai. Pozitīvu iespaidu var atstāt arī entuziasma izrādīšana, laba komunikācija un vēlme mācīties.