top 50 core java interview questions
Vanliga Java-intervjufrågor och svar med exempel:
I den här handledningen har vi täckt nästan 50 viktiga Java-intervjufrågor för nybörjare och erfarna kandidater.
Det här inlägget på JAVA intervjufrågor är förberett för att hjälpa dig förstå de grundläggande begreppen för Java-programmering för intervjuändamål. Alla viktiga JAVA-koncept förklaras här med exempel för enkel förståelse.
Denna handledning täcker JAVA-ämnen som grundläggande Java-definitioner, OOP-koncept, Access-specifikationer, Samlingar, Undantag, Trådar, Serialisering, etc., med exempel för att göra dig perfekt redo att möta alla JAVA-intervjuer med tillförsikt.
Mest populära Java-intervjufrågor och svar
Nedan finns en omfattande lista över de viktigaste och vanligaste grundläggande och avancerade Java-programmeringsintervjufrågorna med detaljerade svar.
F # 1) Vad är JAVA?
Svar: Java är ett programmeringsspråk på hög nivå och är plattformsoberoende.
Java är en samling objekt. Den utvecklades av Sun Microsystems. Det finns många applikationer, webbplatser och spel som utvecklas med Java.
F # 2) Vilka funktioner har JAVA?
Svar: Funktionerna i Java är som följer:
- OOP-koncept
- Objektorienterad
- Arv
- Inkapsling
- Polymorfism
- Abstraktion
- Plattformsoberoende: Ett enda program fungerar på olika plattformar utan någon ändring.
- Hög prestanda: JIT (Just In Time compiler) möjliggör hög prestanda i Java. JIT konverterar bytekoden till maskinspråk och sedan startar JVM körningen.
- Flertrådad: Ett flöde av utförande kallas en tråd. JVM skapar en tråd som kallas huvudtråden. Användaren kan skapa flera trådar genom att utöka trådklassen eller genom att implementera Runnable-gränssnittet.
F # 3) Hur möjliggör Java hög prestanda?
Svar: Java använder Just In Time-kompilatorn för att möjliggöra hög prestanda. Den används för att konvertera instruktionerna till bytekoder.
F # 4) Namnge Java IDE: erna?
Svar: Eclipse och NetBeans är IDE: erna för JAVA.
F # 5) Vad menar du med Constructor?
Svar: Konstruktören kan förklaras i detalj med anlitade poäng:
- När ett nytt objekt skapas i ett program anropas en konstruktör som motsvarar klassen.
- Konstruktören är en metod som har samma namn som klassnamnet.
- Om en användare inte skapar en konstruktör implicit skapas en standardkonstruktör.
- Konstruktören kan överbelastas.
- Om användaren skapade en konstruktör med en parameter ska han skapa en annan konstruktör uttryckligen utan en parameter.
F # 6) Vad menas med den lokala variabeln och instansvariabeln?
Svar:
Lokala variabler definieras i metoden och omfattningen av de variabler som finns i själva metoden.
Instansvariabel definieras i klassen och utanför metoden och variabelns omfattning finns i hela klassen.
F # 7) Vad är en klass?
Svar: Alla Java-koder definieras i en klass. Den har variabler och metoder.
Variabler är attribut som definierar klassens tillstånd.
Metoder är den plats där den exakta affärslogiken måste göras. Den innehåller en uppsättning uttalanden (eller) instruktioner för att uppfylla det specifika kravet.
Exempel:
public class Addition{ //Class name declaration int a = 5; //Variable declaration int b= 5; public void add(){ //Method declaration int c = a+b; } }
F # 8) Vad är ett objekt?
Svar: En förekomst av en klass kallas ett objekt. Objektet har tillstånd och beteende.
När JVM läser nyckelordet ”new ()” kommer det att skapa en instans av den klassen.
Exempel:
public class Addition{ public static void main(String() args){ Addion add = new Addition();//Object creation } }
Ovanstående kod skapar objektet för Addition-klassen.
F # 9) Vilka är OOP-begreppen?
Svar: OOP: s begrepp inkluderar:
- Arv
- Inkapsling
- Polymorfism
- Abstraktion
- Gränssnitt
Föreslagen läsning = >> Top OOP-intervjufrågor
F # 10) Vad är arv?
Svar: Arv betyder att en klass kan sträcka sig till en annan klass. Så att koderna kan återanvändas från en klass till en annan klass. Den befintliga klassen är känd som Super-klassen medan den härledda klassen är känd som en underklass.
Exempel:
Super class: public class Manupulation(){ } Sub class: public class Addition extends Manipulation(){ }
Arv är endast tillämpligt på allmänheten och skyddade medlemmar. Privata medlemmar kan inte ärvas.
F # 11) Vad är inkapsling?
Svar: Syfte med inkapsling:
- Skyddar koden från andra.
- Kodhållbarhet.
Exempel:
Vi förklarar ”a” som en heltalsvariabel och den ska inte vara negativ.
public class Addition(){ int a=5; }
Om någon ändrar den exakta variabeln som “ a = -5 ' då är det dåligt.
För att lösa problemet måste vi följa stegen nedan:
- Vi kan göra variabeln privat eller skyddad.
- Använd offentliga accessor-metoder som att ställa in och få.
Så att ovanstående kod kan modifieras som:
public class Addition(){ private int a = 5; //Here the variable is marked as private }
Koden nedan visar getter och setter.
Villkor kan tillhandahållas när du ställer in variabeln.
get A(){ } set A(int a){ if(a>0){// Here condition is applied ......... } }
För inkapsling måste vi göra alla instansvariabler privata och skapa setter och getter för dessa variabler. Vilket i sin tur kommer att tvinga andra att ringa setterna snarare än att komma åt data direkt.
F # 12) Vad är polymorfism?
Svar: Polymorfism betyder många former.
Ett enstaka objekt kan referera till superklassen eller underklassen beroende på referens typ som kallas polymorfism.
Exempel:
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(); } }
Med Manipulation referens typ kan vi kalla Addition class 'add ()' metoden. Denna förmåga kallas polymorfism. Polymorfism är tillämplig för tvingande och inte för överbelastning .
F # 13) Vad menas med metodöverskridande?
Svar: Metodöverstyrning sker om underklassmetoden uppfyller nedanstående villkor med Superklassmetoden:
- Metodnamnet ska vara detsamma
- Argumentet bör vara detsamma
- Returtypen bör också vara densamma
Den viktigaste fördelen med åsidosättande är att underklassen kan ge viss specifik information om den underklassstypen än superklassen.
Exempel:
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 kallar add () -metoden i underklassen och inte moderklassen. Så det åsidosätter Super-klassmetoden och är känd som Method Overriding.
F # 14) Vad menas med överbelastning?
Svar: Metodöverbelastning sker för olika klasser eller inom samma klass.
För metodöverbelastning bör underklassmetoden uppfylla nedanstående villkor med Super-klassmetod (eller) -metoderna i samma klass själv:
- Samma metodnamn
- Olika argumenttyper
- Det kan finnas olika returtyper
Exempel:
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(); } }
Här har metoden add () olika parametrar i klass Addition är överbelastad i samma klass som i superklassen.
Notera: Polymorfism är inte tillämplig för metodöverbelastning.
F # 15) Vad menas med gränssnitt?
Svar: Flera arv kan inte uppnås i java. För att lösa detta problem introduceras gränssnittskonceptet.
Ett gränssnitt är en mall som bara har metoddeklarationer och inte metodimplementeringen.
Exempel:
Public abstract interface IManupulation{ //Interface declaration Public abstract void add();//method declaration public abstract void subtract(); }
- Alla metoder i gränssnittet är internt offentligt abstrakt ogiltigt .
- Alla variabler i gränssnittet är internt offentlig statisk final det är konstanter.
- Klasser kan implementera gränssnittet och inte förlängas.
- Klassen som implementerar gränssnittet ska ge en implementering för alla metoder som anges i gränssnittet.
public class Manupulation implements IManupulation{ //Manupulation class uses the interface Public void add(){ …………… } Public void subtract(){ ……………. } }
F # 16) Vad menas med abstraktklass?
Svar: Vi kan skapa klassen Abstrakt genom att använda nyckelordet 'Abstrakt' före klassnamnet. En abstrakt klass kan ha både 'abstrakta' metoder och 'icke-abstrakta' metoder som är en konkret klass.
Abstrakt metod:
Metoden som endast har deklarationen och inte implementeringen kallas den abstrakta metoden och den har nyckelordet som kallas ”abstrakt”. Deklarationer slutar med semikolon.
Exempel:
public abstract class Manupulation{ public abstract void add();//Abstract method declaration Public void subtract(){ } }
- En abstrakt klass kan också ha en icke-abstrakt metod.
- Den konkreta underklassen som utökar abstraktklassen bör ge implementering av abstrakta metoder.
F # 17) Skillnad mellan Array och Array List.
Svar: Skillnaden mellan Array och Array List kan förstås från tabellen nedan:
Array | Array List |
---|---|
Storleken ska anges vid tidpunkten för arraydeklarationen. Sträng () namn = ny sträng (2) | Storlek kanske inte krävs. Det ändrar storleken dynamiskt. ArrayList namn = ny ArrayList |
För att placera ett objekt i arrayen måste vi specificera indexet. namn (1) = “bok” | Inget index krävs. name.add ('bok') |
Array är inte typparameteriserad | ArrayList i java 5.0 är parametrerade. Till exempel: Denna vinkelfäste är en typparameter som betyder en lista med strängar. |
F # 18) Skillnad mellan sträng, strängbyggare och strängbuffert.
Svar:
Sträng: Strängvariabler lagras i en 'konstant strängpool'. När strängreferensen ändrar det gamla värdet som finns i 'konstant strängpool' kan den inte raderas.
Exempel:
Strängnamn = “bok”;
Konstant strängpool
.
Om namnvärdet har ändrats från 'bok' till 'penna'.
Konstant strängpool
Sedan förblir det äldre värdet i den konstanta strängpoolen.
Strängbuffert:
- Här lagras strängvärden i en stack. Om värdena ändras ersätter det nya värdet det äldre värdet.
- Strängbufferten synkroniseras vilket är trådsäkert.
- Prestanda är långsammare än String Builder.
Exempel:
Strängbuffertnamn = ”bok”;
När namnvärdet har ändrats till 'penna' raderas 'boken' i stacken.
String Builder:
Detta är detsamma som String Buffer förutom String Builder som inte är trådad säkert som inte är synkroniserad. Så uppenbarligen är prestandan snabb.
F # 19) Förklara om specifika specifikationer för offentlig och privat åtkomst.
Svar: Metoder och instansvariabler kallas medlemmar.
Offentlig:
Offentliga medlemmar är synliga i samma paket liksom utanför paketet som är för andra paket.
webbtjänstintervjufrågor och svar
Offentliga medlemmar i klass A är synliga för klass B (samma paket) såväl som klass C (olika paket).
Privat:
Privata medlemmar är endast synliga i samma klass och inte för de andra klasserna i samma paket såväl som klasser i de yttre paketen.
Privata medlemmar i klass A är endast synliga i den klassen. Det är osynligt för klass B och klass C.
F # 20) Skillnad mellan standard- och skyddad åtkomstspecifikatorer.
Svar:
Standard: Metoder och variabler som deklarerats i en klass utan åtkomstspecifikatorer kallas standard.
Standardmedlemmar i klass A är synliga för andra klasser som finns i paketet och osynliga för klasserna som ligger utanför paketet.
Så klass A-medlemmar är synliga för klass B och osynliga för klass C.
Skyddade:
.
Skyddad är detsamma som standard men om en klass sträcker sig är den synlig även om den ligger utanför paketet.
Klass A-medlemmar är synliga för klass B eftersom de finns i paketet. För klass C är det osynligt, men om klass C utökar klass A är medlemmarna synliga för klass C även om det ligger utanför paketet.
F # 21) Skillnad mellan HashMap och HashTable.
Svar: Skillnaden mellan HashMap och HashTable kan ses nedan:
HashMap | HashTable |
---|---|
Metoder synkroniseras inte | Viktiga metoder synkroniseras |
Inte trådsäkerhet | Trådsäkerhet |
Iterator används för att upprepa värdena | Enumerator används för att upprepa värdena |
Tillåter en nollnyckel och flera nollvärden | Tillåter inte något som är ogiltigt |
Prestanda är hög än HashTable | Prestanda är långsam |
F # 22) Skillnad mellan HashSet och TreeSet.
Svar: Skillnaden mellan HashSet och TreeSet kan ses nedan:
HashSet | TreeSet |
---|---|
Infogade element är i slumpmässig ordning | Underhåller elementen i sorterad ordning |
Kan lagra nollobjekt | Det gick inte att lagra null-objekt |
Prestanda är snabb | Prestanda är långsam |
F # 23) Skillnad mellan abstrakt klass och gränssnitt.
Svar: Skillnaderna mellan abstrakt klass och gränssnitt är följande:
Abstrakt klass:
- Abstrakta klasser har en standardkonstruktör och det kallas närhelst den konkreta underklassen instanseras.
- Den innehåller såväl abstrakta metoder som icke-abstrakta metoder.
- Klassen som utökar abstraktklassen bör inte kräva implementering av alla metoder, bara abstrakta metoder behöver implementeras i den konkreta underklassen.
- Abstrakt klass innehåller instansvariabler.
Gränssnitt:
- Den har ingen konstruktör och kunde inte instiiteras.
- Den abstrakta metoden ensam bör förklaras.
- Klasser som implementerar gränssnittet ska ge implementering för alla metoder.
- Gränssnittet innehåller endast konstanter.
F # 24) Vad är innebörden av samlingar på Java?
Svar: Samling är ett ramverk som är utformat för att lagra objekten och manipulera designen för att lagra objekten.
Samlingar används för att utföra följande åtgärder:
- Sökande
- Sortering
- Manipulation
- Införande
- Radering
En grupp objekt kallas samlingar. Alla klasser och gränssnitt för insamling finns i Java-paketet.
F # 25) Vilka är alla klasser och gränssnitt som finns tillgängliga i samlingarna?
Svar: Nedan följer de klasser och gränssnitt som finns i samlingar:
Gränssnitt:
- Samling
- Lista
- Uppsättning
- Karta
- Sorterad uppsättning
- Sorterad karta
- Kö
Klasser:
- Listor:
- Array List
- Vektor
- Länkad lista
Uppsättningar:
- Hash inställd
- Länkad hashuppsättning
- Träduppsättning
Kartor:
- Hash-karta
- Hash-bord
- TreeMap
- Länkad Hashed-karta
Kö:
- Prioritetskö
F # 26) Vad menas med ordnade och sorterade i samlingar?
Svar:
Beställde: Det betyder att värdena som lagras i en samling är baserade på värdena som läggs till samlingen. Så vi kan upprepa värdena från samlingen i en specifik ordning.
Sorterad: Sorteringsmekanismer kan tillämpas internt eller externt så att gruppen av objekt som sorteras i en viss samling baseras på objektenas egenskaper.
F # 27) Förklara de olika listorna som finns i samlingen.
Svar: Värden som läggs till i listan baseras på indexpositionen och den ordnas efter indexposition. Kopior är tillåtna.
Typerna av listor är:
a) Matrislista:
- Snabb iteration och snabb slumpmässig åtkomst.
- Det är en ordnad samling (efter index) och inte sorterad.
- Den implementerar Random Access Interface.
Exempel:
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:
(Äpple, körsbär, kiwi, banan, körsbär)
Från utmatningen upprätthåller Array List insättningsordningen och accepterar dubbletterna. Men det är inte sorterat.
b) Vektor:
Det är detsamma som Array List.
- Vektormetoder synkroniseras.
- Trådsäkerhet.
- Det implementerar också Random Access.
- Trådsäkerhet orsakar vanligtvis en prestationshit.
Exempel:
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:
(körsbär, äpple, banan, kiwi, äpple)
Vector upprätthåller också insättningsordningen och accepterar dubbletterna.
c) Länkad lista:
- Element är dubbelt kopplade till varandra.
- Prestanda är långsammare än Array-listan.
- Bra val för insättning och radering.
- I Java 5.0 stöder den vanliga kömetoder peek (), Pool (), Offer () etc.
Exempel:
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, körsbär, äpple, kiwi, banan)
Upprätthåller infogningsordningen och accepterar dubbletterna.
F # 28) Förklara om Set och deras typer i en samling.
Svar: Set bryr sig om unikhet. Det tillåter inte duplikationer. Här används metoden 'lika ()' för att avgöra om två objekt är identiska eller inte.
a) Hash-uppsättning:
- Oordning och osorterad.
- Använder objektets hashkod för att infoga värdena.
- Använd detta när kravet är ”inga dubbletter och bryr dig inte om beställningen”.
Exempel:
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, körsbär, kiwi, äpple)
Den följer inte någon införingsordning. Kopior är inte tillåtna.
b) Länkad hashuppsättning:
- En beställd version av hashuppsättningen kallas Linked Hash Set.
- Underhåller en dubbelt länkad lista över alla element.
- Använd detta när en iterationsorder krävs.
Exempel:
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, körsbär, äpple, kiwi)
Den behåller insättningsordningen i vilken de har lagts till i uppsättningen. Kopior är inte tillåtna.
c) Träduppsättning:
- Det är en av de två sorterade samlingarna.
- Använder 'Read-Black' trädstrukturen och garanterar att elementen kommer att vara i stigande ordning.
- Vi kan konstruera en träduppsättning med konstruktören med hjälp av en jämförbar (eller) komparator.
Exempel:
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:
(äpple, banan, körsbär, kiwi)
TreeSet sorterar elementen i stigande ordning. Och dubbletter är inte tillåtna.
F # 29) Förklara om Map och dess typer.
Svar: Karta bryr sig om den unika identifieraren. Vi kan mappa en unik nyckel till ett visst värde. Det är ett nyckel / värdepar. Vi kan söka efter ett värde baserat på nyckeln. Liksom uppsättningen använder kartan också metoden “lika ()” för att avgöra om två tangenter är lika eller olika.
Kartan är av följande typer:
a) Hash-karta:
- Oordnad och osorterad karta.
- Hashmap är ett bra val när vi inte bryr oss om beställningen.
- Det tillåter en nollnyckel och flera nollvärden.
Exempel:
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 = körsbär, key4 = kiwi, key3 = apple}
Dubbla nycklar är inte tillåtna på kartan.
Den har ingen insättningsordning och sorteras inte.
b) Hash-tabell:
- Liksom vektornyckeln synkroniseras klassens metoder.
- Trådsäkerhet och saktar därför prestandan.
- Det tillåter inte något som är ogiltigt.
Exempel:
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 = äpple, key1 = körsbär, key4 = kiwi, key3 = banan}
Dubblettangenter är inte tillåtna.
c) Länkad Hash-karta:
- Bibehåller införingsordningen.
- Långsammare än Hash-karta.
- Jag kan förvänta mig en snabbare iteration.
Exempel:
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 = äpple, key1 = körsbär, key4 = kiwi, key3 = banan}
Dubblettangenter är inte tillåtna.
d) TreeMap:
- Sorterad karta.
- Liksom träduppsättning kan vi konstruera en sorteringsordning med konstruktören.
Exempel:
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 = körsbär, key2 = banan, key3 = äpple, key4 = kiwi}
Den sorteras i stigande ordning baserat på nyckeln. Dubblettangenter är inte tillåtna.
F # 30) Förklara prioritetskön.
Svar: Kögränssnitt
Prioritetskö: Länkad listklass har förbättrats för att implementera kögränssnittet. Köer kan hanteras med en länkad lista. Syftet med en kö är ”Priority-in, Priority-out”.
Därför ordnas element antingen naturligt eller enligt komparatorn. Elementen som beställer representerar deras relativa prioritet.
F # 31) Vad menas med undantag?
Svar: Ett undantag är ett problem som kan uppstå under det normala körningsflödet. En metod kan göra ett undantag när något klagar vid körning. Om detta undantag inte kunde hanteras avslutas körningen innan den slutför uppgiften.
Om vi hanterade undantaget fortsätter det normala flödet. Undantag är en underklass av java.lang.Exception.
Exempel för hantering av undantag:
try{ //Risky codes are surrounded by this block }catch(Exception e){ //Exceptions are caught in catch block }
F # 32) Vilka typer av undantag?
Svar: Det finns två typer av undantag. De förklaras nedan i detalj.
a) Kontrollerat undantag:
Dessa undantag kontrolleras av kompilatorn vid tidpunkten för sammanställningen. Klasser som förlänger Throwable-klassen utom Runtime-undantag och Error kallas markerade Undantag.
Markerade undantag måste antingen deklarera undantaget med hjälp av kastord (eller) omgiven av lämplig försök / fångst.
Till exempel, ClassNotFound-undantag
b) Okontrollerat undantag:
Dessa undantag kontrolleras inte av kompilatorn under kompileringstiden. Kompilatorn tvingar inte att hantera dessa undantag. Det inkluderar:
- Aritmetiska undantag
- ArrayIndexOutOfBounds Undantag
F # 33) Vilka är de olika sätten att hantera undantag?
Svar: Två olika sätt att hantera undantag förklaras nedan:
a) Använda try / catch:
Den riskabla koden omges av try block. Om ett undantag inträffar fångas det av fångblocket som följs av försöksblocket.
Exempel:
class Manipulation{ public static void main(String() args){ add(); } Public void add(){ try{ addition(); }catch(Exception e){ e.printStacktrace(); } } }
b) Genom att förklara kastord:
I slutet av metoden kan vi deklarera undantaget med kastord.
Exempel:
class Manipulation{ public static void main(String() args){ add(); } public void add() throws Exception{ addition(); } }
F # 34) Vilka är fördelarna med undantagshantering?
Svar: Fördelarna är följande:
- Det normala flödet av körningen avslutas inte om ett undantag hanteras
- Vi kan identifiera problemet med hjälp av fångstdeklaration
F # 35) Vilka är undantagshanteringsnyckelorden i Java?
Svar: På listan nedan finns de två nyckelorden för undantagshantering:
ett försök:
När en riskabel kod omges av ett försöksblock. Ett undantag som förekommer i försöksblocket fångas av ett fångstblock. Försök kan följas antingen genom att fånga (eller) äntligen (eller) båda. Men något av blocken är obligatoriskt.
b) fånga:
Detta följs av ett försöksblock. Undantag fångas här.
c) slutligen:
Detta följs antingen av försök blockera (eller) fångstblock. Detta block körs oavsett ett undantag. Så i allmänhet finns saneringskoder här.
F # 36) Förklara om förökning av undantag.
Svar: Undantag kastas först från metoden som ligger högst upp i stacken. Om den inte fångar, dyker den upp metoden och flyttar till den tidigare metoden och så vidare tills de har fått.
Detta kallas förökning av undantag.
Exempel:
public class Manipulation{ public static void main(String() args){ add(); } public void add(){ addition(); }
Från exemplet ovan ser stacken ut som visas nedan:
Om ett undantag förekommer i tillägg() metoden fångas inte, sedan flyttas den till metoden Lägg till() . Sedan flyttas den till huvud () metod och sedan kommer det att stoppa körningen. Det kallas Exception Propagation.
F # 37) Vad är det sista nyckelordet i Java?
Svar:
Variabel slut: När en variabel har deklarerats som slutlig kunde värdet på variabeln inte ändras. Det är som en konstant.
Exempel:
slutlig int = 12;
Slutlig metod: Ett sista sökord i en metod kunde inte åsidosättas. Om en metod är markerad som en final kan den inte åsidosättas av underklassen.
Slutlig klass: Om en klass förklaras som slutgiltig kan klassen inte delklassas. Ingen klass kan förlänga den sista klassen.
F # 38) Vad är en tråd?
Svar: I Java kallas körningen för tråd. Varje java-program har minst en tråd som kallas huvudtråden, huvudtråden skapas av JVM. Användaren kan definiera sina egna trådar genom att utöka trådklassen (eller) genom att implementera Runnable-gränssnittet. Trådarna körs samtidigt.
Exempel:
public static void main(String() args){//main thread starts here }
F # 39) Hur skapar du en tråd i Java?
Svar: Det finns två sätt att skapa en tråd.
a) Förläng trådklassen: Utöka en trådklass och åsidosätta körmetoden. Tråden finns i java.lang.thread.
Exempel:
Public class Addition extends Thread { public void run () { } }
Nackdelen med att använda en trådklass är att vi inte kan utöka några andra klasser eftersom vi redan har utökat trådklassen. Vi kan överbelasta run () -metoden i vår klass.
b) Implementera körbart gränssnitt: Ett annat sätt är att implementera det körbara gränssnittet. För det bör vi tillhandahålla implementeringen för metoden run () som definieras i gränssnittet.
Exempel:
Public class Addition implements Runnable { public void run () { } }
F # 40) Förklara om metoden join ().
Svar: Metoden Join () används för att gå med i en tråd med slutet på den aktuella tråden.
Exempel:
public static void main (String() args){ Thread t = new Thread (); t.start (); t.join (); }
Baserat på ovanstående kod har huvudtråden startat körningen. När den når koden t.start () sedan startar 'tråd t' den egna stacken för körningen. JVM växlar mellan huvudtråden och ”tråd t”.
När den når koden t.join () sedan körs 'tråd t' ensam och slutför sin uppgift, då startar bara huvudtråden körningen.
Det är en icke-statisk metod. Metoden Join () har en överbelastad version. Så vi kan nämna tidslängden i join () -metoden också '.s'.
F # 41) Vad gör avkastningsmetoden för trådklassen?
Svar: En yield () -metod flyttar den för närvarande körande tråden till ett körbart tillstånd och tillåter att andra trådar körs. Så att trådar med samma prioritet har en chans att springa. Det är en statisk metod. Det låser inte upp något lås.
Yield () -metoden flyttar bara tillbaka tråden till läget Runnable och inte tråden i viloläge (), vänta () (eller) block.
Exempel:
public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ Thread.yield(); } }
F # 42) Förklara om vänta () -metoden.
Svar: vänta () metoden används för att få tråden att vänta i väntepoolen. När väntemetoden () exekveras under en trådkörning, ger tråden omedelbart låset på objektet och går till väntepoolen. Wait () -metoden säger till tråden att vänta en viss tid.
Då vaknar tråden efter att notify () (eller) notify all () -metoden anropas.
Vänta () och de andra ovannämnda metoderna ger inte låset på objektet omedelbart förrän den för närvarande körande tråden slutför den synkroniserade koden. Det används mest i synkronisering.
Exempel:
public static void main (String() args){ Thread t = new Thread (); t.start (); Synchronized (t) { Wait(); } }
F # 43) Skillnad mellan notify () -metoden och notifyAll () -metoden i Java.
Svar: Skillnaderna mellan notify () -metoden och notifyAll () -metoden listas nedan:
meddela () | notifyAll () |
---|---|
Denna metod används för att skicka en signal för att väcka en enda tråd i väntepoolen. | Denna metod skickar signalen för att väcka alla trådar i en väntespole. |
F # 44) Hur stoppar jag en tråd i java? Förklara om sleep () -metoden i en tråd?
Svar: Vi kan stoppa en tråd genom att använda följande trådmetoder:
- Sovande
- Väntar
- Blockerad
Sova: Sleep () -metoden används för att sova den aktuella körtråden under en viss tid. När tråden har vaknat kan den flyttas till körbart tillstånd. Så sleep () -metoden används för att fördröja körningen under en viss period.
Det är en statisk metod.
Exempel:
Tråd. Sleep (2000)
Så det fördröjer tråden till att sova 2 millisekunder. Sleep () -metoden ger ett oavbrutet undantag, därför måste vi omge blocket 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){ } }
F # 45) När ska jag använda Runnable-gränssnittet Vs Thread-klassen i Java?
Svar: Om vi behöver vår klass för att utvidga några andra klasser än tråden kan vi gå med det körbara gränssnittet för i Java kan vi bara utöka en klass.
Om vi inte ska förlänga någon klass kan vi utöka trådklassen.
F # 46) Skillnad mellan metoden start () och run () för trådklass.
Svar: Start () -metoden skapar en ny tråd och koden inuti metoden run () körs i den nya tråden. Om vi direkt kallade run () -metoden skapas inte en ny tråd och den för närvarande körande tråden fortsätter att köra metoden run ().
F # 47) Vad är multitrådning?
Svar: Flera trådar körs samtidigt. Varje tråd startar sin egen stack baserat på flöden (eller) prioritet för trådarna.
Exempel 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 }
Vid första radens körning kallar JVM huvudmetoden och huvudtrådstacken ser ut som visas nedan.
När körningen når, t.start () linje skapas en ny tråd och den nya stacken för tråden skapas också. Nu byter JVM till den nya tråden och huvudtråden är tillbaka i körbart tillstånd.
De två staplarna ser ut som visas nedan.
Nu körde användartråden koden inuti metoden run ().
När metoden run () har slutförts växlar JVM tillbaka till huvudtråden och användartråden har slutfört uppgiften och stacken försvann.
JVM växlar mellan varje tråd tills båda trådarna är klara. Detta kallas Multi-threading.
F # 48) Förklara trådens livscykel i Java.
Svar: Tråden har följande tillstånd:
- Ny
- Körbar
- Löpning
- Kan inte köras (blockerad)
- Avslutad
- Ny: I nytt tillstånd har en trådinstans skapats men start () -metoden har ännu inte åberopats. Nu betraktas inte tråden som levande.
- Körbar : Tråden är i körbart tillstånd efter anropet av start () -metoden, men innan run () -metoden åberopas. Men en tråd kan också återgå till körbart tillstånd från att vänta / sova. I detta tillstånd anses tråden levande.
- Löpning : Tråden är i ett körande tillstånd efter att den anropat metoden run (). Nu börjar tråden körningen.
- Kan inte köras (Blockerad): Tråden lever, men den kan inte köras. Det är inte i körbart tillstånd men också kommer det att återgå till körbart tillstånd efter en tid. Exempel: vänta, sova, blockera.
- Avslutad : När körningsmetoden är klar avslutas den. Nu lever inte tråden.
F # 49) Vad är synkronisering?
Svar: Synkronisering gör bara en tråd för att komma åt ett kodblock åt gången. Om flera trådar får åtkomst till kodblocket, finns det en chans för felaktiga resultat i slutet. För att undvika detta problem kan vi tillhandahålla synkronisering för det känsliga kodblocket.
Det synkroniserade nyckelordet innebär att en tråd behöver en nyckel för att få åtkomst till den synkroniserade koden.
Lås är per objekt. Varje Java-objekt har ett lås. Ett lås har bara en nyckel. En tråd kan bara få åtkomst till en synkroniserad metod om tråden kan få nyckeln till objekten att låsa.
För detta använder vi nyckelordet 'Synkroniserat'.
Exempel:
public class ExampleThread implements Runnable{ public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ synchronized(object){ { } }
F # 50) Vad är nackdelen med synkronisering?
År: Synkronisering rekommenderas inte för att implementera alla metoder. För om en tråd kommer åt den synkroniserade koden måste nästa tråd behöva vänta. Så det gör en långsam prestanda i andra änden.
F # 51) Vad menas med serialisering?
Svar: Konvertera en fil till en byte-ström kallas Serialization. Objekten i filen konverteras till byte av säkerhetsskäl. För detta måste vi implementera ett java.io.Serialiserbart gränssnitt. Det har ingen metod att definiera.
Variabler som är markerade som övergående kommer inte att ingå i serien. Så vi kan hoppa över serialiseringen för variablerna i filen genom att använda ett övergående nyckelord.
Läs mer = >> Serialiserbar och klonbar
F # 52) Vad är syftet med en övergående variabel?
Svar: Transienta variabler ingår inte i serieiseringsprocessen. Under deserialisering sätts värdena för de övergående variablerna till standardvärdet. Det används inte med statiska variabler.
Exempel:
övergående int-tal;
F # 53) Vilka metoder används under serialiserings- och deserialiseringsprocessen?
Svar: ObjectOutputStream- och ObjectInputStream-klasserna är java.io på högre nivå. paket. Vi kommer att använda dem med lägre nivåklasser FileOutputStream och FileInputStream.
ObjectOutputStream.writeObject —-> Serialisera objektet och skriv det serieiserade objektet till en fil.
ObjectInputStream.readObject -> Läser filen och deserialiserar objektet.
För att serieiseras måste ett objekt implementera det gränssnitt som kan serieiseras. Om superklass implementerar Serializable kommer underklassen automatiskt att serialiseras.
F # 54) Vad är syftet med en flyktig variabel?
Svar: Flyktiga variabla värden läses alltid från huvudminnet och inte från trådens cacheminne. Detta används främst under synkronisering. Det är endast tillämpligt på variabler.
Exempel:
flyktigt int-nummer;
F # 55) Skillnad mellan serialisering och deserialisering i Java.
Svar: Det här är skillnaderna mellan serialisering och deserialisering i java:
Serialisering | Deserialisering |
---|---|
Serialisering är den process som används för att konvertera objekten till byte-ström | Deserialisering är den motsatta processen för serialisering där vi kan få tillbaka objekten från byteflödet. |
Ett objekt serialiseras genom att skriva ett ObjectOutputStream. | Ett objekt deserialiseras genom att läsa det från en ObjectInputStream. |
F # 56) Vad är SerialVersionUID?
Svar: När ett objekt serialiseras stämplas objektet med ett versions-ID-nummer för objektklassen. Detta ID kallas SerialVersionUID. Detta används under deserialisering för att verifiera att avsändaren och mottagaren som är kompatibel med Serialization.
Slutsats
Detta är några av de viktigaste JAVA-intervjufrågorna som täcker både de grundläggande och avancerade Java-koncepten för programmering samt utvecklarintervju, och dessa är de som har besvarats av våra JAVA-experter.
Jag hoppas att denna handledning ger dig en bra inblick i JAVA-kärnkodningskoncept i detalj. Förklaringarna ovan kommer verkligen berika din kunskap och öka din förståelse för JAVA-programmering.
Gör dig redo att trycka på en JAVA-intervju.