Java är ett av de mest populära programmeringsspråken i världen, känt för sin mångsidighet, portabilitet och breda utbud av applikationer. Java är det mest använda språket i toppföretag som Uber, Airbnb, Google, Netflix, Instagram, Spotify, Amazon och många fler på grund av dess funktioner och prestanda.
I den här artikeln kommer vi att tillhandahålla 200+ Core Java-intervjufrågor skräddarsydd för både färskare och erfarna proffs med 3, 5 och 8 års erfarenhet. Här täcker vi allt, inklusive grundläggande Java-koncept, objektorienterad programmering (OOP), multithreading, undantagshantering, designmönster, Java-samlingar och mer, som säkerligen kommer att hjälpa dig att knäcka Java-intervjuer.

Innehållsförteckning
- Java-intervjufrågor för nybörjare
- Java Intermediate Intermediate Frågor
- Java-intervjufrågor för erfarna
- Java Difference Intervjufrågor
Java-intervjufrågor för nybörjare
1. Är Java Platform Oberoende om då hur?
Ja, Java är ett plattformsoberoende språk. Till skillnad från många programmeringsspråk kompilerar javac kompilatorn programmet för att bilda en bytekod eller .class-fil. Den här filen är oberoende av mjukvaran eller hårdvaran som körs men behöver en JVM(Java Virtual Machine)-fil förinstallerad i operativsystemet för vidare exekvering av bytekoden.
Fastän JVM är plattformsberoende , kan bytekoden skapas på vilket system som helst och kan köras i vilket annat system som helst trots att hårdvara eller mjukvara används som gör Java-plattformen oberoende.
2. Vilka är de bästa Java-funktionerna?
Java är ett av de mest kända och mest använda språken i den verkliga världen, det finns många funktioner i Java som gör det bättre än något annat språk, några av dem nämns nedan:

- Enkel : Java är ganska enkelt att förstå och syntaxen
- Plattformsoberoende: Java är plattformsoberoende innebär att vi kan köra samma program i vilken mjukvara och hårdvara som helst och kommer att få samma resultat.
- Tolkad : Java tolkas såväl som ett kompilatorbaserat språk.
- Robust : funktioner som garbage collection, undantagshantering etc som gör språket robust.
- Objektorienterad : Java är ett objektorienterat språk som stöder begreppen klass, objekt, fyra pelare i OOPS, etc.
- Säkrad : Eftersom vi direkt kan dela en applikation med användaren utan att dela själva programmet gör Java till ett säkert språk.
- Hög prestanda: snabbare än andra traditionella tolkade programmeringsspråk.
- Dynamisk : stöder dynamisk laddning av klasser och gränssnitt.
- Distribuerad : funktion i Java gör att vi kan komma åt filer genom att anropa metoderna från vilken maskin som helst.
- Flertrådad : hantera flera uppgifter samtidigt genom att definiera flera trådar
- Arkitektur Neutral : det är inte beroende av arkitekturen.
3. Vad är JVM?

JVM står för Java Virtual Machine och är en Java-tolk. Den ansvarar för att ladda, verifiera och köra bytekoden som skapats i Java.
Även om det är plattformsberoende vilket betyder att programvaran för JVM är olika för olika operativsystem, spelar den en viktig roll för att göra Java-plattformen oberoende.
För att veta mer om ämnet se JVM i Java .
4. Vad är JIT?

JIT står för (Just-in-Time) kompilatorn är en del av JRE (Java Runtime Environment), den används för bättre prestanda för Java-applikationerna under körning. Användningen av JIT nämns i steg-för-steg-processen som nämns nedan:
- Källkoden kompileras med javac kompilator för att bilda bytecode
- Bytekod skickas vidare till JVM
- JIT är en del av JVM, JIT ansvarar för att kompilera bytekod till inbyggd maskinkod vid körning.
- JIT-kompilatorn är aktiverad genomgående, medan den aktiveras när en metod anropas. För en kompilerad metod anropar JVM direkt den kompilerade koden, istället för att tolka den.
- Som JVM kallar den kompilerade koden som ökar prestandan och hastigheten på exekveringen.
För att veta mer om ämnet se JIT i Java .
5. Vilka minneslagringar finns tillgängliga med JVM?

JVM består av några minneslagringar som nämns nedan:
- Class(Method) Area: lagrar klassnivådata för varje klass, såsom körtidskonstantpoolen, fält- och metoddata, och koden för metoder.
- Hög: Objekt skapas eller objekt lagras. Den används för att allokera minne till objekt under körning.
- Stack: lagrar data och delresultat som kommer att behövas samtidigt som det returnerar värde för metoden och utför dynamisk länkning
- Programräknareregister: lagrar adressen till den Java-virtuella maskininstruktion som för närvarande körs.
- Native Method Stack: lagrar alla inbyggda metoder som används i applikationen.
För att veta mer om ämnet se JVM minneslagring .
6. Vad är en klassladdare?
Classloader är den del av JRE (Java Runtime Environment), under körningen av bytekoden eller skapade .class-filen klassladdaren ansvarar för att dynamiskt ladda java-klasserna och gränssnitten till JVM (Java Virtual Machine). På grund av klassladdare behöver Java körtidssystem inte känna till filer och filsystem.
För att veta mer om ämnet se ClassLoader i Java.
7. Skillnaden mellan JVM, JRE och JDK.
JVM : JVM även känd som Java Virtual Machine är en del av JRE. JVM är en typ av tolk som ansvarar för att konvertera bytekod till maskinläsbar kod. JVM i sig är plattformsberoende men den tolkar bytekoden som är den plattformsoberoende anledningen till att Java är plattformsoberoende.
JRE : JRE står för Java Runtime Environment, det är ett installationspaket som tillhandahåller en miljö för att köra Java-programmet eller -applikationen på vilken maskin som helst.
JDK : JDK står för Java Development Kit som tillhandahåller miljön för att utveckla och köra Java-program. JDK är ett paket som innehåller två saker utvecklingsverktyg för att tillhandahålla en miljö för att utveckla dina Java-program och JRE för att köra Java-program eller -applikationer.
För att veta mer om ämnet se Skillnader mellan JVM, JRE och JDK .
8. Vilka är skillnaderna mellan Java och C++?
Grund | C++ | Java |
|---|---|---|
Plattform | C++ är plattformsberoende | Java är plattformsoberoende |
Ansökan | C++ används främst för systemprogrammering | Java används främst för applikationsprogrammering |
Hårdvara | C++ är närmare hårdvara | Java är inte så interaktivt med hårdvara |
Globalt omfattning | C++ stöder globalt och namnområde. | Java stöder inte globalt omfång. |
Stödjer inte java generika | Funktioner som stöds i Java men inte i C++ är:
| Funktioner som stöds i C++ men inte i Java är:
|
HOPPSAN | C++ är ett objektorienterat språk. Det är inte en enda rothierarki. | Java är också ett objektorienterat språk. Det är en enda rothierarki eftersom allt kommer från en enda klass (java.lang.Object). |
Arvsträd | C++ skapar alltid ett nytt arvsträd. | Java använder ett enda arvsträd eftersom klasser i Java är underordnade objektklasser i Java. |
9. Förklara public static void main(String args[]) i Java.

Till skillnad från alla andra programmeringsspråk som C, C++, etc. I Java förklarade vi huvudfunktionen som en offentlig statisk void main (String args[]). Betydelserna av termerna nämns nedan:
- offentlig : allmänheten är åtkomstmodifieraren som ansvarar för att nämna vem som kan komma åt elementet eller metoden och vad är gränsen. Den ansvarar för att göra huvudfunktionen globalt tillgänglig. Den offentliggörs så att JVM kan anropa den utanför klassen eftersom den inte finns i den aktuella klassen.
- statisk : static är ett nyckelord som används så att vi kan använda elementet utan att initiera klassen för att undvika onödig allokering av minnet.
- tomhet : void är ett nyckelord och används för att ange att en metod inte returnerar något. Eftersom huvudfunktionen inte returnerar något använder vi void.
- huvud : main representerar att den deklarerade funktionen är huvudfunktionen. Det hjälper JVM att identifiera att den deklarerade funktionen är huvudfunktionen.
- Strängarg[] : Den lagrar Java-kommandoradsargument och är en array av typen java.lang.String class.
10. Vad är Java String Pool?
En Java String Pool är en plats i heapminnet där alla strängar som definieras i programmet lagras. En separat plats i en stack är där variabeln som lagrar strängen lagras. När vi skapar ett nytt strängobjekt kontrollerar JVM förekomsten av objektet i strängpoolen. Om sträng är tillgänglig i poolen delas samma objektreferens med variabeln, annars skapas ett nytt objekt.

Exempel:
String str1='Hello'; // 'Hello' will be stored in String Pool // str1 will be stored in stack memory>
11. Vad händer om vi deklarerar att inte deklarera huvudet som statiskt?
Vi kan deklarera huvudmetoden utan att använda statisk och utan att få några fel. Men huvudmetoden kommer inte att behandlas som ingångspunkten till applikationen eller programmet.
12. Vad är paket i Java?
Paket i Java kan definieras som en gruppering av relaterade typer av klasser, gränssnitt etc som ger tillgång till skydd och namnområdeshantering.
13. Varför används paket?
Paket används i Java för att förhindra namnkonflikter, kontrollera åtkomst och göra sökning/lokalisering och användning av klasser, gränssnitt etc enklare.
14. Vilka är fördelarna med paket i Java?
Det finns olika fördelar med att definiera paket i Java.
- Paketen undviker namnkrockar.
- Paketet ger enklare åtkomstkontroll.
- Vi kan även ha de dolda klasserna som inte syns utanför och som används av paketet.
- Det är lättare att hitta de relaterade klasserna.
15. Hur många typer av paket finns det i Java?
Det finns två typer av paket i Java
- Användardefinierade paket
- Inbyggda paket
16. Förklara olika datatyper i Java.
Det finns två typer av datatyper i Java som nämns nedan:
- Primitiv datatyp
- Icke-primitiv datatyp eller objektdatatyp
Primitiv datatyp: Primitiv data är enstaka värden utan speciella möjligheter. Det finns 8 primitiva datatyper:
- booleskt : lagrar värdet sant eller falskt
- byte : lagrar ett 8-bitars signerat två-komplement heltal
- röding : lagrar ett enda 16-bitars Unicode-tecken
- kort : lagrar ett 16-bitars signerat två-komplement heltal
- int : lagrar ett 32-bitars signerat två-komplement heltal
- lång : lagrar ett 64-bitars tvåkomplement heltal
- flyta : lagrar en 32-bitars IEEE 754 flyttal med enkel precision
- dubbel : lagrar en 64-bitars IEEE 754 flyttal med dubbel precision
Icke-primitiv datatyp: Referensdatatyper kommer att innehålla en minnesadress för variabelns värden eftersom den inte kan lagra värdena direkt i minnet. Typer av icke-primitiva nämns nedan:
- Strängar
- Array
- Klass
- Objekt
- Gränssnitt
17. När en byte datatyp används?
En byte är ett 8-bitars signerat tvåkomplement heltal. Minsta värdet som stöds av bytes är -128 och 127 är maxvärdet. Det används i förhållanden där vi behöver spara minne och gränsen för antal som behövs är mellan -128 till 127.
18. Kan vi deklarera Pointer i Java?
Nej, Java tillhandahåller inte stöd för Pointer. Eftersom Java behövde vara säkrare eftersom vilken funktion av pekaren inte finns i Java.
19. Vilket är standardvärdet för byte datatype i Java?
Standardvärdet för bytedatatypen i Java är 0.
20. Vilket är standardvärdet för float och double datatype i Java?
Standardvärdet för float är 0.0f och dubbelt är 0.0d i Java.
21. Vad är Wrapper-klassen i Java?
Wrapper, i allmänhet, hänvisas till en större enhet som kapslar in en mindre enhet. Här i Java är wrapperklassen en objektklass som kapslar in de primitiva datatyperna.
De primitiva datatyperna är de från vilka ytterligare datatyper kan skapas. Till exempel kan heltal ytterligare leda till konstruktionen av lång, byte, kort, etc. Å andra sidan kan strängen inte, därför är den inte primitiv.
För att komma tillbaka till omslagsklassen innehåller Java 8 omslagsklasser. De är booleska, byte, kort, heltal, tecken, lång, flytande och dubbel. Vidare kan anpassade omslagsklasser också skapas i Java, vilket liknar konceptet Structure i programmeringsspråket C. Vi skapar vår egen inpackningsklass med de datatyper som krävs.
22. Varför behöver vi inpackningskurser?
Wrapperklassen är en objektklass som kapslar in de primitiva datatyperna, och vi behöver dem av följande skäl:
- Wrapper klasser är slutgiltiga och oföränderliga
- Tillhandahåller metoder som valueOf(), parseInt(), etc.
- Det ger funktionen för autoboxning och unboxing.
23. Gör skillnad på instansvariabler och lokala variabler.
Instansvariabel | Lokal variabel |
|---|---|
Deklareras utanför metoden, direkt åberopad av metoden. | Deklareras inom metoden. |
Har ett standardvärde. | Inget standardvärde |
Den kan användas under hela klassen. | Omfattningen är begränsad till metoden. |
24. Vilka är standardvärdena som tilldelas variabler och instanser i Java?
I Java När vi inte har initierat instansvariablerna initierar kompilatorn dem med standardvärden. Standardvärdena för instanser och variabler beror på deras datatyper. Några vanliga typer av standarddatatyper är:
- Standardvärdet för numeriska typer (byte, kort, int, lång, flytande och dubbel) är 0.
- Standardvärdet för den booleska typen är falskt.
- Standardvärdet för objekttyper (klasser, gränssnitt och arrayer) är null.
- Null-tecknet, u0000, är standardvärdet för char-typen.
Exempel:
Java // Java Program to demonstrate use of default values import java.io.*; class GFG { // static values static byte b; static int i; static long l; static short s; static boolean bool; static char c; static String str; static Object object; static float f; static double d; static int[] Arr; public static void main(String[] args) { // byte value System.out.println('byte value' + b); // short value System.out.println('short value' + s); // int value System.out.println('int value' + i); // long value System.out.println('long value' + l); System.out.println('boolean value' + bool); System.out.println('char value' + c); System.out.println('float value' + f); System.out.println('double value' + d); System.out.println('string value' + str); System.out.println('object value' + object); System.out.println('Array value' + Arr); } }> Produktion
byte value0 short value0 int value0 long value0 boolean valuefalse char value float value0.0 double value0.0 string valuenull object valuenull Array valuenull>
25. Vad är en klassvariabel?
I Java är en klassvariabel (även känd som en statisk variabel) en variabel som deklareras inom en klass men utanför någon metod, konstruktor eller block. Klassvariabler deklareras med det statiska nyckelordet, och de delas av alla instanser (objekt) av klassen såväl som av klassen själv. Oavsett hur många objekt som härleds från en klass, skulle varje klassvariabel bara existera en gång.
Exempel:
Java // Java program to demonstrate use of Clas Variable class GFG { public static int ctr = 0; public GFG() { ctr++; } public static void main(String[] args) { GFG obj1 = new GFG(); GFG obj2 = new GFG(); GFG obj3 = new GFG(); System.out.println('Number of objects created are ' + GFG.ctr); } }> Produktion
Number of objects created are 3>
26. Vilket är standardvärdet lagrat i lokala variabler?
Det finns inget standardvärde lagrat med lokala variabler. Dessutom har primitiva variabler och objekt inga standardvärden.
27. Förklara skillnaden mellan instansvariabel och en klassvariabel.
Instansvariabel: En klassvariabel utan en statisk modifierare känd som en instansvariabel delas vanligtvis av alla instanser av klassen. Dessa variabler kan ha distinkta värden mellan flera objekt. Innehållet i en instansvariabel är helt oberoende av en objektinstans från en annan eftersom de är relaterade till en specifik objektinstans av klassen.
Exempel:
Java // Java Program to demonstrate Instance Variable import java.io.*; class GFG { private String name; public void setName(String name) { this.name = name; } public String getName() { return name; } public static void main(String[] args) { GFG obj = new GFG(); obj.setName('John'); System.out.println('Name ' + obj.getName()); } }> Produktion
Name John>
Klassvariabel: Klassvariabelvariabel kan deklareras var som helst på klassnivå med nyckelordet static. Dessa variabler kan bara ha ett värde när de tillämpas på olika objekt. Dessa variabler kan delas av alla klassmedlemmar eftersom de inte är kopplade till något specifikt objekt i klassen.
Exempel:
Java // Java Program to demonstrate Class Variable import java.io.*; class GFG { // class variable private static final double PI = 3.14159; private double radius; public GFG(double radius) { this.radius = radius; } public double getArea() { return PI * radius * radius; } public static void main(String[] args) { GFG obj = new GFG(5.0); System.out.println('Area of circle: ' + obj.getArea()); } }> Produktion
Area of circle: 78.53975>
28. Vad är en statisk variabel?
Det statiska nyckelordet används för att dela samma variabel eller metod för en given klass. Statiska variabler är de variabler som en gång deklarerats så skapas en enda kopia av variabeln och delas mellan alla objekt på klassnivå.
29. Vad är skillnaden mellan System.out, System.err och System.in?
System.out – Det är en PrintStream som används för att skriva tecken eller kan sägas att den kan mata ut de data vi vill skriva på kommandoradsgränssnittets konsol/terminal.
Exempel:
Java // Java Program to implement // System.out import java.io.*; // Driver Class class GFG { // Main Function public static void main(String[] args) { // Use of System.out System.out.println(''); } }>
System.err – Den används för att visa felmeddelanden.
Exempel:
Java // Java program to demonstrate // System.err import java.io.*; // Driver Class class GFG { // Main function public static void main(String[] args) { // Printing error System.err.println( 'This is how we throw error with System.err'); } }> Produktion:
This is how we throw error with System.err>
Även om System.err har många likheter, båda har ganska stor skillnad också, låt oss kolla dem.
| System.ut | System.err |
|---|---|
Det kommer att skrivas ut till standard från systemet. | Det kommer att skrivas ut till standardfelet. |
Det används mest för att visa resultat på konsolen. | Det används mest för att mata ut feltexter. |
Det ger utdata på konsolen med standardfärgen (svart). | Det ger också utdata på konsolen men de flesta av IDE:erna ger den en röd färg för att särskilja. |
System.in – Det är en InputStream som används för att läsa indata från terminalfönstret. Vi kan inte använda System.in direkt så vi använder Scanner-klassen för att ta input med system.in.
Exempel:
Java // Java Program to demonstrate // System.in import java.util.*; // Driver Class class Main { // Main Function public static void main(String[] args) { // Scanner class with System.in Scanner sc = new Scanner(System.in); // Taking input from the user int x = sc.nextInt(); int y = sc.nextInt(); // Printing the output System.out.printf('Addition: %d', x + y); } }> Produktion:
3 4 Addition: 7>
30. Vad förstår du med en IO-ström?

