top 50 core java interview questions
Ofte stillede Java-spørgsmål og svar med eksempler med eksempler:
I denne vejledning har vi dækket næsten 50+ vigtige Java-interviewspørgsmål til nybegyndere og erfarne kandidater.
Dette indlæg på JAVA Interview Questions er forberedt til at hjælpe dig med at forstå de grundlæggende begreber ved Java-programmering til interviewformål. Alle de vigtige JAVA-koncepter forklares her med eksempler til nem forståelse.
Denne vejledning dækker JAVA-emner som grundlæggende Java-definitioner, OOP-koncepter, Access-specifikationer, Samlinger, Undtagelser, Tråde, Serialisering osv., Med eksempler for at gøre dig perfekt klar at stå sikkert overfor ethvert JAVA-interview.
Mest populære Java-spørgsmål og svar
Nedenfor er en omfattende liste over de vigtigste og mest stillede grundlæggende og avancerede Java-programmeringsinterviewspørgsmål med detaljerede svar.
Q # 1) Hvad er JAVA?
Svar: Java er et programmeringssprog på højt niveau og er platformuafhængigt.
Java er en samling objekter. Det blev udviklet af Sun Microsystems. Der er mange applikationer, websteder og spil, der er udviklet ved hjælp af Java.
Q # 2) Hvad er funktionerne i JAVA?
Svar: Funktionerne i Java er som følger:
- OOP-koncepter
- Objektorienteret
- Arv
- Indkapsling
- Polymorfisme
- Abstraktion
- Platform uafhængig: Et enkelt program fungerer på forskellige platforme uden nogen ændring.
- Høj ydeevne: JIT (Just In Time compiler) muliggør høj ydeevne i Java. JIT konverterer bytekoden til maskinsprog, og derefter starter JVM udførelsen.
- Flertrådet: En strøm af udførelse kaldes en tråd. JVM opretter en tråd, der kaldes hovedtråden. Brugeren kan oprette flere tråde ved at udvide trådklassen eller ved at implementere Runnable-grænsefladen.
Q # 3) Hvordan aktiverer Java høj ydeevne?
Svar: Java bruger Just In Time-kompilatoren til at aktivere høj ydeevne. Det bruges til at konvertere instruktionerne til bytekoder.
Q # 4) Navngiv Java IDE'erne?
Svar: Eclipse og NetBeans er IDE'er fra JAVA.
spørgsmål og svar til kvalitetssikringsinterview pdf
Q # 5) Hvad mener du med Constructor?
Svar: Konstruktør kan forklares detaljeret med indhentede punkter:
- Når et nyt objekt oprettes i et program, kaldes en konstruktør svarende til klassen.
- Konstruktøren er en metode, der har samme navn som klassens navn.
- Hvis en bruger ikke implicit opretter en konstruktør, oprettes der en standardkonstruktør.
- Konstruktøren kan overbelastes.
- Hvis brugeren oprettede en konstruktør med en parameter, skulle han oprette en anden konstruktør eksplicit uden en parameter.
Q # 6) Hvad menes med den lokale variabel og instansvariablen?
Svar:
Lokale variabler er defineret i metoden og omfanget af de variabler, der findes inde i selve metoden.
Instansvariabel er defineret inde i klassen og uden for metoden, og omfanget af variablerne findes i hele klassen.
Q # 7) Hvad er en klasse?
Svar: Alle Java-koder er defineret i en klasse. Det har variabler og metoder.
Variabler er attributter, der definerer en klasses tilstand.
Metoder er det sted, hvor den nøjagtige forretningslogik skal udføres. Den indeholder et sæt udsagn (eller) instruktioner for at opfylde det særlige krav.
Eksempel:
public class Addition{ //Class name declaration int a = 5; //Variable declaration int b= 5; public void add(){ //Method declaration int c = a+b; } }
Q # 8) Hvad er et objekt?
Svar: En forekomst af en klasse kaldes et objekt. Objektet har tilstand og adfærd.
Når JVM læser 'nyt ()' nøgleordet, opretter det en forekomst af den klasse.
Eksempel:
public class Addition{ public static void main(String() args){ Addion add = new Addition();//Object creation } }
Ovenstående kode opretter objektet til Addition-klassen.
Q # 9) Hvad er OOP-begreberne?
Svar: OOPs begreber inkluderer:
- Arv
- Indkapsling
- Polymorfisme
- Abstraktion
- Interface
Foreslået Læs = >> Top OOP'er Interview Spørgsmål
Spørgsmål nr. 10) Hvad er arv?
Svar: Arv betyder, at en klasse kan udvides til en anden klasse. Så koderne kan genbruges fra en klasse til en anden klasse. Den eksisterende klasse er kendt som Super-klassen, mens den afledte klasse er kendt som en underklasse.
Eksempel:
Super class: public class Manupulation(){ } Sub class: public class Addition extends Manipulation(){ }
Arv gælder kun for de offentlige og beskyttede medlemmer. Private medlemmer kan ikke arves.
Q # 11) Hvad er indkapsling?
Svar: Formål med indkapsling:
- Beskytter koden mod andre.
- Kode vedligeholdelse.
Eksempel:
Vi erklærer 'a' som en heltalsvariabel, og den skal ikke være negativ.
public class Addition(){ int a=5; }
Hvis nogen ændrer den nøjagtige variabel som “ a = -5 ' så er det dårligt.
For at løse problemet skal vi følge nedenstående trin:
- Vi kan gøre variablen privat eller beskyttet.
- Brug metoder til offentlig adgang som f.eks. Sæt og få.
Så ovenstående kode kan ændres som:
public class Addition(){ private int a = 5; //Here the variable is marked as private }
Koden nedenfor viser getter og setter.
Betingelser kan leveres, mens variablen indstilles.
get A(){ } set A(int a){ if(a>0){// Here condition is applied ......... } }
Til indkapsling er vi nødt til at gøre alle forekomstvariabler private og oprette setter og getter til disse variabler. Hvilket igen vil tvinge andre til at ringe til setterne i stedet for at få adgang til dataene direkte.
Spørgsmål nr. 12) Hvad er polymorfisme?
Svar: Polymorfisme betyder mange former.
Et enkelt objekt kan henvise til superklassen eller underklassen afhængigt af den referencetype, der kaldes polymorfisme.
Eksempel:
Public class Manipulation(){ //Super class public void add(){ } } public class Addition extends Manipulation(){ // Sub class public void add(){ } public static void main(String args()){ Manipulation addition = new Addition();//Manipulation is reference type and Addition is reference type addition.add(); } }
Ved hjælp af referencetypen Manipulation kan vi kalde Addition-klassen 'add ()' -metode. Denne evne er kendt som polymorfisme. Polymorfisme gælder for overordnet og ikke til overbelastning .
Spørgsmål nr. 13) Hvad menes der med metodeoverstyring?
Svar: Metodeoverstyring sker, hvis underklassemetoden opfylder nedenstående betingelser med Superklassemetoden:
- Metodenavnet skal være det samme
- Argumentet skal være det samme
- Returtype skal også være den samme
Den vigtigste fordel ved tilsidesættelse er, at underklassen kan give nogle specifikke oplysninger om denne underklassetype end superklassen.
Eksempel:
public class Manipulation{ //Super class public void add(){ ……………… } } Public class Addition extends Manipulation(){ Public void add(){ ……….. } Public static void main(String args()){ Manipulation addition = new Addition(); //Polimorphism is applied addition.add(); // It calls the Sub class add() method } }
addition.add () metoden kalder add () -metoden i underklassen og ikke den overordnede klasse. Så det tilsidesætter Super-class-metoden og er kendt som Method Overriding.
Spørgsmål nr. 14) Hvad menes med overbelastning?
Svar: Metodeoverbelastning sker for forskellige klasser eller inden for samme klasse.
For metodeoverbelastning skal underklassemetoden opfylde nedenstående betingelser med Superklasse-metodemetoderne (eller) i den samme klasse selv:
- Samme metode navn
- Forskellige argumenttyper
- Der kan være forskellige returtyper
Eksempel:
public class Manipulation{ //Super class public void add(String name){ //String parameter ……………… } } Public class Addition extends Manipulation(){ Public void add(){//No Parameter ……….. } Public void add(int a){ //integer parameter } Public static void main(String args()){ Addition addition = new Addition(); addition.add(); } }
Her har add () -metoden forskellige parametre i Addition-klassen er overbelastet i samme klasse som med superklassen.
Bemærk: Polymorfisme er ikke anvendelig til metodeoverbelastning.
Spørgsmål nr. 15) Hvad menes med interface?
Svar: Flere arv kan ikke opnås i java. For at løse dette problem introduceres Interface-konceptet.
En grænseflade er en skabelon, der kun har metodedeklarationer og ikke metodeimplementeringen.
Eksempel:
Public abstract interface IManupulation{ //Interface declaration Public abstract void add();//method declaration public abstract void subtract(); }
- Alle metoderne i grænsefladen er internt offentlig abstrakt ugyldig .
- Alle variabler i grænsefladen er internt offentlig statisk finale det er konstanter.
- Klasser kan implementere grænsefladen og ikke udvides.
- Klassen, der implementerer grænsefladen, skal give en implementering af alle de metoder, der er angivet i grænsefladen.
public class Manupulation implements IManupulation{ //Manupulation class uses the interface Public void add(){ …………… } Public void subtract(){ ……………. } }
Spørgsmål nr. 16) Hvad menes med abstrakt klasse?
Svar: Vi kan oprette klassen Abstrakt ved hjælp af nøgleordet “Abstrakt” før klassens navn. En abstrakt klasse kan have både “abstrakte” metoder og “ikke-abstrakte” metoder, der er en konkret klasse.
Abstrakt metode:
Metoden, der kun har erklæringen og ikke implementeringen, kaldes den abstrakte metode og den har nøgleordet kaldet “abstrakt”. Erklæringer slutter med et semikolon.
Eksempel:
public abstract class Manupulation{ public abstract void add();//Abstract method declaration Public void subtract(){ } }
- En abstrakt klasse kan også have en ikke-abstrakt metode.
- Den konkrete underklasse, der udvider abstraktklassen, skal give implementeringen af abstrakte metoder.
Q # 17) Forskel mellem Array og Array List.
Svar: Forskellen mellem Array og Array List kan forstås fra nedenstående tabel:
Array | Array List |
---|---|
Størrelsen skal gives på tidspunktet for array-erklæringen. Streng () navn = ny streng (2) | Størrelse er muligvis ikke påkrævet. Det ændrer størrelsen dynamisk. ArrayList navn = ny ArrayList |
For at sætte et objekt i array skal vi specificere indekset. navn (1) = “bog” | Intet indeks krævet. name.add ('bog') |
Array er ikke typeparameteriseret | ArrayList i java 5.0 er parametreret. F.eks .: Denne vinkelbeslag er en typeparameter, der betyder en liste over streng. |
Q # 18) Forskel mellem streng, strengbygger og strengbuffer.
Svar:
Snor: Strengvariabler gemmes i en “konstant strengpulje”. Når strengreferencen ændrer den gamle værdi, der findes i 'konstant strengpulje', kan den ikke slettes.
Eksempel:
String name = “book”;
Konstant streng pool
.
Hvis navnværdien er ændret fra 'bog' til 'pen'.
Konstant streng pool
Derefter forbliver den ældre værdi i den konstante strengpulje.
Strengbuffer:
- Her lagres strengværdier i en stak. Hvis værdierne ændres, erstatter den nye værdi den ældre værdi.
- Strengbufferen er synkroniseret, hvilket er trådsikker.
- Ydeevnen er langsommere end String Builder.
Eksempel:
Stringbuffernavn = ”bog”;
Når navnværdien er blevet ændret til 'pen', slettes 'bogen' i stakken.
String Builder:
Dette er det samme som String Buffer bortset fra String Builder, som ikke er trådet sikkert, som ikke er synkroniseret. Så tydeligvis er præstationen hurtig.
Spørgsmål nr. 19) Forklar om specifikationer for offentlig og privat adgang.
Svar: Metoder og instansvariabler er kendt som medlemmer.
Offentlig:
Offentlige medlemmer er synlige i den samme pakke såvel som den udvendige pakke, der er til andre pakker.
Offentlige medlemmer af klasse A er synlige for klasse B (samme pakke) såvel som klasse C (forskellige pakker).
Privat:
Private medlemmer er kun synlige i samme klasse og ikke for de andre klasser i samme pakke såvel som klasser i de udvendige pakker.
Private medlemmer i klasse A er kun synlige i denne klasse. Det er usynligt for klasse B såvel som klasse C.
Q # 20) Forskel mellem standard- og beskyttet adgangsspecifikatorer.
Svar:
Standard: Metoder og variabler, der er erklæret i en klasse uden nogen adgangsspecifikatorer, kaldes standard.
Standardmedlemmer i klasse A er synlige for de andre klasser, der er inde i pakken og usynlige for de klasser, der er uden for pakken.
Så klasse A-medlemmer er synlige for klasse B og usynlige for klasse C.
Beskyttet:
.
Beskyttet er det samme som standard, men hvis en klasse strækker sig, er den synlig, selvom den er uden for pakken.
Klasse A-medlemmer er synlige for klasse B, fordi det er inde i pakken. For klasse C er det usynligt, men hvis klasse C udvider klasse A, er medlemmerne synlige for klasse C, selvom det er uden for pakken.
Q # 21) Forskel mellem HashMap og HashTable.
Svar: Forskellen mellem HashMap og HashTable kan ses nedenfor:
HashMap | HashTable |
---|---|
Metoder synkroniseres ikke | Nøglemetoder synkroniseres |
Ikke trådsikkerhed | Trådsikkerhed |
Iterator bruges til at gentage værdierne | Enumerator bruges til at gentage værdierne |
Tillader en nul-nøgle og flere nulværdier | Tillader ikke noget, der er ugyldigt |
Ydeevnen er høj end HashTable | Ydeevnen er langsom |
Q # 22) Forskel mellem HashSet og TreeSet.
Svar: Forskellen mellem HashSet og TreeSet kan ses nedenfor:
HashSet | TreeSet |
---|---|
Indsatte elementer er i tilfældig rækkefølge | Vedligeholder elementerne i den sorterede rækkefølge |
Kan lagre null-objekter | Kunne ikke gemme null-objekter |
Ydeevne er hurtig | Ydeevnen er langsom |
Q # 23) Forskel mellem abstrakt klasse og interface.
Svar: Forskellene mellem abstrakt klasse og interface er som følger:
Abstrakt klasse:
- Abstrakte klasser har en standardkonstruktør, og det kaldes, når den konkrete underklasse instantieres.
- Den indeholder såvel abstrakte metoder som ikke-abstrakte metoder.
- Klassen, der udvider abstraktklassen, bør ikke kræve implementering af alle metoderne, kun abstrakte metoder skal implementeres i den konkrete underklasse.
- Abstrakt klasse indeholder instansvariabler.
Interface:
- Det har ingen konstruktører og kunne ikke instantieres.
- Den abstrakte metode alene bør erklæres.
- Klasser, der implementerer grænsefladen, skal give implementeringen af alle metoderne.
- Interfacet indeholder kun konstanter.
Spørgsmål # 24) Hvad er betydningen af samlinger i Java?
Svar: Samling er en ramme, der er designet til at gemme objekterne og manipulere designet til at gemme objekterne.
Samlinger bruges til at udføre følgende handlinger:
- Søger
- Sortering
- Manipulation
- Indskud
- Sletning
En gruppe objekter er kendt som samlinger. Alle klasser og grænseflader til indsamling er tilgængelige i Java util-pakke.
Spørgsmål nr. 25) Hvad er alle de klasser og grænseflader, der er tilgængelige i samlingerne?
Svar: Nedenfor er de klasser og grænseflader, der er tilgængelige i samlinger:
Grænseflader:
- Kollektion
- Liste
- Sæt
- Kort
- Sorteret sæt
- Sorteret kort
- Kø
Klasser:
- Lister:
- Array List
- Vektor
- Tilknyttet liste
Sæt:
- Hash sæt
- Tilknyttet hash-sæt
- Træ sæt
Kort:
- Hash-kort
- Hash-bord
- TreeMap
- Tilknyttet Hashed-kort
Kø:
- Prioritetskø
Spørgsmål nr. 26) Hvad menes med ordnet og sorteret i samlinger?
Svar:
Bestilt: Det betyder, at de værdier, der er gemt i en samling, er baseret på de værdier, der føjes til samlingen. Så vi kan gentage værdierne fra samlingen i en bestemt rækkefølge.
Sorteret: Sorteringsmekanismer kan anvendes internt eller eksternt, så gruppen af objekter, der er sorteret i en bestemt samling, er baseret på objekternes egenskaber.
Q # 27) Forklar de forskellige lister, der er tilgængelige i samlingen.
Svar: Værdier, der tilføjes til listen, er baseret på indekspositionen og ordnes efter indeksposition. Duplikater er tilladt.
Listertyperne er:
a) Array List:
- Hurtig iteration og hurtig tilfældig adgang.
- Det er en ordnet samling (efter indeks) og ikke sorteret.
- Det implementerer Random Access Interface.
Eksempel:
public class Fruits{ public static void main (String ( ) args){ ArrayList names=new ArrayList (); names.add (“apple”); names.add (“cherry”); names.add (“kiwi”); names.add (“banana”); names.add (“cherry”); System.out.println (names); } }
Produktion:
(Æble, kirsebær, kiwi, banan, kirsebær)
Fra output opretholder Array List indsættelsesrækkefølgen, og den accepterer duplikaterne. Men det er ikke sorteret.
b) Vektor:
Det er det samme som Array List.
- Vektormetoder synkroniseres.
- Trådsikkerhed.
- Det implementerer også Random Access.
- Trådsikkerhed forårsager normalt et præstationshit.
Eksempel:
public class Fruit { public static void main (String ( ) args){ Vector names = new Vector ( ); names.add (“cherry”); names.add (“apple”); names.add (“banana”); names.add (“kiwi”); names.add (“apple”); System.out.println (“names”); } }
Produktion:
(kirsebær, æble, banan, kiwi, æble)
Vector opretholder også indsætningsordren og accepterer duplikaterne.
c) Sammenkædet liste:
- Elementer er dobbelt forbundet med hinanden.
- Ydeevnen er langsommere end Array-listen.
- Godt valg til indsættelse og sletning.
- I Java 5.0 understøtter den almindelige kømetoder peek (), Pool (), Offer () osv.
Eksempel:
public class Fruit { public static void main (String ( ) args){ Linkedlist names = new linkedlist ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }
Produktion:
(banan, kirsebær, æble, kiwi, banan)
Vedligeholder indsætningsordren og accepterer duplikaterne.
Q # 28) Forklar om Set og deres typer i en samling.
Svar: Sæt bekymrer sig om unikhed. Det tillader ikke duplikationer. Her bruges 'lig ()' -metoden til at bestemme, om to objekter er identiske eller ej.
a) Hash-sæt:
- Uordnet og usorteret.
- Bruger objektets hash-kode til at indsætte værdierne.
- Brug dette, når kravet er 'ingen dubletter og er ligeglad med ordren'.
Eksempel:
public class Fruit { public static void main (String( ) args){ HashSet names = new HashSet ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }
Produktion:
(banan, kirsebær, kiwi, æble)
Det følger ikke nogen indsætningsrækkefølge. Duplikater er ikke tilladt.
b) Tilknyttet hash-sæt:
- En bestilt version af hashsættet er kendt som Linked Hash Set.
- Vedligeholder en dobbeltkoblet liste over alle elementerne.
- Brug dette, når der kræves en iterationsordre.
Eksempel:
public class Fruit { public static void main (String( ) args){ LinkedHashSet; names = new LinkedHashSet ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }
Produktion:
(banan, kirsebær, æble, kiwi)
Den opretholder den indsætningsrækkefølge, som de er blevet føjet til sættet. Duplikater er ikke tilladt.
c) Træsæt:
- Det er en af de to sorterede samlinger.
- Bruger træstrukturen 'Read-Black' og garanterer, at elementerne er i stigende rækkefølge.
- Vi kan konstruere et træ sæt med konstruktøren ved hjælp af en sammenlignelig (eller) komparator.
Eksempel:
public class Fruits{ public static void main (String( )args) { Treeset names= new TreeSet( ) ; names.add(“cherry”); names.add(“banana”); names.add(“apple”); names.add(“kiwi”); names.add(“cherry”); System.out.println(names); } }
Produktion:
(æble, banan, kirsebær, kiwi)
TreeSet sorterer elementerne i stigende rækkefølge. Og duplikater er ikke tilladt.
Q # 29) Forklar om kort og dets typer.
Svar: Kort bekymrer sig om den unikke identifikator. Vi kan kortlægge en unik nøgle til en bestemt værdi. Det er et nøgle / værdipar. Vi kan søge efter en værdi baseret på nøglen. Ligesom sættet bruger kortet også metoden “lig ()” til at afgøre, om to taster er ens eller forskellige.
Kortet er af følgende typer:
a) Hash-kort:
- Uordnet og usorteret kort.
- Hashmap er et godt valg, når vi ikke er ligeglade med ordren.
- Det tillader en nul-nøgle og flere nulværdier.
Eksempel:
Public class Fruit{ Public static void main(String( ) args){ HashMap names =new HashMap( ); names.put(“key1”,“cherry”); names.put (“key2”,“banana”); names.put (“key3”,“apple”); names.put (“key4”,“kiwi”); names.put (“key1”,“cherry”); System.out.println(names); } }
Produktion:
{key2 = banan, key1 = kirsebær, key4 = kiwi, key3 = æble}
Duplikatnøgler er ikke tilladt på kortet.
Den opretholder ingen indsætningsordre og er usorteret.
b) Hash-tabel:
- Ligesom vektornøglen synkroniseres metoderne i klassen.
- Trådsikkerhed og nedsætter derfor ydelsen.
- Det tillader ikke noget, der er nul.
Eksempel:
public class Fruit{ public static void main(String( )args){ Hashtable names =new Hashtable( ); names.put(“key1”,“cherry”); names.put(“key2”,“apple”); names.put(“key3”,“banana”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }
Produktion:
{key2 = æble, key1 = kirsebær, key4 = kiwi, key3 = banan}
Duplikatnøgler er ikke tilladt.
c) Tilknyttet Hash-kort:
- Opretholder indsætningsrækkefølgen.
- Langsommere end Hash-kort.
- Jeg kan forvente en hurtigere iteration.
Eksempel:
public class Fruit{ public static void main(String( ) args){ LinkedHashMap names =new LinkedHashMap( ); names.put(“key1”,“cherry”); names.put(“key2”,“apple”); names.put(“key3”,“banana”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }
Produktion:
{key2 = æble, key1 = kirsebær, key4 = kiwi, key3 = banan}
Duplikatnøgler er ikke tilladt.
d) TreeMap:
- Sorteret kort.
- Ligesom tresæt kan vi konstruere en sorteringsrækkefølge med konstruktøren.
Eksempel:
public class Fruit{ public static void main(String( )args){ TreeMap names =new TreeMap( ); names.put(“key1”,“cherry”); names.put(“key2”,“banana”); names.put(“key3”,“apple”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }
Produktion:
{key1 = kirsebær, key2 = banan, key3 = æble, key4 = kiwi}
Det sorteres i stigende rækkefølge baseret på nøglen. Duplikatnøgler er ikke tilladt.
Q # 30) Forklar prioritetskøen.
Svar: Køgrænseflade
Prioritetskø: Tilknyttet listeklasse er blevet forbedret for at implementere køgrænsefladen. Køer kan håndteres med en linket liste. Formålet med en kø er “Priority-in, Priority-out”.
Derfor bestilles elementer enten naturligt eller ifølge komparatoren. Elementernes rækkefølge repræsenterer deres relative prioritet.
Spørgsmål nr. 31) Hvad menes med undtagelse?
Svar: En undtagelse er et problem, der kan opstå under den normale udførelsesstrøm. En metode kan kaste en undtagelse, når noget klager i løbetid. Hvis denne undtagelse ikke kunne håndteres, afsluttes udførelsen, før den fuldfører opgaven.
Hvis vi håndterede undtagelsen, fortsættes den normale strømning. Undtagelser er en underklasse af java.lang.Exception.
Eksempel på håndtering af undtagelse:
try{ //Risky codes are surrounded by this block }catch(Exception e){ //Exceptions are caught in catch block }
Spørgsmål nr. 32) Hvilke typer undtagelser er der?
Svar: Der er to typer undtagelser. De forklares nedenfor detaljeret.
a) Kontrolleret undtagelse:
Disse undtagelser kontrolleres af kompilatoren på tidspunktet for kompilering. Klasser, der udvider Throwable-klassen undtagen Runtime-undtagelse og Error, kaldes markeret Undtagelse.
Afkrydsede undtagelser skal enten erklære undtagelsen ved hjælp af kaster nøgleord (eller) omgivet af passende forsøg / fangst.
For eksempel, ClassNotFound undtagelse
b) Ikke-markeret undtagelse:
Disse undtagelser kontrolleres ikke af kompilatoren i kompileringstiden. Compileren tvinger ikke til at håndtere disse undtagelser. Det omfatter:
- Aritmetisk undtagelse
- Undtagelse fra ArrayIndexOutOfBounds
Spørgsmål nr. 33) Hvad er de forskellige måder at håndtere undtagelser på?
Svar: To forskellige måder at håndtere undtagelser forklares nedenfor:
a) Brug af prøve / fangst:
Den risikable kode er omgivet af prøveblok. Hvis der opstår en undtagelse, fanges den af fangstblokken, der efterfølges af prøveblokken.
Eksempel:
class Manipulation{ public static void main(String() args){ add(); } Public void add(){ try{ addition(); }catch(Exception e){ e.printStacktrace(); } } }
b) Ved at erklære kaster nøgleord:
I slutningen af metoden kan vi erklære undtagelsen ved hjælp af kaster nøgleord.
Eksempel:
class Manipulation{ public static void main(String() args){ add(); } public void add() throws Exception{ addition(); } }
Spørgsmål nr. 34) Hvad er fordelene ved undtagelseshåndtering?
Svar: Fordelene er som følger:
- Den normale strøm af udførelsen afsluttes ikke, hvis en undtagelse bliver håndteret
- Vi kan identificere problemet ved hjælp af fangsterklæring
Spørgsmål nr. 35) Hvad er undtagelseshåndteringsordene i Java?
Svar: På listen nedenfor er de to nøgleord til undtagelseshåndtering:
a) prøv:
Når en risikabel kode er omgivet af en prøveblok. En undtagelse, der forekommer i prøveblokken, fanges af en fangstblok. Prøv kan følges enten af fangst (eller) til sidst (eller) begge dele. Men enhver af blokkene er obligatorisk.
b) fangst:
Dette efterfølges af en prøveblok. Undtagelser fanges her.
c) endelig:
Dette efterfølges enten af prøveblok (eller) fangstblok. Denne blok bliver udført uanset en undtagelse. Så generelt er der oprydningskoder her.
Q # 36) Forklar om formering af undtagelser.
Svar: Undtagelse kastes først fra metoden, der er øverst på stakken. Hvis det ikke fanger, popper det metoden op og flytter til den forrige metode og så videre, indtil de er fået.
Dette kaldes undtagelsesformering.
Eksempel:
public class Manipulation{ public static void main(String() args){ add(); } public void add(){ addition(); }
Fra ovenstående eksempel ser stakken ud som vist nedenfor:
Hvis der forekommer en undtagelse i tilføjelse () metode fanges ikke, så flytter den til metoden tilføje() . Derefter flyttes det til hoved () metode, og derefter stopper det eksekveringsstrømmen. Det kaldes undtagelsesformering.
Spørgsmål nr. 37) Hvad er det sidste nøgleord i Java?
Svar:
Variabel slutning: Når en variabel er erklæret som endelig, kunne værdien af variablen ikke ændres. Det er som en konstant.
Eksempel:
endelig int = 12;
Endelig metode: Et sidste nøgleord i en metode kunne ikke tilsidesættes. Hvis en metode er markeret som en endelig, kan den ikke tilsidesættes af underklassen.
Afsluttende klasse: Hvis en klasse erklæres som endelig, kunne klassen ikke underklasseres. Ingen klasse kan udvide den sidste klasse.
Q # 38) Hvad er en tråd?
Svar: I Java kaldes udførelsesstrømmen tråd. Hvert java-program har mindst en tråd kaldet hovedtråden, hovedtråden er oprettet af JVM. Brugeren kan definere sine egne tråde ved at udvide trådklassen (eller) ved at implementere den Runnable-grænseflade. Tråde udføres samtidigt.
Eksempel:
public static void main(String() args){//main thread starts here }
Spørgsmål nr. 39) Hvordan opretter du en tråd i Java?
Svar: Der er to måder til rådighed for at lave en tråd.
a) Udvid trådklasse: Udvidelse af en trådklasse og tilsidesættelse af køremetoden. Tråden er tilgængelig i java.lang.thread.
Eksempel:
Public class Addition extends Thread { public void run () { } }
Ulempen ved at bruge en trådklasse er, at vi ikke kan udvide andre klasser, fordi vi allerede har udvidet trådklassen. Vi kan overbelaste run () -metoden i vores klasse.
b) Implementér Runnable interface: En anden måde er ved at implementere den kørbare grænseflade. Til det skal vi levere implementeringen til run () -metoden, der er defineret i grænsefladen.
Eksempel:
Public class Addition implements Runnable { public void run () { } }
Q # 40) Forklar om join () -metoden.
Svar: Join () -metoden bruges til at forbinde en tråd med slutningen af den aktuelt kørende tråd.
Eksempel:
public static void main (String() args){ Thread t = new Thread (); t.start (); t.join (); }
Baseret på ovenstående kode har hovedtråden startet udførelsen. Når den når koden t.start () derefter starter 'tråd t' den egen stak til udførelsen. JVM skifter mellem hovedtråden og 'tråd t'.
Når den når koden t.join () derefter udføres 'tråd t' alene og fuldfører sin opgave, så kun hovedtråden starter udførelsen.
Det er en ikke-statisk metode. Metoden Join () har en overbelastet version. Så vi kan nævne tidsvarigheden i join () -metoden også '.s'.
Spørgsmål nr. 41) Hvad gør udbyttemetoden for trådklassen?
Svar: En yield () -metode flytter den aktuelt kørende tråd til en tilstand, der kan køres, og tillader de andre tråde til udførelse. Så lige tråde med samme prioritet har en chance for at køre. Det er en statisk metode. Det frigør ikke nogen lås.
Yield () -metoden flytter kun tråden tilbage til tilstanden Runnable, og ikke tråden til at sove (), vent () (eller) -blok.
Eksempel:
public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ Thread.yield(); } }
Q # 42) Forklar om ventemetoden ().
Svar: vent () metode bruges til at få tråden til at vente i ventepuljen. Når ventemetoden () udføres under en trådudførelse, giver tråden straks op på objektet og går til ventepuljen. Vent () -metoden fortæller tråden at vente i en given tid.
Derefter vågner tråden op, efter at notify () (eller) notify all () -metoden kaldes.
Vent () og de andre ovennævnte metoder giver ikke låsen på objektet med det samme, før den aktuelt udførende tråd fuldender den synkroniserede kode. Det bruges mest i synkronisering.
Eksempel:
public static void main (String() args){ Thread t = new Thread (); t.start (); Synchronized (t) { Wait(); } }
Q # 43) Forskel mellem notify () -metoden og notifyAll () -metoden i Java.
Svar: Forskellene mellem notify () -metoden og notifyAll () -metoden er angivet nedenfor:
underrette() | notifyAll () |
---|---|
Denne metode bruges til at sende et signal om at vække en enkelt tråd i ventepuljen. | Denne metode sender signalet om at vække alle tråde i en ventende spole. |
Spørgsmål nr. 44) Hvordan stopper man en tråd i java? Forklar om sleep () -metoden i en tråd?
Svar: Vi kan stoppe en tråd ved hjælp af følgende trådmetoder:
- Sovende
- Venter
- Blokeret
Søvn: Sleep () -metoden bruges til at sove den aktuelt udførende tråd i den givne tid. Når tråden er vågnet op, kan den flytte til tilstanden, der kan køres. Så sleep () -metoden bruges til at forsinke udførelsen i en periode.
Det er en statisk metode.
Eksempel:
Tråd. Sleep (2000)
Så det forsinker tråden til at sove 2 millisekunder. Sleep () -metoden kaster en uafbrudt undtagelse, derfor er vi nødt til at omgive blokken med try / catch.
public class ExampleThread implements Runnable{ public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ try{ Thread.sleep(2000); }catch(InterruptedException e){ } }
Q # 45) Hvornår skal jeg bruge den Runnable-interface Vs Thread-klasse i Java?
Svar: Hvis vi har brug for vores klasse for at udvide nogle andre klasser end tråden, kan vi gå med den kørbare grænseflade, fordi vi i java kun kan udvide en klasse.
Hvis vi ikke vil udvide nogen klasse, kan vi udvide trådklassen.
Q # 46) Forskel mellem start () og run () metode i trådklasse.
Svar: Start () -metoden opretter en ny tråd, og koden inde i metoden run () udføres i den nye tråd. Hvis vi direkte kaldte run () -metoden, oprettes der ikke en ny tråd, og den aktuelt udførende thread fortsætter med at udføre run () -metoden.
Q # 47) Hvad er multitrådning?
Svar: Flere tråde udføres samtidigt. Hver tråd starter sin egen stak baseret på flowets (eller) prioritet for trådene.
Eksempel på program:
public class MultipleThreads implements Runnable { public static void main (String() args){//Main thread starts here Runnable r = new runnable (); Thread t=new thread (); t.start ();//User thread starts here Addition add=new addition (); } public void run(){ go(); }//User thread ends here }
På 1. linjekørsel kalder JVM hovedmetoden, og hovedtrådstakken ser ud som vist nedenfor.
Når henrettelsen når, t.start () linje oprettes der en ny tråd, og den nye stak til tråden oprettes også. Nu skifter JVM til den nye tråd, og hovedtråden er tilbage til den kørende tilstand.
De to stakke ser ud som vist nedenfor.
Nu udførte brugertråden koden inde i metoden run ().
Når run () -metoden er afsluttet, skifter JVM tilbage til hovedtråden, og brugertråden har afsluttet opgaven, og stakken forsvandt.
JVM skifter mellem hver tråd, indtil begge tråde er afsluttet. Dette kaldes Multi-threading.
Q # 48) Forklar trådens livscyklus i Java.
Svar: Tråden har følgende tilstande:
- Ny
- Kan køres
- Løb
- Kan ikke køres (blokeret)
- Afsluttet
- Ny: I ny tilstand er der oprettet en trådforekomst, men start () -metoden påberåbes endnu ikke. Nu betragtes tråden ikke som levende.
- Kan køres : Tråden er i kørbar tilstand efter påkaldelsen af start () -metoden, men før run () -metoden påberåbes. Men en tråd kan også vende tilbage til den kørbare tilstand fra at vente / sove. I denne tilstand betragtes tråden som levende.
- Løb : Tråden er i kørende tilstand, efter at den kalder metoden run (). Nu begynder tråden udførelsen.
- Kan ikke køres (Blokeret): Tråden er i live, men den kan ikke køres. Det er ikke i kørbar tilstand, men også, det vender tilbage til kørbar tilstand efter nogen tid. Eksempel: vent, sov, bloker.
- Afsluttet : Når køremetoden er afsluttet, afsluttes den. Nu er tråden ikke i live.
Q # 49) Hvad er synkronisering?
Svar: Synkronisering giver kun en tråd for at få adgang til en blok kode ad gangen. Hvis flere tråde har adgang til kodeblokken, er der en chance for unøjagtige resultater i slutningen. For at undgå dette problem kan vi tilbyde synkronisering af den følsomme kodeblok.
Det synkroniserede nøgleord betyder, at en tråd har brug for en nøgle for at få adgang til den synkroniserede kode.
Låse er pr. Genstande. Hvert Java-objekt har en lås. En lås har kun en nøgle. En tråd kan kun få adgang til en synkroniseret metode, hvis tråden kan få nøglen til de objekter, der skal låses.
Til dette bruger vi nøgleordet 'Synkroniseret'.
Eksempel:
public class ExampleThread implements Runnable{ public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ synchronized(object){ { } }
Spørgsmål nr. 50) Hvad er ulempen ved synkronisering?
Flere år: Synkronisering anbefales ikke for at implementere alle metoderne. For hvis en tråd får adgang til den synkroniserede kode, skal den næste tråd skulle vente. Så det giver en langsom præstation i den anden ende.
Spørgsmål nr. 51) Hvad menes med serialisering?
Svar: Konvertering af en fil til en byte stream er kendt som Serialization. Objekterne i filen konverteres til bytes af sikkerhedsmæssige årsager. Til dette er vi nødt til at implementere en java.io.Serialiserbar grænseflade. Det har ingen metode at definere.
Variabler, der er markeret som forbigående, vil ikke være en del af serialiseringen. Så vi kan springe over serialisering for variablerne i filen ved hjælp af et forbigående nøgleord.
Lær mere = >> Serialiserbar og klonbar
Q # 52) Hvad er formålet med en forbigående variabel?
Svar: Forbigående variabler er ikke en del af serieiseringsprocessen. Under deserialisering indstilles værdierne for de forbigående variabler til standardværdien. Det bruges ikke med statiske variabler.
Eksempel:
forbigående int-tal;
Spørgsmål nr. 53) Hvilke metoder anvendes under serialiserings- og deserialiseringsprocessen?
Svar: ObjectOutputStream og ObjectInputStream klasser er højere niveau java.io. pakke. Vi bruger dem med lavere klasser FileOutputStream og FileInputStream.
ObjectOutputStream.writeObject —-> Serialiser objektet og skriv det serielle objekt til en fil.
ObjectInputStream.readObject -> Læser filen og deserialiserer objektet.
For at blive serialiseret skal et objekt implementere det interface, der kan serienummereres. Hvis superklassen implementerer Serializable, kan subklassen automatisk serialiseres.
Spørgsmål nr. 54) Hvad er formålet med en flygtig variabel?
Svar: Flygtige variable værdier læses altid fra hovedhukommelsen og ikke fra trådens cachehukommelse. Dette bruges hovedsageligt under synkronisering. Det gælder kun for variabler.
Eksempel:
flygtigt int-nummer;
Q # 55) Forskel mellem serialisering og deserialisering i Java.
Svar: Dette er forskellene mellem serialisering og deserialisering i java:
Serialisering | Deserialisering |
---|---|
Serialisering er den proces, der bruges til at konvertere objekterne til byte-stream | Deserialisering er den modsatte serie af serialisering, hvor vi kan få objekterne tilbage fra byte-strømmen. |
Et objekt serialiseres ved at skrive det til en ObjectOutputStream. | Et objekt deserialiseres ved at læse det fra en ObjectInputStream. |
Spørgsmål nr. 56) Hvad er SerialVersionUID?
Svar: Hver gang et objekt serialiseres, stemples objektet med et version-ID-nummer til objektklassen. Dette id kaldes SerialVersionUID. Dette bruges under deserialisering til at verificere, at afsenderen og modtageren, der er kompatibel med Serialization.
Konklusion
Dette er nogle af de vigtigste JAVA-interviewspørgsmål, der dækker både de grundlæggende og avancerede Java-koncepter til programmering samt udviklerinterview, og disse er dem, der er blevet besvaret af vores JAVA-eksperter.
Jeg håber, at denne tutorial giver dig et godt indblik i JAVA-kernekodningskoncepter i detaljer. Forklaringerne ovenfor vil virkelig berige din viden og øge din forståelse af JAVA-programmering.
Gør dig klar til at knække et JAVA-interview med tillid.