top 50 core java interview questions
Vanlige spørsmål om Java-intervju og svar med eksempler:
I denne veiledningen har vi dekket nesten 50 viktige Java-intervjuspørsmål for nybegynnere og erfarne kandidater.
Dette innlegget på JAVA Interview Interviews er utarbeidet for å hjelpe deg med å forstå de grunnleggende konseptene i Java-programmering for intervjuformål. Alle de viktige JAVA-konseptene blir forklart her med eksempler for enkel forståelse.
Denne opplæringen dekker JAVA-emner som grunnleggende Java-definisjoner, OOP-konsepter, Access-spesifikatorer, Samlinger, Unntak, Tråder, Serialisering, etc., med eksempler for å gjøre deg klar perfekt å møte ethvert JAVA-intervju trygt.
Mest populære Java-intervjuspørsmål og svar
Nedenfor er en omfattende liste over de viktigste og mest stilte spørsmålene om grunnleggende og avansert Java-programmeringsintervju med detaljerte svar.
Q # 1) Hva er JAVA?
Svar: Java er et høyt programmeringsspråk og er plattformuavhengig.
Java er en samling objekter. Den ble utviklet av Sun Microsystems. Det er mange applikasjoner, nettsteder og spill som er utviklet ved hjelp av Java.
Q # 2) Hva er funksjonene til JAVA?
Svar: Funksjonene til Java er som følger:
- OOP-konsepter
- Objekt orientert
- Arv
- Innkapsling
- Polymorfisme
- Abstraksjon
- Plattformuavhengig: Et enkelt program fungerer på forskjellige plattformer uten noen modifisering.
- Høy ytelse: JIT (Just In Time compiler) muliggjør høy ytelse i Java. JIT konverterer bytekoden til maskinspråk, og deretter starter JVM kjøringen.
- Flertrådet: En strøm av utførelse er kjent som en tråd. JVM oppretter en tråd som kalles hovedtråden. Brukeren kan opprette flere tråder ved å utvide trådklassen eller ved å implementere Runnable-grensesnittet.
Sp # 3) Hvordan aktiverer Java høy ytelse?
Svar: Java bruker Just In Time kompilator for å aktivere høy ytelse. Den brukes til å konvertere instruksjonene til bytekoder.
Q # 4) Navngi Java IDE-ene?
Svar: Eclipse og NetBeans er IDE’ene til JAVA.
Q # 5) Hva mener du med Constructor?
Svar: Konstruktør kan forklares i detalj med vervet poeng:
- Når et nytt objekt opprettes i et program, blir en konstruktør påkalt tilsvarende klassen.
- Konstruktøren er en metode som har samme navn som klassens navn.
- Hvis en bruker ikke oppretter en konstruktør implisitt, opprettes en standardkonstruktør.
- Konstruktøren kan bli overbelastet.
- Hvis brukeren opprettet en konstruktør med en parameter, bør han opprette en annen konstruktør eksplisitt uten en parameter.
Q # 6) Hva menes med den lokale variabelen og instansvariabelen?
Svar:
Lokale variabler er definert i metoden og omfanget av variablene som finnes i selve metoden.
Instansvariabel er definert inne i klassen og utenfor metoden, og omfanget av variablene eksisterer i hele klassen.
Q # 7) Hva er en klasse?
Svar: Alle Java-koder er definert i en klasse. Den har variabler og metoder.
Variabler er attributter som definerer tilstanden til en klasse.
Metoder er stedet der den nøyaktige forretningslogikken må gjøres. Den inneholder et sett med uttalelser (eller) instruksjoner for å tilfredsstille det spesielle kravet.
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) Hva er et objekt?
Svar: En forekomst av en klasse kalles et objekt. Objektet har tilstand og oppførsel.
Hver gang JVM leser 'nytt ()' nøkkelord, vil det opprette en forekomst av den klassen.
Eksempel:
public class Addition{ public static void main(String[] args){ Addion add = new Addition();//Object creation } }
Ovennevnte kode oppretter objektet for tilleggsklassen.
Q # 9) Hva er OOP-begrepene?
Svar: OOPs konsepter inkluderer:
- Arv
- Innkapsling
- Polymorfisme
- Abstraksjon
- Grensesnitt
Foreslått lese = >> Topp OOP-intervjuespørsmål
Q # 10) Hva er arv?
Svar: Arv betyr at en klasse kan strekke seg til en annen klasse. Slik at kodene kan brukes på nytt fra en klasse til en annen klasse. Den eksisterende klassen er kjent som Super-klassen, mens den avledede klassen er kjent som en underklasse.
Eksempel:
Super class: public class Manupulation(){ } Sub class: public class Addition extends Manipulation(){ }
Arv gjelder bare for det offentlige og beskyttede medlemmer. Private medlemmer kan ikke arves.
Q # 11) Hva er innkapsling?
Svar: Formål med innkapsling:
- Beskytter koden fra andre.
- Kode vedlikehold.
Eksempel:
Vi erklærer ‘a’ som en heltallvariabel, og den skal ikke være negativ.
public class Addition(){ int a=5; }
Hvis noen endrer den nøyaktige variabelen som “ a = -5 ' da er det ille.
For å løse problemet må vi følge trinnene nedenfor:
- Vi kan gjøre variabelen privat eller beskyttet.
- Bruk offentlige tilgangsmetoder som sett og få.
Slik at ovennevnte kode kan endres som:
public class Addition(){ private int a = 5; //Here the variable is marked as private }
Koden nedenfor viser getter og setter.
Betingelser kan gis når du stiller variabelen.
get A(){ } set A(int a){ if(a>0){// Here condition is applied ......... } }
For innkapsling må vi gjøre alle forekomstvariablene private og lage setter og getter for disse variablene. Som igjen vil tvinge andre til å ringe setterne i stedet for å få tilgang til dataene direkte.
Sp # 12) Hva er polymorfisme?
Svar: Polymorfisme betyr mange former.
Et enkelt objekt kan referere til superklassen eller underklassen avhengig av referansetypen som kalles 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 å bruke Manipulation-referansetypen kan vi kalle Addition-klassen 'add ()' -metoden. Denne evnen er kjent som polymorfisme. Polymorfisme gjelder for overordnet og ikke for overbelastning .
Spørsmål nr. 13) Hva menes med metodeoverstyring?
Svar: Metodeoverstyring skjer hvis underklassemetoden tilfredsstiller vilkårene nedenfor med Superklassemetoden:
- Metodenavnet skal være det samme
- Argumentet skal være det samme
- Returtype skal også være den samme
Den viktigste fordelen med å overstyre er at underklassen kan gi spesifikk informasjon om den underklassetypen enn 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 kaller add () -metoden i underklassen og ikke den overordnede klassen. Så det overstyrer superklassemetoden og er kjent som Method Overriding.
Sp # 14) Hva menes med overbelastning?
Svar: Metodeoverbelastning skjer for forskjellige klasser eller innenfor samme klasse.
For overbelastning av metoden, bør underklassemetoden tilfredsstille vilkårene nedenfor med Superklassemetode (eller) -metodene i samme klasse selv:
- Samme metode navn
- Ulike argumenttyper
- Det kan være forskjellige 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 forskjellige parametere i Addition-klassen er overbelastet i samme klasse som med superklassen.
Merk: Polymorfisme er ikke aktuelt for overbelastning av metoden.
Sp # 15) Hva menes med grensesnitt?
Svar: Flere arv kan ikke oppnås i java. For å løse dette problemet introduseres grensesnittkonseptet.
Et grensesnitt er en mal som bare har metodedeklarasjoner og ikke metodeimplementeringen.
Eksempel:
Public abstract interface IManupulation{ //Interface declaration Public abstract void add();//method declaration public abstract void subtract(); }
- Alle metodene i grensesnittet er internt offentlig abstrakt ugyldig .
- Alle variablene i grensesnittet er internt offentlig statisk finale det er konstanter.
- Klasser kan implementere grensesnittet og ikke utvides.
- Klassen som implementerer grensesnittet skal gi en implementering for alle metodene som er angitt i grensesnittet.
public class Manupulation implements IManupulation{ //Manupulation class uses the interface Public void add(){ …………… } Public void subtract(){ ……………. } }
Q # 16) Hva menes med abstrakt klasse?
Svar: Vi kan opprette abstraktklassen ved å bruke nøkkelordet “abstrakt” før kursnavnet. En abstrakt klasse kan ha både “abstrakte” metoder og “ikke-abstrakte” metoder som er en konkret klasse.
Abstrakt metode:
Metoden som bare har erklæringen og ikke implementeringen kalles den abstrakte metoden og den har nøkkelordet kalt “abstrakt”. Erklæringer avsluttes med semikolon.
Eksempel:
public abstract class Manupulation{ public abstract void add();//Abstract method declaration Public void subtract(){ } }
- En abstrakt klasse kan også ha en ikke-abstrakt metode.
- Den konkrete underklassen som utvider abstraktklassen, bør gi implementering av abstrakte metoder.
Q # 17) Forskjell mellom Array og Array List.
Svar: Forskjellen mellom Array og Array List kan forstås fra tabellen nedenfor:
Array | Array List |
---|---|
Størrelse bør gis på tidspunktet for matrixerklæringen. Streng [] navn = ny streng [2] | Størrelse er kanskje ikke nødvendig. Det endrer størrelsen dynamisk. ArrayList navn = ny ArrayList |
For å sette et objekt i matrisen må vi spesifisere indeksen. name [1] = “book” | Ingen indeks nødvendig. name.add ('bok') |
Array er ikke typeparameterert | ArrayList i java 5.0 er parameterisert. F.eks.: Denne vinkelbraketten er en typeparameter som betyr en liste over streng. |
Q # 18) Forskjell mellom streng, strengbygger og strengbuffer.
Svar:
Streng: Strengvariabler lagres i en “konstant streng pool”. Når strengreferansen endrer den gamle verdien som eksisterer i 'konstant strengbasseng', kan den ikke slettes.
Eksempel:
Strengnavn = “bok”;
Konstant strengbasseng
.
Hvis navnverdien er endret fra 'bok' til 'penn'.
Konstant strengbasseng
Da forblir den eldre verdien i den konstante strengbassenget.
Strengbuffer:
- Her lagres strengverdier i en stabel. Hvis verdiene endres, erstatter den nye verdien den eldre verdien.
- Strengbufferen er synkronisert som er trådsikker.
- Ytelsen er tregere enn String Builder.
Eksempel:
Stringbuffernavn = ”bok”;
Når navnverdien er endret til 'penn', blir 'boken' slettet i bunken.
String Builder:
etl testing intervju spørsmål og svar for erfarne
Dette er det samme som String Buffer bortsett fra String Builder som ikke er tredd på en sikker måte som ikke er synkronisert. Så åpenbart er ytelsen rask.
Spørsmål nr. 19) Forklar om spesifikasjoner for offentlig og privat tilgang.
Svar: Metoder og instansvariabler er kjent som medlemmer.
Offentlig:
Offentlige medlemmer er synlige i samme pakke, så vel som utenforpakken som er for andre pakker.
Offentlige medlemmer av klasse A er synlige for klasse B (samme pakke) så vel som klasse C (forskjellige pakker).
Privat:
Private medlemmer er bare synlige i samme klasse og ikke for de andre klassene i samme pakke, så vel som klasser i de utvendige pakkene.
Private medlemmer i klasse A er bare synlige i den klassen. Det er usynlig for klasse B så vel som klasse C.
Q # 20) Forskjell mellom spesifikatorer for standard og beskyttet tilgang.
Svar:
Misligholde: Metoder og variabler erklært i en klasse uten tilgangsspesifikatorer kalles standard.
Standardmedlemmer i klasse A er synlige for de andre klassene som er inne i pakken og usynlige for klassene som er utenfor 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 strekker seg, er den synlig selv om den er utenfor pakken.
Klasse A-medlemmer er synlige for klasse B fordi de er inne i pakken. For klasse C er det usynlig, men hvis klasse C utvider klasse A, er medlemmene synlige for klasse C, selv om det er utenfor pakken.
Q # 21) Forskjell mellom HashMap og HashTable.
Svar: Forskjellen mellom HashMap og HashTable kan sees nedenfor:
HashMap | HashTable |
---|---|
Metodene synkroniseres ikke | Viktige metoder synkroniseres |
Ikke trådsikkerhet | Trådsikkerhet |
Iterator brukes til å gjenta verdiene | Enumerator brukes til å gjenta verdiene |
Tillater en nullnøkkel og flere nullverdier | Tillater ikke noe som er null |
Ytelsen er høy enn HashTable | Ytelsen er treg |
Q # 22) Forskjell mellom HashSet og TreeSet.
Svar: Forskjellen mellom HashSet og TreeSet kan sees nedenfor:
HashSet | TreeSet |
---|---|
Innsatte elementer er i tilfeldig rekkefølge | Vedlikeholder elementene i sortert rekkefølge |
Kan lagre null objekter | Kunne ikke lagre null-objekter |
Ytelsen er rask | Ytelsen er treg |
Q # 23) Forskjell mellom abstrakt klasse og grensesnitt.
Svar: Forskjellene mellom abstrakt klasse og grensesnitt er som følger:
Abstrakt klasse:
- Abstrakte klasser har en standardkonstruktør, og det kalles når den konkrete underklassen blir instantiert.
- Den inneholder både abstrakte metoder og ikke-abstrakte metoder.
- Klassen som utvider Abstrakt-klassen, bør ikke kreve implementering av alle metodene, bare Abstrakte metoder trenger å implementeres i den konkrete underklassen.
- Abstrakt klasse inneholder forekomstvariabler.
Grensesnitt:
- Den har ingen konstruktører og kunne ikke instantieres.
- Den abstrakte metoden alene bør erklæres.
- Klasser som implementerer grensesnittet, bør gi implementeringen av alle metodene.
- Grensesnittet inneholder bare konstanter.
Q # 24) Hva er betydningen av samlinger på Java?
Svar: Samling er et rammeverk som er designet for å lagre objektene og manipulere designet for å lagre objektene.
Samlinger brukes til å utføre følgende operasjoner:
- Søker
- Sortering
- Manipulasjon
- Innsetting
- Sletting
En gruppe objekter er kjent som samlinger. Alle klassene og grensesnittene for innsamling er tilgjengelige i Java util-pakke.
Sp # 25) Hva er alle klasser og grensesnitt som er tilgjengelige i samlingene?
Svar: Nedenfor er klassene og grensesnittene som er tilgjengelige i samlinger:
Grensesnitt:
- Samling
- Liste
- Sett
- Kart
- Sortert sett
- Sortert kart
- Kø
Klasser:
- Lister:
- Array List
- Vector
- Koblet liste
Settene:
- Hash satt
- Koblet hasjsett
- Tresett
Kart:
- Hash-kart
- Hash-bord
- TreeMap
- Koblet Hashed-kart
Kø:
- Prioritetskø
Spørsmål nr. 26) Hva menes med ordnet og sortert i samlinger?
Svar:
Bestilt: Det betyr at verdiene som er lagret i en samling er basert på verdiene som legges til samlingen. Så vi kan gjenta verdiene fra samlingen i en bestemt rekkefølge.
Sortert: Sorteringsmekanismer kan brukes internt eller eksternt, slik at gruppen av objekter som er sortert i en bestemt samling, er basert på egenskapene til objektene.
Q # 27) Forklar de forskjellige listene som er tilgjengelige i samlingen.
Svar: Verdier lagt til listen er basert på indeksposisjonen og den er ordnet etter indeksposisjon. Duplikater er tillatt.
Typene av lister er:
a) Oppstillingsliste:
- Rask iterasjon og rask tilfeldig tilgang.
- Det er en ordnet samling (etter indeks) og ikke sortert.
- Den 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); } }
Produksjon:
[Eple, kirsebær, kiwi, banan, kirsebær]
Fra utdata vedlikeholder Array List innsettingsrekkefølgen, og den godtar duplikatene. Men det er ikke sortert.
b) Vektor:
Det er det samme som Array List.
- Vektormetoder synkroniseres.
- Trådsikkerhet.
- Den implementerer også Random Access.
- Trådsikkerhet forårsaker vanligvis et ytelseshit.
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”); } }
Produksjon:
[kirsebær, eple, banan, kiwi, eple]
Vector vedlikeholder også innsettingsordren og godtar duplikatene.
c) Koblet liste:
- Elementer er dobbelt knyttet til hverandre.
- Ytelsen er tregere enn matriselisten.
- Godt valg for innsetting og sletting.
- I Java 5.0 støtter den vanlige kømetoder peek (), Pool (), Offer () etc.
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); } }
Produksjon:
[banan, kirsebær, eple, kiwi, banan]
Opprettholder innsettingsordren og godtar duplikatene.
Q # 28) Forklar om Set og deres typer i en samling.
Svar: Set bryr seg om unikhet. Det tillater ikke dupliseringer. Her brukes 'lik ()' -metoden for å bestemme om to objekter er identiske eller ikke.
a) Hash-sett:
- Uordnet og usortert.
- Bruker hash-koden til objektet for å sette inn verdiene.
- Bruk dette når kravet er 'ingen duplikater og ikke bryr deg om bestillingen'.
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); } }
Produksjon:
[banan, kirsebær, kiwi, eple]
Den følger ikke noen innføringsrekkefølge. Duplikater er ikke tillatt.
b) Koblet Hash-sett:
- En bestilt versjon av hash-settet er kjent som Linked Hash Set.
- Opprettholder en dobbeltkoblet liste over alle elementene.
- Bruk dette når det kreves en iterasjonsordre.
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); } }
Produksjon:
[banan, kirsebær, eple, kiwi]
Den opprettholder innsettingsrekkefølgen de er lagt til i settet. Duplikater er ikke tillatt.
c) Tresett:
- Det er en av de to sorterte samlingene.
- Bruker trestrukturen 'Read-Black' og garanterer at elementene vil være i stigende rekkefølge.
- Vi kan konstruere et tresett med konstruktøren ved å bruke en sammenlignbar (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); } }
Produksjon:
[eple, banan, kirsebær, kiwi]
TreeSet sorterer elementene i stigende rekkefølge. Og duplikater er ikke tillatt.
Q # 29) Forklar om kart og dets typer.
Svar: Kart bryr seg om den unike identifikatoren. Vi kan kartlegge en unik nøkkel til en bestemt verdi. Det er et nøkkel / verdipar. Vi kan søke etter en verdi, basert på nøkkelen. I likhet med settet bruker kartet også metoden “lik ()” for å bestemme om to nøkler er like eller forskjellige.
Kartet er av følgende typer:
a) Hash-kart:
- Ubestilt og usortert kart.
- Hashmap er et godt valg når vi ikke bryr oss om bestillingen.
- Det tillater en nullnøkkel og flere nullverdier.
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); } }
Produksjon:
{key2 = banan, key1 = kirsebær, key4 = kiwi, key3 = apple}
Dupliserte nøkler er ikke tillatt i Map.
Den opprettholder ingen innsettingsordre og er usortert.
b) Hash-bord:
- I likhet med vektornøkkelen synkroniseres metodene i klassen.
- Trådsikkerhet og bremser derfor ytelsen.
- Det tillater ikke noe som er null.
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); } }
Produksjon:
{key2 = eple, key1 = kirsebær, key4 = kiwi, key3 = banan}
Dupliserte nøkler er ikke tillatt.
c) Tilknyttet Hash-kart:
- Opprettholder innføringsrekkefølgen.
- Tregere enn Hash-kartet.
- Jeg kan forvente en raskere iterasjon.
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); } }
Produksjon:
{key2 = eple, key1 = kirsebær, key4 = kiwi, key3 = banan}
Dupliserte nøkler er ikke tillatt.
d) TreeMap:
- Sortert kart.
- Som tresett kan vi lage en sorteringsrekkefø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); } }
Produksjon:
{key1 = kirsebær, key2 = banan, key3 = eple, key4 = kiwi}
Den er sortert i stigende rekkefølge basert på nøkkelen. Dupliserte nøkler er ikke tillatt.
Q # 30) Forklar prioritetskøen.
Svar: Køgrensesnitt
Prioritetskø: Koblet listeklasse er forbedret for å implementere køgrensesnittet. Køer kan håndteres med en koblet liste. Formålet med en kø er “Priority-in, Priority-out”.
Derfor bestilles elementer enten naturlig eller i henhold til komparatoren. Elementene som bestiller representerer deres relative prioritet.
Spørsmål nr. 31) Hva menes med unntak?
Svar: Et unntak er et problem som kan oppstå under normal gjennomføring. En metode kan kaste et unntak når noe klager under kjøretiden. Hvis dette unntaket ikke kunne håndteres, blir utførelsen avsluttet før den fullfører oppgaven.
Hvis vi håndterte unntaket, fortsetter den normale strømmen. Unntak er en underklasse av java.lang.Exception.
Eksempel for håndtering av unntak:
try{ //Risky codes are surrounded by this block }catch(Exception e){ //Exceptions are caught in catch block }
Spørsmål nr. 32) Hva er typer unntak?
Svar: Det er to typer unntak. De blir forklart nedenfor i detalj.
a) Kontrollert unntak:
Disse unntakene sjekkes av kompilatoren på tidspunktet for kompilering. Klasser som utvider Throwable-klassen unntatt Runtime-unntak og Error kalles merket Unntak.
Avmerkede unntak må enten erklære unntaket ved hjelp av kasteord (eller) omgitt av passende prøve / fangst.
For eksempel, ClassNotFound-unntak
b) Ukontrollert unntak:
Disse unntakene blir ikke sjekket av kompilatoren i løpet av kompileringstiden. Kompilatoren tvinger ikke til å håndtere disse unntakene. Det inkluderer:
- Aritmetisk unntak
- ArrayIndexOutOfBounds Unntak
Sp # 33) Hva er de forskjellige måtene å håndtere unntak på?
Svar: To forskjellige måter å håndtere unntak på er forklart nedenfor:
a) Bruke prøve / fangst:
Den risikable koden er omgitt av prøveblokk. Hvis det oppstår et unntak, blir det fanget av fangstblokken som følges av prøveblokken.
Eksempel:
class Manipulation{ public static void main(String[] args){ add(); } Public void add(){ try{ addition(); }catch(Exception e){ e.printStacktrace(); } } }
b) Ved å erklære kaster nøkkelord:
På slutten av metoden kan vi erklære unntaket ved hjelp av kaster nøkkelord.
Eksempel:
class Manipulation{ public static void main(String[] args){ add(); } public void add() throws Exception{ addition(); } }
Sp # 34) Hva er fordelene med Unntakshåndtering?
Svar: Fordelene er som følger:
- Den normale strømmen av utførelsen avsluttes ikke hvis et unntak blir håndtert
- Vi kan identifisere problemet ved hjelp av fangsterklæring
Spørsmål nr. 35) Hva er søkeordene for unntakshåndtering i Java?
Svar: Oppført nedenfor er de to nøkkelordene for unntakshåndtering:
et forsøk:
Når en risikabel kode er omgitt av en prøveblokk. Et unntak som forekommer i prøveblokken fanges av en fangstblokk. Prøv kan følges enten av fangst (eller) til slutt (eller) begge deler. Men hvilken som helst av blokkene er obligatorisk.
b) fange:
Dette etterfølges av en prøveblokk. Unntak fanges her.
c) til slutt:
Dette følges enten av prøveblokk (eller) fangstblokk. Denne blokken blir utført uansett unntak. Så generelt er oppryddingskoder gitt her.
Q # 36) Forklar om forplantning av unntak.
Svar: Unntak kastes først fra metoden som er øverst i bunken. Hvis den ikke fanger opp, spretter den opp metoden og flytter til forrige metode og så videre til de er oppnådd.
Dette kalles forplantning av unntak.
Eksempel:
public class Manipulation{ public static void main(String[] args){ add(); } public void add(){ addition(); }
Fra eksemplet ovenfor ser stabelen ut som vist nedenfor:
Hvis det oppstår et unntak i addisjon() metoden blir ikke fanget, så går den til metoden Legg til() . Så flyttes den til hoved() metode og da vil den stoppe flyten av utførelse. Det kalles Exception Propagation.
Q # 37) Hva er det siste nøkkelordet i Java?
Svar:
Variabel slutt: Når en variabel er erklært som endelig, kunne ikke verdien av variabelen endres. Det er som en konstant.
Eksempel:
siste int = 12;
Endelig metode: Et siste nøkkelord i en metode kan ikke overstyres. Hvis en metode er merket som en endelig, kan den ikke overstyres av underklassen.
Avsluttende klasse: Hvis en klasse blir erklært som endelig, kan ikke klassen bli underklassert. Ingen klasse kan utvide den siste klassen.
Q # 38) Hva er en tråd?
Svar: I Java kalles utførelsesflyten Thread. Hvert java-program har minst en tråd som kalles hovedtråden, hovedtråden er opprettet av JVM. Brukeren kan definere sine egne tråder ved å utvide trådklassen (eller) ved å implementere Runnable-grensesnittet. Trådene utføres samtidig.
Eksempel:
public static void main(String[] args){//main thread starts here }
Q # 39) Hvordan lager du en tråd i Java?
Svar: Det er to måter å lage en tråd på.
a) Utvid trådklassen: Utvide en trådklasse og overstyre kjøringsmetoden. Tråden er tilgjengelig i java.lang.thread.
Eksempel:
Public class Addition extends Thread { public void run () { } }
Ulempen med å bruke en trådklasse er at vi ikke kan utvide andre klasser fordi vi allerede har utvidet trådklassen. Vi kan overbelaste run () -metoden i klassen vår.
b) Implementere kjørbart grensesnitt: En annen måte er å implementere det kjørbare grensesnittet. For det bør vi gi implementeringen for run () -metoden som er definert i grensesnittet.
Eksempel:
Public class Addition implements Runnable { public void run () { } }
Q # 40) Forklar om join () -metoden.
Svar: Join () -metoden brukes til å koble sammen en tråd med slutten av den nåværende tråden.
Eksempel:
public static void main (String[] args){ Thread t = new Thread (); t.start (); t.join (); }
Basert på koden ovenfor, har hovedtråden startet utførelsen. Når den når koden t.start () deretter starter ‘thread t’ sin egen stack for utførelsen. JVM bytter mellom hovedtråden og ‘thread t’.
Når den når koden t.join () så utføres ‘tråd t’ alene og fullfører oppgaven, så starter bare hovedtråden utførelsen.
Det er en ikke-statisk metode. Metoden Join () har en overbelastet versjon. Så vi kan nevne varigheten i join () -metoden også '.s'.
Spørsmål nr. 41) Hva gjør avkastningsmetoden til trådklassen?
Svar: En yield () -metode flytter den gjeldende tråden til en kjørbar tilstand og tillater de andre trådene for kjøring. Slik at like prioriterte tråder har en sjanse til å løpe. Det er en statisk metode. Det frigjør ingen lås.
Yield () -metoden flytter bare tråden tilbake til tilstanden Runnable, og ikke tråden i hvilemodus (), vent () (eller) -blokk.
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 () metoden brukes til å få tråden til å vente i ventebassenget. Når ventemetoden () utføres under en trådutførelse, gir tråden straks låsen på objektet og går til ventepoolen. Wait () -metoden ber tråden om å vente på en gitt tid.
Da vil tråden våkne etter at notify () (eller) notify all () -metoden kalles.
Vent () og de andre ovennevnte metodene gir ikke låsen på objektet umiddelbart før den nåværende utførende tråden fullfører den synkroniserte koden. Det brukes mest i synkronisering.
Eksempel:
public static void main (String[] args){ Thread t = new Thread (); t.start (); Synchronized (t) { Wait(); } }
Q # 43) Forskjell mellom notify () -metoden og notifyAll () -metoden i Java.
Svar: Forskjellene mellom notify () -metoden og notifyAll () -metoden er vervet nedenfor:
gi beskjed() | notifyAll () |
---|---|
Denne metoden brukes til å sende et signal for å vekke en enkelt tråd i ventebassenget. | Denne metoden sender signalet om å vekke alle trådene i en ventespole. |
Q # 44) Hvordan stoppe en tråd i java? Forklar om sleep () -metoden i en tråd?
Svar: Vi kan stoppe en tråd ved å bruke følgende trådmetoder:
- Sove
- Venter
- Blokkert
Sove: Sleep () -metoden brukes til å sove den gjeldende kjøringen for den gitte tiden. Når tråden er våknet, kan den bevege seg til kjørbar tilstand. Så sleep () -metoden brukes til å forsinke utførelsen i en periode.
Det er en statisk metode.
Eksempel:
Tråd. Sleep (2000)
Så det forsinker tråden til å sove 2 millisekunder. Sleep () -metoden kaster et uavbrutt unntak, derfor må vi omslutte 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){ } }
Sp # 45) Når skal jeg bruke Runnable-grensesnittet Vs Thread-klassen i Java?
Svar: Hvis vi trenger klassen vår for å utvide noen andre klasser enn tråden, kan vi gå med det kjørbare grensesnittet, fordi vi i java bare kan utvide en klasse.
Hvis vi ikke skal utvide noen klasse, kan vi utvide trådklassen.
Q # 46) Forskjell mellom start () og run () metode for trådklasse.
Svar: Start () -metoden oppretter en ny tråd og koden i løpet () -metoden kjøres i den nye tråden. Hvis vi direkte kalte run () -metoden, opprettes ikke en ny tråd, og den nåværende kjørende tråden vil fortsette å kjøre run () -metoden.
Q # 47) Hva er multitråding?
Svar: Flere tråder utføres samtidig. Hver tråd starter sin egen stabel basert på trådenes flyt (eller) prioritet.
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 }
Ved første linjekjøring kaller JVM hovedmetoden, og hovedtrådstakken ser ut som vist nedenfor.
Når henrettelsen når, t.start () linje så opprettes en ny tråd og den nye stabelen for tråden opprettes også. Nå bytter JVM til den nye tråden, og hovedtråden er tilbake i kjørbar tilstand.
De to stablene ser ut som vist nedenfor.
Nå utførte brukertråden koden i løpet () -metoden.
Når run () -metoden er fullført, bytter JVM tilbake til hovedtråden, og brukertråden har fullført oppgaven, og stakken ble forsvunnet.
JVM bytter mellom hver tråd til begge trådene er fullført. Dette kalles Multi-threading.
Q # 48) Forklar trådenes livssyklus i Java.
Svar: Tråden har følgende tilstander:
- Ny
- Kjørbar
- Løping
- Kan ikke kjøres (blokkert)
- Avsluttet
- Ny: I ny tilstand er det opprettet en trådforekomst, men start () -metoden er ennå ikke påkalt. Nå regnes ikke tråden som levende.
- Kjørbar : Tråden er i kjørbar tilstand etter påkallelse av start () -metoden, men før run () -metoden påberopes. Men en tråd kan også gå tilbake til den kjørbare tilstanden fra å vente / sove. I denne tilstanden regnes tråden som levende.
- Løping : Tråden er i en kjører tilstand etter at den kaller run () -metoden. Nå begynner tråden utførelsen.
- Kan ikke kjøres (Blokkert): Tråden er i live, men den kan ikke kjøres. Det er ikke i kjørbar tilstand, men også, det vil gå tilbake til kjørbar tilstand etter en stund. Eksempel: vent, sov, blokker.
- Avsluttet : Når kjøringsmetoden er fullført, avsluttes den. Nå lever ikke tråden.
Q # 49) Hva er synkronisering?
Svar: Synkronisering gir bare en tråd for å få tilgang til en blokk med koder om gangen. Hvis flere tråder får tilgang til kodeblokken, er det en sjanse for unøyaktige resultater på slutten. For å unngå dette problemet kan vi tilby synkronisering for den sensitive kodeblokken.
Det synkroniserte nøkkelordet betyr at en tråd trenger en nøkkel for å få tilgang til den synkroniserte koden.
Låser er per gjenstand. Hvert Java-objekt har en lås. En lås har bare en nøkkel. En tråd kan bare få tilgang til en synkronisert metode hvis tråden kan få nøkkelen til gjenstandene som skal låses.
For dette bruker vi søkeordet “Synkronisert”.
Eksempel:
public class ExampleThread implements Runnable{ public static void main (String[] args){ Thread t = new Thread (); t.start (); } public void run(){ synchronized(object){ { } }
Q # 50) Hva er ulempen med synkronisering?
År: Synkronisering anbefales ikke for å implementere alle metodene. For hvis en tråd får tilgang til den synkroniserte koden, må neste tråd trenge å vente. Så det gir en langsom ytelse i den andre enden.
Q # 51) Hva menes med serialisering?
Svar: Konvertering av en fil til en byte-strøm er kjent som Serialization. Objektene i filen konverteres til byte av sikkerhetshensyn. For dette må vi implementere et java.io.Serialiserbart grensesnitt. Det har ingen metode å definere.
Variabler som er merket som forbigående, vil ikke være en del av serieiseringen. Så vi kan hoppe over serialisasjonen for variablene i filen ved å bruke et forbigående nøkkelord.
Lær mer = >> Serialiserbar og klonbar
Q # 52) Hva er hensikten med en forbigående variabel?
Svar: Forbigående variabler er ikke en del av serieiseringsprosessen. Under deserialisering settes verdiene til de forbigående variablene til standardverdien. Den brukes ikke med statiske variabler.
Eksempel:
forbigående int-tall;
Spørsmål nr. 53) Hvilke metoder brukes under serialiserings- og deserialiseringsprosessen?
Svar: ObjectOutputStream og ObjectInputStream-klassene er java.io på høyere nivå. pakke. Vi bruker dem med lavere nivåklasser FileOutputStream og FileInputStream.
ObjectOutputStream.writeObject —-> Serialiser objektet og skriv det serieiserte objektet til en fil.
ObjectInputStream.readObject -> Leser filen og deserialiserer objektet.
For å serieiseres, må et objekt implementere det grensesnittet som kan serialiseres. Hvis superklassen implementerer Serializable, vil subklassen automatisk kunne serialiseres.
Q # 54) Hva er hensikten med en flyktig variabel?
Svar: Flyktige variable verdier blir alltid lest fra hovedminnet og ikke fra trådens hurtigminne. Dette brukes hovedsakelig under synkronisering. Den gjelder bare for variabler.
Eksempel:
flyktige int-tall;
Q # 55) Forskjell mellom serialisering og deserialisering i Java.
Svar: Dette er forskjellene mellom serialisering og deserialisering i java:
Serialisering | Deserialisering |
---|---|
Serialisering er prosessen som brukes til å konvertere objektene til byte-strøm | Deserialisering er den motsatte prosessen med serialisering der vi kan få gjenstandene tilbake fra byte-strømmen. |
Et objekt serialiseres ved å skrive det til en ObjectOutputStream. | Et objekt deserialiseres ved å lese det fra en ObjectInputStream. |
Sp # 56) Hva er SerialVersionUID?
Svar: Når et objekt serialiseres, blir objektet stemplet med et versjons-ID-nummer for objektklassen. Denne IDen kalles SerialVersionUID. Dette brukes under deserialisering for å verifisere at avsenderen og mottakeren som er kompatibel med Serialization.
Konklusjon
Dette er noen av de viktigste JAVA-intervjuspørsmålene som dekker både de grunnleggende og avanserte Java-konseptene for programmering samt utviklerintervju, og disse er de som har blitt besvart av våre JAVA-eksperter.
Jeg håper at denne opplæringen vil gi deg et godt innblikk i JAVA-kjernekodingskonsepter i detalj. Forklaringene ovenfor vil virkelig berike din kunnskap og øke din forståelse av JAVA-programmering.
Gjør deg klar til å knekke et JAVA-intervju trygt.