Java tar med sig olika strömmar med sitt I/O-paket som hjälper användaren att utföra alla input-output-operationer. Dessa strömmar stöder alla typer av objekt, datatyper, tecken, filer etc för att fullständigt utföra I/O-operationerna.
31. Vad är skillnaden mellan Reader/Writer-klasshierarkin och InputStream/OutputStream-klasshierarkin?
Den viktigaste skillnaden mellan dem är att byteströmdata läses och skrivs av in-/utgångsströmklasser. Karaktärer hanteras av klasserna Läsare och Författare. I motsats till Reader/Writer-klasser, som accepterar teckenmatriser som parametrar, accepterar in-/utdataströmklassmetoder byte-arrayer. I jämförelse med in-/utdataströmmar är Reader/Writer-klasserna mer effektiva, hanterar alla Unicode-tecken och är användbara för internalisering. Använd Reader/Writer-klasser istället för binära data, såsom bilder, om du inte gör det.
Exempel:
Java // Java Program to demonstrate Reading Writing Binary Data // with InputStream/OutputStream import java.io.*; class GFG { public static void main(String[] args) { try { // Writing binary data to a file using OutputStream byte[] data = {(byte) 0xe0, 0x4f, (byte) 0xd0, 0x20, (byte) 0xea}; OutputStream os = new FileOutputStream('data.bin'); os.write(data); os.close(); // Reading binary data from a file using InputStream InputStream is = new FileInputStream('data.bin'); byte[] newData = new byte[5]; is.read(newData); is.close(); // Printing the read data for (byte b : newData) { System.out.println(b); } } catch (IOException e) { e.printStackTrace(); } } }> Produktion
-32 79 -48 32 -22>
32. Vilka är de bästa klasserna för alla streams?
Alla strömklasser kan delas in i två typer av klasser som är ByteStream-klasser och CharacterStream-klasser. ByteStream-klasserna är vidare uppdelade i InputStream-klasser och OutputStream-klasser. CharacterStream-klasser är också uppdelade i läsarklasser och författareklasser. SuperMost-klasserna för alla InputStream-klasser är java.io.InputStream och för alla utströmsklasser är java.io.OutPutStream. På samma sätt, för alla läsarklasser, är den överlägsna klassen java.io.Reader, och för alla författarklasser är det java.io.Writer.
33. Vad är FileInputStream och FileOutputStream?
För att läsa och skriva data erbjuder Java I/O-strömmar. En Stream representerar en ingångskälla eller en utdatadestination, som kan vara en fil, en i/o-enhet, ett annat program, etc. FileInputStream i Java används för att läsa data från en fil som en ström av byte. Det används mest för att läsa binära data som bilder, ljudfiler eller serialiserade objekt.
Exempel:
File file = new File('path_of_the_file'); FileInputStream inputStream = new FileInputStream(file);>I Java är FileOutputStream funktion används för att skriva data byte för byte till en given fil eller filbeskrivning. Vanligtvis skrivs råbytedata, såsom bilder, in i en fil med FileOutputStream.
Exempel:
File file = new File('path_of_the_file'); FileOutputStream outputStream = new FileOutputStream(file);>34. Vad är syftet med att använda klasserna BufferedInputStream och BufferedOutputStream?
När vi arbetar med filerna eller strömmen måste vi använda klasserna BufferedInputStream och BufferedOutputStream för att öka programmets Input/Output-prestanda. Dessa båda klasser ger möjligheten att buffra vilket innebär att data kommer att lagras i en buffert innan de skrivs till en fil eller läser den från en ström. Det minskar också antalet gånger som vårt operativsystem behöver interagera med nätverket eller disken. Med buffring kan program skriva en stor mängd data istället för att skriva den i små bitar. Detta minskar också kostnaderna för åtkomst till nätverket eller disken.
BufferedInputStream(InputStream inp); // used to create the bufferinput stream and save the arguments.>
BufferedOutputStream(OutputStream output); // used to create a new buffer with the default size.>
35. Vad är FilterStreams?
Strömfilter eller Filterströmmar returnerar en ström som består av elementen i denna ström som matchar det givna predikatet. När filter() arbetar, utför den faktiskt inte filtrering utan skapar istället en ny ström som, när den korsas, innehåller elementen i initiala strömmar som matchar det givna predikatet.
Exempel:
FileInputStream fis =new FileInoutStream('file_path'); FilterInputStream = new BufferedInputStream(fis);>
36. Vad är ett I/O-filter?
Ett I/O-filter som också definieras som ett Input Output-filter är ett objekt som läser från en ström och skriver data till in- och utgångskällor. Det använde java.io-paketet för att använda detta filter.
37. På hur många sätt kan du ta input från konsolen?
Det finns två metoder för att ta input från konsolen i Java som nämns nedan:
- Använder kommandoradsargument
- Använder buffrad läsarklass
- Använder Console Class
- Använder skannerklass
Programmet som visar användningen av varje metod ges nedan.
Exempel:
Java // Java Program to implement input // using Command line argument import java.io.*; class GFG { public static void main(String[] args) { // check if length of args array is // greater than 0 if (args.length > 0) { System.out.println( 'The command line arguments are:'); // iterating the args array and printing // the command line arguments for (String val : args) System.out.println(val); } else System.out.println('No command line ' + 'arguments found.'); } } // Use below commands to run the code // javac GFG.java // java Main techcodeview.com> Java // Java Program to implement // Buffer Reader Class import java.io.*; class GFG { public static void main(String[] args) throws IOException { // Enter data using BufferReader BufferedReader read = new BufferedReader( new InputStreamReader(System.in)); // Reading data using readLine String x = read.readLine(); // Printing the read line System.out.println(x); } }> Java // Java program to implement input // Using Console Class public class GfG { public static void main(String[] args) { // Using Console to input data from user String x = System.console().readLine(); System.out.println('You entered string ' + x); } }> Java // Java program to demonstrate // working of Scanner in Java import java.util.Scanner; class GfG { public static void main(String args[]) { // Using Scanner for Getting Input from User Scanner in = new Scanner(System.in); String str = in.nextLine(); System.out.println('You entered string ' + str); } }> Produktion:
techcodeview.com>
38. Skillnad i användningen av print, println och printf.
print, println och printf används alla för att skriva ut elementen men print skriver ut alla element och markören förblir på samma rad. println flyttar markören till nästa rad. Och med printf kan vi också använda formatidentifierare.
39. Vad är operatörer?
Operatörer är de speciella typerna av symboler som används för att utföra vissa operationer över variabler och värden.
40. Hur många typer av operatörer finns tillgängliga i Java?
Alla typer av operatörer i Java nämns nedan:
- Aritmetiska operatorer
- Unära operatörer
- Uppdragsoperatör
- Relationella operatörer
- Logiska operatörer
- Ternär operatör
- Bitwise operatörer
- Skiftoperatörer
- instans av operatör
Postfix-operatorer anses ha högsta prioritet enligt Java-operatörsprioritet.
41. Förklara skillnaden mellan>> och>>> operatorer.
Operatörer som>> och>>> verkar vara desamma men agerar lite annorlunda.>>-operatorn skiftar teckenbitarna och>>>-operatorn används för att skifta ut de nollfyllda bitarna.
Exempel:
Java // Java Program to demostrate //>> och>>> operatörer importerar java.io.*; // Driver class GFG { public static void main(String[] args) { int a = -16, b = 1; // Användning av>> System.out.println(a >> b); a = -17; b = 1; // Användning av>>> System.out.println(a >>> b); } }> Produktion
-8 2147483639>
42. Vilken Java-operatör är rätt associativ?
Det finns bara en operator som är rätt associativ som är = operator.
43. Vad är punktoperator?
Dot-operatorn i Java används för att komma åt instansvariablerna och metoderna för klassobjekt. Det används också för att komma åt klasser och underpaket från paketet.
44. Vad är kovariant returtyp?
Den kovarianta returtypen anger att returtypen kan variera i samma riktning som underklassen. Det är möjligt att ha olika returtyper för en överordnad metod i den underordnade klassen, men barnets returtyp bör vara en undertyp av förälderns returtyp och på grund av den överordnade metoden blir en variant med avseende på returtypen.
Vi använder kovariant returtyp på grund av följande skäl:
- Undviker förvirrande typcasts som finns i klasshierarkin och gör koden läsbar, användbar och underhållbar.
- Ger frihet att ha mer specifika returtyper vid åsidosättande av metoder.
- Hjälp med att förhindra körning av ClassCastExceptions vid returer.
45. Vad är det övergående nyckelordet?
Det transienta nyckelordet används vid tidpunkten för serialisering om vi inte vill spara värdet på en viss variabel i en fil. När JVM stöter på ett övergående nyckelord, ignorerar det det ursprungliga värdet för variabeln och sparar standardvärdet för den variabeldatatypen.
46. Vad är skillnaden mellan metoderna sleep() och wait()?
Sova() | Vänta() |
|---|---|
Metoden sleep() tillhör trådklassen. | Metoden Wait() tillhör objektklassen. |
Sleep släpper inte låset som den aktuella tråden håller. | wait() släpp låset som tillåter andra trådar att förvärva det. |
Denna metod är en statisk metod. | Denna metod är inte en statisk metod. |
| Sleep() kastar inte ett InterruptedException. | InterruptedException visas om tråden avbryts i väntan. |
Används främst för att fördröja en tråd under en viss tidsperiod. | Används främst för att pausa en tråd tills den meddelas av en annan tråd. |
Sleep() har två överbelastade metoder:
| Wait() har tre överbelastade metoder:
|
47. Vilka är skillnaderna mellan String och StringBuffer?
Sträng | StringBuffer |
|---|---|
| Lagring av en sekvens av tecken. | Ger funktionalitet för att arbeta med strängarna. |
| Det är oföränderligt. | Den är föränderlig (kan modifieras och andra strängoperationer kan utföras på dem.) |
| Inga trådoperationer i en sträng. | Det är trådsäkert (två trådar kan inte anropa metoderna för StringBuffer samtidigt) |
48. Vilka är skillnaderna mellan StringBuffer och StringBuilder?
StringBuffer | StringBuilder |
|---|---|
| StringBuffer tillhandahåller funktionalitet för att arbeta med strängarna. | StringBuilder är en klass som används för att bygga en föränderlig sträng. |
| Det är trådsäkert (två trådar kan inte anropa metoderna för StringBuffer samtidigt) | Det är inte trådsäkert (två trådar kan anropa metoderna samtidigt) |
| Jämförelsevis långsam eftersom den är synkroniserad. | Eftersom det inte är synkroniserat går implementeringen snabbare |
49. Vilken av String eller String Buffer bör föredras när det krävs många uppdateringar i datan?
Strängen är att föredra framför StringBuffer eftersom StringBuilder är snabbare än StringBuffer, men StringBuffer-objekt är att föredra framför eftersom det ger mer trådsäkerhet.
50. Varför kallas StringBuffer mutable?
StringBuffer-klassen i Java används för att representera en föränderlig teckensträng. Den erbjuder ett alternativ till den oföränderliga String-klassen genom att du kan ändra en strängs innehåll utan att hela tiden skapa nya objekt. Föränderliga (modifierbara) strängar skapas med hjälp av StringBuffer-klassen. StringBuffer-klassen i Java är identisk med String-klassen förutom att den är föränderlig.
Exempel:
Java // Java Program to demonstrate use of stringbuffer public class StringBufferExample { public static void main(String[] args) { StringBuffer s = new StringBuffer(); s.append('Geeks'); s.append('for'); s.append('Geeks'); String message = s.toString(); System.out.println(message); } }> Produktion
techcodeview.com>
51. Hur skiljer sig skapandet av en sträng med new() från skapandet av en bokstavlig?
Sträng som använder new() skiljer sig från den bokstavliga eftersom när vi deklarerar sträng lagrar den elementen i stackminnet medan när den deklareras med new() allokerar den ett dynamiskt minne i heapminnet. Objektet skapas i heapminnet även om samma innehållsobjekt finns.
Syntax:
String x = new String('ABC');>
försök fånga catch java

52. Vad är en array i Java?
En Array i Java är en datastruktur som används för att lagra en sekvens med fast storlek av element av samma typ. Element i en array kan nås genom deras index, som börjar från 0 och går upp till en längd på minus 1. Arraydeklaration i Java görs med hjälp av hakparenteser och storlek anges även under deklarationen.
Syntax:
int[] Arr = new int[5];>
53. På vilka minnesmatriser skapas i Java?
Arrayer i Java skapas i heap-minne. När en array skapas med hjälp av ett nytt nyckelord tilldelas minne i högen för att lagra elementen i arrayen. I Java hanteras heapminnet av Java Virtual Machine (JVM) och det delas även mellan alla trådar i Java-programmet. Minnet som inte längre används av programmet, JVM använder en sopsamlare för att återvinna minnet. Arrayer i Java skapas dynamiskt vilket innebär att storleken på arrayen bestäms under programmets körning. Storleken på arrayen anges under deklarationen av arrayen och den kan inte ändras när arrayen väl har skapats.
54. Vilka är typerna av en array?
Det finns två typer av arrayer, dvs primitiva arrayer och referensarrayer.
- Endimensionella matriser: Matriser som bara har en dimension, det vill säga en matris med heltal eller en matris med strängar, är kända som endimensionella matriser.

