Vprašanja in odgovori za intervju z Javo
Java je eden najbolj priljubljenih programskih jezikov na svetu, znan po svoji vsestranskosti, prenosljivosti in široki paleti aplikacij. Java je najbolj uporabljen jezik v vrhunskih podjetjih, kot so Uber, Airbnb, Google, Netflix, Instagram, Spotify, Amazon in mnoga druga, zaradi svojih funkcij in zmogljivosti.
V tem članku bomo zagotovili Več kot 200 osnovnih vprašanj za razgovor o Javi prilagojeno tako začetnikom kot izkušenim strokovnjakom s 3, 5 in 8 leti izkušenj. Tukaj pokrivamo vse, vključno z osnovnimi koncepti Jave, objektno usmerjenim programiranjem (OOP), večnitnostjo, obravnavanjem izjem, oblikovalskimi vzorci, zbirkami Jave in še več, kar vam bo zagotovo pomagalo razbiti intervjuje o Javi.
Kazalo
- Vprašanja za intervju z Java za bruce
- Vprašanja za razgovor o Java Intermediate
- Vprašanja za intervju z Javo za izkušene
- Vprašanja za intervju o razlikah v Javi
Vprašanja za intervju z Java za bruce
1. Ali je Java neodvisna od platforme, če in kako?
Da, Java je jezik, neodvisen od platforme. Za razliko od mnogih programskih jezikov prevajalnik javac prevede program v bajtno kodo ali datoteko .class. Ta datoteka je neodvisna od programske ali strojne opreme, ki se izvaja, vendar potrebuje datoteko JVM (Java Virtual Machine), vnaprej nameščeno v operacijskem sistemu za nadaljnje izvajanje bajtne kode.
čeprav JVM je odvisen od platforme , lahko bajtno kodo ustvarite v katerem koli sistemu in jo lahko izvedete v katerem koli drugem sistemu, ne glede na to, da uporabljate strojno ali programsko opremo, zaradi česar je platforma Java neodvisna.
2. Katere so glavne funkcije Jave?
Java je eden najbolj znanih in najbolj uporabljanih jezikov v resničnem svetu, v Javi je veliko funkcij, zaradi katerih je boljša od katerega koli drugega jezika, nekatere od njih so omenjene spodaj:
- Enostavno : Java je precej preprosta za razumevanje in sintakso
- Neodvisno od platforme: Java je neodvisna od platforme, kar pomeni, da lahko izvajamo isti program v kateri koli programski in strojni opremi in bomo dobili enak rezultat.
- Tolmačeno : Java se tolmači kot jezik, ki temelji na prevajalniku.
- Robusten : funkcije, kot so zbiranje smeti, obravnavanje izjem itd., zaradi katerih je jezik robusten.
- Objektno usmerjen : Java je objektno usmerjen jezik, ki podpira koncepte razreda, objektov, štirih stebrov OOPS itd.
- Zavarovano : Ker lahko neposredno delimo aplikacijo z uporabnikom, ne da bi delili dejanski program, je Java varen jezik.
- Visokozmogljivo: hitrejši od drugih tradicionalnih tolmačenih programskih jezikov.
- Dinamično : podpira dinamično nalaganje razredov in vmesnikov.
- Porazdeljeno : funkcija Jave nam omogoča dostop do datotek s klicanjem metod s katerega koli priključenega računalnika.
- Večnitno : ukvarjajte se z več nalogami hkrati z definiranjem več niti
- Arhitektura nevtralna : ni odvisno od arhitekture.
3. Kaj je JVM?
JVM je kratica za Java Virtual Machine in je tolmač Java. Odgovoren je za nalaganje, preverjanje in izvajanje bajtne kode, ustvarjene v Javi.
Čeprav je odvisna od platforme, kar pomeni, da je programska oprema JVM drugačna za različne operacijske sisteme, igra ključno vlogo pri neodvisnosti platforme Java.
Če želite izvedeti več o temi, glejte JVM v Javi .
4. Kaj je JIT?
JIT pomeni (Just-in-Time) prevajalnik je del JRE (Java Runtime Environment), uporablja se za boljše delovanje aplikacij Java med izvajanjem. Uporaba JIT je omenjena v spodaj navedenem postopku po korakih:
- Izvorna koda je prevedena z javac prevajalnik za oblikovanje bajtne kode
- Bajtna koda se naprej posreduje JVM
- JIT je del JVM, JIT je odgovoren za prevajanje bajtne kode v izvorno strojno kodo med izvajanjem.
- Prevajalnik JIT je ves čas omogočen, medtem ko se aktivira, ko je metoda priklicana. Za prevedeno metodo JVM neposredno pokliče prevedeno kodo, namesto da bi jo interpretiral.
- Ker JVM pokliče prevedeno kodo, ki poveča zmogljivost in hitrost izvajanja.
Če želite izvedeti več o temi, glejte JIT v Javi .
5. Kateri pomnilniški prostori so na voljo z JVM?
JVM je sestavljen iz nekaj pomnilniških shramb, kot je navedeno spodaj:
- Območje razreda (metoda): shrani podatke na ravni razreda za vsak razred, kot so nabor konstant izvajalnega časa, podatki polja in metode ter koda za metode.
- Kup: predmeti so ustvarjeni ali predmeti shranjeni. Uporablja se za dodeljevanje pomnilnika objektom med izvajanjem.
- Sklad: shrani podatke in delne rezultate, ki bodo potrebni pri vračanju vrednosti za metodo in izvajanju dinamičnega povezovanja
- Programski števec register: shrani naslov ukaza navideznega stroja Java, ki se trenutno izvaja.
- Native Method Stack: shrani vse izvorne metode, uporabljene v aplikaciji.
Če želite izvedeti več o temi, glejte Shramba pomnilnika JVM .
6. Kaj je nalagalnik razredov?
Classloader je del JRE (Java Runtime Environment), med izvajanjem bajtne kode ali ustvarjene datoteke .class je classloader odgovoren za dinamično nalaganje java razredov in vmesnikov v JVM (Java Virtual Machine). Zaradi nalagalnikov razredov sistemu izvajalnega časa Java ni treba poznati datotek in datotečnih sistemov.
Če želite izvedeti več o temi, glejte ClassLoader v Javi.
7. Razlika med JVM, JRE in JDK.
JVM : JVM, znan tudi kot Java Virtual Machine, je del JRE. JVM je vrsta tolmača, odgovornega za pretvorbo bajtne kode v strojno berljivo kodo. Sam JVM je odvisen od platforme, vendar interpretira bajtno kodo, kar je razlog, zakaj je Java neodvisna od platforme.
JRE : JRE je kratica za Java Runtime Environment, je namestitveni paket, ki zagotavlja okolje za izvajanje programa ali aplikacije Java na katerem koli računalniku.
JDK : JDK pomeni Java Development Kit, ki zagotavlja okolje za razvoj in izvajanje programov Java. JDK je paket, ki vključuje dve stvari, razvojna orodja za zagotavljanje okolja za razvoj vaših programov Java in JRE za izvajanje programov ali aplikacij Java.
Če želite izvedeti več o temi, glejte Razlike med JVM, JRE in JDK .
8. Kakšne so razlike med Javo in C++?
| Osnova | C++ | Java |
|---|---|---|
| Platforma | C++ je odvisen od platforme | Java je neodvisna od platforme |
| Aplikacija | C++ se uporablja predvsem za sistemsko programiranje | Java se uporablja predvsem za programiranje aplikacij |
| Strojna oprema | C++ je bližje strojni opremi | Java ni tako interaktivna s strojno opremo |
| Globalni obseg | C++ podpira globalni in imenski obseg. | Java ne podpira globalnega obsega. |
| Ne podpira | Funkcionalnosti, podprte v Javi, ne pa tudi v C++, so:
| Funkcionalnosti, podprte v C++, ne pa tudi v Javi, so:
|
| Ups | C++ je objektno usmerjen jezik. To ni enokorenska hierarhija. | Java je tudi objektno usmerjen jezik. Gre za hierarhijo z enim korenom, saj vse izhaja iz enega razreda (java.lang.Object). |
| Dedno drevo | C++ vedno ustvari novo drevo dedovanja. | Java uporablja eno samo drevo dedovanja, saj so razredi v Javi podrejeni razredi objektov v Javi. |
9. Razložite public static void main(String args[]) v Javi.
Za razliko od katerega koli drugega programskega jezika, kot je C, C++ itd. V Javi smo glavno funkcijo razglasili kot javni statični void main (String args[]). Pomeni izrazov so navedeni spodaj:
- javnosti : javnost je modifikator dostopa, odgovoren za navedbo, kdo lahko dostopa do elementa ali metode in kakšna je omejitev. Odgovoren je za globalno dostopnost glavne funkcije. Javen je, tako da ga lahko JVM pokliče izven razreda, saj ni prisoten v trenutnem razredu.
- statična : static je ključna beseda, ki se uporablja, da lahko uporabimo element, ne da bi zagnali razred, da se izognemo nepotrebni dodelitvi pomnilnika.
- praznina : void je ključna beseda in se uporablja za določitev, da metoda ne vrne ničesar. Ker glavna funkcija ne vrne ničesar, uporabimo void.
- glavni : main predstavlja, da je deklarirana funkcija glavna funkcija. JVM pomaga ugotoviti, da je deklarirana funkcija glavna funkcija.
- Argumenti niza [] : Shranjuje argumente ukazne vrstice Java in je matrika tipa java.lang.String class.
10. Kaj je Java String Pool?
Pool nizov Java je mesto v pomnilniku kopice, kjer so shranjeni vsi nizi, definirani v programu. Ločeno mesto v skladu je tam, kjer je shranjena spremenljivka, ki hrani niz. Kadarkoli ustvarimo nov objekt niza, JVM preveri prisotnost predmeta v skupini nizov. Če je niz na voljo v skupini, se ista referenca objekta deli s spremenljivko, sicer se ustvari nov objekt.
primer:
String str1='Hello'; // 'Hello' will be stored in String Pool // str1 will be stored in stack memory
11. Kaj se bo zgodilo, če razglasimo, da glavnega ne razglasimo za statičnega?
Glavno metodo lahko deklariramo brez uporabe statike in brez napak. Toda glavna metoda ne bo obravnavana kot vstopna točka v aplikacijo ali program.
12. Kaj so paketi v Javi?
Pakete v Javi lahko definiramo kot združevanje povezanih vrst razredov, vmesnikov itd., ki zagotavljajo dostop do zaščite in upravljanja imenskega prostora.
13. Zakaj se uporabljajo paketi?
Paketi se v Javi uporabljajo za preprečevanje sporov pri poimenovanju, nadzor dostopa ter olajšanje iskanja/lociranja in uporabe razredov, vmesnikov itd.
14. Kakšne so prednosti paketov v Javi?
Definiranje paketov v Javi ima različne prednosti.
- Paketi se izogibajo navzkrižju imen.
- Paket omogoča lažji nadzor dostopa.
- Imamo lahko tudi skrite razrede, ki niso vidni zunaj in jih uporablja paket.
- Lažje je poiskati povezane razrede.
15. Koliko vrst paketov obstaja v Javi?
V Javi obstajata dve vrsti paketov
- Uporabniško določeni paketi
- Vgrajeni paketi
16. Razložite različne tipe podatkov v Javi.
V Javi obstajata dve vrsti podatkovnih vrst, kot je navedeno spodaj:
- Primitivni podatkovni tip
- Neprimitivni podatkovni tip ali objektni podatkovni tip
Primitivni tip podatkov: Primitivni podatki so posamezne vrednosti brez posebnih zmožnosti. Obstaja 8 osnovnih tipov podatkov:
- logično : shrani vrednost true ali false
- bajt : shrani 8-bitno komplementno celo število s predznakom
- char : shrani en sam 16-bitni znak Unicode
- kratek : shrani 16-bitno komplementno celo število s predznakom
- int : shrani 32-bitno celo število komplementa s predznakom
- dolga : shrani 64-bitno celo število dvojnega komplementa
- lebdi : shrani 32-bitno plavajočo vejico IEEE 754 z enojno natančnostjo
- dvojno : shrani 64-bitno plavajočo vejico IEEE 754 z dvojno natančnostjo
Neprimitivni podatkovni tip: Referenčni podatkovni tipi bodo vsebovali pomnilniški naslov vrednosti spremenljivke, ker ne more neposredno shraniti vrednosti v pomnilnik. Vrste neprimitivnih so navedene spodaj:
- Strune
- Array
- Razred
- Objekt
- Vmesnik
17. Kdaj se uporablja bajtni podatkovni tip?
Bajt je 8-bitno predznačeno dvokomplementno celo število. Najmanjša vrednost, ki jo podpirajo bajti, je -128, največja vrednost pa je 127. Uporablja se v pogojih, ko moramo varčevati s pomnilnikom in je omejitev potrebnih števil med -128 in 127.
18. Ali lahko deklariramo kazalec v Javi?
Ne, Java ne nudi podpore za Pointer. Ker mora biti Java bolj varna, ker katera funkcija kazalca ni na voljo v Javi.
19. Kakšna je privzeta vrednost podatkovnega tipa byte v Javi?
Privzeta vrednost podatkovnega tipa byte v Javi je 0.
20. Kakšna je privzeta vrednost podatkovnega tipa float in double v Javi?
Privzeta vrednost float je 0,0f, double pa 0,0d v Javi.
21. Kaj je razred Wrapper v Javi?
Wrapper se na splošno nanaša na večjo entiteto, ki zajema manjšo entiteto. Tukaj v Javi je razred ovoja objektni razred, ki enkapsulira primitivne tipe podatkov.
Primitivni tipi podatkov so tisti, iz katerih je mogoče ustvariti nadaljnje tipe podatkov. Na primer, cela števila lahko nadalje vodijo do konstrukcije long, byte, short itd. Po drugi strani pa niz ne more, zato ni primitiven.
Če se vrnemo k razredu ovoja, Java vsebuje 8 razredov ovoja. So Boolean, Byte, Short, Integer, Character, Long, Float in Double. Poleg tega je v Javi mogoče ustvariti tudi razrede ovoja po meri, kar je podobno konceptu strukture v programskem jeziku C. Ustvarimo lasten ovojni razred z zahtevanimi tipi podatkov.
22. Zakaj potrebujemo ovojne razrede?
Razred ovoja je objektni razred, ki enkapsulira primitivne tipe podatkov in jih potrebujemo iz naslednjih razlogov:
- Ovojni razredi so dokončni in nespremenljivi
- Ponuja metode, kot so valueOf(), parseInt() itd.
- Zagotavlja funkcijo samodejnega pakiranja in razpakiranja.
23. Razlikujte med instančnimi in lokalnimi spremenljivkami.
| Spremenljivka primerka | Lokalna spremenljivka |
|---|---|
| Deklarirano zunaj metode, ki jo metoda neposredno kliče. | Deklarirano znotraj metode. |
| Ima privzeto vrednost. | Ni privzete vrednosti |
| Uporablja se lahko v celotnem razredu. | Obseg je omejen na metodo. |
24. Katere so privzete vrednosti, dodeljene spremenljivkam in primerkom v Javi?
V Javi Če nismo inicializirali spremenljivk primerka, jih prevajalnik inicializira s privzetimi vrednostmi. Privzete vrednosti za primerke in spremenljivke so odvisne od njihovih tipov podatkov. Nekatere običajne vrste privzetih podatkovnih vrst so:
- Privzeta vrednost za številske vrste (byte, short, int, long, float in double) je 0.
- Privzeta vrednost za logični tip je false.
- Privzeta vrednost za vrste objektov (razredi, vmesniki in polja) je nič.
- Ničelni znak, u0000, je privzeta vrednost za tip char.
primer:
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); } } Izhod
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. Kaj je spremenljivka razreda?
V Javi je spremenljivka razreda (znana tudi kot statična spremenljivka) spremenljivka, ki je deklarirana znotraj razreda, vendar zunaj katere koli metode, konstruktorja ali bloka. Spremenljivke razreda so deklarirane s ključno besedo static in si jih delijo vsi primerki (objekti) razreda kot tudi sam razred. Ne glede na to, koliko predmetov je izpeljanih iz razreda, bi vsaka spremenljivka razreda obstajala samo enkrat.
primer:
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); } } Izhod
Number of objects created are 3
26. Kakšna je privzeta vrednost, shranjena v lokalnih spremenljivkah?
Z lokalnimi spremenljivkami ni shranjena privzeta vrednost. Poleg tega primitivne spremenljivke in objekti nimajo privzetih vrednosti.
27. Pojasnite razliko med spremenljivko primerka in spremenljivko razreda.
Spremenljivka primerka: Spremenljivko razreda brez statičnega modifikatorja, znano kot spremenljivka primerka, si običajno delijo vsi primerki razreda. Te spremenljivke imajo lahko različne vrednosti med več predmeti. Vsebina spremenljivke primerka je popolnoma neodvisna od enega primerka objekta od drugega, ker je povezana z določenim primerkom predmeta razreda.
primer:
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()); } } Izhod
Name John
Spremenljivka razreda: Spremenljivko razreda spremenljivko lahko deklarirate kjer koli na ravni razreda s ključno besedo static. Te spremenljivke imajo lahko samo eno vrednost, ko se uporabljajo za različne predmete. Te spremenljivke si lahko delijo vsi člani razreda, saj niso povezane z nobenim posebnim objektom razreda.
primer:
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()); } } Izhod
Area of circle: 78.53975
28. Kaj je statična spremenljivka?
Ključna beseda static se uporablja za skupno rabo iste spremenljivke ali metode danega razreda. Statične spremenljivke so spremenljivke, ki se, ko so deklarirane, ustvarijo eno kopijo spremenljivke in jo delijo vsi objekti na ravni razreda.
29. Kakšna je razlika med System.out, System.err in System.in?
System.out – To je PrintStream, ki se uporablja za pisanje znakov ali lahko rečemo, da lahko izpiše podatke, ki jih želimo zapisati, na konzoli/terminalu vmesnika ukazne vrstice.
primer:
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 – Uporablja se za prikaz sporočil o napakah.
primer:
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'); } } Izhod:
This is how we throw error with System.err
Čeprav ima System.err veliko podobnosti, imata oba tudi precej razlik, preverimo jih.
| System.out | System.err |
|---|---|
| Iz sistema bo tiskal po standardu. | Natisnil bo standardno napako. |
| Večinoma se uporablja za prikaz rezultatov na konzoli. | Večinoma se uporablja za izpisovanje besedil napak. |
| Na konzoli daje izhod s privzeto (črno) barvo. | Prav tako daje izhod na konzoli, vendar večina IDE-jev daje rdečo barvo za razlikovanje. |
System.in – To je InputStream, ki se uporablja za branje vnosa iz terminalskega okna. System.in ne moremo uporabiti neposredno, zato uporabljamo razred Scanner za vnos s system.in.
primer:
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); } } Izhod:
3 4 Addition: 7
30. Kaj razumete pod IO tok?
Java prinaša različne tokove s svojim I/O paketom, ki uporabniku pomaga izvajati vse vhodno-izhodne operacije. Ti tokovi podpirajo vse vrste objektov, tipe podatkov, znake, datoteke itd., da v celoti izvajajo V/I operacije.
31. Kakšna je razlika med hierarhijo razredov Reader/Writer in hierarhijo razredov InputStream/OutputStream?
Ključna razlika med njima je, da podatke bajtnega toka berejo in zapisujejo razredi vhodno/izhodnega toka. Znake obravnavata razreda Reader in Writer. V nasprotju z razredi Reader/Writer, ki kot parametre sprejemajo polja znakov, metode razreda vhodno/izhodnega toka sprejemajo nize bajtov. V primerjavi z vhodno/izhodnimi tokovi so razredi Reader/Writer učinkovitejši, obravnavajo vse znake Unicode in so uporabni za internalizacijo. Namesto binarnih podatkov, kot so slike, uporabite razrede Reader/Writer, razen če tega ne storite.
primer:
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(); } } } Izhod
-32 79 -48 32 -22
32. Kateri so super najbolj razredi za vse tokove?
Vse razrede toka lahko razdelimo na dve vrsti razredov, in sicer razrede ByteStream in razrede CharacterStream. Razredi ByteStream so nadalje razdeljeni na razrede InputStream in razrede OutputStream. Razredi CharacterStream so razdeljeni tudi na razrede Reader in Writer. Razredi SuperMost za vse razrede InputStream so java.io.InputStream, za vse razrede izhodnih tokov pa java.io.OutPutStream. Podobno je za vse razrede bralcev super-most razred java.io.Reader, za vse razrede pisateljev pa java.io.Writer.
33. Kaj sta FileInputStream in FileOutputStream?
Za branje in pisanje podatkov Java ponuja V/I tokove. Tok predstavlja vhodni vir ali izhodni cilj, ki je lahko datoteka, v/i naprava, drug program itd. FileInputStream v Javi se uporablja za branje podatkov iz datoteke kot tok bajtov. Večinoma se uporablja za branje binarnih podatkov, kot so slike, zvočne datoteke ali serializirani predmeti.
primer:
File file = new File('path_of_the_file'); FileInputStream inputStream = new FileInputStream(file); V Javi je FileOutputStream funkcija se uporablja za pisanje podatkov bajt za bajtom v dano datoteko ali deskriptor datoteke. Običajno se neobdelani bajtni podatki, kot so slike, zapišejo v datoteko z uporabo FileOutputStream.
primer:
File file = new File('path_of_the_file'); FileOutputStream outputStream = new FileOutputStream(file); 34. Kakšen je namen uporabe razredov BufferedInputStream in BufferedOutputStream?
Ko delamo z datotekami ali tokom, moramo za povečanje vhodno/izhodne zmogljivosti programa uporabiti razreda BufferedInputStream in BufferedOutputStream. Oba razreda zagotavljata zmožnost medpomnilnika, kar pomeni, da bodo podatki shranjeni v medpomnilniku, preden se zapišejo v datoteko ali preberejo iz toka. Prav tako zmanjša, kolikokrat mora naš OS komunicirati z omrežjem ali diskom. Medpomnjenje omogoča programom, da zapišejo veliko količino podatkov, namesto da bi jih zapisali v majhnih kosih. To tudi zmanjša stroške dostopa do omrežja ali diska.
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. Kaj so FilterStreams?
Stream filter ali Filter Streams vrne tok, sestavljen iz elementov tega toka, ki se ujemajo z danim predikatom. Med delovanjem filter() dejansko ne izvaja filtriranja, ampak namesto tega ustvari nov tok, ki ob prehodu vsebuje elemente začetnih tokov, ki se ujemajo z danim predikatom.
primer:
FileInputStream fis =new FileInoutStream('file_path'); FilterInputStream = new BufferedInputStream(fis);
36. Kaj je V/I filter?
V/I filter, opredeljen tudi kot vhodno izhodni filter, je objekt, ki bere iz enega toka in zapisuje podatke v vhodne in izhodne vire. Za uporabo tega filtra je uporabil paket java.io.
37. Na koliko načinov lahko sprejemate vnose s konzole?
Obstajata dva načina za sprejemanje vnosa iz konzole v Javi, ki sta omenjena spodaj:
- Uporaba argumenta ukazne vrstice
- Uporaba razreda bralnika v medpomnilniku
- Uporaba razreda konzole
- Uporaba razreda Scanner
Program, ki prikazuje uporabo vsake metode, je podan spodaj.
primer:
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); } } Izhod:
techcodeview.com
38. Razlika v uporabi print, println in printf.
print, println in printf all se uporabljajo za tiskanje elementov, vendar print natisne vse elemente in kazalec ostane v isti vrstici. println premakne kazalec v naslednjo vrstico. In s printf lahko uporabimo tudi identifikatorje formatov.
39. Kaj so operaterji?
Operatorji so posebne vrste simbolov, ki se uporabljajo za izvajanje nekaterih operacij nad spremenljivkami in vrednostmi.
40. Koliko tipov operaterjev je na voljo v Javi?
Vse vrste operaterjev v Javi so omenjene spodaj:
- Aritmetični operatorji
- Unarni operatorji
- Operater dodelitve
- Relacijski operaterji
- Logični operatorji
- Ternarni operater
- Bitni operaterji
- Operatorji premika
- primerek operaterja
Operatorji Postfix veljajo za najvišjo prednost glede na prednost operaterjev Java.
41. Pojasnite razliko med operatorjema>> in>>>.
Operatorja, kot sta>> in>>>, se zdita enaka, vendar delujeta nekoliko drugače.>> premakne bite predznaka, operator>>> pa se uporablja za premik bitov z ničlami.
primer:
Java // Java Program to demostrate //>> in>>> operaterja import java.io.*; // Razred gonilnika GFG { public static void main(String[] args) { int a = -16, b = 1; // Uporaba>> System.out.println(a >> b); a = -17; b = 1; // Uporaba>>> System.out.println(a >>> b); } } Izhod
-8 2147483639
42. Kateri operator Java je pravilno asociativen?
Obstaja samo en operator, ki je desno asociativen in je = operator.
43. Kaj je operator pike?
Operator Dot v Javi se uporablja za dostop do spremenljivk primerka in metod objektov razreda. Uporablja se tudi za dostop do razredov in podpaketov iz paketa.
44. Kaj je kovariantni povratni tip?
Kovariantni povratni tip določa, da se lahko vrnjeni tip spreminja v isto smer kot podrazred. Možno je imeti različne tipe vrnitve za preglasitveno metodo v podrejenem razredu, vendar mora biti otroški vrnjeni tip podtip nadrejenega vrnjenega tipa in zaradi te preglasitvene metode postane različica glede na tip vrnitve.
Kovariantni povratni tip uporabljamo iz naslednjih razlogov:
- Izogiba se zmedenim vrstam, ki so prisotne v hierarhiji razredov, in naredi kodo berljivo, uporabno in vzdržljivo.
- Omogoča več specifičnih vrnitev pri preglasitvi metod.
- Pomoč pri preprečevanju ClassCastExceptions med izvajanjem pri vrnitvah.
45. Kaj je prehodna ključna beseda?
Prehodna ključna beseda se uporablja v času serializacije, če ne želimo shraniti vrednosti določene spremenljivke v datoteko. Ko JVM naleti na prehodno ključno besedo, prezre izvirno vrednost spremenljivke in shrani privzeto vrednost te vrste podatkov spremenljivke.
46. Kakšna je razlika med metodama sleep() in wait()?
| spanje () | Počakaj() |
|---|---|
| Metoda sleep() spada v razred niti. | Metoda Wait() spada v objektni razred. |
| Spanje ne sprosti zaklepa, ki ga ima trenutna nit. | wait() sprosti ključavnico, ki drugim nitim omogoči, da jo pridobijo. |
| Ta metoda je statična metoda. | Ta metoda ni statična metoda. |
| Sleep() ne vrže InterruptedException. | InterruptedException se prikaže, če je nit med čakanjem prekinjena. |
| Uporablja se predvsem za odložitev niti za določeno časovno obdobje. | Uporablja se predvsem za zaustavitev niti, dokler o tem ne obvesti druga nit. |
| Sleep() ima dve preobremenjeni metodi:
| Wait() ima tri preobremenjene metode:
|
47. Kakšne so razlike med String in StringBuffer?
| Vrvica | StringBuffer |
|---|---|
| Shranjevanje zaporedja znakov. | Zagotavlja funkcionalnost za delo z nizi. |
| Je nespremenljivo. | Je spremenljiv (mogoče ga je spreminjati in na njih izvajati druge operacije z nizi.) |
| V nizu ni operacij niti. | Je varen za niti (dve niti ne moreta klicati metod StringBufferja hkrati) |
48. Kakšne so razlike med StringBuffer in StringBuilder?
| StringBuffer | StringBuilder |
|---|---|
| StringBuffer nudi funkcionalnost za delo z nizi. | StringBuilder je razred, ki se uporablja za izdelavo spremenljivega niza. |
| Je varen za niti (dve niti ne moreta klicati metod StringBufferja hkrati) | Ni varen za niti (dve niti lahko kličeta metode hkrati) |
| Razmeroma počasen, saj je sinhroniziran. | Ker ni sinhroniziran, je implementacija hitrejša |
49. Kateremu med nizom ali medpomnilnikom nizov je treba dati prednost, ko je v podatkih treba opraviti veliko posodobitev?
Niz ima prednost pred StringBufferjem, saj je StringBuilder hitrejši od StringBufferja, vendar imajo prednost predmeti StringBuffer, saj zagotavlja večjo varnost niti.
50. Zakaj se StringBuffer imenuje spremenljiv?
Razred StringBuffer v Javi se uporablja za predstavitev spremenljivega niza znakov. Ponuja alternativo nespremenljivemu razredu String, saj vam omogoča spreminjanje vsebine niza brez nenehnega ustvarjanja novih objektov. Spremenljivi (spremenljivi) nizi so ustvarjeni s pomočjo razreda StringBuffer. Razred StringBuffer v Javi je identičen razredu String, le da je spremenljiv.
primer:
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); } } Izhod
techcodeview.com
51. Kako se ustvarjanje niza z uporabo new() razlikuje od ustvarjanja literala?
Niz z uporabo new() se razlikuje od literala, saj ko deklariramo niz, shrani elemente v pomnilnik sklada, medtem ko ko je deklariran z uporabo new(), dodeli dinamični pomnilnik v pomnilniku kopice. Objekt se ustvari v pomnilniku kopice, tudi če je prisoten isti predmet vsebine.
Sintaksa:
String x = new String('ABC');
52. Kaj je polje v Javi?
Matrika v Javi je podatkovna struktura, ki se uporablja za shranjevanje zaporedja elementov iste vrste s fiksno velikostjo. Do elementov matrike lahko dostopamo po njihovem indeksu, ki se začne od 0 in sega do dolžine minus 1. Deklaracija matrike v Javi poteka s pomočjo oglatih oklepajev, pri deklaraciji pa je določena tudi velikost.
Sintaksa:
int[] Arr = new int[5];
53. Na katerih pomnilniških nizih so ustvarjena v Javi?
Nizi v Javi so ustvarjeni v pomnilniku kopice. Ko je matrika ustvarjena s pomočjo nove ključne besede, se v kopici dodeli pomnilnik za shranjevanje elementov matrike. V Javi pomnilnik kopice upravlja navidezni stroj Java (JVM), delijo pa ga tudi vse niti programa Java. Pomnilnik, ki ga program ne uporablja več, JVM uporablja zbiralnik smeti, da povrne pomnilnik. Matrike v Javi so ustvarjene dinamično, kar pomeni, da se velikost matrike določi med izvajanjem programa. Velikost matrike je določena med deklaracijo matrike in je ni mogoče spremeniti, ko je matrika ustvarjena.
54. Katere so vrste matrike?
Obstajata dve vrsti matrik, tj. Primitivna matrika in Referenčna matrika.
- Enodimenzionalni nizi: Nizi, ki imajo samo eno dimenzijo, tj. niz celih števil ali niz nizov, so znani kot enodimenzionalni nizi.
Sintaksa:
data_type[] Array_Name = new data_type[ArraySize];
- Večdimenzionalni nizi: Nizi, ki imajo dve ali več dimenzij, kot so dvodimenzionalni ali tridimenzionalni nizi.
55. Zakaj se indeks polja Java začne z 0?
Indeks matrike označuje razdaljo od začetka matrike. Torej ima prvi element razdaljo 0, zato je začetni indeks 0.
Sintaksa:
[Base Address + (index * no_of_bytes)]
56. Kakšna je razlika med poljem int[] in poljem int[]?
Tako int array[] kot int[] array se uporabljata za deklaracijo niza celih števil v Javi. Edina razlika med njima je v njuni sintaksi, med njima ni nobene razlike v funkcionalnosti.
int arr[] is a C-Style syntax to declare an Array.
int[] arr is a Java-Style syntax to declare an Array.
Vendar je na splošno priporočljivo, da za deklaracijo matrike uporabite sintakso v slogu Jave. Ker je enostaven za branje in razumevanje, je tudi bolj skladen z drugimi konstrukcijami jezika Java.
57. Kako kopirati matriko v Javi?
V Javi obstaja več načinov za kopiranje matrike glede na zahteve.
- metoda clone() v Javi: Ta metoda v Javi se uporablja za ustvarjanje plitke kopije dane matrike, kar pomeni, da bo nova matrika delila isti pomnilnik kot izvirna matrika.
int[] Arr = { 1, 2, 3, 5, 0}; int[] tempArr = Arr.clone(); - metoda arraycopy(): Za ustvarjanje globoke kopije matrike lahko uporabimo to metodo, ki ustvari novo matriko z enakimi vrednostmi kot izvirna matrika.
int[] Arr = {1, 2, 7, 9, 8}; int[] tempArr = new int[Arr.length]; System.arraycopy(Arr, 0, tempArr, 0, Arr.length); - metoda copyOf(): Ta metoda se uporablja za ustvarjanje nove matrike z določeno dolžino in kopiranje vsebine izvirne matrike v novo matriko.
int[] Arr = {1, 2, 4, 8}; int[] tempArr = Arrays.copyOf(Arr, Arr.length); - metoda copyOfRange(): Ta metoda je zelo podobna metodi copyOf() v Javi, vendar nam ta metoda omogoča tudi določitev obsega elementov za kopiranje iz izvirne matrike.
int[] Arr = {1, 2, 4, 8}; int[] temArr = Arrays.copyOfRange(Arr, 0, Arr.length); 58. Kaj razumete pod nazobčanim nizom?
Nazobčana matrika v Javi je le dvodimenzionalna matrika, v kateri ima lahko vsaka vrstica matrike drugačno dolžino. Ker imajo vse vrstice v dvodimenzionalni matriki enako dolžino, pa nazobčana matrika omogoča večjo prilagodljivost velikosti vsake vrstice. Ta funkcija je zelo uporabna v pogojih, ko imajo podatki različne dolžine ali ko je treba optimizirati uporabo pomnilnika.
Sintaksa:
int[][] Arr = new int[][] { {1, 2, 8}, {7, 5}, {6, 7, 2, 6} }; 59. Ali je mogoče narediti niz nestanoviten?
V Javi ni mogoče narediti volatila. Nestanovitne ključne besede v Javi je mogoče uporabiti le za posamezne spremenljivke, ne pa tudi za nize ali zbirke. Vrednost spremenljivke se vedno prebere iz glavnega pomnilnika in zapiše vanj, če je definirana kot nestanovitna in ne predpomnjena v lokalnem pomnilniku niti. Tako je lažje zagotoviti, da lahko vse niti, ki dostopajo do spremenljivke, vidijo njene spremembe.
60. Kakšne so prednosti in slabosti niza?
Prednosti nizov so:
- Neposreden in učinkovit dostop do katerega koli elementa v zbirki omogočajo polja. Do elementov matrike je mogoče dostopati z operacijo O(1), kar pomeni, da je čas, potreben za to, stalen in neodvisen od velikosti matrike.
- Podatke je mogoče učinkovito shraniti v pomnilnik z uporabo nizov. Velikost matrike je znana v času prevajanja, saj so njeni elementi shranjeni v sosednjih pomnilniških regijah.
- Ker so podatki shranjeni v zveznih pomnilniških območjih, nizi omogočajo hitro iskanje podatkov.
- Polja je enostavno implementirati in razumeti, zaradi česar so idealna izbira za začetnike, ki se učijo računalniškega programiranja.
Slabosti nizov so:
- Nizi so ustvarjeni z vnaprej določeno velikostjo, ki je izbrana v tistem trenutku. To pomeni, da če je treba velikost matrike razširiti, bo treba narediti novo matriko, podatke pa bo treba kopirati iz stare matrike v novo matriko, kar lahko vzame veliko časa in pomnilnika.
- V pomnilniškem prostoru polja je lahko neuporabljen pomnilniški prostor, če polje ni popolnoma zasedeno. Če imate slab odpoklic, je to lahko težava.
- V primerjavi z drugimi podatkovnimi strukturami, kot so povezani seznami in drevesa, so polja lahko toga zaradi svoje fiksne velikosti in omejene podpore za sofisticirane vrste podatkov.
- Ker morajo biti vsi elementi matrike iste vrste podatkov, ne podpira zapletenih tipov podatkov, kot so predmeti in strukture.
61. Kaj je objektno usmerjena paradigma?
Paradigma dobesedno pomeni vzorec ali metodo. Paradigme programiranja so metode za reševanje programa, ki je štirih vrst, in sicer imperativne, logične, funkcionalne in objektno usmerjene. Ko se objekti uporabljajo kot osnovne entitete, na katerih se uporabljajo metode, enkapsulacija ali funkcije dedovanja, je to znano kot objektno usmerjena paradigma.
62. Kateri so glavni koncepti OOP-jev v Javi?
Spodaj so omenjeni glavni koncepti OOP-jev v Javi:
- Dedovanje
- Polimorfizem
- Abstrakcija
- Enkapsulacija
63. Kakšna je razlika med objektno usmerjenim programskim jezikom in objektno usmerjenim programskim jezikom?
| Objektno orientirani programski jezik | Objektni programski jezik |
|---|---|
| Objektno orientirani programski jezik zajema večje koncepte, kot so dedovanje, polimorfizem, abstrakcija itd. | Obseg objektnega programiranja je omejen na uporabo objektov in enkapsulacijo. |
| Podpira vse vgrajene objekte | Ne podpira vseh vgrajenih predmetov |
| Primeri: Java, C# itd. | Primeri: Java skript, vizualne osnove itd. |
64. Kako se operater 'new' razlikuje od operatorja 'newInstance()' v Javi?
operator new se uporablja za ustvarjanje objektov, če pa se želimo odločiti o vrsti predmeta, ki bo ustvarjen med izvajanjem, ne moremo uporabiti operatorja new. V tem primeru moramo uporabiti metoda newInstance(). .
65. Kaj so razredi v Javi?
V Javi so razredi zbirka objektov s podobnimi lastnostmi in atributi. Razredi predstavljajo načrt ali predlogo, iz katere so ustvarjeni objekti. Razredi niso entitete iz resničnega sveta, ampak nam pomagajo ustvariti predmete, ki so entitete iz resničnega sveta.
66. Kakšna je razlika med statično (razredno) metodo in metodo primerka?
| Statična (razredna) metoda | Metoda primerka |
|---|---|
| Statična metoda je povezana z razredom in ne z objektom. | Metoda primerka je povezana z objektom in ne z razredom. |
| Statične metode lahko kličete samo z uporabo imena razreda, ne da bi ustvarili primerek razreda. | Metodo primerka je mogoče poklicati na določenem primerku razreda z uporabo reference objekta. |
| Statične metode nimajo dostopa do to ključna beseda . | Metode primerkov imajo dostop do to ključna beseda . |
| Ta metoda lahko dostopa samo do statičnih članov razreda | Ta metoda lahko dostopa do statičnih in nestatičnih metod razreda. |
67. Kaj je ta ključna beseda v Javi?
'to' je ključna beseda, ki se uporablja za sklicevanje na spremenljivko, ki se nanaša na trenutni objekt.
68. Kaj so kratki specifikatorji dostopa in vrste specifikatorjev dostopa?
Specifikatorji dostopa v Javi pomagajo omejiti obseg razreda, konstruktorja, spremenljivke, metode ali podatkovnega člana. V Javi so spodaj omenjene štiri vrste specifikacij dostopa:
- Javno
- Zasebno
- Zaščiteno
- Privzeto
69. Kakšna bo začetna vrednost reference objekta, ki je definirana kot spremenljivka primerka?
Začetna vrednost reference objekta, ki je definirana kot spremenljivka primerka, je vrednost NULL.
70. Kaj je predmet?
Objekt je resnična entiteta, ki ima določene lastnosti in metode, povezane z njim. Objekt je definiran tudi kot primerek razreda. Objekt je mogoče deklarirati z novo ključno besedo.
71. Kakšni so različni načini ustvarjanja objektov v Javi?
Metode za ustvarjanje objektov v Javi so omenjene spodaj:
- Uporaba nove ključne besede
- Uporaba novega primerka
- Uporaba metode clone().
- Uporaba deserializacije
- Uporaba metode newInstance() razreda Constructor
Če želite izvedeti več o metodah za ustvarjanje objektov v Javi, glejte Ta članek .
72. Kakšne so prednosti in slabosti kloniranja objektov?
Uporaba kloniranja objektov ima številne prednosti in slabosti, kot je navedeno spodaj:
Prednosti:
- V Javi operatorja dodelitve '=' ni mogoče uporabiti za kloniranje, saj preprosto ustvari kopijo referenčnih spremenljivk. Za premagovanje takšnega neskladja je mogoče namesto operatorja dodelitve uporabiti metodo clone() razreda Object.
- Metoda clone() je zaščitena metoda razreda Object, kar pomeni, da lahko le razred Employee klonira objekte Employee. To pomeni, da noben drug razred kot Employee ne more klonirati predmetov Employee, ker ne pozna atributov razreda Employee.
- Velikost kode se zmanjšuje, ko se ponavljanje zmanjšuje.
- Omogoča replikacijo (nekako podoben vzorcu prototipa), ročna inicializacija vsakega polja ustvari veliko kodo, če je objekt zapleten, je s kloniranjem hitrejši.
Slabosti:
- Ker je metoda Object.clone() zaščitena, moramo zagotoviti lasten clone() in posredno poklicati Object.clone() iz nje.
- Če nimamo nobene metode, moramo zagotoviti vmesnik Cloneable, saj moramo zagotoviti informacije JVM, da lahko izvedemo clone() na našem objektu. Če ne, ne moremo klonirati, klon naredi plitvo kopijo polj, če samo vrni super.clone() iz metode kloniranja, ki je lahko problematična.
73. Kakšne so prednosti posredovanja tega v metodo namesto samega trenutnega predmeta razreda?
Obstaja nekaj prednosti posredovanja tega v metodo namesto samega predmeta trenutnega razreda, to so:
- to je končna spremenljivka, zaradi katere je ni mogoče dodeliti nobeni novi vrednosti, medtem ko trenutni objekt razreda morda ni končen in ga je mogoče spremeniti.
- to je mogoče uporabiti v sinhroniziranem bloku.
74. Kaj je konstruktor?
Konstruktor je posebna metoda, ki se uporablja za inicializacijo objektov. Ko je predmet ustvarjen, se pokliče konstruktor. Ime konstruktorja je enako kot ime razreda.
primer:
// Class Created class XYZ{ private int val; // Constructor XYZ(){ val=0; } }; 75. Kaj se zgodi, če v razredu ne zagotovite konstruktorja?
Če v razredu v Javi ne zagotovite konstruktorja, prevajalnik samodejno ustvari privzeti konstruktor brez argumentov in brez operacije, ki je privzeti konstruktor.
76. Koliko tipov konstruktorjev se uporablja v Javi?
V Javi obstajata dve vrsti konstruktorjev, kot je navedeno spodaj:
- Privzeti konstruktor
- Parametriziran konstruktor
Privzeti konstruktor: je tip, ki ne sprejema nobene vrednosti parametra. Uporablja se za nastavitev začetnih vrednosti za atribute objekta.
class_Name(); // Default constructor called
Parametrizirani konstruktor: je tip konstruktorja, ki sprejme parametre kot argumente. Ti se uporabljajo za dodeljevanje vrednosti spremenljivkam primerkov med inicializacijo objektov.
class_Name(parameter1, parameter2......); // All the values passed as parameter will be // allocated accordingly
77. Kaj je namen privzetega konstruktorja?
Konstruktorji pomagajo ustvariti primerke razreda ali lahko rečemo, da ustvarijo objekte razreda. Konstruktor se kliče med inicializacijo objektov. Privzeti konstruktor je vrsta konstruktorja, ki ne sprejema nobenega parametra, zato se katera koli vrednost, dodeljena lastnostim predmetov, šteje za privzete vrednosti.
78. Kaj razumete pod konstruktorjem kopiranja v Javi?
Konstruktor kopije je tip konstruktorja, v katerem kot parameter posredujemo drug objekt, ker se lastnosti obeh objektov zdijo enake, zato se zdi, kot da konstruktorji ustvarijo kopijo objekta.
79. Kje in kako lahko uporabite zasebni konstruktor?
Zasebni konstruktor se uporablja, če ne želite, da kateri koli drug razred instancira predmet, da se izognete podrazredom. Uporaba zasebnega konstruktorja je prikazana v primeru.
primer:
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); } } Izhod
Value of a.x = 20 Value of b.x = 20
80. Kakšne so razlike med konstruktorji in metodami?
Javanski konstruktorji se uporabljajo za inicializacijo objektov. Med ustvarjanjem so konstruktorji poklicani, da nastavijo atribute za objekte, razen teh nekaj osnovnih razlik med njimi:
- Konstruktorji se pokličejo samo, ko je objekt ustvarjen, druge metode pa lahko pokličete večkrat med življenjsko dobo objekta.
- Konstruktorji ne vrnejo ničesar, druge metode pa lahko vrnejo karkoli.
- Konstruktorji se uporabljajo za nastavitev začetnega stanja, metode pa se uporabljajo za izvajanje določenih dejanj.
81. Kaj je vmesnik?
Vmesnik v Javi je zbirka statičnih končnih spremenljivk in abstraktnih metod, ki definirajo pogodbo ali dogovor za niz povezanih razredov. Vsak razred, ki implementira vmesnik, mora implementirati določen niz metod. Določa vedenje, ki ga mora izkazovati razred, ne pa podrobnosti o tem, kako naj bo implementiran.
Sintaksa:
interface { // constant fields // methds that are abstract by default } primer:
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()); } } Izhod
Area of circle is 78.53981633974483 Perimeter of circle is31.41592653589793
82. Navedite nekaj funkcij vmesnika.
Vmesnik v programskem jeziku Java je definiran kot abstraktni tip, ki se uporablja za določanje obnašanja razreda. Vmesnik v Javi je načrt vedenja. Vmesnik Java vsebuje statične konstante in abstraktne metode.
Funkcije vmesnika so navedene spodaj:
- Vmesnik lahko pomaga doseči popolno abstrakcijo.
- Omogoča nam uporabo več dedovanja v Javi.
- Vsak razred lahko izvaja več vmesnikov, tudi če lahko en razred razširi samo en razred.
- Uporablja se tudi za doseganje ohlapnega spoja.
83. Kaj je markerski vmesnik?
Vmesnik je prepoznan kot prazen vmesnik (brez polja ali metod) in se imenuje označevalni vmesnik. Primeri označevalnih vmesnikov so serializable, Cloneable in Remote vmesniki.
84. Kakšne so razlike med abstraktnim razredom in vmesnikom?
| Abstraktni razred | Razred vmesnika |
|---|---|
| V abstraktnem razredu lahko najdemo tako abstraktne kot neabstraktne metode. | Vmesnik vsebuje samo abstraktne metode. |
| Abstract Class podpira končne metode. | Razred vmesnika ne podpira končnih metod. |
| Abstraktni razred ne podpira večkratnega dedovanja. | Vmesniški razred podpira več dedovanja. |
| Abstraktna ključna beseda se uporablja za deklaracijo abstraktnega razreda. | Ključna beseda vmesnika se uporablja za deklaracijo razreda vmesnika. |
| razširiti ključna beseda se uporablja za razširitev abstraktnega razreda. | pripomočke Ključna beseda se uporablja za implementacijo vmesnika. |
| Abstraktni razred ima člane, kot so zaščiteni, zasebni itd. | Vsi člani razreda so privzeto javni. |
85. Kaj mislite z inkapsulacijo podatkov?
Enkapsulacija podatkov je koncept lastnosti OOPS in značilnosti razredov, ki jih vmesnik povezuje. V bistvu združuje podatke in metode, ki delujejo na teh podatkih v eni sami enoti. Enkapsulacijo dosežemo tako, da spremenljivke primerka razreda razglasimo za zasebne, kar pomeni, da je do njih mogoče dostopati le znotraj razreda.
86. Kakšne so prednosti enkapsulacije v Javi?
Prednosti enkapsulacije v Javi so navedene spodaj:
- Skrivanje podatkov: je način omejevanja dostopa naših članov podatkov s skrivanjem podrobnosti izvedbe. Enkapsulacija omogoča tudi način za skrivanje podatkov. Uporabnik ne bo imel pojma o notranji izvedbi razreda.
- Povečana prilagodljivost: Spremenljivke razreda lahko naredimo samo za branje ali samo za pisanje, odvisno od naših zahtev.
- Ponovna uporabnost: Enkapsulacija izboljša tudi ponovno uporabnost in jo je enostavno spremeniti z novimi zahtevami.
- Preizkušanje kode je enostavno: kodo je enostavno preizkusiti za testiranje enot.
87. Kakšna je glavna prednost enkapsulacije?
Glavna prednost enkapsulacije v Javi je njena sposobnost zaščite notranjega stanja objekta pred zunanjimi spremembami ali dostopom. To je način, kako skriti podrobnosti izvedbe razreda pred zunanjim dostopom in izpostaviti le javni vmesnik, ki se lahko uporablja za interakcijo z razredom. Glavna prednost je zagotavljanje načina za nadzor in upravljanje stanja in vedenja objekta ter njegovo istočasno zaščito pred spreminjanjem in nepooblaščenim dostopom.
primer:
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()); } } Izhod
Name is Rohan Age is 29
88. Kaj mislite z združevanjem?
Združevanje je izraz, povezan z razmerjem med dvema razredoma, ki ga je najbolje opisati kot razmerje ima-ima. Ta vrsta je najbolj specializirana različica asociacije. To je enosmerna povezava, kar pomeni, da gre za enosmerno razmerje. Vsebuje sklic na drug razred in naj bi imel lastništvo nad tem razredom.
89. Kakšno je razmerje 'IS-A' v OOPs Java?
'IS-A' je vrsta razmerja v OOPs Java, kjer en razred podeduje drug razred.
90. Definirajte dedovanje.
Ko predmet, ki pripada podrazredu, pridobi vse lastnosti in vedenje nadrejenega predmeta, ki je iz nadrazreda, je to znano kot dedovanje. Razred znotraj razreda se imenuje podrazred, slednji pa se imenuje nadrazred. Podrazred ali podrejeni razred naj bi bil specifičen, medtem ko je nadrazred ali nadrejeni razred splošen. Dedovanje omogoča ponovno uporabo kode.
91. Katere so različne vrste dedovanja v Javi?
Dedovanje je metoda, s katero lahko razred Child podeduje lastnosti razreda Super ali Parent. V Javi obstaja štiri vrste dedovanja:
- Eno dedovanje: Ko otrok ali podrazred razširi samo en nadrazred, je znano, da gre za enojno dedovanje. Lastnosti enonadrejenega razreda se prenesejo na podrejeni razred.
- Večnivojsko dedovanje: Ko otrok ali podrazred razširi kateri koli drug podrazred, se ustvari hierarhija dedovanja, ki je znana kot večnivojsko dedovanje. Z drugimi besedami, en podrazred postane nadrejeni razred drugega.
- Hierarhično dedovanje: Ko več podrazredov izhaja iz istega nadrejenega razreda, je to znano kot hierarhično dedovanje. Z drugimi besedami, razred, ki ima enega nadrejenega, ima veliko podrazredov.
- Večkratno dedovanje: Ko podrejeni razred podeduje več nadrejenih razredov, se imenuje večkratno dedovanje. V Javi podpira samo večkratno dedovanje vmesnikov, ne pa razredov.
92. Kaj je večkratno dedovanje? Ali ga podpira Java?
Komponenta objektno usmerjenega pojma, znanega kot večkratno dedovanje, omogoča razredu, da podeduje lastnosti številnih nadrejenih razredov. Ko so metode z enakim podpisom prisotne v nadrazredih in podrazredih, se pojavi težava. Klicatelj metode prevajalniku ne more določiti, katero metodo razreda naj kliče ali celo kateri metodi razreda naj da prednost.
Opomba: Java ne podpira večkratnega dedovanja
primer:
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(); } } Izhod
Eating Drinking Barking
93. Kako se dedovanje v C++ razlikuje od Jave?
| Dedovanje v C++ | Dedovanje v Javi |
|---|---|
| C++ uporabniku omogoča podedovanje več razredov. | Java ne podpira večkratnega dedovanja. |
| Ko je razred ustvarjen v C++, ne podeduje razreda objekta, temveč obstaja sam. | Za Java se vedno reče, da ima eno samo dedovanje, saj vsi razredi na tak ali drugačen način dedujejo objektni razred. |
94. Ali obstaja kakšna omejitev za uporabo dedovanja?
Da, obstaja omejitev uporabe dedovanja v Javi, saj lahko zaradi dedovanja podedujemo vse od nadrazreda in vmesnika, zaradi česar je podrazred preveč združen v gruče in je včasih nagnjen k napakam, ko se v določenih situacijah izvede dinamično preglasitev ali dinamično preobremenitev.
95. Čeprav je dedovanje priljubljen koncept OOP, je manj ugoden kot sestavljanje. Pojasni.
Dedovanje je priljubljen koncept objektno usmerjenega programiranja (OOP), v katerem lahko razred podeduje lastnosti in metode katerega koli drugega razreda, ki se imenuje nadrejeni ali nadrazred. Po drugi strani pa lahko v sestavi razred vsebuje primerek drugega razreda kot spremenljivko člana, ki se pogosto imenuje del ali komponenta. Spodaj je nekaj razlogov, zakaj je sestava ugodnejša od dedovanja:
- Tesna povezava: Kadarkoli se v nadrazredu naredijo kakršne koli spremembe, lahko te spremembe vplivajo na vedenje vseh njegovih podrejenih razredov ali podrazredov. Zaradi te težave je koda manj prilagodljiva in povzroča tudi težave med vzdrževanjem. Ta težava vodi tudi do tesne povezave med razredi.
- Problem lomljivega osnovnega razreda: Ko lahko spremembe osnovnega razreda prekinejo funkcionalnost njegovih izpeljanih razredov. Ta težava lahko oteži dodajanje novih funkcij ali spreminjanje obstoječih. Ta problem je znan kot problem razreda Fragile Base.
- Omejena ponovna uporaba: Dedovanje v Javi lahko povzroči omejeno ponovno uporabo kode in tudi podvajanje kode. Ker podrazred podeduje vse lastnosti in metode svojega nadrazreda, se lahko včasih konča z nepotrebno kodo, ki ni potrebna. To vodi do baze kode, ki jo je manj vzdrževati.
96. Kaj je asociacija?
Asociacija je relacija med dvema ločenima razredoma, vzpostavljena prek njunih predmetov. Predstavlja razmerje Has-A.
97. Kaj mislite z združevanjem?
Sestava je omejena oblika združevanja, v kateri sta dve entiteti zelo odvisni druga od druge. Predstavlja del razmerje.
98. Kakšna je sestava Jave?
Kompozicija implicira odnos, kjer otrok ne more obstajati samostojno od starša. Na primer človeško srce, srce ne obstaja ločeno od človeka.
99. Navedite razliko med sestavo in agregacijo.
| Združevanje | Sestava |
|---|---|
| Določa razmerje med predmeti | Predstavlja del odnosa |
| Objekti so neodvisni drug od drugega. | Objekti so odvisni drug od drugega. |
| Predstavite ga z uporabo polnjenega diamanta. | Predstavite ga s praznim diamantom. |
| Otroški predmeti nimajo življenjske dobe. | Otroški predmeti imajo dolgo življenjsko dobo. |
100. Ali se lahko konstruktor deduje?
Ne, ne moremo podedovati konstruktorja.
101. Kaj je polimorfizem?
Polimorfizem je definiran kot zmožnost sprejemanja več kot ene oblike. Obstaja dve vrsti, in sicer polimorfizem časa prevajanja ali preobremenitev metode – funkcija, ki se kliče med časom prevajanja. Na primer, vzemite 'območje' razreda. Na podlagi števila parametrov lahko izračuna površino kvadrata, trikotnika ali kroga. Polimorfizem izvajalnega časa ali preglasitvene povezave med izvajanjem. Metoda znotraj razreda preglasi metodo nadrejenega razreda.
102. Kaj je polimorfizem izvajalnega časa ali odpošiljanje dinamične metode?
Dinamično odpošiljanje metode je razreševalni mehanizem za preglasitev metode med časom izvajanja. Preglasitev metode je tista, pri kateri ima metoda v podrazredu isto ime, parametre in vrnjeno vrsto kot metoda v nadrazredu. Ko se preglasena metoda pokliče prek sklica nadrazreda, java določi, katera različica (nadrazred ali podrazred) te metode naj se izvede glede na vrsto predmeta, na katerega se sklicuje v času klica. Tako se odločitev sprejme med izvajanjem. To se imenuje dinamično pošiljanje metode.
103. Kaj je preglasitev metode?
Preglasitev metode, znana tudi kot polimorfizem izvajalnega časa, je tista, pri kateri podrejeni razred vsebuje isto metodo kot nadrejeni razred. V nadrejenem razredu imamo na primer metodo z imenom 'gfg()'. Metoda gfg() je ponovno definirana v podrazredu. Torej, ko je gfg() poklican v podrazredu, se izvede metoda znotraj razreda id. Tu je gfg() znotraj razreda preglasil zunanjo metodo.
104. Kaj je preobremenitev metode?
Preglasitev metode je metoda za doseganje izvajalnega polimorfizma v Javi. Preglasitev metode je funkcija, ki omogoča podrejenemu razredu, da zagotovi specifično izvedbo metode, ki jo že zagotavlja eden od njegovih nadrejenih razredov. Če ima metoda v podrejenem razredu isto ime, enake parametre ali podpis in isti vrnjeni tip (ali podtip) kot metoda v svojem nadrejenem razredu, se reče, da metoda v podrazredu preglasi metodo v nadrazred.
105. Ali lahko preglasimo statično metodo?
Ne, ker so statične metode del razreda in ne objekta, zato jih ne moremo preglasiti.
106. Ali lahko preglasimo preobremenjeno metodo?
Da, saj je preobremenjena metoda popolnoma drugačna metoda v očeh prevajalnika. Preglasitev sploh ni ista stvar. Odločitev o tem, katero metodo poklicati, je odložena na čas izvajanja.
107. Ali lahko preobremenimo metodo main()?
Da, v Javi lahko preobremenimo glavno metodo, da pokličemo glavno metodo s pomočjo njene vnaprej določene klicne metode.
108. Kaj sta preobremenitev metode in preglasitev metode?
Preobremenitev metode: Znan je tudi kot polimorfizem časa prevajanja. Pri preobremenitvi metod sta dve ali več metod v skupni rabi v istem razredu z različnim podpisom.
primer:
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)); } } Izhod
multiply() with 2 parameters 20 multiply() with 3 parameters 24 multiply() with 4 parameters 24
Preglasitev metode: Preglasitev metode se zgodi, ko lahko podrazred zagotovi implementacijo metode, ki je že definirana v nadrejenem razredu ali nadrazredu. Vrnjeni tip, ime in argumenti morajo biti podobni metodam v nadrazredu.
primer:
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(); } } Izhod
drive() method of derived class Car is driving. drive() method of base class driving the Car. drive() method of derived class Car is driving.
| Preobremenitev metode | Preglasitev metode |
|---|---|
| Ko sta dve ali več metod v istem razredu z različnimi parametri, vendar enakim imenom. | Ko podrazred nudi lastno izvedbo metode, ki je že definirana v nadrejenem razredu. |
| Preobremenitev metode se lahko zgodi le v istem razredu ali med podrazredom ali nadrejenim razredom. | Preglasitev metode se lahko zgodi samo v podrazredu. |
| Ko pride do napake, se ujame v času prevajanja programa. | Ko pride do napake, se ta ujame v času izvajanja programa. |
| Primer polimorfizma časa prevajanja. | Primer polimorfizma izvajalnega časa. |
| Preobremenitev metode lahko zahteva dedovanje ali pa tudi ne. | Preglasitev metode vedno zahteva dedovanje. |
| Pojavi se znotraj razreda. | Izvaja se v dveh razredih z dednim razmerjem. |
109. Ali lahko preglasimo zasebne metode?
Zasebnih metod v Javi ni mogoče preglasiti. Preglasitev metode je, kjer je metoda v podrazredu implementirana namesto metode iz nadrejenega razreda. Zasebne metode so dostopne le znotraj razreda, v katerem so deklarirane. Ker ta metoda ni vidna drugim razredom in do nje ni mogoče dostopati, je ni mogoče preglasiti.
110. Ali lahko spremenimo obseg preglasene metode v podrazredu?
V Javi ni mogoče spremeniti obsega preglasene metode. Obseg metode podrazreda mora biti enak ali širši od obsega preglasene metode metode Superclass. Preglasena metoda v podrazredu ima lahko na primer javni obseg ali bolj dostopen obseg, kot sta protected ali default, če ima preglasena metoda v nadrazredu javni obseg. Ne more pa imeti bolj ekskluzivnega obsega, kot je zasebno.
111. Ali lahko spremenimo člen vrženja metode nadrazreda, medtem ko ga preglasimo v podrazredu?
Klavzulo vrženja metode nadrazreda lahko spremenimo z nekaterimi omejitvami, spremenimo lahko klavzulo vrženja metode nadrazreda, medtem ko jo preglasimo v podrazredu. Preglasena metoda podrazreda lahko poda samo nepreverjene izjeme, če metoda nadrazreda ne prijavi nobenih izjem. Če metoda nadrazreda deklarira izjemo, lahko metoda podrazreda deklarira isto izjemo, izjemo podrazreda ali pa sploh ne izjavi nobene izjeme. Vendar pa metoda podrazreda ne more deklarirati nadrejene izjeme, ki je širša od tistih, ki so deklarirane v metodi nadrazreda.
112. Ali lahko imate virtualne funkcije v Javi?
Da, Java podpira virtualne funkcije. Funkcije so privzeto navidezne in jih je mogoče spremeniti v nenavidezne s ključno besedo final.
113. Kaj je abstrakcija?
Abstrakcija se nanaša na dejanje predstavljanja bistvenih značilnosti brez vključitve podrobnosti ozadja. Podrobne informacije ali izvedba so skrite. Najpogostejši primer abstrakcije je avto, vemo, kako prižgati motor, pospeševati in se premikati, vendar je način delovanja motorja in njegovih notranjih komponent kompleksna logika, skrita splošnim uporabnikom. To se običajno naredi za obvladovanje kompleksnosti.
114. Kaj je abstraktni razred?
Razreda, deklariranega kot abstraktnega, ni mogoče instancirati, tj. objekta ni mogoče ustvariti. Lahko vsebuje ali ne vsebuje abstraktnih metod, toda če ima razred vsaj eno abstraktno metodo, mora biti razglašen za abstraktnega.
Primer abstraktnega razreda z abstraktno metodo:
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. Kdaj se uporabljajo abstraktne metode?
Abstraktna metoda se uporablja, ko želimo uporabiti metodo, vendar želimo, da se o implementaciji odločijo podrejeni razredi; v tem primeru uporabljamo abstraktne metode z nadrejenimi razredi.
116. Kako se lahko izognete serializaciji v podrejenem razredu, če osnovni razred izvaja vmesnik Serializable?
Serializacija v podrejenem razredu, če osnovni razred izvaja vmesnik Serializable, se ji lahko izognemo tako, da definiramo metodo writeObject() in vržemo NotSerializableException().
117. Kaj je Collection Framework v Javi?
Zbirke so enote objektov v Javi. Ogrodje zbirke je nabor vmesnikov in razredov v Javi, ki se uporabljajo za predstavljanje in upravljanje zbirk objektov na različne načine. Ogrodje zbirke vsebuje razrede (ArrayList, Vector, LinkedList, PriorityQueue, TreeSet) in več vmesnikov (Set, List, Queue, Deque), kjer se vsak vmesnik uporablja za shranjevanje določene vrste podatkov.
118. Pojasnite različne vmesnike, ki se uporabljajo v ogrodju zbirke.
Zbirni okvir izvaja
- Zbirni vmesnik
- Seznam vmesnika
- Nastavite vmesnik
- Vmesnik čakalne vrste
- In vmesnik
- Vmesnik zemljevida
Zbirni vmesnik: Zbirka je primarni razpoložljivi vmesnik, ki ga je mogoče uvoziti z uporabo java.util.Collection.
Sintaksa:
public interface Collection extends iterable
119. Kako lahko sinhronizirate ArrayList v Javi?
ArrayList je mogoče sinhronizirati z dvema spodaj omenjenima metodama:
- Uporaba Collections.synchronizedList()
- Uporaba CopyOnWriteArrayList
Uporaba Collections.synchronizedList():
public static List synchronizedList(List list)
Uporaba CopyOnWriteArrayList:
- Ustvarite prazen seznam.
- Izvaja vmesnik List
- Je različica ArrayList, varna za niti
- T predstavlja generično
120. Zakaj potrebujemo sinhroniziran ArrayList, ko imamo v Javi vektorje (ki so sinhronizirani)?
ArrayList je potreben, tudi če imamo vektorje zaradi določenih razlogov:
- ArrayList je hitrejši od Vectors.
- ArrayList podpira večnitnost, medtem ko Vectors podpira samo uporabo ene niti.
- ArrayList je varnejši za uporabo, saj Vectors podpira posamezne niti, posamezne operacije pa so manj varne in trajajo dlje za sinhronizacijo.
- Vektorji veljajo za zastarele v Javi zaradi njihove sinhronizirane narave.
121. Zakaj ne moremo ustvariti generične matrike?
Generičnih nizov ni mogoče ustvariti, ker an niz nosi informacije o vrsti svojih elementov med izvajanjem, zaradi česar med izvajanjem vrže »ArrayStoreException«, če vrsta elementov ni podobna. Ker se generične informacije o vrsti izbrišejo v času prevajanja z brisanjem vrste, bi bilo preverjanje shrambe polja opravljeno tam, kjer bi moralo biti neuspešno.
122. Neprekinjene pomnilniške lokacije se običajno uporabljajo za shranjevanje dejanskih vrednosti v matriko, ne pa v ArrayList. Pojasni.
Elementi matrike so shranjeni na sosednjih pomnilniških lokacijah, kar pomeni, da je vsak element shranjen v ločenem bloku glede na to, da se nahaja znotraj matrike. Ker so elementi matrike shranjeni na sosednjih lokacijah, je relativno enostaven dostop do katerega koli elementa z njegovim indeksom, saj je naslov elementa mogoče izračunati na podlagi lokacije elementa. Toda Java implementira ArrayLists kot dinamična polja, kar pomeni, da se lahko velikost spremeni, ko se elementi odstranijo ali dodajo. Elementi ArrayList niso shranjeni na sosednjih pomnilniških lokacijah, da bi se prilagodili tej dinamični naravi. Namesto tega ArrayList uporablja metodo, znano kot razširljiva matrika, pri kateri se osnovna matrika po potrebi razširi na večjo velikost, elementi pa se nato kopirajo na novo lokacijo. V nasprotju s seznamom ArrayList, ki ima dinamično velikost in ne shranjuje svojih elementov na sosednjih pomnilniških lokacijah, ima niz fiksno velikost in tam so shranjeni njegovi elementi.
123. Pojasnite metodo za pretvorbo ArrayList v Array in Array v ArrayList.
Pretvorba List v ArrayList
Obstaja več načinov za pretvorbo List v ArrayList
Programerji lahko Array pretvorijo v ArrayList z uporabo metode asList() razreda Arrays. Je statična metoda razreda Arrays, ki sprejme objekt List.
Sintaksa:
Arrays.asList(item)
primer:
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); } } Izhod
[Abc, Def, Ghi, Jkl]
Pretvorba ArrayList v Array
Javanski programerji lahko ArrayList pretvorijo v
Sintaksa:
List_object.toArray(new String[List_object.size()])
primer:
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 + ' '); } } Izhod
1 2 3 2 1
124. Kako dinamično raste velikost seznama ArrayList? In navedite tudi, kako se interno izvaja.
Zaradi narave ArrayLists, ki temelji na matriki, dinamično raste v velikosti, kar zagotavlja, da je vedno dovolj prostora za elemente. Ko je element ArrayList prvič ustvarjen, je privzeta zmogljivost približno 10-16 elementov, kar je v bistvu odvisno od različice Jave. Elementi ArrayList se prekopirajo iz prvotne matrike v novo matriko, ko je zmogljivost prvotne matrike polna. Ko se velikost ArrayList dinamično povečuje, razred ustvari novo matriko večjih velikosti in kopira vse elemente iz stare matrike v novo matriko. Zdaj se referenca nove matrike uporablja interno. Ta postopek dinamičnega povečevanja matrike je znan kot spreminjanje velikosti.
125. Kaj je vektor v Javi?
Vektorji v Javi so podobni in lahko v njih shranijo več elementov. Vektorji upoštevajo določena pravila, navedena spodaj:
- Vector je mogoče uvoziti z uporabo Java.util.Vector.
- Vektor je implementiran z uporabo dinamične matrike, saj se velikost vektorja povečuje in zmanjšuje glede na elemente, ki so vanj vstavljeni.
- Elementi vektorja z uporabo indeksnih številk.
- Vektorji so po naravi sinhronizirani, kar pomeni, da so uporabljali samo eno nit (v določenem času se izvaja samo en proces).
- Vektor vsebuje številne metode, ki niso del ogrodja zbirk.
Sintaksa:
Vector gfg = new Vector(size, increment);
126. Kako narediti Java ArrayList samo za branje?
Seznam ArrayList je mogoče pripraviti le z uporabo metode, ki jo ponujajo zbirke z uporabo metode Collections.unmodifiableList().
Sintaksa:
array_readonly = Collections.unmodifiableList(ArrayList);
primer:
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); } } } Izhod
Initial list: [X, Y, Z] ReadOnly ArrayList: [X, Y, Z] If add element in the ReadOnly ArrayList Exception is thrown : java.lang.UnsupportedOperationException
127. Kaj je prednostna čakalna vrsta v Javi?
Prednostna čakalna vrsta je abstraktni podatkovni tip, podoben navadni čakalni vrsti ali podatkovni strukturi sklada. Elementi, shranjeni v elementih, so odvisni od prioritete, definirane od nizke do visoke. PriorityQueue temelji na prednostni kopici.
Sintaksa:
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()); } } Izhod
10
128. Razložite razred LinkedList.
Razred LinkedList je Java, ki za shranjevanje elementov uporablja dvojno povezan seznam. Podeduje razred AbstractList in implementira vmesnika List in Deque. Lastnosti razreda LinkedList so navedene spodaj:
- Razredi LinkedList niso sinhronizirani.
- Ohranja vrstni red vstavljanja.
- Uporablja se lahko kot seznam, sklad ali čakalna vrsta.
Sintaksa:
LinkedList list_name=new LinkedList();
129. Kaj je razred Stack v Javi in katere različne metode ponuja?
Razred Stack v Javi je podatkovna struktura LIFO, ki izvaja podatkovno strukturo Last In First Out. Izpeljan je iz razreda Vector, vendar ima funkcije, specifične za sklade. Razred Stack v Javi nudi naslednje metode:
- pokukati(): vrne zgornji element iz sklada, ne da bi ga odstranil
- prazno(): vrne true, če je sklad prazen, v nasprotnem primeru pa false
- potisni(): potisne predmet na vrh sklada
- pop(): odstrani in vrne zgornji element iz sklada
- Iskanje(): vrne prvotni položaj predmeta z vrha sklada. Če objekta ni v skladu, vrne -1
130. Kaj je Set v okviru Java Collections in naštejte njegove različne izvedbe?
Nizi so zbirke, ki ne shranjujejo podvojenih elementov. Ne ohranjajo nobenega vrstnega reda elementov. Ogrodje Java Collections ponuja več izvedb vmesnika Set, vključno z:
- HashSet: HashSet v Javi shrani elemente v tabelo has, ki omogoča hitrejše iskanje in hitrejše vstavljanje. HashSet ni urejen.
- LinkedHashSet: LinkedHashSet je implementacija HashSet, ki ohranja vrstni red vstavljanja elementov.
- TreeSet: TreeSet shrani elemente v razvrščenem vrstnem redu, ki je določen z naravnim vrstnim redom elementov ali s primerjalnikom po meri, ki je na voljo v času ustvarjanja.
131. Kaj je razred HashSet v Javi in kako shranjuje elemente?
Razred HashSet implementira vmesnik Set v Java Collections Framework in je član razreda HashSet. Za razliko od podvojenih vrednosti shranjuje zbirko različnih elementov. V tej izvedbi je vsak element preslikan v indeks v matriki z uporabo zgoščevalne funkcije, indeks pa se uporablja za hiter dostop do elementa. Izdela indeks za element v matriki, kjer je shranjen na podlagi vhodnega elementa. Ob predpostavki, da zgoščevalna funkcija ustrezno porazdeli elemente med vedra, razred HashSet zagotavlja zmogljivost v stalnem času za osnovne operacije (dodajanje, odstranjevanje, vsebovanje in velikost).
132. Kaj je LinkedHashSet v Java Collections Framework?
LinkedHashSet je urejena različica Hashseta, ki jo vzdržuje dvojno povezan seznam v vseh elementih. Zelo je koristno, ko je potreben vrstni red ponovitev. Med iteracijo v LinkedHashSet se elementi vrnejo v enakem vrstnem redu, kot so vstavljeni.
Sintaksa:
LinkedHashSet hs = new LinkedHashSet();
primer:
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); } } Izhod
Values:[1, 2, 5, 3]
133. Kaj je vmesnik Map v Javi?
Vmesnik zemljevida je prisoten v zbirki Java in se lahko uporablja s paketom Java.util. Vmesnik preslikave se uporablja za preslikavo vrednosti v obliki obrazca ključ-vrednost. Zemljevid vsebuje vse edinstvene ključe. Ponuja tudi metode, povezane z njim, kot so containsKey(), contains value () itd.
V vmesniku zemljevidov je več vrst zemljevidov, kot je navedeno spodaj:
- SortedMap
- TreeMap
- HashMap
- LinkedHashMap
134. Razložite Treemap v Javi
TreeMap je vrsta zemljevida, ki shranjuje podatke v obliki para ključ-vrednost. Izvaja se z uporabo rdeče-črnega drevesa. Funkcije TreeMap so:
- Vsebuje samo edinstvene elemente.
- Ne more imeti ključa NULL
- Lahko ima več vrednosti NULL.
- Ni sinhroniziran.
- Ohranja naraščajoči vrstni red.
135. Kaj je EnumSet?
EnumSet je specializirana izvedba vmesnika Set za uporabo z vrsto oštevilčenja. Nekaj funkcij EnumSeta je:
- Ni sinhroniziran.
- Hitreje kot HashSet.
- Vsi elementi v EnumSet-u morajo izhajati iz enega samega tipa oštevilčenja.
- Ne dovoljuje ničelnih objektov in vrže NullPointerException za izjeme.
- Uporablja varen iterator.
Sintaksa:
public abstract class EnumSet
Parameter: E določa elemente.
136. Kaj je BlockingQueue?
Čakalna vrsta za blokiranje je čakalna vrsta, ki podpira operacije, ki čakajo, da čakalna vrsta med pridobivanjem in odstranjevanjem elementa postane neprazna, in čakajo, da med dodajanjem elementa v čakalni vrsti postane na voljo prostor.
Sintaksa:
public interface BlockingQueue extends Queue
Parametri: E je vrsta elementov, shranjenih v zbirki
137. Kaj je ConcurrentHashMap v Javi in ali ga implementirate?
ConcurrentHashMap je implementiran z uporabo Hashtable.
Sintaksa:
public class ConcurrentHashMap extends AbstractMap implements ConcurrentMap, Serializable
Parametri : K je ključni tip objekta in V je vrednostni tip objekta
138. Ali lahko uporabite kateri koli razred kot ključ zemljevida?
Da, kot ključ zemljevida lahko uporabimo kateri koli razred, če sledi določenim vnaprej določenim pravilom, navedenim spodaj:
- Razred, ki preglasi metodo equals(), mora preglasiti tudi metodo hashCode().
- Razred concurrentHashMap je varen za niti.
- Privzeta raven sočasnosti ConcurrentHashMap je 16.
- Vstavljanje ničelnih objektov v ConcurrentHashMap ni mogoče kot ključ ali vrednost.
139. Kaj je iterator?
Vmesnik Iterator ponuja metode za ponavljanje katere koli zbirke v Javi. Iterator je zamenjava za enumeration v ogrodju zbirk Java. Primerek iteratorja lahko pridobi iz zbirke z uporabo metode _iterator()_. Klicatelju tudi omogoča, da med iteracijo odstrani elemente iz osnovne zbirke.
140. Kaj je naštevanje?
Naštevanje je podatkovni tip, ki ga določi uporabnik. Uporablja se predvsem za dodeljevanje imen integralnim konstantam, zaradi imen je program enostaven za branje in vzdrževanje. Glavni cilj enuma je definirati uporabniško definirane tipe podatkov.
primer:
// A simple enum example where enum is declared // outside any class (Note enum keyword instead of // class keyword) enum Color { RED, GREEN, BLUE; } 141. Kakšna je razlika med zbirko in zbirkami?
| Zbirka | Zbirke |
|---|---|
| Zbirka je vmesnik. | Zbirke so razred. |
| Zagotavlja standardno funkcionalnost strukture podatkov. | Namenjen je razvrščanju in sinhronizaciji elementov zbirke. |
| Ponuja metode, ki jih je mogoče uporabiti za strukturo podatkov. | Ponuja statične metode, ki jih je mogoče uporabiti za različne operacije. |
142. Razlikujte med Array in ArrayList v Javi.
| Array | ArrayList |
|---|---|
| Enodimenzionalno ali večdimenzionalno | Enodimenzionalno |
| Za in za vsako uporabljeno za ponovitev | Tukaj se iterator uporablja za prečkanje riverArrayList |
| ključna beseda length vrne velikost matrike. | metoda size() se uporablja za izračun velikosti seznama ArrayList. |
| Matrika ima fiksno velikost. | Velikost ArrayList je dinamična in jo je mogoče po potrebi povečati ali zmanjšati. |
| Je hitrejši, saj zgoraj vidimo, da ima fiksno velikost | Zaradi svoje dinamične narave je razmeroma počasnejši |
| Primitivne tipe podatkov je mogoče shraniti neposredno v malo verjetne objekte. | Primitivni podatkovni tipi niso neposredno dodani malo verjetnim nizom, dodani so posredno s pomočjo samodejnega pakiranja in razpakiranja |
| Tukaj jih ni mogoče dodati, zato je vrsta med nevarnimi. | Tukaj jih je mogoče dodati, s čimer postane ArrayList varen za tipe. |
| Operator dodelitve služi le namenu | Tukaj se uporablja posebna metoda, znana kot metoda add(). |
143. Kakšna je razlika med Array in Collection v Javi?
| Array | Zbirke |
|---|---|
| Array v Javi ima fiksno velikost. | Zbirke v Javi imajo dinamične velikosti. |
| V matriki so elementi shranjeni na sosednjih pomnilniških lokacijah. | V zbirkah Elementi niso nujno shranjeni na sosednjih pomnilniških lokacijah. |
| Objekte in osnovne tipe podatkov je mogoče shraniti v matriko. | Predmete lahko hranimo samo v zbirkah. |
| Za spreminjanje velikosti matrike je potrebna ročna manipulacija. | Spreminjanje velikosti v zbirkah se obravnava samodejno. |
| Matrika ima osnovne metode za manipulacijo. | Zbirke imajo napredne metode za manipulacijo in ponavljanje. |
| Matrika je na voljo od začetka Jave. | Zbirke so bile predstavljene v Javi 1.2. |
144. Razlika med ArrayList in LinkedList.
| ArrayList | LinkedList |
|---|---|
| ArrayList je implementiran kot razširljiva matrika. | LinkedList je implementiran kot dvojno povezan seznam. |
| V ArrayList so elementi shranjeni na sosednjih pomnilniških lokacijah | Elementi LinkedList so shranjeni na nesosednjih pomnilniških lokacijah, saj ima vsak element referenco na naslednji in prejšnji element. |
| ArrayLists so hitrejši za naključni dostop. | LinkedLists so hitrejši za operacije vstavljanja in brisanja |
| ArrayLists so pomnilniško učinkovitejši. | LinkedList je manj učinkovit pri pomnilniku |
| ArrayLists Uporabite več pomnilnika zaradi ohranjanja velikosti polja. | LinkedList Uporablja manj pomnilnika, saj ima le sklice na elemente |
| Operacija iskanja je v ArrayList hitrejša. | Operacija iskanja je počasnejša v LinkedList |
145. Razlikujte med ArrayList in Vector v Javi.
| ArrayList | Vektor |
|---|---|
| ArrayLists so implementirani kot razširljiva matrika. | Vektor je implementiran kot rastoča matrika. |
| ArrayList ni sinhroniziran. | Vektor je sinhroniziran. |
| ArrayLists so hitrejši za nehkratne operacije. | Vektor je počasnejši za nesočasne operacije zaradi dodatnih stroškov sinhronizacije. |
| ArrayLists so bili predstavljeni v Javi 1.2. | Vektor je bil predstavljen v JDK 1.0. |
| Priporočljivo za uporabo v okolju z eno nitjo. | Vektorji so priporočljivi za uporabo v večnitnem okolju. |
| Privzeta začetna zmogljivost ArrayLists je 10. | V Vektorjih je privzeta začetna zmogljivost 10, privzeti prirast pa je dvakrat večja. |
| Zmogljivost ArrayList je visoka. | Vektorska zmogljivost je nizka. |
146. Kakšna je razlika med Iteratorjem in ListIteratorjem?
| Iterator | ListIterator |
|---|---|
| Elemente v zbirki lahko prečka samo v smeri naprej. | Lahko prečka elemente v zbirki v smeri naprej in nazaj. |
| Uporablja se za premikanje po zemljevidu, seznamu in nizu. | Prečka lahko le List in ne druga dva. |
| Indeksov ni mogoče pridobiti z Iteratorjem | Ima metode, kot sta nextIndex() in previousIndex() za pridobivanje indeksov elementov kadar koli med prečkanjem seznama. |
| Elementov v zbirki ni mogoče spremeniti ali zamenjati | Lahko spremeni ali zamenja elemente s pomočjo nabora (E e) |
| Elementov ni mogoče dodati in vrže tudi ConcurrentModificationException. | Zbirki lahko kadar koli preprosto doda elemente. |
| Nekatere metode Iteratorja so next(), remove() in hasNext(). | Določene metode ListIteratorja so next(), previous(), hasNext(), hasPrevious(), add(E e). |
147. Razlikujte med HashMap in HashTable.
| HashMap | HashTable |
|---|---|
| HashMap ni sinhroniziran | HashTable je sinhroniziran |
| En ključ je lahko vrednost NULL | Vrednosti NULL niso dovoljene |
| Iterator se uporablja za prečkanje HashMap. | Uporabljata se lahko tako Iterator kot Enumertar |
| HashMap je hitrejši. | HashTable je počasnejši v primerjavi s HashMap. |
148. Kakšna je razlika med Iteratorjem in Enumeration?
| Iterator | Naštevanje |
|---|---|
| Iterator lahko prečka tako podedovane kot tudi nepodedovane elemente. | Naštevanje lahko prečka le podedovane elemente. |
| Iterator je hiter. | Enumeracija ni hitra. |
| Iteratorji so počasnejši. | Štetje je hitrejše. |
| Iterator lahko izvede operacijo odstranitve med prečkanjem zbirke. | Enumeration lahko izvaja samo operacije prečkanja zbirke. |
149. Kakšna je razlika med primerljivim in primerjalnim?
| Primerljivo | Primerjalnik |
|---|---|
| Vmesnik je prisoten v paketu java.lang. | Vmesnik je prisoten v paketu java.util. |
| Ponuja metodo compareTo() za razvrščanje elementov. | Ponuja metodo compare() za razvrščanje elementov. |
| Zagotavlja posamezna zaporedja razvrščanja. | Zagotavlja več zaporedij razvrščanja. |
| Logika razvrščanja mora biti v istem razredu, katerega objekt boste razvrščali. | Logika razvrščanja bi morala biti v ločenem razredu za pisanje različnih razvrščanj na podlagi različnih atributov predmetov. |
| Metoda razvršča podatke po določenem vrstnem redu. | Metoda razvrsti podatke v skladu s prilagojenim vrstnim redom razvrščanja. |
| Vpliva na prvotni razred. | Ne vpliva na prvotni razred. |
| Pogosto implementirano v API-ju s koledarjem, razredi ovoja, datumom in nizom. | Implementiran je za razvrščanje primerkov razredov tretjih oseb. |
150. Kakšna je razlika med Set in Map?
| Set | Zemljevid |
|---|---|
| Vmesnik Set je implementiran s paketom java.util. | Zemljevid je implementiran s paketom java.util. |
| Lahko razširi vmesnik zbiranja. | Ne razširja vmesnika zbirke. |
| Ne dovoljuje podvojenih vrednosti. | Omogoča podvojene vrednosti. |
| Nabor lahko razvrsti samo eno ničelno vrednost. | Zemljevid lahko razvrsti več ničelnih vrednosti. |
Vprašanja za razgovor o Java Intermediate
151. Razložite iteratorja FailFast in iterator FailSafe skupaj s primeri za vsakega.
Iterator FailFast je iterator, ki vrže a ConcurrentModificationException če zazna, da je bila osnovna zbirka spremenjena med uporabo iteratorja. To je privzeto vedenje iteratorjev v Java Collections Framework. Na primer, iterator za HashMap je FailFast.
primer:
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); } } } } Izhod:
Exception in thread 'main' java.util.ConcurrentModificationException
Iterator FailSafe ne vrže a ConcurrentModificationException če je osnovna zbirka spremenjena med uporabo iteratorja. Druga možnost je, da ustvari posnetek zbirke v času, ko je iterator ustvarjen, in ponovi posnetek. Na primer, iterator za ConcurrentHashMap je FailSafe.
primer:
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. Kaj je obravnava izjem?
An Izjema je dogodek, ki prekine običajni potek programa in zahteva posebno obdelavo. Med izvajanjem programa je mogoče napake in nenačrtovane dogodke obravnavati z uporabo mehanizma za obravnavanje izjem Java. Spodaj je nekaj razlogov, zakaj se v Javi pojavijo izjeme:
- Okvara naprave
- Izguba omrežne povezave
- Napake kode
- Odpiranje datoteke, ki ni na voljo
- Neveljaven uporabniški vnos
- Fizične omejitve (zmanjkalo pomnilnika diska)
153. Koliko vrst izjem se lahko pojavi v programu Java?
V Javi sta na splošno dve vrsti izjem:
- Vgrajene izjeme: Vgrajene izjeme v Javi zagotavljajo knjižnice Java. Te izjeme je mogoče nadalje razdeliti v dve podkategoriji, tj. označene in nepreverjene izjeme. Spodaj je nekaj vgrajenih izjem v Javi:
- ArrayIndexOutOfBoundsExceptions
- ClassNotFoundException
- FileNotFoundException
- IOException
- NullPointerException
- ArithmeticException
- InterruptedException
- RuntimeException
- Uporabniško določene izjeme: Uporabniško določene izjeme določijo programerji sami za obravnavo nekaterih posebnih situacij ali napak, ki jih vgrajene izjeme ne pokrivajo. Za definiranje uporabniško določenih izjem je treba definirati nov razred, ki razširja ustrezen razred izjem. Uporabniško določene izjeme v Javi se uporabljajo, kadar so v Javi vgrajene izjeme.
154. Razlika med napako in izjemo.
| Napake | Izjeme |
|---|---|
| Obnovitev po napakah ni mogoča. | Obnovite izjeme bodisi z uporabo bloka poskusi-ulovi ali vračanjem izjem nazaj klicatelju. |
| Vse napake so nepreverjene vrste v Javi. | Vključuje tako označene kot nepreverjene vrste, ki se pojavljajo. |
| Napake so večinoma posledica okolja, v katerem se program izvaja. | Program je večinoma odgovoren za povzročanje izjem. |
| Napake se lahko pojavijo tako v času prevajanja kot tudi med izvajanjem. Čas prevajanja: sintaksna napaka, čas izvajanja: logična napaka. | Vse izjeme se pojavijo med izvajanjem, vendar so preverjene izjeme znane prevajalniku, nepreverjene pa ne. |
| Definirani so v paketu java.lang.Error. | Definirani so v paketu java.lang.Exception |
| Primeri : java.lang.StackOverflowError, java.lang.OutOfMemoryError | Primeri : Preverjene izjeme: SQLException, IOException Nepreverjene izjeme: ArrayIndexOutOfBoundException, NullPointerException, ArithmeticException. |
155. Pojasnite hierarhijo razredov Java Exception.
Vse vrste izjem in napak v Javi so podrazredi razreda throwable, ki je osnovni razred hierarhije. Ta razred se nato uporabi za izjemne pogoje, ki bi jih morali ujeti uporabniški programi. NullPointerException je primer takšne izjeme. Druga veja napake, ki jo uporablja izvajalni sistem Java za označevanje napak, povezanih z JRE. StackOverflowError je primer ene od takih napak.
156. Razložite izjeme izvajalnega časa.
Izjeme med izvajanjem so izjeme, ki se pojavijo med izvajanjem kode, v nasprotju z izjemami v času prevajanja, ki se pojavijo med prevajanjem. Izjeme med izvajanjem so nepreverjene izjeme, saj jih JVM ne upošteva.
Primeri izjem med izvajanjem v Javi vključujejo:
- NullPointerException: To se zgodi, ko aplikacija poskuša uporabiti referenco ničelnega objekta.
- ArrayIndexOutOfBoundsException: To se zgodi, ko aplikacija poskuša dostopati do indeksa polja, ki je izven meja.
- ArithmeticException: To se zgodi, ko aplikacija poskuša deliti z ničlo.
- IllegalArgumentException: To se zgodi, ko je metoda posredovana nedovoljenemu ali neprimernemu argumentu.
Za razliko od preverjenih izjem izjeme izvajalnega časa ne zahtevajo deklaracije v klavzuli vrženja ali zajemanja v bloku poskusi-ulovi. Vendar je priporočljivo obravnavanje izjem med izvajanjem, da se zagotovijo smiselna sporočila o napakah in prepreči zrušitev sistema. Ker izjeme med izvajanjem zagotavljajo bolj specifične informacije o težavi kot preverjene izjeme, razvijalcem omogočajo lažje in hitrejše odkrivanje in popravljanje programskih napak.
157. Kaj je NullPointerException?
To je vrsta izjeme med izvajanjem, ki se vrže, ko program poskuša uporabiti referenco objekta, ki ima ničelno vrednost. Glavna uporaba NullPointerException je označevanje, da referenčni spremenljivki ni dodeljena nobena vrednost, prav tako se uporablja za implementacijo podatkovnih struktur, kot so povezani seznami in drevesa.
158. Kdaj je vržena izjema ArrayStoreException?
ArrayStoreException se sproži, ko se poskusi shraniti napačno vrsto predmeta v matriko predmetov.
primer:
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); } } primer:
Exception in thread 'main' java.lang.ArrayStoreException: java.lang.Integer at GFG.main(GFG.java:6)
159. Kakšna je razlika med označeno in nepreverjeno izjemo?
Preverjena izjema:
Preverjene izjeme so izjeme, ki se preverijo med prevajanjem programa. Če neka koda v metodi v programu vrže preverjeno izjemo, mora metoda obravnavati izjemo ali pa podati izjemo s ključno besedo throws.
Preverjene izjeme so dveh vrst:
- Popolnoma preverjene izjeme: preverjeni so tudi vsi njegovi podrejeni razredi, na primer IOException in InterruptedException.
- Delno preverjene izjeme: nekateri njegovi podrejeni razredi niso preverjeni, kot je izjema.
Nepreverjena izjema:
Nepreverjene so izjeme, ki niso preverjene v času prevajanja programa. Izjeme pod razredi Error in RuntimeException so nepreverjene izjeme, vse ostalo pod throwable je preverjeno.
160. Kaj je osnovni razred za napako in izjemo?
Napaka je nezakonita operacija, ki jo izvede uporabnik in povzroči nenormalnost v programu. Izjeme so nepričakovani dogodki ali stanja, do katerih pride med izvajanjem programa, izjema zmoti običajni tok navodil programa.
Napake in izjeme imajo skupen nadrejeni razred, ki je razred java.lang.Throwable.
161. Ali mora vsakemu poskusnemu bloku slediti blok catch?
Ne, ni treba uporabiti bloka catch po bloku poskusa v Javi, saj lahko ustvarimo drugo kombinacijo z blokom finally. Končno je blok, ki se izvaja ne glede na to, ali je izjema vržena ali ne.
162. Kaj je širjenje izjem?
Širjenje izjeme je postopek, pri katerem se izjema spusti od vrha do dna sklada. Če enkrat ni ujeta, se izjema spet spusti na prejšnjo metodo in tako naprej, dokler ni ujeta ali dokler ne doseže samega dna sklada klicev.
163. Kaj se bo zgodilo, če postavite System.exit(0) v blok try ali catch? Bo končno blokirana izvedba?
System.exit(int) ima zmožnost sprožiti SecurityException. Torej, če je v primeru varnosti vržena izjema, bo izveden končni blok, sicer bo JVM med klicanjem sistema zaprt. exit(0), zaradi česar končni blok ne bo izveden.
164. Kaj razumete pod kloniranjem predmetov in kako to dosežete v Javi?
To je postopek ustvarjanja natančne kopije katerega koli predmeta. Da bi to podprl, mora razred Java implementirati vmesnik Cloneable paketa java.lang in preglasiti metodo clone(), ki jo zagotavlja razred Object, katerega sintaksa je:
Protected Object clone() vrže CloneNotSupportedException{ return (Object)super.clone();}Če vmesnik Cloneable ni implementiran in je samo metoda preglasena, se v Javi pojavi CloneNotSupportedException.
165. Kako izjeme vplivajo na program, če jih ne obravnava?
Izjeme so odgovorne za nenadno prekinitev izvajanja programa med izvajanjem in koda, napisana po pojavu izjeme, se ne izvede.
166. Kakšna je uporaba končne ključne besede?
Končna ključna beseda se uporablja, da funkcije postanejo nenavidezne. Privzeto so vse funkcije navidezne, tako da uporabimo končno ključno besedo, da postane nenavidezna.
167. Kakšen namen imajo ključne besede finale, finally in finalize?
jaz). končno:
final je ključna beseda, ki se uporablja s spremenljivko, metodo ali razredom, tako da jih ni mogoče preglasiti.
primer:
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; } } Izhod:
./GFG.java:6: error: cannot assign a value to final variable x x=50; ^ 1 error
ii). končno
finally je blok kode, ki se uporablja s poskusnim ulovom pri obravnavanju izjem. Koda, napisana v bloku finally, se izvaja ne glede na to, ali je vržena izjema ali ne.
primer:
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'); } } } Izhod
Try block Always runs even without exceptions
iii). dokončati
To je metoda, ki se pokliče tik pred brisanjem/uničenjem objektov, ki so primerni za zbiranje smeti, da izvede dejavnost čiščenja.
primer:
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'); } } Izhod
Main function running
168. Kakšna je razlika med this() in super() v Javi?
| to ( ) | super( ) |
|---|---|
| Predstavlja trenutni primerek razreda. | Predstavlja trenutni primerek nadrejenega razreda. |
| Pokliče privzeti konstruktor istega razreda. | Pokliče privzeti konstruktor osnovnega razreda. |
| Dostopajte do metod istega razreda. | Dostop do metod nadrejenega razreda. |
| Točke trenutnega primerka razreda. | Kaže na instanco nadrazreda. |
169. Kaj je večopravilnost?
Večopravilnost v Javi se nanaša na zmožnost programa, da izvaja več nalog hkrati. To zmorejo niti, ki so hitre operacije v enem samem programu. Izvajanje več stvari hkrati je znano kot večopravilnost.
primer:
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. Kaj mislite z večnitnim programom?
Večnitni programi v Javi vsebujejo niti, ki se izvajajo sočasno, namesto da bi se izvajale zaporedno. Računalnik lahko učinkoviteje uporablja svoje vire, če združi več nalog hkrati. Vsak program z večnitnostjo omogoča več kot enemu uporabniku istočasno uporabo programa brez izvajanja več kopij. Večnitni program je zasnovan tako, da izvaja več procesov hkrati, kar lahko izboljša učinkovitost programa in omogoča, da program uporablja več procesorjev ter izboljša splošno prepustnost.
171. Kakšne so prednosti večnitnosti?
Obstaja več prednosti uporabe večnitnosti, ki so naslednje:
- Odzivnost: Odzivnost uporabnika se poveča, ker večnitna interaktivna aplikacija omogoča izvajanje kode tudi, ko je razdelek blokiran ali izvaja dolgotrajen proces.
- Skupna raba virov: Proces lahko izvaja posredovanje sporočil in skupni pomnilnik zaradi večnitnosti.
- Ekonomičnost: Spomin lahko delimo, zaradi česar so procesi ekonomični.
- Razširljivost: večnitnost na več strojih CPE poveča vzporednost.
- Boljša komunikacija: Funkcije sinhronizacije niti izboljšajo komunikacijo med procesi.
- Uporaba večprocesorske arhitekture
- Zmanjšana poraba sistemskih virov
172. Na katera dva načina je mogoče ustvariti nit?
Večnitnost je funkcija Jave, ki omogoča sočasno izvajanje dveh ali več delov programa za največjo izkoriščenost procesorja. Na splošno so niti majhni, lahki procesi z ločenimi potmi izvajanja. Te niti uporabljajo pomnilnik v skupni rabi, vendar delujejo neodvisno, tako da če ena nit odpove, to ne vpliva na druge niti. Obstajata dva načina za ustvarjanje niti:
- Z razširitvijo razreda Thread
- Z implementacijo vmesnika Runnable.
Z razširitvijo razreda Thread
Ustvarimo razred, ki razširja java.lang.Thread class . Ta razred preglasi metodo run(), ki je na voljo v razredu Thread. Nit začne svoje življenje znotraj metode run().
Sintaksa:
public class MyThread extends Thread { public void run() { // thread code goes here } } Z implementacijo vmesnika Runnable
Ustvarimo nov razred, ki izvaja java.lang.Runnable vmesnik in preglasi metodo run(). Nato ustvarimo primerek predmeta Thread in za ta objekt pokličemo metodo start().
Sintaksa:
public class MyRunnable implements Runnable { public void run() { // thread code goes here } } 173. Kaj je nit?
Niti v Javi so lahki podprocesi z najmanjšo enoto procesov in imajo tudi ločene poti izvajanja. Te niti uporabljajo skupni pomnilnik, vendar delujejo neodvisno, zato, če obstaja izjema v nitih, ki ne vplivajo na delovanje drugih niti, čeprav si delijo isti pomnilnik. Nit ima svoj programski števec, izvajalni sklad in lokalne spremenljivke, vendar si deli isti pomnilniški prostor z drugimi nitmi v istem procesu. Java ponuja vgrajeno podporo za večnitnost prek Zagonski vmesnik in Razred niti .
174. Razlikujete med procesom in nitjo?
Proces in nit sta izvršilni enoti v računalniškem sistemu, vendar se razlikujeta na več načinov:
| Proces | nit |
|---|---|
| Proces je program v izvajanju. | Nit je eno samo zaporedje navodil znotraj procesa. |
| Postopek traja več časa, da se zaključi. | Prekinitev niti traja manj časa. |
| Postopek traja več časa za preklop konteksta. | Nit potrebuje manj časa za preklop konteksta. |
| Postopek je manj učinkovit v smislu komunikacije. | Nit je bolj učinkovita v smislu komunikacije. |
| Postopek je izoliran. | Niti si delijo pomnilnik. |
| Proces ima lasten nadzorni blok procesa, sklad in naslovni prostor. | Nit ima tiskano vezje staršev, lasten nadzorni blok niti ter sklad in skupni naslovni prostor. |
| Proces ne deli podatkov med seboj. | Niti si izmenjujejo podatke. |
175. Opišite življenjski cikel niti?
A nit v Javi kadar koli obstaja v katerem koli od naslednjih stanj. Nit je v katerem koli trenutku le v enem od prikazanih stanj:
- Novo: Nit je bila ustvarjena, vendar se še ni začela.
- Izvedljivo: Nit se izvaja, izvaja svojo nalogo ali je pripravljena za izvajanje, če ni drugih niti z višjo prednostjo.
- Blokirano: Nit je začasno prekinjena in čaka na vir ali dogodek.
- Čakanje: Nit čaka, da druga nit izvede nalogo ali da poteče določen čas.
- Prekinjeno: Nit je opravila svojo nalogo ali pa jo je prekinila druga nit.
176. Razložite metodo suspend() pod razredom Thread.
Metoda suspend() razreda Thread v Javi začasno prekine izvajanje niti. Ko je nit začasno ustavljena, preide v blokirano stanje in operacijski sistem je ne načrtuje, kar pomeni, da ne bo mogla izvesti svoje naloge, dokler se ne nadaljuje. V sodobnem programskem jeziku java obstajajo varnejše in prilagodljivejše alternative metodam suspend(). Ta metoda ne vrne nobene vrednosti.
Sintaksa:
public final void suspend();
primer:
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'); } } Izhod:
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. Razložite glavno nit pod Izvajanje razreda niti.
Java nudi vgrajeno podporo za večnitno programiranje. Glavna nit se šteje za nadrejeno nit vseh drugih niti, ustvarjenih med izvajanjem programa. Glavna nit se samodejno ustvari, ko se program začne izvajati. Ta nit izvaja glavno metodo programa. Odgovoren je za izvajanje glavne logike programa Java ter za upravljanje uporabniških vnosnih operacij. Glavna nit služi kot osnovna nit, iz katere nastanejo vse druge podrejene niti.
178. Kaj je demonska nit?
Nit demona v Javi je nit nizke prioritete, ki se uporablja za izvajanje operacij v ozadju ali nalog, ki se uporabljajo za neprekinjeno izvajanje. kot so zbiranje smeti, pošiljanje signalov, poslušalci dejanj itd. Daemon niti v Javi imajo nižjo prednost kot uporabniške niti, kar pomeni, da se lahko izvajajo samo, ko se ne izvaja nobena uporabniška nit. Daemon niti v Javi so uporabne funkcije, ki so potrebne za opravila v ozadju, ki ne zahtevajo izrecne zaustavitve ali dokončanja. Omogoča učinkovitejšo uporabo sistemskih virov in se uporablja za poenostavitev virov ter lahko poenostavi dolgotrajna opravila.
179. Kakšni so načini, na katere lahko nit preide v čakalno stanje?
Nit je lahek proces, ki teče sočasno z drugo nitjo znotraj enega samega procesa. Vsaka nit lahko izvaja drugačno nalogo in deli vire znotraj enega procesa. Nit v Javi lahko preide v stanje čakanja na več različnih načinov:
- Klic metode Sleep(): Spanje () se uporablja za zaustavitev izvajanja niti za določen čas. Medtem ko je nit začasno ustavljena, preide v stanje čakanja.
- Metoda Wait(): Ta metoda se uporablja za čakanje na nit, dokler ji druga nit ne sporoči, da se prebudi. Nit preide v stanje čakanja, dokler ne prejme obvestila druge niti.
- Metoda Join(): Metodo Join() lahko uporabite za čakanje, da nit zaključi izvajanje. Klicajoča nit preide v stanje čakanja, dokler ciljna nit ni dokončana.
- Čakanje na V/I operacije: Če nit čaka na dokončanje vhodno/izhodne operacije, preide v stanje čakanja, dokler se operacija ne konča.
- Težave s sinhronizacijo: Če pride do težav s sinhronizacijo v večnitni aplikaciji, lahko niti preidejo v stanje čakanja, dokler težave s sinhronizacijo niso odpravljene.
180. Kako poteka večnitnost na računalniku z enim CPE?
Java uporablja tehniko, imenovano delitev časa, običajno imenovano časovno rezanje, za implementacijo večnitnosti v računalnikih z enim CPU. Videz vzporednega izvajanja se ustvari s preklapljanjem CPU med aktivnimi nitmi. Operacijski sistem je zadolžen za zaporedno dodeljevanje procesorskega časa vsaki niti in razporejanje niti.
Da prepreči medsebojno delovanje niti in ustvarjanje situacij tekmovanja ali drugih težav, ima Java številne načine za upravljanje vedenja niti, vključno s sinhronizacijo in zaklepanjem. Izvedljivo je ustvariti večnitne programerje, ki delujejo pravilno in učinkovito na stroju z enim CPE-jem, tako da uravnavajo interakcijo med nitmi in zagotavljajo, da so ključni deli kode sinhronizirani. V nasprotju z izvajanjem istega programa v računalniku z več procesorji ali jedri lahko večnitnost na enem procesorju daje le videz vzporednosti, dejanske izboljšave zmogljivosti pa so lahko skromne. Operacijski sistem razdeli čas procesorja, ki je na voljo, ko se na enem procesorju izvajajo številne niti, na majhne časovne rezine in vsaki niti dodeli časovni rez za izvedbo. Hitro preklapljanje med nitmi s strani operacijskega sistema ustvarja videz vzporednega izvajanja. Zdi se, da je preklapljanje med nitmi takojšnje, ker so časovni odseki pogosto zelo majhni, reda velikosti milisekund ali mikrosekund.
Vprašanja za intervju z Javo za izkušene
181. Katere so različne vrste prioritet niti v Javi? In kakšna je privzeta prioriteta niti, ki jo dodeli JVM?
Prioritete v nitih so koncept, pri katerem ima vsaka nit prednost, kar v laičnem jeziku lahko rečemo, da ima vsak predmet tukaj prednost, ki je predstavljena s številkami v razponu od 1 do 10. Spodaj so v Javi omenjene različne vrste lastnosti niti:
- MIN_PRIORITY
- MAX_PRIORITY
- NORM_PRIORITY
Niti je privzeto dodeljena NORM_PRIORITY.
182. Zakaj je zbiranje smeti potrebno v Javi?
Za Javo je zbiranje smeti potrebno, da se izognete uhajanju pomnilnika, ki lahko povzroči zrušitev programa in postane nestabilen. Zbiranju smeti v Javi se ni mogoče izogniti. Za razliko od C++ zbiranje smeti v Javi programerjem pomaga, da se osredotočijo na razvoj aplikacije, namesto da upravljajo pomnilniške vire in skrbijo zaradi uhajanja pomnilnika. Java Virtual Machine (JVM) samodejno občasno upravlja pomnilnik z zagonom zbiralnika smeti, ki sprosti neuporabljen pomnilnik v aplikaciji. Zbiranje smeti naredi pomnilnik Java učinkovit, ker odstrani nereferencirane predmete iz pomnilnika kopice.
183. Kakšna je pomanjkljivost zbiranja smeti?
Poleg številnih prednosti ima Garbage Collector nekatere slabosti, ki so navedene spodaj:
- Glavna pomanjkljivost zbiranja smeti je, da lahko povzroči premore pri izvajanju aplikacije, saj čisti pomnilnik, kar upočasni delovanje aplikacije.
- Proces zbiranja smeti je nedeterminističen, zaradi česar je težko predvideti, kdaj pride do zbiranja smeti, kar povzroči nepredvidljivo vedenje v aplikacijah. Na primer, če pišemo kateri koli program, se programerji težko odločijo, ali je težavo povzročilo zbiranje smeti ali kateri koli drug dejavnik v programu.
- Zbiranje smeti lahko tudi poveča porabo pomnilnika, če program ustvari in zavrže veliko kratkoživih objektov.
184. Pojasnite razliko med manjšim, večjim in popolnim zbiranjem smeti.
Navidezni stroj Java (JVM) odstrani predmete, ki niso več v uporabi, s pomočjo zbiralnika smeti, ki redno preverja in odstranjuje te predmete. V JVM obstajajo različne vrste zbiranja smeti, vsaka z različnimi značilnostmi in posledicami delovanja. Glavne vrste zbiranja smeti so:
- Odvoz manjših smeti: Ta vrsta zbiranja smeti, znana tudi kot zbiranje smeti mlade generacije, se uporablja za zbiranje in ponovno pridobivanje pomnilnika, ki ga uporabljajo kratkotrajni objekti (predmeti, ki se hitro ustvarijo in zavržejo).
- Večje zbiranje smeti: Ta vrsta zbiranja smeti, znana tudi kot zbiranje smeti stare generacije, se uporablja za zbiranje in ponovno pridobitev pomnilnika, ki ga uporabljajo objekti z dolgo življenjsko dobo (objekti, ki preživijo več manjših zbiranj smeti in so povišani v staro generacijo).
- Popolno zbiranje smeti: Med popolnim zbiranjem smeti se zbirajo in vračajo spomini vseh generacij, vključno s spomini mladih in starih. Popolno zbiranje smeti običajno traja dlje kot dokončanje manjšega ali večjega zbiranja smeti, zaradi katerega se ta aplikacija začasno zaustavi.
185. Kako boste identificirali večje in manjše zbiranje smeti v Javi?
Večje zbiranje smeti poteka v prostoru preživelih, manjše zbiranje smeti pa v prostoru Eden za izvedbo rutine označevanja in pometanja. Oba lahko identificiramo na podlagi izhoda, kjer manjša zbirka natisne GC, medtem ko glavna zbirka natisne celoten GC za primer, ko je beleženje zbiranja smeti omogočeno z -XX:PrintGCDetails ali verbose:gc.
186. Kaj je puščanje pomnilnika in kako vpliva na zbiranje smeti?
V Javi lahko puščanje pomnilnika povzročijo številni dejavniki, na primer nepravilno zapiranje virov, zadrževanje referenc na objekte dlje, kot je potrebno, ali ustvarjanje preveč objektov po nepotrebnem. Obstajajo situacije, v katerih zbiralnik smeti ne zbira predmetov, ker obstaja sklicevanje na te objekte. V teh situacijah, ko aplikacija ustvari veliko objektov in jih ne uporablja ter ima vsak objekt nekaj veljavnih referenc, zbiralnik smeti v Javi ne more uničiti objektov. Ti neuporabni predmeti, ki programu ne dajejo nobene vrednosti, so znani kot puščanje pomnilnika. Puščanje pomnilnika lahko negativno vpliva na zbiranje smeti, saj zbiralniku smeti prepreči pridobitev neuporabljenega pomnilnika. To vedenje bo vodilo do počasnega delovanja ali včasih do okvare sistema. V programu je pomembno, da se izognete puščanju pomnilnika s pravilnim upravljanjem virov in referenc objektov.
primer:
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'); } } Izhod:
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. Poimenujte nekaj razredov, ki so prisotni v paketu java.util.regex.
Regular Expressions ali Regex v Javi je API, ki se uporablja za iskanje in manipulacijo nizov v Javi. Ustvari vzorce nizov, ki lahko izvlečejo potrebne podatke iz nizov ali posplošijo vzorec.
Spodaj omenjeni java.util.regex so 3 razredi:
- Pattern Class: lahko definira vzorce
- Razred ujemanja: lahko izvaja operacije ujemanja z besedilom z uporabo vzorcev
- Razred PatternSyntaxException: lahko kaže na sintaktično napako v vzorcu regularnega izraza.
Poleg tega je paket 3 razredov sestavljen iz enega vmesnika MatchResult Interface, ki se lahko uporablja za predstavitev rezultata operacije ujemanja.
188. Napišite regularni izraz za potrditev gesla. Geslo se mora začeti s črko in slediti alfanumerični znaki; Njegova dolžina mora biti med 8 in 20.
regex = ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&-+=()])(?=S+$).{8, 20}$ Pojasnilo:
- ^ se uporablja za začetni znak niza.
- (?=.*[0-9]), ki se uporablja za števko, se mora pojaviti vsaj enkrat.
- (?=.*[a-z]), ki se uporablja za male črke, se mora pojaviti vsaj enkrat.
- (?=.*[A-Z]), ki se uporablja za velike črke, ki se morajo pojaviti vsaj enkrat v podnizu.
- (?=.*[@#$%^&-+=()] se uporablja za poseben znak, ki se mora pojaviti vsaj enkrat.
- (?=S+$) presledki ne dovoljujejo v celotnem nizu.
- .{8, 20} se uporablja za najmanj 8 znakov in največ 20 znakov.
- $ uporabljen za konec niza.
189. Kaj je JDBC?
JDBC standardni API se uporablja za povezovanje aplikacij Java in relacijskih baz podatkov. Ponuja zbirko razredov in vmesnikov, ki programerjem omogočajo uporabo programskega jezika Java za komunikacijo z bazo podatkov. Razredi in vmesnik JDBC omogočajo aplikaciji pošiljanje zahtev, ki jih naredijo uporabniki, v podano bazo podatkov. Na splošno obstajajo štiri komponente JDBC, s katerimi sodeluje z bazo podatkov:
- JDBC API
- Upravitelj gonilnikov JDBC
- Testna zbirka JDBC
- Gonilniki mostov JDBC-ODBC
190. Kaj je gonilnik JDBC?
Gonilnik JDBC je komponenta programske opreme, ki se uporablja za omogočanje interakcije aplikacije Java z bazo podatkov. JDBC zagotavlja implementacijo API-ja JDBC za določen sistem upravljanja baz podatkov, ki mu omogoča povezavo baze podatkov, izvajanje stavkov SQL in pridobivanje podatkov. Obstajajo štiri vrste gonilnikov JDBC:
- Gonilnik JDBC-ODBC Bridge
- Native-API gonilnik
- Gonilnik omrežnega protokola
- Tanek voznik
191. Kakšni so koraki za povezavo z bazo podatkov v Javi?
Obstajajo določeni koraki za povezavo baze podatkov in programa Java, kot je navedeno spodaj:
- Uvozite pakete
- Naložite gonilnike z metodo forName().
- Registrirajte gonilnike s programom DriverManager
- Vzpostavite povezavo z uporabo predmeta Connection class
- Ustvari izjavo
- Izvedite poizvedbo
- Zaprite povezave
192. Kaj so komponente JDBC API?
Komponente API-ja JDBC zagotavljajo različne metode in vmesnike za preprosto komunikacijo z bazami podatkov, ponujajo pa tudi pakete, kot sta java Se in java EE, ki zagotavljata možnost pisanja, ko se zažene kjer koli (WORA).
Sintaksa:
java.sql.*;
193. Kaj je vmesnik JDBC Connection?
Vmesnik za povezljivost baze podatkov Java (JDBC) je komponenta programske opreme, ki aplikacijam Java omogoča interakcijo z bazami podatkov. Za izboljšanje povezave potrebuje JDBC gonilnike za vsako bazo podatkov.
194. Kaj ima vmesnik JDBC ResultSet?
Vmesnik JDBC ResultSet se uporablja za shranjevanje podatkov iz baze podatkov in njihovo uporabo v našem programu Java. Uporabimo lahko tudi ResultSet za posodobitev podatkov z metodami updateXXX(). Objekt ResultSet kaže kazalec pred prvo vrstico rezultatov podatkov. Z uporabo metode next() lahko ponavljamo skozi ResultSet.
195. Kaj je nabor vrstic JDBC?
JDBC RowSet ponuja način za shranjevanje podatkov v obliki tabele. RowSet je vmesnik v Javi, ki se lahko uporablja znotraj paketa java.sql. Povezava med objektom RowSet in virom podatkov se vzdržuje ves njegov življenjski cikel. Nabori vrstic so razvrščeni v pet kategorij glede na spodaj navedeno izvedbo:
- JdbcRowSet
- CachedRowSet
- WebRowSet
- FilteredRowSet
- JoinRowSet
196. Kakšna je vloga razreda JDBC DriverManager?
Razred JDBC DriverManager deluje kot vmesnik za uporabnike in gonilnike. Uporablja se na številne načine, kot je navedeno spodaj:
- Uporablja se za ustvarjanje povezave med aplikacijo Java in bazo podatkov.
- Pomaga slediti gonilnikom, ki so na voljo.
- Lahko pomaga vzpostaviti povezavo med bazo podatkov in ustreznimi gonilniki.
- Vsebuje vse metode, ki lahko registrirajo in odjavi razrede gonilnikov baze podatkov.
- Metoda DriverManager.registerDriver() lahko vzdržuje seznam razredov gonilnikov, ki so se sami registrirali.
Vprašanja za intervju o razlikah v Javi
197. Razlikujte med Iterable in Iterator.
| Ponovljivo | Iterator |
|---|---|
| Iterable ponuja način za ponavljanje zaporedja elementov. | Iterator pomaga pri zaporednem ponavljanju zbirke elementov. |
| iterator() metoda vrne iterator. | hasNext() in Naslednji() metode so potrebne. |
| Odstrani() metoda ni obvezna. | Odstrani() metoda je zahtevana v iteratorju. |
| Primeri so Seznam, čakalna vrsta in nastavitev. | Primeri so ListIterator, Enumeration in ArrayIterator. |
198. Razlikujte med seznamom in nizom.
| Seznam | Set |
|---|---|
| Naročeno | Neurejeno |
| Seznam dovoljuje dvojnike. | Set ne dovoljuje podvojenih vrednosti. |
| Seznam je dostopen z indeksom. | Do nabora se dostopa s hashcode. |
| Shranite lahko več ničelnih elementov. | Ničelni element se lahko shrani samo enkrat. |
| Primeri so ArrayList, LinkedList itd. | Primera sta HashSet in TreeSet. LinkedHashSet itd. |
199. Razlikujte med seznamom in zemljevidom.
| Seznam | Zemljevid |
|---|---|
| Vmesnik seznama omogoča podvojene elemente. | Zemljevid ne dovoljuje podvojenih elementov. |
| Seznam ohranja vrstni red vstavljanja. | Zemljevid ne vzdržuje vrstnega reda vstavljanja. |
| Shranite lahko več ničelnih elementov. | Zemljevid dovoljuje največ en ničelni ključ in poljubno število ničelnih vrednosti. |
| Seznam ponuja metodo get() za pridobitev elementa na določenem indeksu. | Zemljevid ne ponuja metode pridobivanja za pridobivanje elementov na določenem indeksu. |
| Seznam implementira ArrayList itd. | Zemljevid izvajajo HashMap, TreeMap, LinkedHashMap |
200. Razlikujte med čakalno vrsto in skladom.
| Čakalna vrsta | Stack |
|---|---|
| Podatkovna struktura čakalne vrste se uporablja za shranjevanje elementov in se uporablja za izvajanje operacij, kot so uvrstitev v čakalno vrsto, odstranitev iz čakalne vrste z zadnje strani ali konca čakalne vrste. | Podatkovna struktura sklada se uporablja za shranjevanje elementov in za izvajanje operacij, kot je potiskanje, izstopanje z vrha sklada. |
| Podatkovna struktura čakalne vrste Izvaja vrstni red FIFO. | Podatkovna struktura sklada Izvaja vrstni red LIFO. |
| Vstavljanje in brisanje v čakalne vrste poteka z nasprotnih koncev seznama. Brisanje poteka na začetku seznama, vstavljanje pa na zadnji strani seznama. | Vstavljanje in brisanje v skladih poteka samo z enega konca seznama, imenovanega vrh. |
| Operacija vstavljanja se imenuje operacija v vrsti. | Operacija vstavljanja se imenuje operacija potiskanja. |
| Čakalna vrsta se običajno uporablja za reševanje težav, povezanih z zaporedno obdelavo. | Stack se običajno uporablja za reševanje problemov, povezanih z rekurzijo. |
201. Razlikujte med PriorityQueue in TreeSet.
| Prednostna čakalna vrsta | TreeSet |
|---|---|
| Kot temeljno podatkovno strukturo uporablja čakalno vrsto. | Kot temeljno podatkovno strukturo uporablja Set. |
| Ta struktura podatkov omogoča podvojene elemente | Ta struktura podatkov ne dovoljuje podvojenih elementov |
| Prednostno čakalno vrsto izvaja razred PriorityQueue. | TreeSet implementira razred TreeSet. |
| PriorityQueue je na voljo v JDK 1.5. | TreeSet je na voljo v JDK 1.4. |
| PriorityQueue pq = nova PriorityQueue(); | reeSet ts = new TreeSet(); |
202. Razlikujte med enojno in dvojno povezanim seznamom.
| Posamezno povezan seznam | Dvojno povezan seznam |
|---|---|
| Posamezno povezani seznam vsebuje samo dva segmenta, tj. Podatke in Povezavo. | Dvojno povezani seznam vsebuje tri segmente, tj. podatke in dva kazalca. |
| Prehod v enojno povezanem seznamu je mogoč samo v smeri naprej. | Prehod v dvojno povezanem seznamu je mogoč samo v obeh smereh naprej in nazaj. |
| Uporablja manj pomnilnika, saj ima vsako posamezno vozlišče samo en kazalec. | Zahteva več pomnilnika kot enojno povezan seznam, saj ima vsako vozlišče dva kazalca. |
| Enostaven za uporabo in vstavljanje vozlišč na začetek seznama. | Nekoliko bolj zapleten za uporabo in enostaven za vstavljanje na konec seznama. |
| Časovna zahtevnost vstavljanja in brisanja je O(n). | Časovna zahtevnost vstavljanja in brisanja je O(1). |
| | |
203. Razlikujte med Failfast in Failsafe.
| FailFast | FailSafe |
|---|---|
| Failsfast odpove takoj, ko zazna sočasno spremembo med časom iteracije. | Failsafe nadaljuje s ponavljanjem po izvirni zbirki in ustvari tudi kopijo za spreminjanje. |
| Failfast se običajno uporablja v okoljih z eno nitjo. | Failsafe se uporablja v večnitnih okoljih. |
| Failfast ne dovoljuje nobenih sprememb med ponovitvijo. | Failsafe omogoča spreminjanje v času iteracije. |
| Failfast je hiter v primerjavi z failsafe, saj ne vključuje kopiranja zbirke. | Failsafe je na splošno počasen v primerjavi z failfast. |
| FailFast meti ConcurrentModificationException če je zbirka spremenjena med ponovitvijo. | FailSafe ne vrže nobene izjeme, ampak namesto tega ustvari kopijo zbirke za ponavljanje. |
204. Razlikujte med HashMap in TreeMap.
| HashMap | TreeMap |
|---|---|
| Hasmap uporablja zgoščeno tabelo za shranjevanje parov ključ-vrednost. | Treemap uporablja rdeče-črna drevesa za shranjevanje para ključ-vrednost. |
| Hashmap ne vzdržuje nobenega posebnega vrstnega reda za pare ključ-vrednost. | Treemap ohranja naraven vrstni red na podlagi ključev. |
| Vrstni red ponovitev ni zagotovljen v hashmapu. | Iteracija je razvrščena glede na ključe. |
| Hashmapi so hitrejši za iskanje v primerjavi z Treemap. | Pridobivanje v Treemap je počasnejše, saj za iskanje ključev uporablja prečkanje drevesa. |
| Hashmap je implementiran z uporabo niza povezanih seznamov. | TreeMap je implementiran z uporabo rdeče-črnega drevesa. |
| Hashmap za primerjavo ključev uporablja metodo equals() razreda Object. | TreeMap uporablja metodo compareTo() za primerjavo ključev. |
205. Razlikujte med Queue in Deque.
| Čakalna vrsta | O čem |
|---|---|
| Čakalna vrsta je linearna podatkovna struktura, ki se uporablja za shranjevanje zbirke elementov. | Deque, znan tudi kot dvosmerna čakalna vrsta, je tudi linearna podatkovna struktura, ki shranjuje zbirko elementov z operacijami za odstranjevanje in dodajanje z obeh koncev. |
| Elemente v čakalni vrsti je mogoče vstaviti samo na konec podatkovne strukture. | Elemente je mogoče vstaviti z obeh koncev podatkovne strukture. |
| Čakalno vrsto je mogoče implementirati z uporabo Array ali Linked List. | Dequeue je mogoče implementirati z uporabo Circular Array ali Doubly Linked List. |
| Čakalne vrste se običajno uporabljajo za izvedbo čakalne vrste ali čakalne vrste opravil. | Deque se uporablja za implementacijo sklada ali elementov iz vrste iz vrste z obeh koncev. |
| | |
206. Razlikujte med HashSet in TreeSet.
| HashSet | TreeSet |
|---|---|
| HashSet ni urejen. | TreeSet temelji na naravnem vrstnem redu. |
| HashSet dovoljuje ničelne elemente. | TreeSet ne dovoljuje ničelnih elementov. |
| HashSet implementira razred HashSet. | TreeSet implementira razred TreeSet. |
| HashSet hs = nov HashSet(); | TreeSet ts = new TreeSet(); |
Vprašanja za intervju z Javo – pogosta vprašanja
Q1. Kakšna je plača razvijalca Java v Indiji?
Po različnih virih je povprečna plača Java Backend razvijalca več kot 14 lakhov na leto, kar je 30 % več kot katera koli druga vloga razvijalca . Tukaj si lahko ogledate tudi naš najnovejši tečaj GeekforGeeks portal za vadbo lahko tudi v pomoč.
V5. Kako lahko izstopam na razgovoru za Java?
Če želite izstopati v intervjuju za Java, pokažite globoko razumevanje konceptov in praktičnih aplikacij Java. Pokažite svoje sposobnosti reševanja problemov tako, da razložite svoj pristop k kompleksnim scenarijem in ponudite učinkovite rešitve. Poleg tega poudarite vse pomembne projekte ali prispevke, ki ste jih dali skupnosti Java. Izkazovanje navdušenja, dobre komunikacije in pripravljenosti za učenje lahko prav tako pustijo pozitiven vtis.