Syntax:
data_type[] Array_Name = new data_type[ArraySize];>
- Multidimensionella matriser: Matriser som har två eller flera dimensioner, såsom tvådimensionella eller tredimensionella matriser.
55. Varför börjar Java-arrayindexet med 0?
Indexet för en array anger avståndet från början av arrayen. Så det första elementet har 0 avstånd, därför är startindexet 0.
Syntax:
[Base Address + (index * no_of_bytes)]>
56. Vad är skillnaden mellan int array[] och int[] array?
Både int array[] och int[] array används för att deklarera en array med heltal i java. Den enda skillnaden mellan dem är på deras syntax ingen funktionalitetsskillnad finns mellan dem.
int arr[] is a C-Style syntax to declare an Array.>
int[] arr is a Java-Style syntax to declare an Array.>
Det rekommenderas dock generellt att använda Java-liknande syntax för att deklarera en Array. Eftersom det är lätt att läsa och förstå är det också mer konsekvent med andra Java-språkkonstruktioner.
57. Hur kopierar man en array i Java?
I Java finns det flera sätt att kopiera en Array baserat på kraven.
- clone() metod i Java: Denna metod i Java används för att skapa en ytlig kopia av den givna arrayen vilket innebär att den nya arrayen kommer att dela samma minne som den ursprungliga arrayen.
int[] Arr = { 1, 2, 3, 5, 0}; int[] tempArr = Arr.clone();>- arraycopy() metod: För att skapa en djup kopia av arrayen kan vi använda denna metod som skapar en ny array med samma värden som den ursprungliga arrayen.
int[] Arr = {1, 2, 7, 9, 8}; int[] tempArr = new int[Arr.length]; System.arraycopy(Arr, 0, tempArr, 0, Arr.length);>- copyOf() metod: Denna metod används för att skapa en ny array med en specifik längd och kopierar innehållet i den ursprungliga arrayen till den nya arrayen.
int[] Arr = {1, 2, 4, 8}; int[] tempArr = Arrays.copyOf(Arr, Arr.length);>- copyOfRange() metod: Denna metod är mycket lik metoden copyOf() i Java, men den här metoden låter oss också specificera intervallet för elementen som ska kopieras från den ursprungliga arrayen.
int[] Arr = {1, 2, 4, 8}; int[] temArr = Arrays.copyOfRange(Arr, 0, Arr.length);>58. Vad förstår du med den taggiga arrayen?
En taggig array i Java är bara en tvådimensionell array där varje rad i arrayen kan ha olika längd. Eftersom alla rader i en 2-d Array har samma längd men en taggig array tillåter större flexibilitet i storleken på varje rad. Den här funktionen är mycket användbar under förhållanden där data har olika längder eller när minnesanvändningen behöver optimeras.
Syntax:
int[][] Arr = new int[][] { {1, 2, 8}, {7, 5}, {6, 7, 2, 6} };>59. Är det möjligt att göra en array flyktig?
I Java är det inte möjligt att göra en volatil. Flyktiga nyckelord i Java kan endast tillämpas på enskilda variabler men inte på arrayer eller samlingar. Variabelns värde läses alltid från och skrivs till huvudminnet när den definieras som flyktig snarare än att vara cachad i en tråds lokala minne. Detta gör det lättare att se till att alla trådar som kommer åt variabeln kan se ändringar som gjorts i den.
60. Vilka är fördelarna och nackdelarna med en array?

Fördelarna med Arrays är:
- Direkt och effektiv åtkomst till alla element i samlingen möjliggörs av arrayer. En arrays element kan nås med en O(1)-operation, vilket innebär att mängden tid som behövs för att göra det är konstant och oberoende av arrayens storlek.
- Data kan lagras effektivt i minnet med hjälp av arrayer. Storleken på en array är känd vid kompileringstid eftersom dess element är lagrade i angränsande minnesområden.
- På grund av det faktum att data lagras i angränsande minnesområden, ger arrayer snabb datahämtning.
- Arrayer är lätta att implementera och förstå, vilket gör dem till ett idealiskt val för nybörjare som lär sig datorprogrammering.
Nackdelarna med Arrays är:
- Matriser skapas med en förutbestämd storlek som väljs i det ögonblicket. Detta innebär att om arrayens storlek behöver utökas kommer en ny array att behöva skapas och data måste kopieras från den gamla arrayen till den nya arrayen, vilket kan ta mycket tid och minne.
- Det kan finnas oanvänt minnesutrymme i en arrays minnesutrymme om arrayen inte är helt upptagen. Om du har dåligt minne kan detta vara ett problem.
- Jämfört med andra datastrukturer som länkade listor och träd kan arrayer vara stela på grund av deras fasta storlek och begränsade stöd för sofistikerade datatyper.
- Eftersom en arrays element alla måste vara av samma datatyp, stöder den inte komplexa datatyper som objekt och strukturer.
61. Vad är ett objektorienterat paradigm?
Paradigm betyder bokstavligen ett mönster eller en metod. Programmeringsparadigm är metoderna för att lösa ett program som är av fyra typer, nämligen imperativ, logisk, funktionell och objektorienterad. När objekt används som basenheter på vilka metoderna tillämpas, utförs inkapslings- eller nedärvningsfunktioner, är det känt som ett objektorienterat paradigm.
62. Vilka är huvudkoncepten för OOPs i Java?
Huvudkoncepten för OOPs i Java nämns nedan:
- Arv
- Polymorfism
- Abstraktion
- Inkapsling
63. Vad är skillnaden mellan ett objektorienterat programmeringsspråk och ett objektbaserat programmeringsspråk?
Objektorienterat programmeringsspråk | Objektbaserat programmeringsspråk |
|---|---|
| Objektorienterat programmeringsspråk täcker större begrepp som arv, polymorfism, abstraktion, etc. | Omfattningen av objektbaserad programmering är begränsad till användningen av objekt och inkapsling. |
| Den stöder alla inbyggda objekt | Det stöder inte alla inbyggda objekt |
| Exempel: Java, C#, etc. | Exempel: Javascript, visuella grunder, etc. |
64. Hur skiljer sig operatorn 'new' från operatorn 'newInstance()' i Java?
den nya operatorn används för att skapa objekt, men om vi vill bestämma vilken typ av objekt som ska skapas vid körning, finns det inget sätt att använda den nya operatorn. I det här fallet måste vi använda metoden newInstance(). .
65. Vad är klasser i Java?
I Java är klasser samlingen av objekt som delar liknande egenskaper och attribut. Klasser representerar ritningen eller mallen från vilken objekt skapas. Klasser är inte verkliga enheter utan hjälper oss att skapa objekt som är verkliga enheter.
66. Vad är skillnaden mellan statisk (klass) metod och instansmetod?
Statisk (klass) metod | Instansmetod |
|---|---|
Statisk metod är associerad med en klass snarare än ett objekt. | Instansmetoden är associerad med ett objekt snarare än en klass. |
Statiska metoder kan endast anropas med klassnamnet utan att skapa en instans av en klass. | Instansmetoden kan anropas på en specifik instans av en klass med hjälp av objektreferensen. |
Statiska metoder har inte tillgång till detta nyckelord . | Instansmetoder har tillgång till detta nyckelord . |
Denna metod kan endast komma åt statiska medlemmar av klassen | Denna metod kan komma åt både statiska och icke-statiska metoder för klassen. |
67. Vad är detta nyckelord i Java?

'detta' är ett nyckelord som används för att referera till en variabel som refererar till det aktuella objektet.
68. Vad är Brief Access Specifiers och typer av Access Specifiers?

Access Specifiers i Java hjälper till att begränsa omfattningen av en klass, konstruktor, variabel, metod eller datamedlem. Det finns fyra typer av åtkomstspecifikationer i Java som nämns nedan:
- offentlig
- Privat
- Skyddad
- Standard
69. Vad blir det initiala värdet för en objektreferens som definieras som en instansvariabel?
Initialvärdet för en objektreferens som definieras som en instansvariabel är ett NULL-värde.
70. Vad är ett föremål?
Objektet är en verklig varelse som har vissa egenskaper och metoder associerade med sig. Objektet definieras också som instansen av en klass. Ett objekt kan deklareras med ett nytt nyckelord.
71. Vilka är de olika sätten att skapa objekt i Java?
Metoder för att skapa objekt i Java nämns nedan:
- Använder nytt nyckelord
- Använder ny instans
- Använder metoden clone().
- Använder deserialisering
- Använder metoden newInstance() i klassen Constructor
För att veta mer om metoder för att skapa objekt i Java se Denna artikel .
72. Vilka är fördelarna och nackdelarna med objektkloning?
Det finns många fördelar och nackdelar med att använda objektkloning som nämns nedan:
Fördelar:
- I Java kan tilldelningsoperatorn '=' inte användas för kloning eftersom den helt enkelt skapar en kopia av referensvariabler. För att övervinna en sådan diskrepans kan clone()-metoden för klassen Object användas över tilldelningsoperatorn.
- Metoden clone() är en skyddad metod av klassen Object vilket innebär att endast klassen Employee kan klona Employee-objekt. Detta innebär att ingen annan klass än Employee kan klona Employee-objekt eftersom den inte känner till Employee-klassens attribut.
- Kodstorleken minskar när upprepningen minskar.
- Tillåter replikering (typ som prototypmönster) manuell initiering av varje fält skapar stor kod om objektet är komplext, det går snabbare med kloning.
Nackdelar:
- Eftersom Object.clone()-metoden är skyddad måste vi tillhandahålla vår egen clone() och indirekt anropa Object.clone() från den.
- Om vi inte har några metoder måste vi tillhandahålla ett kloningsbart gränssnitt eftersom vi måste tillhandahålla JVM-information så att vi kan utföra en clone() på vårt objekt. Om inte, kan vi inte klon klon gör ytlig kopia av fält om vi returnera bara super.clone() från klonmetoden som kan vara problematisk.
73. Vilka är fördelarna med att överföra detta till en metod istället för själva klassobjektet?
Det finns några fördelar med att överföra detta till en metod istället för det aktuella klassobjektet själv, dessa är:
- detta är den slutliga variabeln på grund av vilken denna inte kan tilldelas något nytt värde medan det aktuella klassobjektet kanske inte är final och kan ändras.
- detta kan användas i det synkroniserade blocket.
74. Vad är konstruktören?
Constructor är en speciell metod som används för att initiera objekt. Constructor anropas när ett objekt skapas. Namnet på konstruktören är detsamma som på klassen.
Exempel:
// Class Created class XYZ{ private int val; // Constructor XYZ(){ val=0; } };>75. Vad händer om du inte tillhandahåller en konstruktör i en klass?
Om du inte tillhandahåller en konstruktor i en klass i Java, genererar kompilatorn automatiskt en standardkonstruktor utan argument och ingen operation som är en standardkonstruktor.
76. Hur många typer av konstruktörer används i Java?
Det finns två typer av konstruktörer i Java som nämns nedan:
- Standardkonstruktör
- Parameteriserad konstruktör
Standardkonstruktör: Det är typen som inte accepterar något parametervärde. Den används för att ställa in initiala värden för objektattribut.
class_Name(); // Default constructor called>
Parameteriserad konstruktör: Det är den typ av konstruktör som accepterar parametrar som argument. Dessa används för att tilldela värden till instansvariabler under initieringen av objekt.
class_Name(parameter1, parameter2......); // All the values passed as parameter will be // allocated accordingly>
77. Vad är syftet med en standardkonstruktor?
Konstruktörer hjälper till att skapa instanser av en klass eller kan sägas skapa objekt av en klass. Constructor anropas under initieringen av objekt. En standardkonstruktor är en typ av konstruktör som inte accepterar någon parameter, så vilket värde som än tilldelas objektens egenskaper betraktas som standardvärden.
78. Vad förstår du med copy constructor i Java?
Kopieringskonstruktorn är den typ av konstruktor där vi skickar ett annat objekt som en parameter eftersom vilka egenskaper hos båda objekten verkar vara lika, det är därför det verkar som om konstruktörer skapar en kopia av ett objekt.
79. Var och hur kan du använda en privat konstruktör?
En privat konstruktor används om du inte vill att någon annan klass ska instansiera objektet för att undvika underklassning. Använd privat konstruktör kan ses som implementerad i exemplet.
Exempel:
Java // Java program to demonstrate implementation of Singleton // pattern using private constructors. import java.io.*; class GFG { static GFG instance = null; public int x = 10; // private constructor can't be accessed outside the // class private GFG() {} // Factory method to provide the users with instances static public GFG getInstance() { if (instance == null) instance = new GFG(); return instance; } } // Driver Class class Main { public static void main(String args[]) { GFG a = GFG.getInstance(); GFG b = GFG.getInstance(); a.x = a.x + 10; System.out.println('Value of a.x = ' + a.x); System.out.println('Value of b.x = ' + b.x); } }> Produktion
Value of a.x = 20 Value of b.x = 20>
80. Vilka är skillnaderna mellan konstruktörerna och metoderna?
Java-konstruktörer används för att initiera objekt. Under skapandet kallas konstruktörer för att ställa in attribut för objekt bortsett från dessa få grundläggande skillnader mellan dem:
- Konstruktörer anropas bara när objektet skapas men andra metoder kan anropas flera gånger under ett objekts livstid.
- Konstruktörer returnerar ingenting, medan andra metoder kan returnera vad som helst.
- Konstruktörer används för att ställa in det initiala tillståndet men metoder används för att utföra specifika åtgärder.
81. Vad är ett gränssnitt?
Ett gränssnitt i Java är en samling statiska slutvariabler och abstrakta metoder som definierar kontraktet eller avtalet för en uppsättning länkade klasser. Varje klass som implementerar ett gränssnitt krävs för att implementera en specifik uppsättning metoder. Den specificerar beteendet som en klass måste uppvisa men inte detaljerna för hur den ska implementeras.
Syntax:
interface { // constant fields // methds that are abstract by default }>Exempel:
Java // Java Program to demonstrate Interface import java.io.*; interface Shape { double getArea(); double getPerimeter(); } class Circle implements Shape { private double radius; public Circle(double radius) { this.radius = radius; } public double getArea() { return Math.PI * radius * radius; } public double getPerimeter() { return 2 * Math.PI * radius; } } class GFG { public static void main(String[] args) { Circle circle = new Circle(5.0); System.out.println('Area of circle is ' + circle.getArea()); System.out.println('Perimeter of circle is' + circle.getPerimeter()); } }> Produktion
Area of circle is 78.53981633974483 Perimeter of circle is31.41592653589793>
82. Ge några funktioner i gränssnittet.
Ett gränssnitt i programmeringsspråket Java definieras som en abstrakt typ som används för att specificera beteendet hos en klass. Ett gränssnitt i Java är en ritning av ett beteende. Ett Java-gränssnitt innehåller statiska konstanter och abstrakta metoder.
Funktioner i gränssnittet nämns nedan:
- Gränssnittet kan hjälpa till att uppnå total abstraktion.
- Tillåter oss att använda flera arv i Java.
- Vilken klass som helst kan implementera flera gränssnitt även när en klass bara kan utöka en klass.
- Den används också för att uppnå lös koppling.
83. Vad är ett markörgränssnitt?
Ett gränssnitt känns igen som ett tomt gränssnitt (inga fält eller metoder) det kallas ett markörgränssnitt. Exempel på markörgränssnitt är Serialiserbara, Klonbara och Fjärrgränssnitt.
84. Vilka är skillnaderna mellan abstrakt klass och gränssnitt?

Abstrakt klass | Gränssnittsklass |
|---|---|
Både abstrakta och icke-abstrakta metoder kan hittas i en abstrakt klass. | Gränssnittet innehåller endast abstrakta metoder. |
Abstrakt klass stöder Final-metoder. | Gränssnittsklassen stöder inte Final-metoder. |
Multipelarv stöds inte av klassen Abstrakt. | Flera arv stöds av Interface Class. |
Abstrakt nyckelord används för att deklarera Abstrakt klass. | Interface Keyword används för att deklarera gränssnittsklassen. |
| förlänga nyckelordet används för att utöka en abstrakt klass. | redskap Nyckelord används för att implementera gränssnittet. |
Abstrakt klass har medlemmar som skyddade, privata, etc. | Alla klassmedlemmar är offentliga som standard. |
85. Vad menar du med datainkapsling?

Data Encapsulation är begreppet OOPS egenskaper och egenskaper hos klasserna som Gränssnittet är sammanbundet. I grund och botten paketerar det data och metoder som fungerar på dessa data inom en enda enhet. Inkapsling uppnås genom att deklarera instansvariablerna för en klass som privata, vilket innebär att de bara kan nås inom klassen.
86. Vilka är fördelarna med Encapsulation i Java?
Fördelarna med Encapsulation i Java nämns nedan:
- Datadöljning: det är ett sätt att begränsa åtkomsten för våra datamedlemmar genom att dölja implementeringsdetaljerna. Inkapsling ger också ett sätt att dölja data. Användaren har ingen aning om den inre implementeringen av klassen.
- Ökad flexibilitet: Vi kan göra klassens variabler skrivskyddade eller skrivbara beroende på våra krav.
- Återanvändbarhet: Inkapsling förbättrar också återanvändbarheten och är lätt att ändra med nya krav.
- Det är enkelt att testa kod: Koden är enkel att testa för enhetstestning.
87. Vilken är den främsta fördelen med Encapsulation?
Den största fördelen med Encapsulation i Java är dess förmåga att skydda ett objekts interna tillstånd från extern modifiering eller åtkomst. Det är ett sätt att dölja implementeringsdetaljerna för en klass från åtkomst utifrån och endast exponera ett offentligt gränssnitt som kan användas för att interagera med klassen. Den största fördelen är att tillhandahålla ett sätt att kontrollera och hantera tillståndet och beteendet hos ett objekt och samtidigt skydda det från modifiering och obehörig åtkomst.
Exempel:
Java // Java Program to demonstrate use of Encapsulation import java.io.*; class Person { private String Name; private int age; public String getName() { return Name; } public void setName(String Name) { this.Name = Name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } // Driver class class GFG { // main function public static void main(String[] args) { Person p = new Person(); p.setName('Rohan'); p.setAge(29); System.out.println('Name is ' + p.getName()); System.out.println('Age is ' + p.getAge()); } }> Produktion
Name is Rohan Age is 29>
88. Vad menar du med aggregering?

Aggregation är en term relaterad till förhållandet mellan två klasser som bäst beskrivs som ett har-ett-förhållande. Denna typ är den mest specialiserade versionen av association. Det är en enkelriktad förening vilket betyder att det är en enkelriktad relation. Den innehåller hänvisningen till en annan klass och sägs ha äganderätten till den klassen.
89. Vad är 'IS-A'-relationen i OOPs Java?
'IS-A' är en typ av relation i OOPs Java där en klass ärver en annan klass.
90. Definiera arv.
När ett objekt som tillhör en underklass förvärvar alla egenskaper och beteendet hos ett överordnat objekt som är från superklassen, kallas det arv. En klass inom en klass kallas underklassen och den senare kallas superklassen. Underklassen eller den underordnade klassen sägs vara specifik medan superklassen eller föräldraklassen är generisk. Arv ger kod återanvändbarhet.
91. Vilka är de olika typerna av arv i Java?
Arv är metoden med vilken klassen Child kan ärva funktionerna i Super- eller Parent-klassen. I Java är arv av fyra typer:
- Enstaka arv: När ett barn eller en underklass bara sträcker sig över en superklass är det känt att det är enstaka arv. Ensamstående klassegenskaper överförs till den underordnade klassen.
- Arv på flera nivåer: När ett barn eller underklass utökar någon annan underklass skapas en hierarki av arv som kallas multilevel arv. Med andra ord blir en underklass moderklass till en annan.
- Hierarkiskt arv: När flera underklasser härrör från samma överordnade klass kallas hierarkiskt arv. Med andra ord, en klass som har en ensamstående förälder har många underklasser.
- Multipelt arv: När en barnklass ärver från flera överordnade klasser kallas multipelarv. I Java stöder den bara flera arv av gränssnitt, inte klasser.
92. Vad är multipelt arv? Stöds det av Java?
En komponent i det objektorienterade begreppet som kallas multipla arv tillåter en klass att ärva egenskaper från många överordnade klasser. När metoder med samma signatur finns i både superklasser och underklasser uppstår ett problem. Metodens anropare kan inte specificera för kompilatorn vilken klassmetod som ska anropas eller ens vilken klassmetod som ska ges företräde.
Notera: Java stöder inte Multiple Inheritance
Exempel:
Java // Java Program to show multiple Inheritance import java.io.*; interface Animal { void eat(); } interface Mammal { void drink(); } class Dog implements Animal, Mammal { public void eat() { System.out.println('Eating'); } public void drink() { System.out.println('Drinking'); } void bark() { System.out.println('Barking'); } } class GFG { public static void main(String[] args) { Dog d = new Dog(); d.eat(); d.drink(); d.bark(); } }> Produktion
Eating Drinking Barking>
93. Hur skiljer sig arv i C++ från Java?
Arv i C++ | Arv i Java |
|---|---|
| C++ låter användaren ärva flera klasser. | Java stöder inte flera arv. |
| När en klass skapas i C++, ärver den inte från objektklassen, utan existerar på egen hand. | Java sägs alltid ha ett enda arv eftersom alla klasser ärver på ett eller annat sätt från objektklassen. |
94. Finns det någon begränsning för att använda arv?
Ja, det finns en begränsning av att använda Arv i Java, eftersom man på grund av arv kan ärva allt från superklass och gränssnitt på grund av vilken underklass som är för klustrad och ibland felbenägen när dynamisk överstyrning eller dynamisk överbelastning görs i vissa situationer.
95. Även om arv är ett populärt OOPs-koncept är det mindre fördelaktigt än sammansättning. Förklara.
Arv är ett populärt koncept inom objektorienterad programmering (OOP), där en klass kan ärva egenskaperna och metoderna från vilken annan klass som helst, som kallas en överordnad eller superklass. Å andra sidan i Composition kan en klass innehålla en instans av en annan klass som en medlemsvariabel som ofta hänvisas till som en del eller en komponent. Nedan följer några anledningar till varför sammansättning är mer fördelaktigt än arv:
- Tät koppling: Närhelst några ändringar görs i superklassen kan dessa förändringar påverka beteendet hos alla dess barn eller underklasser. Detta problem gör koden mindre flexibel och skapar även problem under underhåll. Detta problem leder också till den täta kopplingen mellan klasserna.
- Problem med bräcklig basklass: När ändringarna i basklassen kan bryta funktionaliteten hos dess härledda klasser. Detta problem kan göra det svårt att lägga till nya funktioner eller ändra de befintliga. Detta problem är känt som Fragile Base class problem.
- Begränsad återanvändning: Arv i Java kan leda till begränsad kodåteranvändning och även kodduplicering. Eftersom en underklass ärver alla egenskaper och metoder för sin superklass, kan den ibland sluta med onödig kod som inte behövs. Detta leder till en kodbas som är mindre underhållbar.
96. Vad är en förening?
Associationen är en relation mellan två separata klasser etablerade genom deras objekt. Det representerar Has-A:s relation.
97. Vad menar du med aggregering?
Komposition är en begränsad form av aggregation där två enheter är starkt beroende av varandra. Det representerar del av förhållandet.
98. Vad är Javas sammansättning?
Komposition innebär en relation där barnet kan inte existera självständigt av föräldern. Till exempel mänskligt hjärta, hjärtat existerar inte separat från en människa.
99. Ange skillnaden mellan sammansättning och aggregation.
Aggregation | Sammansättning |
|---|---|
Den definierar en relation mellan objekten | Det representerar delen av relationen |
Objekt är oberoende av varandra. | Objekt är beroende av varandra. |
Representera det genom att använda den fyllda diamanten. | Representera det genom att använda den tomma diamanten. |
Barnföremål har inte en livstid. | Barnföremål har en livstid. |
100. Kan konstruktören ärvas?
Nej, vi kan inte ärva en konstruktör.
101. Vad är polymorfism?
Polymorfism definieras som förmågan att ta mer än en form. Den är av två typer, nämligen kompileringstidspolymorfism eller metodöverbelastning - en funktion som kallas under kompileringstiden. Ta till exempel ett klass 'område'. Baserat på antalet parametrar kan den beräkna arean av en kvadrat, triangel eller cirkel. Körtidspolymorfism eller metodöverskridande länkar under körtid. Metoden inuti en klass åsidosätter metoden för den överordnade klassen.
102. Vad är körtidspolymorfism eller dynamisk metodsändning?
Dynamisk metodsändning är en lösningsmekanism för metodöverstyrning under körtiden. Metodöverstyrning är den där metoden i en underklass har samma namn, parametrar och returtyp som en metod i superklassen. När den åsidosatta metoden anropas genom en superklassreferens, bestämmer java vilken version (superklass eller underklass) av den metoden som ska exekveras baserat på typen av ett objekt som refereras till när anropet inträffar. Därför fattas beslutet vid körning. Detta kallas dynamisk metodsändning.
103. Vad är metod åsidosättande?
Metodöverstyrning, även känd som körtidspolymorfism, är en där den underordnade klassen innehåller samma metod som den överordnade klassen. Till exempel har vi en metod som heter 'gfg()' i den överordnade klassen. En metod gfg() är återigen definierad i underklassen. Så när gfg() anropas i underklassen, exekveras metoden inom klass-id. Här har gfg() inom klassen åsidosatt metoden utanför.
104. Vad är metodöverbelastning?

Metodöverstyrning är en metod för att uppnå körtidspolymorfism i Java. Metodöverstyrning är en funktion som tillåter en underordnad klass att tillhandahålla en specifik implementering av en metod som redan tillhandahålls av en av dess överordnade klasser. När en metod i en underordnad klass har samma namn, samma parametrar eller signatur och samma returtyp (eller undertyp) som en metod i sin överordnade klass, sägs metoden i underklassen åsidosätta metoden i superklassen.
105. Kan vi åsidosätta den statiska metoden?
Nej, eftersom statiska metoder är en del av klassen snarare än objektet så kan vi inte åsidosätta dem.
106. Kan vi åsidosätta den överbelastade metoden?
Ja, eftersom den överbelastade metoden är en helt annan metod i kompilatorns ögon. Åsidosättande är inte alls samma sak. Beslutet om vilken metod som ska anropas skjuts upp till körning.
107. Kan vi överbelasta main()-metoden?
Ja i Java kan vi överbelasta huvudmetoden för att anropa huvudmetoden med hjälp av dess fördefinierade anropsmetod.
108. Vad är metodöverbelastning och metodöverskridande?
Metodöverbelastning: Det är också känt som Compile Time Polymorphism. Vid metodöverbelastning delas två eller flera metoder i samma klass med en annan signatur.
Exempel:
Java // Java Program to demonstrate use of Method Overloading import java.io.*; class GFG { static int multiply(int a, int b) { return a * b; } static int multiply(int a, int b, int c) { return a * b * c; } static int multiply(int a, int b, int c, int d) { return a * b * c * d; } public static void main(String[] args) { System.out.println('multiply() with 2 parameters'); System.out.println(multiply(4, 5)); System.out.println('multiply() with 3 parameters'); System.out.println(multiply(2, 3, 4)); System.out.println('multiply() with 4 parameters'); System.out.println(multiply(2, 3, 4, 1)); } }> Produktion
multiply() with 2 parameters 20 multiply() with 3 parameters 24 multiply() with 4 parameters 24>
Åsidosättande av metod: Metodöverstyrning inträffar när en underklass kan tillhandahålla implementeringen av en metod som redan är definierad i den överordnade klassen eller superklassen. Returtypen, namnet och argumenten måste likna metoderna i superklass.
Exempel:
Java // Java Program to demonstrate use of Method Overriding import java.io.*; class Vehicle { void drive() { System.out.println('drive() method of base class'); System.out.println('driving the Car.'); } } class Car extends Vehicle { void drive() { System.out.println( 'drive() method of derived class'); System.out.println('Car is driving.'); } } class GFG { public static void main(String[] args) { Car c1 = new Car(); Vehicle v1 = new Vehicle(); c1.drive(); v1.drive(); Vehicle vehicle = new Car(); // drive() method of Vehicle class is overridden by // Car class drive() vehicle.drive(); } }> Produktion
drive() method of derived class Car is driving. drive() method of base class driving the Car. drive() method of derived class Car is driving.>
Metod Överbelastning | Metod Åsidosättande |
|---|---|
När två eller flera metoder är i samma klass med olika parametrar men samma namn. | När en underklass tillhandahåller sin egen implementering av en metod som redan är definierad i den överordnade klassen. |
Metodöverbelastning kan bara ske i samma klass eller mellan en underklass eller överordnad klass. | Åsidosättande av metoder kan bara ske i underklass. |
När ett fel uppstår fångas det vid kompileringstillfället för programmet. | När ett fel uppstår fångas det vid körning av programmet. |
Exempel på kompileringstidspolymorfism. | Exempel på körtidspolymorfism. |
Metod Överbelastning kan kräva arv eller inte. | Metodöverstyrning behöver alltid arv. |
Det sker inom klassen. | Det utförs i två klasser med ett arvsförhållande. |
109. Kan vi åsidosätta de privata metoderna?
Det är inte möjligt att åsidosätta de privata metoderna i Java. Metodöverstyrning är där metoden i underklassen implementeras istället för metoden från den överordnade klassen. De privata metoderna är endast tillgängliga inom klassen där de är deklarerade. Eftersom denna metod inte är synlig för andra klasser och inte kan nås, kan den inte åsidosättas.
110. Kan vi ändra omfattningen av den åsidosatta metoden i underklassen?
I Java är det inte möjligt att ändra den åsidosatta metodens omfattning. Underklassmetodens omfattning måste vara lika med eller bredare än Superclass-metodens åsidosatta metods omfattning. Den åsidosatta metoden i underklassen, till exempel, kan ha ett offentligt omfattning eller ett mer tillgängligt omfattning som skyddat eller standard om den åsidosatta metoden i superklassen har ett offentligt omfattning. Den kan dock inte ha en mer exklusiv omfattning som privat.
111. Kan vi modifiera throws-satsen i superklassmetoden samtidigt som vi åsidosätter den i underklassen?
Vi kan modifiera throws-satsen för Superclass-metoden med vissa begränsningar, vi kan ändra throws-satsen för superklassmetoden samtidigt som vi åsidosätter den i underklassen. Den åsidosatta underklassens metoden kan endast ange omarkerade undantag om superklassmetoden inte deklarerar några undantag. Om superklassmetoden deklarerar ett undantag, kan underklassmetoden deklarera samma undantag, ett underklassundantag eller inget undantag alls. Underklassmetoden kan dock inte deklarera ett överordnat undantag som är bredare än de som deklareras i superklassmetoden.
112. Kan du ha virtuella funktioner i Java?
Ja, Java stöder virtuella funktioner. Funktioner är som standard virtuella och kan göras icke-virtuella med det sista nyckelordet.
113. Vad är abstraktion?
Abstraktion hänvisar till handlingen att representera väsentliga egenskaper utan att inkludera bakgrundsdetaljer. Den detaljerade informationen eller implementeringen är dold. Det vanligaste exemplet på abstraktion är en bil, vi vet hur man sätter på motorn, accelererar och rör sig, men hur motorn fungerar och dess interna komponenter är komplex logik gömd för de allmänna användarna. Detta görs vanligtvis för att hantera komplexiteten.
114. Vad är abstrakt klass?
En klass som deklareras som abstrakt kan inte instansieras, dvs objektet kan inte skapas. Den kan innehålla abstrakta metoder men om en klass har minst en abstrakt metod måste den förklaras abstrakt.
Exempel på en abstrakt klass med abstrakt metod:
Java // Java Program to implement // abstract method import java.io.*; // Abstract class abstract class Fruits { abstract void run(); } // Driver Class class Apple extends Fruits { void run() { System.out.println('Abstract class example'); } // main method public static void main(String args[]) { Fruits obj = new Apple(); obj.run(); } }> 115. När används abstrakta metoder?
En abstrakt metod används när vi vill använda en metod men vill underordnade klasser för att bestämma implementeringen i så fall använder vi abstrakta metoder med överordnade klasser.
116. Hur kan du undvika serialisering i den underordnade klassen om basklassen implementerar gränssnittet Serializable?
Serialisering i den underordnade klassen om basklassen implementerar Serializable-gränssnittet kan vi undvika det genom att definiera metoden writeObject() och kasta NotSerializableException().
117. Vad är Collection Framework i Java?
Samlingar är enheter av objekt i Java. Samlingsramverket är en uppsättning gränssnitt och klasser i Java som används för att representera och manipulera samlingar av objekt på en mängd olika sätt. Samlingsramverket innehåller klasser (ArrayList, Vector, LinkedList, PriorityQueue, TreeSet) och flera gränssnitt (Set, List, Queue, Deque) där varje gränssnitt används för att lagra en specifik typ av data.
118. Förklara olika gränssnitt som används i samlingsramverket.
Insamlingsram implementerar
- Insamlingsgränssnitt
- Listgränssnitt
- Ställ in gränssnitt
- Kögränssnitt
- Och gränssnittet
- Kartgränssnitt
Samlingsgränssnitt: Collection är det primära gränssnittet som kan importeras med java.util.Collection.
Syntax:
public interface Collection extends iterable>
119. Hur kan du synkronisera en ArrayList i Java?
En ArrayList kan synkroniseras med två metoder som nämns nedan:
- Använda Collections.synchronizedList()
- Använder CopyOnWriteArrayList
Använder Collections.synchronizedList():
public static List synchronizedList(List list)>
Använda CopyOnWriteArrayList:
- Skapa en tom lista.
- Den implementerar List-gränssnittet
- Det är en trådsäker variant av ArrayList
- T representerar generisk
120. Varför behöver vi en synkroniserad ArrayList när vi har vektorer (som är synkroniserade) i Java?
ArrayList är i behov även när vi har vektorer på grund av vissa skäl:
- ArrayList är snabbare än Vectors.
- ArrayList stöder multithreading medan Vectors endast stöder entrådsanvändning.
- ArrayList är säkrare att använda, eftersom Vectors stöder enstaka trådar och individuella operationer är mindre säkra och tar längre tid att synkronisera.
- Vektorer anses föråldrade i Java på grund av deras synkroniserade natur.
121. Varför kan vi inte skapa en generisk array?
Generiska arrayer kan inte skapas eftersom en array bär typinformation om dess element vid körning, på grund av vilket den under körning kastar 'ArrayStoreException' om elementens typ inte är liknande. Eftersom generisk typinformation raderas vid kompilering av Type Erasure, skulle array-lagringskontrollen ha klarats där den borde ha misslyckats.
122. Sammanhängande minnesplatser används vanligtvis för att lagra faktiska värden i en array men inte i ArrayList. Förklara.
Elementen i en array lagras på sammanhängande minnesplatser, vilket innebär att varje element lagras i ett separat block baserat på det placerat i arrayen. Eftersom elementen i arrayen lagras på sammanhängande platser kan det vara relativt enkelt att komma åt vilket element som helst genom dess index, eftersom elementadressen kan beräknas baserat på elementets plats. Men Java implementerar ArrayLists som dynamiska arrayer, vilket innebär att storleken kan ändras när element tas bort eller läggs till. ArrayList-element lagras inte på angränsande minnesplatser för att tillgodose denna dynamiska natur. Istället använder ArrayList en metod som kallas en expanderbar array där den underliggande arrayen utökas till en större storlek efter behov och elementen sedan kopieras till den nya platsen. Till skillnad från en ArrayList, som har en dynamisk storlek och inte lagrar dess element i angränsande minnesplatser, har en array en fast storlek och dess element lagras där.
123. Förklara metoden för att konvertera ArrayList till Array och Array till ArrayList.
Konvertering av List till ArrayList
Det finns flera metoder för att konvertera List till ArrayList

Programmerare kan konvertera en Array till ArrayList med metoden asList() i klassen Arrays. Det är en statisk metod av klassen Arrays som accepterar List-objektet.
Syntax:
Arrays.asList(item)>
Exempel:
Java // Java program to demonstrate conversion of // Array to ArrayList of fixed-size. import java.util.*; // Driver Class class GFG { // Main Function public static void main(String[] args) { String[] temp = { 'Abc', 'Def', 'Ghi', 'Jkl' }; // Conversion of array to ArrayList // using Arrays.asList List conv = Arrays.asList(temp); System.out.println(conv); } }> Produktion
[Abc, Def, Ghi, Jkl]>
Konvertering av ArrayList till Array

Java-programmerare kan konvertera ArrayList till
java check är null
Syntax:
List_object.toArray(new String[List_object.size()])>
Exempel:
Java // Java program to demonstrate working of // Objectp[] toArray() import java.io.*; import java.util.List; import java.util.ArrayList; // Driver Class class GFG { // Main Function public static void main(String[] args) { // List declared List<Integer> arr = new ArrayList<Integer>(); arr.add(1); arr.add(2); arr.add(3); arr.add(2); arr.add(1); // Conversion Object[] objects = arr.toArray(); // Printing array of objects for (Object obj : objects) System.out.print(obj + ' '); } }> Produktion
1 2 3 2 1>
124. Hur växer storleken på ArrayList dynamiskt? Och ange även hur det implementeras internt.
På grund av ArrayLists arraybaserade natur växer den dynamiskt i storlek, vilket säkerställer att det alltid finns tillräckligt med utrymme för element. När ett ArrayList-element först skapas är standardkapaciteten cirka 10-16 element, vilket i grunden beror på Java-versionen. ArrayList-element kopieras över från den ursprungliga arrayen till den nya arrayen när kapaciteten för den ursprungliga arrayen är full. När ArrayList-storleken ökar dynamiskt skapar klassen en ny array med större storlekar och den kopierar alla element från den gamla arrayen till den nya arrayen. Nu används referensen för den nya arrayen internt. Denna process att dynamiskt växa en array kallas storleksändring.
125. Vad är en vektor i Java?
Vektorer i Java liknar varandra och kan lagra flera element i dem. Vektorer följer vissa regler som nämns nedan:
- Vektor kan importeras med Java.util.Vector.
- Vektor implementeras med hjälp av en dynamisk array när storleken på vektorn ökar och minskar beroende på de element som infogas i den.
- Element av vektorn med hjälp av indexnummer.
- Vektorer är synkroniserade i naturen innebär att de bara använde en enda tråd (endast en process utförs vid en viss tidpunkt).
- Vektorn innehåller många metoder som inte ingår i samlingsramverket.
Syntax:
Vector gfg = new Vector(size, increment);>
126. Hur gör jag Java ArrayList skrivskyddad?
En ArrayList kan endast göras klar med metoden som tillhandahålls av Collections med metoden Collections.unmodifiableList() .
Syntax:
array_readonly = Collections.unmodifiableList(ArrayList);>
Exempel:
Java // Java program to demonstrate // unmodifiableList() method import java.util.*; public class Main { public static void main(String[] argv) throws Exception { try { // creating object of ArrayList <Character> ArrayList<Character> temp = new ArrayList<Character>(); // populate the list temp.add('X'); temp.add('Y'); temp.add('Z'); // printing the list System.out.println('Initial list: ' + temp); // getting readonly list // using unmodifiableList() method List<Character> new_array = Collections.unmodifiableList(temp); // printing the list System.out.println('ReadOnly ArrayList: ' + new_array); // Adding element to new Collection System.out.println('
If add element in ' + ' the ReadOnly ArrayList'); new_array.add('A'); } catch (UnsupportedOperationException e) { System.out.println('Exception is thrown : ' + e); } } }> Produktion
Initial list: [X, Y, Z] ReadOnly ArrayList: [X, Y, Z] If add element in the ReadOnly ArrayList Exception is thrown : java.lang.UnsupportedOperationException>
127. Vad är en prioriterad kö i Java?

En prioritetskö är en abstrakt datatyp som liknar en vanlig kö- eller stackdatastruktur. Element lagrade i element är beroende av den prioritet som definieras från låg till hög. PriorityQueue är baserad på prioritetshögen.
Syntax:
Java // Java program to demonstrate the // working of PriorityQueue import java.util.*; class PriorityQueueDemo { // Main Method public static void main(String args[]) { // Creating empty priority queue PriorityQueue<Integer> var1 = new PriorityQueue<Integer>(); // Adding items to the pQueue using add() var1.add(10); var1.add(20); var1.add(15); // Printing the top element of PriorityQueue System.out.println(var1.peek()); } }> Produktion
10>
128. Förklara klassen LinkedList.
LinkedList-klassen är Java som använder en dubbellänkad lista för att lagra element. Den ärver klassen AbstractList och implementerar List- och Deque-gränssnitt. Egenskaperna för klassen LinkedList nämns nedan:
- LinkedList-klasser är icke-synkroniserade.
- Upprätthåller insättningsordningen.
- Den kan användas som en lista, stack eller kö.
Syntax:
LinkedList list_name=new LinkedList();>
129. Vad är Stack-klassen i Java och vilka olika metoder tillhandahålls av den?
En Stack-klass i Java är en LIFO-datastruktur som implementerar Last In First Out-datastrukturen. Den härrör från en Vector-klass men har funktioner som är specifika för stackar. Stackklassen i java tillhandahåller följande metoder:
- titt(): returnerar det översta föremålet från stapeln utan att ta bort det
- tömma(): returnerar sant om stacken är tom och annars falsk
- skjuta på(): skjuter ett föremål överst i högen
- pop(): tar bort och returnerar det översta föremålet från stapeln
- Sök(): returnerar objektets 1, baserade position från toppen av stacken. Om objektet inte finns i stacken, returnerar det -1
130. Vad ställs in i Java Collections-ramverket och lista ner dess olika implementeringar?
Uppsättningar är samlingar som inte lagrar dubbletter av element. De håller ingen ordning på elementen. Java Collections-ramverket tillhandahåller flera implementeringar av Set-gränssnittet, inklusive:
- HashSet: HashSet i Java, lagrar elementen i en has-tabell som ger snabbare uppslag och snabbare infogning. HashSet är inte beställt.
- LinkedHashSet: LinkedHashSet är en implementering av HashSet som upprätthåller insättningsordningen för elementen.
- Träduppsättning: TreeSet lagrar elementen i en sorterad ordning som bestäms av den naturliga ordningen av elementen eller av en anpassad komparator som tillhandahålls vid tidpunkten för skapandet.
131. Vad är HashSet-klassen i Java och hur lagrar den element?
Klassen HashSet implementerar Set-gränssnittet i Java Collections Framework och är medlem i HashSet-klassen. Till skillnad från dubbletter av värden lagrar den en samling distinkta element. I den här implementeringen mappas varje element till ett index i en array med hjälp av en hashfunktion, och indexet används för att snabbt komma åt elementet. Den producerar ett index för elementet i arrayen där det lagras baserat på inmatningselementet. Förutsatt att hash-funktionen fördelar elementen mellan hinkarna på lämpligt sätt, ger HashSet-klassen konstant-tidsprestanda för grundläggande operationer (lägg till, ta bort, innehåll och storlek).
132. Vad är LinkedHashSet i Java Collections Framework?
LinkedHashSet är en ordnad version av Hashset som underhålls av en dubbellänkad lista över alla element. Det är mycket användbart när iterationsordning behövs. Under iteration i LinkedHashSet returneras element i samma ordning som de infogas.
Syntax:
LinkedHashSet hs = new LinkedHashSet();>
Exempel:
Java // Java Program to implement // LinkedHashSet import java.io.*; import java.util.*; // Driver Class class GFG { // Main Function public static void main(String[] args) { // LinkedHashSet declared LinkedHashSet<Integer> hs = new LinkedHashSet<Integer>(); // Add elements in HashSet hs.add(1); hs.add(2); hs.add(5); hs.add(3); // Print values System.out.println('Values:' + hs); } }> Produktion
Values:[1, 2, 5, 3]>
133. Vad är ett kartgränssnitt i Java?

Kartgränssnittet finns i Java-samlingen och kan användas med Java.util-paketet. Ett kartgränssnitt används för att kartlägga värden i form av ett nyckel-värdeformulär. Kartan innehåller alla unika nycklar. Dessutom tillhandahåller det metoder som är associerade med det som containsKey(), innehåller värde (), etc.
Det finns flera typer av kartor i kartgränssnittet som nämns nedan:
- Sorterad karta
- Trädkarta
- HashMap
- LinkedHashMap
134. Förklara Treemap i Java
TreeMap är en typ av karta som lagrar data i form av nyckel-värdepar. Det implementeras med hjälp av det röd-svarta trädet. Funktioner i TreeMap är:
- Den innehåller bara unika element.
- Den kan inte ha en NULL-nyckel
- Den kan ha flera NULL-värden.
- Den är osynkroniserad.
- Den upprätthåller stigande ordning.
135. Vad är EnumSet?
EnumSet är en specialiserad implementering av Set-gränssnittet för användning med uppräkningstyp. Några funktioner i EnumSet är:
- Den är osynkroniserad.
- Snabbare än HashSet.
- Alla element i en EnumSet måste komma från en enda uppräkningstyp.
- Det tillåter inte null-objekt och kastar NullPointerException för undantag.
- Den använder en felsäker iterator.
Syntax:
public abstract class EnumSet>
Parameter: E specificerar elementen.
136. Vad är BlockingQueue?

En blockeringskö är en kö som stöder de operationer som väntar på att kön inte blir tom när elementet hämtas och tas bort, och som väntar på att utrymme blir tillgängligt i kön medan elementet läggs till.
Syntax:
public interface BlockingQueue extends Queue>
Parametrar: E är den typ av element som lagras i samlingen
137. Vad är ConcurrentHashMap i Java och implementerar du den?
ConcurrentHashMap implementeras med hjälp av Hashtable.
Syntax:
public class ConcurrentHashMap extends AbstractMap implements ConcurrentMap, Serializable>
Parametrar : K är nyckelobjekttypen och V är värdet Objekttyp
138. Kan du använda vilken klass som helst som en kartnyckel?
Ja, vi kan använda vilken klass som helst som en kartnyckel om den följer vissa fördefinierade regler som nämns nedan:
- Klassen som åsidosätter metoden equals() måste också åsidosätta hashCode()-metoden
- Klassen ConcurrentHashMap är trådsäker.
- Standard samtidighetsnivå för ConcurrentHashMap är 16.
- Att infoga null-objekt i ConcurrentHashMap är inte möjligt som nyckel eller värde.
139. Vad är en Iterator?

Iterator-gränssnittet tillhandahåller metoder för att iterera över valfri samling i Java. Iterator ersätter Enumeration i Java Collections Framework. Den kan hämta en iteratorinstans från en samling med metoden _iterator()_. Det tillåter också den som ringer att ta bort element från den underliggande samlingen under iterationen.
140. Vad är en uppräkning?
Uppräkning är en användardefinierad datatyp. Det används främst för att tilldela namn till integralkonstanter, namnen gör ett program lätt att läsa och underhålla. Huvudsyftet med uppräkningen är att definiera användardefinierade datatyper.
Exempel:
// A simple enum example where enum is declared // outside any class (Note enum keyword instead of // class keyword) enum Color { RED, GREEN, BLUE; }>141. Vad är skillnaden mellan samling och samlingar?
Samling | Samlingar |
|---|---|
Samlingen är ett gränssnitt. | Samlingar är en klass. |
Det tillhandahåller standardfunktionaliteten för datastruktur. | Det är att sortera och synkronisera samlingselementen. |
Den tillhandahåller metoderna som kan användas för datastrukturen. | Den tillhandahåller statiska metoder som kan användas för olika operationer. |
142. Gör skillnad på Array och ArrayList i Java.
Array | ArrayList |
|---|---|
Endimensionell eller flerdimensionell | Endimensionell |
För och för varje som används för iteration | Här används iterator för att korsa riverArrayList |
length nyckelord returnerar storleken på arrayen. | metoden size() används för att beräkna storleken på ArrayList. |
Arrayen har fast storlek. | ArrayList-storleken är dynamisk och kan ökas eller minskas i storlek vid behov. |
Den är snabbare som ovan vi ser den av fast storlek | Det är relativt långsammare på grund av dess dynamiska natur |
Primitiva datatyper kan lagras direkt i osannolika objekt. | Primitiva datatyper läggs inte direkt till osannolika arrayer, de läggs till indirekt med hjälp av autoboxning och unboxing |
De kan inte läggas till här, därför är typen i det osäkra. | De kan läggas till här vilket gör ArrayList typsäker. |
Uppdragsoperatören tjänar bara syftet | Här används en speciell metod som kallas add()-metoden |
143. Vad är skillnaden mellan Array och Collection i Java?
Array | Samlingar |
|---|---|
Array i Java har en fast storlek. | Samlingar i Java har dynamiska storlekar. |
I en array lagras element i angränsande minnesplatser. | I samlingar lagras inte nödvändigtvis element i angränsande minnesplatser. |
Objekt och primitiva datatyper kan lagras i en array. | Vi kan bara lagra föremål i samlingar. |
Manuell manipulation krävs för att ändra storlek på arrayen. | Ändring av storlek i samlingar hanteras automatiskt. |
Arrayen har grundläggande metoder för manipulation. | Samlingar har avancerade metoder för manipulation och iteration. |
Arrayen är tillgänglig sedan början av Java. | Samlingar introducerades i Java 1.2. |
144. Skillnaden mellan ArrayList och LinkedList.
ArrayList | Länkad lista |
|---|---|
ArrayList implementeras som en expanderbar Array. | LinkedList implementeras som en dubbellänkad lista. |
I ArrayList lagras element i angränsande minnesplatser | LinkedList-element lagras på icke-sammanhängande minnesplatser eftersom varje element har en referens till nästa och föregående element. |
ArrayLists är snabbare för slumpmässig åtkomst. | LinkedLists är snabbare för infogning och borttagning |
ArrayLists är mer minneseffektiva. | LinkedList är mindre minneseffektivt |
ArrayLists Använd mer minne på grund av att arraystorleken bibehålls. | LinkedList Använder mindre minne eftersom den bara har referenser till element |
Sökoperationen är snabbare i ArrayList. | Sökoperationen är långsammare i LinkedList |
145. Gör skillnad på ArrayList och Vector i Java.
ArrayList | Vektor |
|---|---|
ArrayLists implementeras som en expanderbar array. | Vector implementeras som en odlingsbar array. |
ArrayList är inte synkroniserad. | Vektorn är synkroniserad. |
ArrayLists är snabbare för icke samtidiga operationer. | Vector är långsammare för icke samtidiga operationer på grund av extra overhead för synkronisering. |
ArrayLists introducerades i Java 1.2. | Vector introducerades i JDK 1.0. |
Rekommenderas för användning i en entrådig miljö. | Vektorer rekommenderas för användning i en flertrådig miljö. |
Standardinledande kapacitet för ArrayLists är 10. | I Vectors är standardinledande kapacitet 10 men standardökningen är dubbelt så stor. |
ArrayList prestanda är hög. | Vektorprestandan är låg. |
146. Vad är skillnaden mellan Iterator och ListIterator?
Iterator | ListIterator |
|---|---|
Kan korsa element som finns i samlingen endast i riktning framåt. | Kan korsa element som finns i samlingen både framåt och bakåt. |
Används för att gå igenom Karta, Lista och Set. | Kan bara gå igenom List och inte de andra två. |
Index kan inte erhållas med Iterator | Den har metoder som nextIndex() och previousIndex() för att erhålla index av element när som helst när du går igenom listan. |
Det går inte att ändra eller ersätta element som finns i samlingen | Kan modifiera eller ersätta element med hjälp av set(E e) |
Kan inte lägga till element och kastar också ConcurrentModificationException. | Kan enkelt lägga till element i en samling när som helst. |
Vissa metoder för Iterator är next(), remove() och hasNext(). | Vissa metoder för ListIterator är next(), previous(), hasNext(), hasPrevious(), add(E e). |
147. Gör skillnad på HashMap och HashTable.
HashMap | HashTable |
|---|---|
HashMap är inte synkroniserat | HashTable är synkroniserad |
En nyckel kan vara ett NULL-värde | NULL-värden är inte tillåtna |
Iteratorn används för att gå igenom HashMap. | Både Iterator och Enumertar kan användas |
HashMap är snabbare. | HashTable är långsammare jämfört med HashMap. |
148. Vad är skillnaden mellan Iterator och Enumeration?
Iterator | Uppräkning |
|---|---|
Iteratorn kan passera både äldre och icke-legacy element. | Uppräkning kan endast passera äldre element. |
Iteratorn är felsnabb. | Uppräkningen går inte snabbt. |
Iteratorerna är långsammare. | Uppräkningen går snabbare. |
Iteratorn kan utföra en borttagningsoperation medan den korsar samlingen. | Uppräkningen kan endast utföra traversoperationer på samlingen. |
149. Vad är skillnaden mellan Comparable och Comparator?
Jämförbar | Komparator |
|---|---|
Gränssnittet finns i paketet java.lang. | Gränssnittet finns i paketet java.util. |
Tillhandahåller metoden compareTo() för att sortera element. | Tillhandahåller metoden compare() för att sortera element. |
Det ger enstaka sorteringssekvenser. | Det ger flera sorteringssekvenser. |
Sorteringslogiken måste vara i samma klass vars objekt du ska sortera. | Logiken för sortering bör vara i en separat klass för att skriva olika sortering baserat på olika attribut för objekt. |
Metoden sorterar data enligt fast sorteringsordning. | Metod sorterar data enligt den anpassade sorteringsordningen. |
Det påverkar originalklassen. | Det påverkar inte den ursprungliga klassen. |
Implementeras ofta i API:t av Kalender, Wrapper-klasser, Datum och String. | Det är implementerat för att sortera instanser av tredje parts klasser. |
150. Vad är skillnaden mellan Set och Map?
Uppsättning | Karta |
|---|---|
Set-gränssnittet implementeras med paketet java.util. | Kartan implementeras med paketet java.util. |
Det kan utöka samlingsgränssnittet. | Det utökar inte samlingsgränssnittet. |
Det tillåter inte dubbletter av värden. | Det tillåter dubbletter av värden. |
Uppsättningen kan bara sortera ett nollvärde. | Kartan kan sortera flera nollvärden. |
Java Intermediate Intermediate Frågor
151. Förklara FailFast-iteratorn och FailSafe-iteratorn tillsammans med exempel för var och en.
En FailFast iterator är en iterator som kastar en ConcurrentModificationException om den upptäcker att den underliggande samlingen har ändrats medan iteratorn används. Detta är standardbeteendet för iteratorer i Java Collections Framework. Till exempel är iteratorn för en HashMap FailFast.
Exempel:
Java // Java Program to demonstrate FailFast iterator import java.io.*; import java.util.HashMap; import java.util.Iterator; import java.util.Map; class GFG { public static void main(String[] args) { HashMap<Integer, String> map = new HashMap<>(); map.put(1, 'one'); map.put(2, 'two'); Iterator<Map.Entry<Integer, String> > iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<Integer, String> entry = iterator.next(); // this will throw a // ConcurrentModificationException if (entry.getKey() == 1) { map.remove(1); } } } }> Produktion:
Exception in thread 'main' java.util.ConcurrentModificationException>
En FailSafe-iterator kastar inte en ConcurrentModificationException om den underliggande samlingen ändras medan iteratorn används. Alternativt skapar den en ögonblicksbild av samlingen vid den tidpunkt då iteratorn skapas och itererar över ögonblicksbilden. Till exempel är iteratorn för en ConcurrentHashMap FailSafe.
Exempel:
Java
// Java Program to demonstrate FailSafe import java.io.*; import java.util.Iterator; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; class GFG { public static void main(String[] args) { ConcurrentHashMap<Integer, String> map = new ConcurrentHashMap<>(); map.put(1, 'one'); map.put(2, 'two'); Iterator<Map.Entry<Integer, String> > iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<Integer, String> entry = iterator.next(); // this will not throw an exception if (entry.getKey() == 1) { map.remove(1); } } } }> 152. Vad är undantagshantering?
En Undantag är en händelse som avbryter programmets normala flöde och kräver speciell bearbetning. Under körningen av ett program kan fel och oplanerade händelser hanteras med hjälp av Java Exception Handling-mekanismen. Nedan följer några anledningar till varför undantag förekommer i Java:
- Enhetsfel
- Förlust av nätverksanslutning
- Kodfel
- Öppnar en otillgänglig fil
- Ogiltig användarinmatning
- Fysiska begränsningar (slut på diskminne)
153. Hur många typer av undantag kan förekomma i ett Java-program?

Det finns i allmänhet två typer av undantag i Java:
- Inbyggda undantag: Inbyggda undantag i Java tillhandahålls av Java Libraries. Dessa undantag kan delas in ytterligare i två underkategorier, dvs markerade och omarkerade undantag. Nedan är några av de inbyggda undantagen i Java:
- ArrayIndexOutOfBoundsExceptions
- ClassNotFoundException
- FileNotFoundException
- IOException
- NullPointerException
- ArithmeticException
- InterruptedException
- RuntimeException
- Användardefinierade undantag: Användardefinierade undantag definieras av programmerarna själva för att hantera vissa specifika situationer eller fel som inte täcks av inbyggda undantag. För att definiera användardefinierade undantag måste en ny klass som utökar den lämpliga undantagsklassen definieras. Användardefinierade undantag i Java används när de inbyggda undantagen är i Java.
154. Skillnaden mellan ett fel och ett undantag.
Fel | Undantag |
|---|---|
Det går inte att återställa från fel. | Återställ från undantag genom att antingen använda ett försök-fångst-block eller kasta undantag tillbaka till den som ringer. |
Fel är alla omarkerade typer i Java. | Det inkluderar både markerade och omarkerade typer som förekommer. |
Fel orsakas oftast av miljön där programmet körs. | Programmet är mest ansvarigt för att orsaka undantag. |
Fel kan uppstå vid kompilering och körning. Kompileringstid: Syntaxfel, Körtid: Logiskt fel. | Alla undantag inträffar under körning men markerade undantag är kända för kompilatorn medan omarkerade inte är det. |
De är definierade i paketet java.lang.Error. | De är definierade i java.lang.Exception-paketet |
Exempel : java.lang.StackOverflowError, java.lang.OutOfMemoryError | Exempel : Markerade undantag: SQLException, IOException Omarkerade undantag: ArrayIndexOutOfBoundException, NullPointerException, ArithmeticException. |
155. Förklara hierarkin för Java Exception-klasser.

Alla undantags- och feltyper i Java är underklasser av klassen throwable, som är basklassen i hierarkin. Denna klass används sedan för exceptionella förhållanden som användarprogram bör fånga. NullPointerException är ett exempel på ett sådant undantag. En annan gren, fel används av Java runtime-systemet för att indikera fel som har att göra med JRE. StackOverflowError är ett exempel på ett sådant fel.
156. Förklara körtidsundantag.
Runtime-undantag är undantag som inträffar under exekvering av en kod, till skillnad från kompileringstidsundantag som inträffar under kompilering. Runtime-undantag är omarkerade undantag, eftersom de inte redovisas av JVM.
Exempel på körtidsundantag i Java inkluderar:
- NullPointerException: Detta inträffar när ett program försöker använda en noll-objektreferens.
- ArrayIndexOutOfBoundsException: Detta inträffar när ett program försöker komma åt ett arrayindex som är utanför gränserna.
- ArithmeticException: Detta inträffar när ett program försöker dividera med noll.
- IllegalArgumentException: Detta inträffar när en metod skickas vidare på ett olagligt eller olämpligt argument.
Till skillnad från markerade undantag kräver runtime-undantag inte en deklaration i throws-satsen eller infångning i ett try-catch-block. Det är dock tillrådligt att hantera runtime-undantag för att ge meningsfulla felmeddelanden och förhindra en systemkrasch. Eftersom runtime-undantag ger mer specifik information om problemet än kontrollerade undantag, gör de det möjligt för utvecklare att upptäcka och korrigera programmeringsfel enklare och snabbare.
157. Vad är NullPointerException?
Det är en typ av körtidsundantag som skapas när programmet försöker använda en objektreferens som har ett nollvärde. Den huvudsakliga användningen av NullPointerException är att indikera att inget värde tilldelas en referensvariabel, den används också för att implementera datastrukturer som länkade listor och träd.
158. När kastas ArrayStoreException?
ArrayStoreException kastas när ett försök görs att lagra fel typ av objekt i en array av objekt.
Exempel:
Java
// Java Program to implement // ArrayStoreException public class GFG { public static void main(String args[]) { // Since Double class extends Number class // only Double type numbers // can be stored in this array Number[] a = new Double[2]; // Trying to store an integer value // in this Double type array a[0] = new Integer(4); } }> Exempel:
Exception in thread 'main' java.lang.ArrayStoreException: java.lang.Integer at GFG.main(GFG.java:6)>
159. Vad är skillnaden mellan kontrollerat undantag och okontrollerat undantag?
Markerat undantag:
Markerade undantag är de undantag som kontrolleras under kompileringstiden för ett program. I ett program, om någon kod inom en metod ger ett markerat undantag, måste metoden antingen hantera undantaget eller måste ange undantaget med nyckelordet throws.
Markerade undantag är av två typer:
- Fullständigt kontrollerade undantag: alla dess underordnade klasser kontrolleras också, som IOException och InterruptedException.
- Delvis markerade undantag: vissa av dess underordnade klasser är avmarkerade, som ett undantag.
Omarkerat undantag:
Omarkerade är de undantag som inte är markerade vid kompilering av ett program. Undantag under klasserna Error och RuntimeException är omarkerade undantag, allt annat under throwable är kontrollerat.
160. Vilken är basklassen för Error and Exception?

Fel är en olaglig operation som utförs av användaren som orsakar abnormiteter i programmet. Undantag är de oväntade händelser eller tillstånd som inträffar när programmet körs, undantaget stör det normala flödet av programmets instruktioner.
Fel och undantag har båda en gemensam föräldraklass som är java.lang.Throwable-klassen.
161. Är det nödvändigt att varje försöksblock måste följas av ett fångstblock?
Nej, det är inte nödvändigt att använda catch block efter försök block i Java eftersom vi kan skapa en annan kombination med finally block. Slutligen är blocket som körs trots att undantaget kastas eller inte.
162. Vad är undantagsspridning?
Undantagspridning är en process där undantaget släpps från toppen till botten av stacken. Om det inte fångas en gång, sjunker undantaget igen till föregående metod, och så vidare tills det fastnar eller tills det når botten av samtalsstacken.
163. Vad händer om du sätter System.exit(0) på försök eller fånga blocket? Kommer äntligen att blockera exekvera?
System.exit(int) har förmågan att kasta SecurityException. Så om undantaget kastas i fall av säkerhet, kommer blockeringen till slut att exekveras, annars kommer JVM att stängas när systemet anropas. exit(0) på grund av vilket blocket slutligen inte kommer att exekveras.
164. Vad förstår du med Object Cloning och hur uppnår du det i Java?
Det är processen att skapa en exakt kopia av vilket objekt som helst. För att stödja detta måste en java-klass implementera det Cloneable-gränssnittet för java.lang-paketet och åsidosätta metoden clone() som tillhandahålls av klassen Object vars syntax är:
Protected Object clone() kastar CloneNotSupportedException{ return (Object)super.clone();}Om det Cloneable-gränssnittet inte är implementerat och bara metoden åsidosätts, resulterar det i CloneNotSupportedException i Java.
165. Hur påverkar undantag programmet om det inte hanterar dem?
Undantag är ansvariga för att abrupt avsluta körningen av programmet medan det körs och koden som skrivits efter att undantaget inträffat exekveras inte.
166. Vad är användningen av det sista nyckelordet?
Det sista nyckelordet används för att göra funktioner icke-virtuella. Som standard är alla funktioner virtuella så för att göra det icke-virtuellt använder vi det sista nyckelordet.
git rebase
167. Vilket syfte fyller nyckelorden final, finally och finalize?
i). slutlig:
final är ett nyckelord som används med variabeln, metoden eller klassen så att de inte kan åsidosättas.
Exempel:
Java
// Java Program to use final // keyword import java.io.*; // Driver Class class GFG { // Main function public static void main(String[] args) { final int x = 100; x = 50; } }> Produktion:
./GFG.java:6: error: cannot assign a value to final variable x x=50; ^ 1 error>
ii). till sist
slutligen är ett kodblock som används med try-catch i undantagshantering. Kod skriven i final block körs trots att undantaget kastas eller inte.
Exempel:
Java
// Java Program to implement finally import java.io.*; // Driver class class GFG { // Main function public static void main(String[] args) { int x = 10; // try block try { System.out.println('Try block'); } // finally block finally { System.out.println( 'Always runs even without exceptions'); } } }> Produktion
Try block Always runs even without exceptions>
iii). avsluta
Det är en metod som kallas precis innan man tar bort/förstör de objekt som är kvalificerade för Sophämtning för att utföra saneringsaktivitet.
Exempel:
Java
/*package whatever // do not write package name here */ import java.io.*; class GFG { public static void main(String[] args) { System.out.println('Main function running'); System.gc(); } // Here overriding finalize method public void finalize() { System.out.println('finalize method overridden'); } }> Produktion
Main function running>
168. Vad är skillnaden mellan this() och super() i Java?
detta ( ) | super( ) |
|---|---|
Den representerar den aktuella instansen av klassen. | Den representerar den aktuella instansen av den överordnade klassen. |
Anropar standardkonstruktorn för samma klass. | Anropar standardkonstruktorn för basklassen. |
Få tillgång till metoderna i samma klass. | Få tillgång till metoderna för den överordnade klassen. |
Poäng aktuell klassinstans. | Pekar på superklassinstansen. |
169. Vad är multitasking?
Multitasking i Java hänvisar till ett programs kapacitet att utföra flera uppgifter samtidigt. Trådar, som är snabba operationer som ingår i ett enda program, kan göra detta. Att utföra många saker samtidigt kallas multitasking.
Exempel:
Java
// Java program for multitasking import java.io.*; public class MyThread extends Thread { public void run() { // Code to be executed in this thread for (int i = 0; i < 10; i++) { System.out.println( 'Thread ' + Thread.currentThread().getId() + ': ' + i); } } } public class GFG { public static void main(String[] args) { MyThread thread1 = new MyThread(); MyThread thread2 = new MyThread(); // Start the threads thread1.start(); thread2.start(); } }> 170. Vad menar du med ett flertrådigt program?
Flertrådade program i Java innehåller trådar som körs samtidigt istället för att köras sekventiellt. En dator kan använda sina resurser mer effektivt genom att kombinera flera uppgifter samtidigt. Alla program med multithreading tillåter mer än en användare att samtidigt använda programmet utan att köra flera kopior. Ett flertrådigt program är utformat för att köra flera processer samtidigt, vilket kan förbättra ett programs prestanda och tillåter programmet att använda flera processorer och förbättrar den totala genomströmningen.
171. Vilka är fördelarna med multithreading?
Det finns flera fördelar med att använda multithreading som är följande:
- Lyhördhet: Användarens lyhördhet ökar eftersom multithreading interaktiv applikation tillåter körning av kod även när avsnittet är blockerat eller kör en lång process.
- Resursdelning: Processen kan utföra meddelandeöverföring och delat minne på grund av multithreading.
- Ekonomi: Vi kan dela minne på grund av vilket processerna är ekonomiska.
- Skalbarhet: Multithreading på flera CPU-maskiner ökar parallelliteten.
- Bättre kommunikation: Trådsynkroniseringsfunktioner förbättrar kommunikationen mellan processerna.
- Användning av multiprocessorarkitektur
- Minimerad användning av systemresurser
172. På vilka två sätt kan tråd skapas?
Multithreading är en Java-funktion som tillåter samtidig körning av två eller flera delar av ett program för maximalt utnyttjande av CPU:n. I allmänhet är trådar små, lätta processer med separata utförandevägar. Dessa trådar använder delat minne, men de fungerar oberoende, så om någon tråd misslyckas påverkar det inte de andra trådarna. Det finns två sätt att skapa en tråd:
- Genom att utöka klassen Tråd
- Genom att implementera ett körbart gränssnitt.
Genom att utöka klassen Tråd
Vi skapar en klass som utökar java.lang.Trådklass . Denna klass åsidosätter run()-metoden som är tillgänglig i klassen Thread. En tråd börjar sitt liv i metoden run().
Syntax:
public class MyThread extends Thread { public void run() { // thread code goes here } }>Genom att implementera Runnable-gränssnittet
Vi skapar en ny klass som implementerar java.lang.Körbar gränssnitt och åsidosätt run()-metoden. Sedan instansierar vi ett Thread-objekt och anropar start()-metoden på detta objekt.
Syntax:
public class MyRunnable implements Runnable { public void run() { // thread code goes here } }>173. Vad är en tråd?
Trådar i Java är underprocesser med lättvikt med den minsta enheten av processer och har även separata exekveringsvägar. Dessa trådar använder delat minne, men de fungerar därför oberoende om det finns ett undantag i trådar som inte påverkar hur andra trådar fungerar trots att de delar samma minne. En tråd har sin egen programräknare, exekveringsstack och lokala variabler, men den delar samma minnesutrymme med andra trådar i samma process. Java ger inbyggt stöd för multithreading genom Körbart gränssnitt och den Trådklass .
174. Skiljer på process och tråd?
En process och en tråd är båda exekveringsenheter i ett datorsystem, men de är olika på flera sätt:
Bearbeta | Tråd |
|---|---|
En process är ett program som körs. | En tråd är en enda sekvens av instruktioner inom en process. |
Processen tar längre tid att avsluta. | Tråden tar kortare tid att avsluta. |
Processen tar mer tid för kontextbyte. | Tråden tar mindre tid för att byta sammanhang. |
Processen är mindre effektiv när det gäller kommunikation. | Tråden är effektivare när det gäller kommunikation. |
Processen är isolerad. | Trådar delar minne. |
Processen har sitt eget processkontrollblock, stack och adressutrymme. | Tråden har föräldrars PCB, sitt eget trådkontrollblock och stack och gemensamt adressutrymme. |
Processen delar inte data med varandra. | Trådar delar data med varandra. |
175. Beskriv trådens livscykel?

A tråd i Java när som helst existerar i något av följande tillstånd. En tråd ligger bara i ett av de visade tillstånden vid något ögonblick:
- Ny: Tråden har skapats men har ännu inte startat.
- Körbar: Tråden körs, utför sin uppgift eller är redo att köras om det inte finns andra trådar med högre prioritet.
- Blockerad: Tråden är tillfälligt avstängd, väntar på en resurs eller en händelse.
- Väntar: Tråden väntar på att en annan tråd ska utföra en uppgift eller på att en viss tid ska gå.
- Avslutad: Tråden har slutfört sin uppgift eller avslutats av en annan tråd.
176. Förklara metoden suspend() under klassen Thread.
Metoden suspend() för klassen Thread i Java avbryter exekveringen av en tråd tillfälligt. När en tråd är avstängd går den in i ett blockerat tillstånd och det skulle inte schemaläggas av operativsystemet vilket innebär att den inte kommer att kunna utföra sin uppgift förrän den återupptas. Det finns säkrare och flexiblare alternativ till suspend()-metoderna i det moderna programmeringsspråket java. Denna metod returnerar inget värde.
Syntax:
public final void suspend();>
Exempel:
Java
// Java program to show thread suspend() method import java.io.*; class MyThread extends Thread { public void run() { for (int i = 0; i < 10; i++) { System.out.println(' Running thread : ' + i); try { Thread.sleep(1000); } catch (Interrupted_Exception e) { e.printStackTrace(); } } } } class GFG { public static void main(String[] args) { MyThread t1 = new MyThread(); t1.start(); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } // suspend the execution of the thread t1.suspend(); System.out.println('Suspended thread '); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } // resume the execution of the thread t1.resume(); System.out.println('Resumed thread'); } }> Produktion:
Thread running: 0 Thread running: 1 Thread running: 2 Suspended thread Resumed thread Thread running: 3 Thread running: 4 Thread running: 5 Thread running: 6 Thread running: 7 Thread running: 8 Thread running: 9>
177. Förklara huvudtråden under Trådklassutförande.
Java tillhandahåller inbyggt stöd för flertrådsprogrammering. Huvudtråden anses vara den överordnade tråden för alla andra trådar som skapas under programkörningen. Huvudtråden skapas automatiskt när programmet börjar köras. Den här tråden kör programmets huvudmetod. Den är ansvarig för att utföra Java-programmets huvudlogik samt att hantera användarinmatningsoperationerna. Huvudtråden fungerar som bastråden från vilken alla andra undertrådar skapas.

178. Vad är en demon-tråd?
En demontråd i Java är en lågprioriterad tråd som används för att utföra bakgrundsoperationer eller uppgifter som används för att utföra kontinuerligt. som Garbage Collection, Signalutskick, Actionlyssnare, etc. Daemon-trådar i Java har lägre prioritet än användartrådar, vilket innebär att de bara kan köras när inga användartrådar körs. Daemon-trådar i Java är användbara funktioner som krävs för bakgrundsuppgifter som inte kräver explicit avstängning eller slutförande. Det möjliggör effektivare användning av systemresurser och används för att förenkla resurser och kan förenkla långvariga uppgifter.
179. På vilka sätt kan en tråd gå in i vänteläge?
Tråd är en lätt process som körs samtidigt med den andra tråden i en enda process. Varje tråd kan utföra en annan uppgift och dela resurserna inom en enda process. Tråd i Java kan komma in i vänteläge på många olika sätt:
- Sleep() metod Anrop: Sömnen ()-metoden används för att pausa exekveringen av tråden under en viss tid. Medan tråden är pausad går den in i vänteläge.
- Vänta() metod: Denna metod används för att vänta en tråd tills den andra tråden signalerar att den ska vakna. Tråden går in i vänteläge tills den får ett meddelande från en annan tråd.
- Join() metod: Metoden Join() kan användas för att vänta på att tråden ska slutföra exekveringen. Anropande tråd går in i vänteläge tills måltråden är klar.
- Väntar på I/O-operationer: Om tråden väntar på att Input/Output-operationen ska slutföras, går den in i vänteläge tills operationen är klar.
- Synkroniseringsproblem: Om det finns några synkroniseringsproblem i ett flertrådigt program kan trådar gå in i vänteläge tills synkroniseringsproblemen är lösta.
180. Hur sker multi-threading på en dator med en enda CPU?
Java använder en teknik som kallas tidsdelning, vanligen kallad time-slicing, för att implementera multi-threading på datorer med en enda CPU. Utseendet på parallell exekvering skapas genom att CPU växlar mellan aktiva trådar. Operativsystemet ansvarar för att allokera CPU-tid till varje tråd sekventiellt och schemalägga trådarna.
För att stoppa trådar från att interagera med varandra och skapa rassituationer eller andra problem, har Java ett antal sätt att styra trådarnas beteende, inklusive synkronisering och låsning. Det är möjligt att skapa flertrådiga programmerare som fungerar korrekt och effektivt på en maskin med en enda CPU genom att reglera interaktionen mellan trådar och se till att viktiga koddelar är synkroniserade. I motsats till att köra samma program på en dator med flera processorer eller kärnor, kan flertrådning på en enda processor bara ge sken av parallellitet, och faktiska prestandavinster kan vara blygsamma. Operativsystemet delar upp CPU-tiden som är tillgänglig när flera trådar körs på en enda CPU i små tidssegment och ger varje tråd ett tidssegment att köra. Snabb växling mellan trådarna av operativsystemet skapar sken av parallell exekvering. Växlingen mellan trådar verkar vara omedelbar eftersom tidssnitten ofta är mycket små, i storleksordningen millisekunder eller mikrosekunder.
Java-intervjufrågor för erfarna
181. Vilka är de olika typerna av trådprioriteringar i Java? Och vad är standardprioriteten för en tråd som tilldelas av JVM?
Prioriteter i trådar är ett koncept där varje tråd har en prioritet som man på lekmannaspråk kan säga att varje objekt har prioritet här vilket representeras av siffror från 1 till 10. Det finns olika typer av trådegenskaper i Java som nämns nedan:
- MIN_PRIORITY
- MAX_PRIORITY
- NORM_PRIORITY
Som standard är tråden tilldelad NORM_PRIORITY.
182. Varför är Garbage Collection nödvändigt i Java?
För Java är Garbage Collection nödvändigt för att undvika minnesläckor som kan göra att programmet kraschar och blir instabilt. Det finns inget sätt att undvika sophämtning i Java. Till skillnad från C++ hjälper Garbage collection i Java programmerare att fokusera på utvecklingen av applikationen istället för att hantera minnesresurser och oroa sig för minnesläckage. Java Virtual Machine (JVM) hanterar automatiskt minnet med jämna mellanrum genom att köra en skräpsamlare som frigör det oanvända minnet i applikationen. Skräpinsamling gör Java-minne effektivt eftersom det tar bort objekt som inte refereras till från högminnet.
183. Vad är nackdelen med Garbage Collection?
Bortsett från många fördelar har Garbage Collector vissa nackdelar som nämns nedan:
- Den största nackdelen med Garbage Collection är att det kan orsaka pauser i ett programs exekvering eftersom det arbetar för att rensa minnet vilket saktar ner programmets prestanda.
- Processen för sophämtning är icke-deterministisk vilket gör det svårt att förutsäga när sophämtning inträffar vilket orsakar oförutsägbart beteende i applikationer. Till exempel, om vi skriver något program är det svårt för programmerare att avgöra om problemet orsakas av sophämtning eller av andra faktorer i programmet.
- Sophämtning kan också öka minnesanvändningen om programmet skapar och kasserar många kortlivade objekt.
184. Förklara skillnaden mellan en mindre, större och full sophämtning.
Java Virtual Machine (JVM) tar bort objekt som inte längre används med hjälp av en sopsamlare som regelbundet kontrollerar och tar bort dessa objekt. Det finns olika typer av sophämtning i JVM, var och en med olika egenskaper och prestandaimplikationer. De viktigaste typerna av sophämtning är:
- Mindre sophämtning: Även känd som den unga generationens sophämtning, den här typen av sophämtning används för att samla in och återta minne som används av kortlivade föremål (objekt som snabbt skapas och kasseras).
- Stor sophämtning: Även känd som den gamla generationens sophämtning, används denna typ av sophämtning för att samla in och återta minne som används av långlivade föremål (föremål som överlever flera mindre sophämtningar och främjas till den gamla generationen).
- Fullständig sophämtning: Under full sophämtning samlas och återvinns minnen från alla generationer, inklusive minnen från unga och gamla. En fullständig sophämtning tar normalt längre tid att slutföra än en mindre eller större sophämtning som gör att appen pausas tillfälligt.
185. Hur kommer du att identifiera större och mindre sophämtningar i Java?
Stor sophämtning arbetar på överlevandeutrymmet och Mindre sophämtning arbetar på Eden-utrymmet för att utföra en mark-and-sweep-rutin. Och vi kan identifiera båda baserat på utdata där den mindre samlingen skriver ut GC, medan den stora samlingen skriver ut Full GC för fallet där sopsamlingsloggningen är aktiverad med -XX:PrintGCDetails eller verbose:gc.
186. Vad är en minnesläcka och hur påverkar den sophämtningen?
I Java kan minnesläckor orsakas av en mängd olika faktorer, som att inte stänga resurser ordentligt, hålla kvar objektreferenser längre än nödvändigt eller skapa för många objekt i onödan. Det finns situationer där sopsamlaren inte samlar in föremål eftersom det finns en referens till dessa föremål. I dessa situationer där applikationen skapar massor av objekt och inte använder dem och varje objekt har några giltiga referenser, kan en garbage collector i Java inte förstöra objekten. Dessa värdelösa objekt som inte ger något värde till programmet kallas minnesläckor. Minnesläckor kan påverka sophämtningen negativt genom att förhindra sopsamlaren från att återta oanvänt minne. Detta beteende kommer att leda till långsam prestanda eller ibland systemfel. I ett program är det viktigt att undvika minnesläckor genom att hantera resurser och objektreferenser på rätt sätt.
Exempel:
Java
// Java Program to demonstrate memory leaks import java.io.*; import java.util.Vector; class GFG { public static void main(String[] args) { Vector a = new Vector(21312312); Vector b = new Vector(2147412344); Vector c = new Vector(219944); System.out.println('Memory Leak in Java'); } }> Produktion:
Exception in thread 'main' java.lang.OutOfMemoryError: Java heap space at java.base/java.util.Vector.(Vector.java:142) at java.base/java.util.Vector.(Vector.java:155) at GFG.main(GFG.java:9)>
187. Nämn några klasser som finns i java.util.regex-paketet.
Regular Expressions eller Regex in Java är ett API som används för att söka och manipulera strängar i Java. Den skapar strängmönster som kan extrahera den data som behövs från strängarna eller kan generalisera ett mönster.
Det finns tre klasser i java.util.regex som nämns nedan:
- Mönsterklass: Kan definiera mönster
- Matchningsklass: Kan utföra matchningsoperationer på text med hjälp av mönster
- PatternSyntaxException Class: Kan indikera ett syntaxfel i ett reguljärt uttrycksmönster.
Förutom de 3 klasserna består paketet också av ett enda gränssnitt MatchResult Interface som kan användas för att representera resultatet av en matchningsoperation.
188. Skriv ett reguljärt uttryck för att validera ett lösenord. Ett lösenord måste börja med ett alfabet och följt av alfanumeriska tecken; Dess längd måste vara mellan 8 och 20.
regex = ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&-+=()])(?=S+$).{8, 20}$>Förklaring:
- ^ används för starttecken för strängen.
- (?=.*[0-9]) som används för en siffra måste förekomma minst en gång.
- (?=.*[a-z]) som används för ett gement alfabet måste förekomma minst en gång.
- (?=.*[A-Z]) används för ett alfabet med versaler som måste förekomma minst en gång i delsträngen.
- (?=.*[@#$%^&-+=()] används för ett specialtecken som måste förekomma minst en gång.
- (?=S+$) vita utrymmen tillåter inte i hela strängen.
- .{8, 20} används för minst 8 tecken och högst 20 tecken.
- $ används för slutet av strängen.
189. Vad är JDBC?
JDBC standard API används för att länka Java-applikationer och relationsdatabaser. Den tillhandahåller en samling klasser och gränssnitt som låter programmerare använda programmeringsspråket Java för att kommunicera med databasen. Klasserna och gränssnittet för JDBC tillåter applikationen att skicka förfrågningar som görs av användare till den angivna databasen. Det finns i allmänhet fyra komponenter i JDBC genom vilka den interagerar med databasen:
- JDBC API
- JDBC-drivrutinshanterare
- JDBC Test Suite
- JDBC-ODBC Bridge-drivrutiner

190. Vad är JDBC-drivrutin?
JDBC-drivrutinen är en mjukvarukomponent som används för att göra det möjligt för en Java-applikation att interagera med databasen. JDBC tillhandahåller implementeringen av JDBC API för ett specifikt databashanteringssystem, vilket gör att den kan ansluta databasen, exekvera SQL-satser och hämta data. Det finns fyra typer av JDBC-drivrutiner:
- JDBC-ODBC Bridge-drivrutinen
- Native API-drivrutin
- Drivrutinen för nätverksprotokoll
- Tunn förare

191. Vilka är stegen för att ansluta till databasen i Java?
Det finns vissa steg för att ansluta databasen och Java-programmet enligt nedan:
- Importera paketen
- Ladda drivrutinerna med metoden forName().
- Registrera drivrutinerna med DriverManager
- Upprätta en anslutning med hjälp av klassobjektet Connection
- Skapa ett uttalande
- Utför frågan
- Stäng anslutningarna
192. Vilka är JDBC API-komponenter?
JDBC API-komponenter tillhandahåller olika metoder och gränssnitt för enkel kommunikation med databaserna också tillhandahåller paket som java Se och java EE som ger möjlighet att skriva en gång körning var som helst (WORA).
Syntax:
java.sql.*;>
193. Vad är JDBC Connection-gränssnitt?
Java Databas Connectivity Interface (JDBC) är en programvarukomponent som gör att Java-applikationer kan interagera med databaser. För att förbättra anslutningen kräver JDBC drivrutiner för varje databas.
194. Vad har JDBC ResultSet-gränssnittet?
JDBC ResultSet-gränssnittet används för att lagra data från databasen och använda den i vårt Java-program. Vi kan också använda ResultSet för att uppdatera data med updateXXX()-metoder. ResultSet-objekt pekar markören före den första raden av resultatdata. Med hjälp av metoden next() kan vi iterera genom ResultSet.
195. Vad är JDBC Rowset?
En JDBC RowSet ger ett sätt att lagra data i tabellform. RowSet är ett gränssnitt i java som kan användas i paketet java.sql. Kopplingen mellan RowSet-objektet och datakällan bibehålls under hela dess livscykel. RowSets klassificeras i fem kategorier baserat på implementering som nämns nedan:
- JdbcRowSet
- CachedRowSet
- WebRowSet
- Filtered RowSet
- Gå med i RowSet
196. Vilken roll har JDBC DriverManager-klassen?
JDBC DriverManager-klassen fungerar som ett gränssnitt för användare och drivrutiner. Det används på många sätt som nämns nedan:
- Den används för att skapa en koppling mellan en Java-applikation och databasen.
- Hjälper till att hålla reda på vilka drivrutiner som finns tillgängliga.
- Det kan hjälpa till att upprätta en koppling mellan en databas och lämpliga drivrutiner.
- Den innehåller alla metoder som kan registrera och avregistrera databasdrivrutinklasserna.
- Metoden DriverManager.registerDriver() kan underhålla listan över drivrutinsklasser som har registrerat sig själva.
Java Difference Intervjufrågor
197. Skilja mellan Iterable och Iterator.
Iterable | Iterator |
|---|---|
Iterable ger ett sätt att iterera över en sekvens av element. | Iterator hjälper till att iterera över en samling element sekventiellt. |
| iterator() metod returnerar en Iterator. | hasNext() och Nästa() metoder krävs. |
| avlägsna() metoden är valfri. | avlägsna() metod krävs i iteratorn. |
Exempel är Lista, Kö och Set. | Exempel är ListIterator, Enumeration och ArrayIterator. |
198. Skilja mellan List och Set.
Lista | Uppsättning |
|---|---|
Beordrade | Obeställd |
Listan tillåter dubbletter. | Set tillåter inte dubbletter av värden. |
Listan nås via index. | Uppsättningen nås med hashkod. |
Flera nullelement kan lagras. | Null-element kan endast lagras en gång. |
Exempel är ArrayList, LinkedList, etc. | Exempel är HashSet och TreeSet. LinkedHashSet etc. |
199. Skilja mellan Lista och Karta.
Lista | Karta |
|---|---|
Listgränssnitt tillåter dubbletter av element. | Kartan tillåter inte dubbletter av element. |
Listan bibehåller insättningsordningen. | Kartan upprätthåller inte insättningsordningen. |
Flera nullelement kan lagras. | Kartan tillåter högst en enda nollnyckel och valfritt antal nollvärden. |
Listan tillhandahåller metoden get() för att få elementet vid ett specificerat index. | Kartan tillhandahåller inte en get-metod för att få elementen vid ett specificerat index. |
List är implementerad av ArrayList, etc. | Kartan är implementerad av HashMap, TreeMap, LinkedHashMap |
200. Gör skillnad på kö och stack.
Kö | Stack |
|---|---|
Ködatastruktur används för att lagra element och används för att utföra operationer som kö, avkö från baksidan eller slutet av kön. | Stackdatastruktur används för att lagra element och används för att utföra operationer som push, pop från toppen av stacken. |
Ködatastruktur Implementerar FIFO-ordning. | Stack datastruktur Implementerar LIFO order. |
Insättning och radering i köer sker från listans motsatta ändar. Radering sker från framsidan av listan och infogning sker längst bak i listan. | Insättning och radering i stackar sker endast från ena änden av listan som kallas toppen. |
Infogningsoperation kallas köoperation. | Insättningsoperation kallas push-operation. |
Kö används vanligtvis för att lösa problem relaterade till sekventiell bearbetning. | Stack används vanligtvis för att lösa problem relaterade till rekursion. |
201. Gör skillnad på PriorityQueue och TreeSet.
Prioriterad kö | Träduppsättning |
|---|---|
Den använder Queue som en underliggande datastruktur. | Den använder en uppsättning som en underliggande datastruktur. |
Denna datastruktur tillåter dubbletter av element | Denna datastruktur tillåter inte dubbletter av element |
Priority Queue implementeras av PriorityQueue-klassen. | TreeSet implementeras av TreeSet-klassen. |
PriorityQueue kommer i JDK 1.5. | TreeSet kommer i JDK 1.4. |
PriorityQueue pq = new PriorityQueue(); | reeSet ts = new TreeSet(); |
202. Gör skillnad på listan med enbart länkade och dubbellänkade listan.
Enkelt länkad lista | Dubbelt länkad lista |
|---|---|
Singly Linked List innehåller endast två segment, dvs. Data och Link. | Dubbellänkad lista innehåller tre segment, dvs. Data och två pekare. |
Traversering i en enkellänkad lista är endast möjlig i riktning framåt. | Traversering i en dubbellänkad lista är endast möjlig i båda riktningarna framåt såväl som bakåt. |
Den använder mindre minne eftersom varje enskild nod bara har en pekare. | Den kräver mer minne än en enkellänkad lista eftersom varje nod har två pekare. |
Lätt att använda och infoga noder i början av listan. | Något mer komplex att använda och lätt att infoga i slutet av listan. |
Tidskomplexiteten för infogning och deletion är O(n). | Tidskomplexiteten för infogning och deletion är O(1). |
| | |
203. Gör skillnad på Failfast och Failsafe.
FailFast | Felsäker |
|---|---|
Failsfast misslyckas omedelbart när det upptäcker samtidiga ändringar under tiden för iterationen. | Failsafe fortsätter att iterera över originalsamlingen och skapar även en kopia att ändra. |
Failfast används vanligtvis i enkeltrådade miljöer. | Failsafe används i flertrådsmiljöer. |
Failfast tillåter inga ändringar under iteration. | Failsafe tillåter modifiering under tiden för iteration. |
Failfast är snabbt jämfört med failsafe eftersom det inte innebär kopiering av samlingen. | Failsafe är i allmänhet långsam jämfört med failfast. |
FailFast kastar ConcurrentModificationException om samlingen ändras under iterationen. | FailSafe gör inget undantag utan skapar istället en kopia av samlingen för att iterera. |
204. Gör skillnad på HashMap och TreeMap.
HashMap | Trädkarta |
|---|---|
Hasmap använder en hashtabell för att lagra nyckel-värdepar. | Treemap använder rödsvarta träd för att lagra nyckel-värdepar. viloläge dialekt |
Hashmap upprätthåller ingen specifik ordning för nyckel-värdepar. | Treemap upprätthåller en naturlig ordning baserat på nycklarna. |
Upprepningsordning är inte garanterad i hashkartan. | Iteration är i sorterad ordning baserat på nycklar. |
Hashmaps är snabbare för hämtning jämfört med Treemap. | Hämtning i Treemap är långsammare eftersom den använder trädpassering för att hitta nycklar. |
Hashmap implementeras genom att använda en Array av länkad lista. | TreeMap implementeras med hjälp av ett röd-svart träd. |
Hashmap använder metoden equals() för klassen Object för att jämföra nycklar. | TreeMap använder metoden compareTo() för att jämföra nycklar. |
205. Gör skillnad på Queue och Deque.
Kö | Om vad |
|---|---|
Kön är en linjär datastruktur som används för att lagra en samling element. | Deque, även känd som en dubbeländad kö, är också en linjär datastruktur som lagrar en samling element med operationer att ta bort och lägga till från båda ändar. |
Element i kön kan bara infogas i slutet av datastrukturen. | Element kan infogas från båda ändarna av datastrukturen. |
Kön kan implementeras med hjälp av Array eller Linked List. | Avkö kan implementeras med hjälp av Circular Array eller Double Linked List. |
Köer används vanligtvis för att implementera en väntelista eller uppgiftskö. | Deque används för att implementera en stack eller ta bort element från båda ändar. |
| | |
206. Gör skillnad på HashSet och TreeSet.
HashSet | Träduppsättning |
|---|---|
HashSet är oordnat. | TreeSet bygger på naturlig ordning. |
HashSet tillåter null-element. | TreeSet tillåter inte null-element. |
HashSet implementeras av klassen HashSet. | TreeSet är implementerat av klassen TreeSet. |
HashSet hs = new HashSet(); | TreeSet ts = new TreeSet(); |
Java-intervjufrågor – Vanliga frågor
Q1. Vad är lönen för en Java-utvecklare i Indien?
Enligt olika resurser är den genomsnittliga lönen för en Java Backend-utvecklare mer än 14 lakhs per år vilket är 30 % högre än någon annan utvecklarroll . Här kan du även kolla vår senaste kurs på GeekforGeeks Practice Portal kan också vara till hjälp.
F5. Hur kan jag sticka ut i en Java-intervju?
För att sticka ut i en Java-intervju, visa en djup förståelse för Java-koncept och praktiska tillämpningar. Visa upp dina problemlösningsförmåga genom att förklara ditt förhållningssätt till komplexa scenarier och tillhandahålla effektiva lösningar. Markera dessutom alla relevanta projekt eller bidrag du har gjort till Java-communityt. Att visa entusiasm, god kommunikation och en vilja att lära kan också lämna ett positivt intryck.



