logo

Spørgsmål og svar til Java-interview

Java er et af de mest populære programmeringssprog i verden, kendt for dets alsidighed, bærbarhed og brede vifte af applikationer. Java er det mest brugte sprog i topvirksomheder som Uber, Airbnb, Google, Netflix, Instagram, Spotify, Amazon og mange flere på grund af dets funktioner og ydeevne.

I denne artikel vil vi give 200+ Core Java-interviewspørgsmål skræddersyet til både friske og erfarne fagfolk med 3, 5 og 8 års erfaring. Her dækker vi alt, inklusive kerne Java-koncepter, objektorienteret programmering (OOP), multithreading, undtagelseshåndtering, designmønstre, Java-samlinger og mere, der helt sikkert vil hjælpe dig med at knække Java-interviews.

Core-Java-Interview-Spørgsmål



Indholdsfortegnelse

Java-interviewspørgsmål til nybegyndere

1. Er Java Platform uafhængig, hvis hvordan?

Ja, Java er et platformsuafhængigt sprog. I modsætning til mange programmeringssprog kompilerer javac compiler programmet til at danne en bytekode eller .class fil. Denne fil er uafhængig af den software eller hardware, der kører, men skal have en JVM(Java Virtual Machine)-fil forudinstalleret i operativsystemet for yderligere udførelse af bytekoden.

Selvom JVM er platformsafhængig , kan bytekoden oprettes på ethvert system og kan udføres i ethvert andet system på trods af, at hardware eller software bruges, hvilket gør Java-platformen uafhængig.

2. Hvad er de bedste Java-funktioner?

Java er et af de mest berømte og mest brugte sprog i den virkelige verden, der er mange funktioner i Java, der gør det bedre end noget andet sprog, nogle af dem er nævnt nedenfor:

Funktioner-af-Java-768

  • Enkel : Java er ret simpelt at forstå og syntaksen
  • Platformuafhængig: Java er platformsuafhængig betyder, at vi kan køre det samme program i enhver software og hardware og vil få det samme resultat.
  • Fortolket : Java tolkes såvel som et compiler-baseret sprog.
  • Robust : funktioner som skraldesamling, undtagelseshåndtering osv., der gør sproget robust.
  • Objektorienteret : Java er et objektorienteret sprog, der understøtter begreberne klasse, objekter, fire søjler i OOPS osv.
  • Sikret : Da vi direkte kan dele en applikation med brugeren uden at dele selve programmet gør Java til et sikkert sprog.
  • Høj ydeevne: hurtigere end andre traditionelle fortolkede programmeringssprog.
  • Dynamisk : understøtter dynamisk indlæsning af klasser og grænseflader.
  • Distribueret : funktion i Java gør os i stand til at få adgang til filer ved at kalde metoderne fra enhver tilsluttet maskine.
  • Flertrådet : håndtere flere opgaver på én gang ved at definere flere tråde
  • Arkitektur neutral : det er ikke afhængigt af arkitekturen.

3. Hvad er JVM?

JVM-768

JVM står for Java Virtual Machine, det er en Java-fortolker. Det er ansvarligt for at indlæse, verificere og udføre den bytekode, der er oprettet i Java.

Selvom det er platformsafhængigt, hvilket betyder, at softwaren til JVM er forskellig for forskellige operativsystemer, spiller den en afgørende rolle i at gøre Java-platformen uafhængig.

For at vide mere om emnet henvises til JVM i Java .

4. Hvad er JIT?

JIT-768

JIT står for (Just-in-Time) compiler er en del af JRE (Java Runtime Environment), den bruges til bedre ydeevne af Java-applikationerne under kørsel. Brugen af ​​JIT er nævnt i trin for trin proces, der er nævnt nedenfor:

  1. Kildekoden er kompileret med javac compiler for at danne bytekode
  2. Bytekode videregives til JVM
  3. JIT er en del af JVM, JIT er ansvarlig for at kompilere bytekode til indbygget maskinkode under kørsel.
  4. JIT-kompileren er aktiveret hele vejen igennem, mens den bliver aktiveret, når en metode påkaldes. For en kompileret metode kalder JVM direkte den kompilerede kode i stedet for at fortolke den.
  5. Som JVM kalder den kompilerede kode, der øger ydelsen og hastigheden af ​​udførelsen.

For at vide mere om emnet henvises til JIT i Java .

5. Hvad er hukommelseslagre tilgængelige med JVM?

JVM-Areas-768

chmod 755

JVM består af et par hukommelseslagre som nævnt nedenfor:

  1. Klasse(metode) område: gemmer data på klasseniveau for hver klasse, såsom runtime konstant pool, felt og metode data og koden for metoder.
  2. Heap: Objekter oprettes eller objekter gemmes. Det bruges til at allokere hukommelse til objekter under kørselstid.
  3. Stak: gemmer data og delvise resultater, som vil være nødvendige, mens du returnerer værdi for metode og udfører dynamisk sammenkædning
  4. Programtællerregister: gemmer adressen på den Java-virtuelle maskine-instruktion, der i øjeblikket udføres.
  5. Native Method Stack: gemmer alle de native metoder, der bruges i applikationen.

For at vide mere om emnet henvises til JVM-hukommelseslagre .

6. Hvad er en klasseindlæser?

Classloader er en del af JRE (Java Runtime Environment), under udførelsen af ​​bytekoden eller oprettet .class fil classloader er ansvarlig for dynamisk indlæsning af java klasserne og grænseflader til JVM (Java Virtual Machine). På grund af klasseindlæsere behøver Java run time system ikke at kende til filer og filsystemer.

For at vide mere om emnet henvises til ClassLoader i Java.

7. Forskellen mellem JVM, JRE og JDK.

JVM : JVM også kendt som Java Virtual Machine er en del af JRE. JVM er en type fortolker, der er ansvarlig for at konvertere bytekode til maskinlæsbar kode. JVM i sig selv er platformsafhængig, men den fortolker bytekoden, som er den platformsuafhængige grund til, at Java er platformsuafhængig.

JRE : JRE står for Java Runtime Environment, det er en installationspakke, der giver et miljø til at køre Java-programmet eller -applikationen på enhver maskine.

JDK : JDK står for Java Development Kit, som giver miljøet til at udvikle og udføre Java-programmer. JDK er en pakke, der inkluderer to ting Udviklingsværktøjer til at give et miljø til at udvikle dine Java-programmer og JRE til at udføre Java-programmer eller -applikationer.

For at vide mere om emnet henvises til Forskelle mellem JVM, JRE og JDK .

8. Hvad er forskellene mellem Java og C++?

Basis

C++

Java

Platform

C++ er platformsafhængig

Java er platformsuafhængig

Ansøgning

C++ bruges hovedsageligt til systemprogrammering

Java bruges hovedsageligt til applikationsprogrammering

Hardware

C++ er tættere på hardware

Java er ikke så interaktivt med hardware

Globalt omfang

C++ understøtter globalt og navneområde.

Java understøtter ikke globalt omfang.

Støtter ikke

Funktionalitet understøttet i Java, men ikke i C++ er:

  • trådstøtte
  • dokumentationskommentar
  • usigneret højre skift(>>>)

Funktionalitet understøttet i C++ men ikke i Java er:

  • gå til
  • Pointer
  • Ring efter reference
  • Strukturer og fagforeninger
  • Multipel arv
  • Virtuelle funktioner

UPPS

C++ er et objektorienteret sprog. Det er ikke et enkelt rodhierarki.

Java er også et objektorienteret sprog. Det er et enkelt rodhierarki, da alt bliver afledt af en enkelt klasse (java.lang.Object).

Arvetræ

C++ opretter altid et nyt arvetræ.

Java bruger et enkelt arvetræ, da klasser i Java er underordnede objektklasser i Java.

9. Forklar public static void main(String args[]) i Java.

Hovedfunktion

I modsætning til ethvert andet programmeringssprog som C, C++ osv. I Java erklærede vi hovedfunktionen som en offentlig statisk void hoved (String args[]). Betydningen af ​​begreberne er nævnt nedenfor:

  1. offentlig : offentligheden er den adgangsmodifikator, der er ansvarlig for at nævne, hvem der kan få adgang til elementet eller metoden, og hvad er grænsen. Den er ansvarlig for at gøre hovedfunktionen globalt tilgængelig. Den offentliggøres, så JVM kan påberåbe den uden for klassen, da den ikke er til stede i den aktuelle klasse.
  2. statisk : statisk er et nøgleord, der bruges, så vi kan bruge elementet uden at starte klassen for at undgå unødvendig allokering af hukommelsen.
  3. ugyldig : void er et nøgleord og bruges til at angive, at en metode ikke returnerer noget. Da hovedfunktionen ikke returnerer noget, bruger vi void.
  4. vigtigste : main repræsenterer, at den erklærede funktion er hovedfunktionen. Det hjælper JVM med at identificere, at den erklærede funktion er hovedfunktionen.
  5. Streng args[] : Den gemmer Java-kommandolinjeargumenter og er en matrix af typen java.lang.String class.

10. Hvad er Java String Pool?

En Java String Pool er et sted i heap-hukommelsen, hvor alle de strenge, der er defineret i programmet, er gemt. Et separat sted i en stak er der, hvor variablen, der lagrer strengen, er gemt. Når vi opretter et nyt strengobjekt, tjekker JVM for tilstedeværelsen af ​​objektet i String-puljen. Hvis String er tilgængelig i puljen, deles den samme objektreference med variablen, ellers oprettes et nyt objekt.

Java-String-Pool-768

Eksempel:

String str1='Hello'; // 'Hello' will be stored in String Pool // str1 will be stored in stack memory>

11. Hvad vil der ske, hvis vi erklærer ikke erklærer hovedet som statisk?

Vi kan erklære hovedmetoden uden at bruge statisk og uden at få fejl. Men hovedmetoden vil ikke blive behandlet som indgangspunktet til applikationen eller programmet.

12. Hvad er pakker i Java?

Pakker i Java kan defineres som en gruppering af relaterede typer klasser, grænseflader osv., der giver adgang til beskyttelse og administration af navneområder.

13. Hvorfor bruges pakker?

Pakker bruges i Java for at forhindre navnekonflikter, kontrollere adgang og gøre søgning/lokalisering og brug af klasser, grænseflader osv. nemmere.

14. Hvad er fordelene ved Pakker i Java?

Der er forskellige fordele ved at definere pakker i Java.

  • Pakker undgår navnesammenstød.
  • Pakken giver lettere adgangskontrol.
  • Vi kan også have de skjulte klasser, som ikke er synlige udenfor og bruges af pakken.
  • Det er nemmere at finde de relaterede klasser.

15. Hvor mange typer pakker er der i Java?

Der er to typer pakker i Java

  • Brugerdefinerede pakker
  • Indbyggede pakker

16. Forklar forskellige datatyper i Java.

Der er 2 typer datatyper i Java som nævnt nedenfor:

  1. Primitiv datatype
  2. Ikke-primitiv datatype eller objektdatatype

Primitiv datatype: Primitive data er enkeltværdier uden særlige egenskaber. Der er 8 primitive datatyper:

  • boolesk : gemmer værdien sand eller falsk
  • byte : gemmer et 8-bit signeret to-komplement heltal
  • char : gemmer et enkelt 16-bit Unicode-tegn
  • kort : gemmer et 16-bit signeret to-komplement heltal
  • int : gemmer et 32-bit signeret to-komplement heltal
  • lang : gemmer et 64-bit to-komplement heltal
  • flyde : gemmer et enkelt-præcisions 32-bit IEEE 754 flydende komma
  • dobbelt : gemmer et 64-bit IEEE 754 flydende komma med dobbelt præcision

Ikke-primitiv datatype: Reference Datatyper vil indeholde en hukommelsesadresse for variablens værdier, fordi den ikke er i stand til direkte at gemme værdierne i hukommelsen. Typer af ikke-primitive er nævnt nedenfor:

  • Strenge
  • Array
  • Klasse
  • Objekt
  • Interface

17. Når en byte datatype bruges?

En byte er et 8-bit fortegnet to-komplement heltal. Den mindste værdi, der understøttes af bytes, er -128, og 127 er den maksimale værdi. Det bruges under forhold, hvor vi har brug for at spare hukommelse, og grænsen for antal nødvendige er mellem -128 til 127.

18. Kan vi erklære Pointer i Java?

Nej, Java understøtter ikke Pointer. Da Java skulle være mere sikkert, fordi hvilken funktion af markøren ikke findes i Java.

19. Hvad er standardværdien for byte datatype i Java?

Standardværdien for bytedatatypen i Java er 0.

20. Hvad er standardværdien for float og double datatype i Java?

Standardværdien for float er 0.0f og for double er 0.0d i Java.

21. Hvad er Wrapper-klassen i Java?

Indpakning er generelt henvist til en større enhed, der indkapsler en mindre enhed. Her i Java er wrapper-klassen en objektklasse, der indkapsler de primitive datatyper.

De primitive datatyper er dem, hvorfra yderligere datatyper kunne oprettes. For eksempel kan heltal yderligere føre til konstruktion af lang, byte, kort osv. På den anden side kan strengen ikke, derfor er den ikke primitiv.

For at komme tilbage til wrapper-klassen, indeholder Java 8 wrapper-klasser. De er Boolean, Byte, Short, Integer, Character, Long, Float og Double. Yderligere kan brugerdefinerede indpakningsklasser også oprettes i Java, som ligner strukturkonceptet i C-programmeringssproget. Vi opretter vores egen wrapper-klasse med de nødvendige datatyper.

22. Hvorfor har vi brug for indpakningsklasser?

Indpakningsklassen er en objektklasse, der indkapsler de primitive datatyper, og vi har brug for dem af følgende årsager:

  1. Indpakningsklasser er endelige og uforanderlige
  2. Giver metoder som valueOf(), parseInt() osv.
  3. Det giver funktionen af ​​autoboxing og unboxing.

23. Differentier mellem instans- og lokale variabler.

Forekomstvariabel

Lokal variabel

Erklæret uden for metoden, direkte påberåbt af metoden.

Erklæret inden for metoden.

Har en standardværdi.

Ingen standardværdi

Det kan bruges i hele klassen.

Omfanget er begrænset til metoden.

24. Hvad er standardværdierne tildelt til variabler og instanser i Java?

I Java Når vi ikke har initialiseret instansvariablerne, initialiserer compileren dem med standardværdier. Standardværdierne for forekomster og variabler afhænger af deres datatyper. Nogle almindelige typer standarddatatyper er:

  • Standardværdien for numeriske typer (byte, short, int, long, float og double) er 0.
  • Standardværdien for den boolske type er falsk.
  • Standardværdien for objekttyper (klasser, grænseflader og arrays) er null.
  • Null-tegnet, u0000, er standardværdien for tegntypen.

Eksempel:

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. Hvad er en klassevariabel?

I Java er en klassevariabel (også kendt som en statisk variabel) en variabel, der er erklæret inden for en klasse, men uden for enhver metode, konstruktør eller blok. Klassevariable er deklareret med det statiske nøgleord, og de deles af alle forekomster (objekter) af klassen såvel som af klassen selv. Uanset hvor mange objekter der er afledt fra en klasse, vil hver klassevariabel kun eksistere én gang.

Eksempel:

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. Hvad er standardværdien gemt i lokale variabler?

Der er ingen standardværdi gemt med lokale variabler. Primitive variabler og objekter har heller ikke nogen standardværdier.

27. Forklar forskellen mellem instansvariabel og en klassevariabel.

Forekomstvariabel: En klassevariabel uden en statisk modifikator kendt som en instansvariabel deles typisk af alle instanser af klassen. Disse variabler kan have forskellige værdier blandt flere objekter. Indholdet af en instansvariabel er fuldstændig uafhængig af en objektinstans fra en anden, fordi de er relateret til en specifik objektinstans af klassen.

Eksempel:

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>

Klassevariabel: Klassevariabel variabel kan erklæres hvor som helst på klasseniveau ved hjælp af nøgleordet static. Disse variabler kan kun have én værdi, når de anvendes på forskellige objekter. Disse variabler kan deles af alle klassemedlemmer, da de ikke er forbundet med noget specifikt objekt i klassen.

Eksempel:

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. Hvad er en statisk variabel?

Det statiske nøgleord bruges til at dele den samme variabel eller metode i en given klasse. Statiske variabler er de variable, der en gang erklæret, så oprettes en enkelt kopi af variablen og deles mellem alle objekter på klasseniveau.

29. Hvad er forskellen mellem System.out, System.err og System.in?

System.out – Det er en PrintStream, der bruges til at skrive tegn eller kan siges, at den kan udlæse de data, vi ønsker at skrive på kommandolinjegrænsefladekonsollen/terminalen.

Eksempel:

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 – Det bruges til at vise fejlmeddelelser.

Eksempel:

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>

Selvom System.err har mange ligheder, har de begge en hel del forskel, så lad os tjekke dem.

System.ud System.fejl

Det vil udskrive til standard ud af systemet.

Den udskrives til standardfejlen.

Det bruges mest til at vise resultater på konsollen.

Det bruges mest til at udskrive fejltekster.

Det giver output på konsollen med standardfarven (sort).

Det giver også output på konsollen, men de fleste af IDE'erne giver det en rød farve for at skelne.

System.in – Det er en InputStream, der bruges til at læse input fra terminalvinduet. Vi kan ikke bruge System.in direkte, så vi bruger Scanner-klassen til at tage input med system.in.

Eksempel:

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. Hvad forstår du ved en IO-stream?

2-768

Java bringer forskellige streams med sin I/O-pakke, der hjælper brugeren med at udføre alle input-output operationer. Disse streams understøtter alle typer objekter, datatyper, tegn, filer osv. for fuldt ud at udføre I/O-operationerne.

31. Hvad er forskellen mellem Reader/Writer-klassehierarkiet og InputStream/OutputStream-klassehierarkiet?

Den vigtigste forskel mellem dem er, at byte-streamdata læses og skrives af input/output-streamklasser. Karakterer håndteres af læser- og forfatterklasserne. I modsætning til Reader/Writer-klasser, der accepterer tegnarrays som parametre, accepterer input/output-streamklassemetoder byte-arrays. I sammenligning med input/output-streams er Reader/Writer-klasserne mere effektive, håndterer alle Unicode-tegn og er nyttige til internalisering. Brug Reader/Writer-klasser i stedet for binære data, såsom billeder, medmindre du gør det.

Eksempel:

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. Hvad er de super flest klasser for alle streams?

Alle stream-klasser kan opdeles i to typer klasser, der er ByteStream-klasser og CharacterStream-klasser. ByteStream-klasserne er yderligere opdelt i InputStream-klasser og OutputStream-klasser. CharacterStream-klasser er også opdelt i læserklasser og forfatterklasser. SuperMost-klasserne for alle InputStream-klasserne er java.io.InputStream, og for alle outputstreamklasserne er java.io.OutPutStream. Tilsvarende for alle læserklasserne er den overlegne klasse java.io.Reader, og for alle forfatterklasserne er det java.io.Writer.

33. Hvad er FileInputStream og FileOutputStream?

For at læse og skrive data tilbyder Java I/O-streams. En Stream repræsenterer en inputkilde eller en outputdestination, som kunne være en fil, en i/o-enhed, et andet program osv. FileInputStream i Java bruges til at læse data fra en fil som en strøm af bytes. Det bruges mest til at læse binære data såsom billeder, lydfiler eller serialiserede objekter.

Eksempel:

File file = new File('path_of_the_file'); FileInputStream inputStream = new FileInputStream(file);>

I Java er FileOutputStream funktion bruges til at skrive data byte for byte ind i en given fil eller filbeskrivelse. Normalt skrives råbytedata, såsom billeder, ind i en fil ved hjælp af FileOutputStream.

Eksempel:

File file = new File('path_of_the_file'); FileOutputStream outputStream = new FileOutputStream(file);>

34. Hvad er formålet med at bruge klasserne BufferedInputStream og BufferedOutputStream?

Når vi arbejder med filerne eller streamen, skal vi bruge klasserne BufferedInputStream og BufferedOutputStream for at øge programmets Input/Output-ydeevne. Disse begge klasser giver mulighed for buffering, hvilket betyder, at dataene vil blive gemt i en buffer, før de skrives til en fil eller læses fra en stream. Det reducerer også antallet af gange, vores OS skal interagere med netværket eller disken. Buffer tillader programmer at skrive en stor mængde data i stedet for at skrive det i små bidder. Dette reducerer også omkostningerne ved at få adgang til netværket 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. Hvad er FilterStreams?

Stream filter eller Filter Streams returnerer en strøm, der består af de elementer i denne strøm, der matcher det givne prædikat. Mens filter() arbejdes, udfører den faktisk ikke filtrering, men skaber i stedet en ny strøm, der, når den krydses, indeholder elementerne i indledende strømme, der matcher det givne prædikat.

Eksempel:

FileInputStream fis =new FileInoutStream('file_path');  FilterInputStream = new BufferedInputStream(fis);>


36. Hvad er et I/O-filter?

Et I/O-filter, også defineret som et Input Output-filter, er et objekt, der læser fra én strøm og skriver data til input- og outputkilder. Den brugte java.io-pakken til at bruge dette filter.

37. Hvor mange måder kan du tage input fra konsollen på?

Der er to metoder til at tage input fra konsollen i Java nævnt nedenfor:

  1. Bruger kommandolinjeargumentet
  2. Brug af bufferlæserklasse
  3. Brug af konsolklasse
  4. Brug af Scanner Class

Programmet, der demonstrerer brugen af ​​hver metode, er angivet nedenfor.

Eksempel:

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. Forskel i brugen af ​​print, println og printf.

print, println og printf bruges alle til at udskrive elementerne, men print udskriver alle elementerne, og markøren forbliver på samme linje. println flytter markøren til næste linje. Og med printf kan vi også bruge formatidentifikatorer.

39. Hvad er operatører?

Operatorer er de specielle typer symboler, der bruges til at udføre nogle operationer over variabler og værdier.

40. Hvor mange typer operatører er tilgængelige i Java?

Alle typer operatører i Java er nævnt nedenfor:

  1. Aritmetiske operatorer
  2. Unære operatører
  3. Opdragsoperatør
  4. Relationelle operatører
  5. Logiske operatører
  6. Ternær operatør
  7. Bitwise operatører
  8. Skift operatører
  9. forekomst af operatør

Postfix-operatører betragtes som den højeste prioritet i henhold til Java-operatørprioritet.

41. Forklar forskellen mellem>> og>>> operatorer.

Operatører som>> og>>> ser ud til at være de samme, men handler lidt anderledes.>>-operatoren forskyder fortegnsbittene, og>>>-operatoren bruges til at udskifte de nulfyldte bits.

Eksempel:

Java
// Java Program to demostrate //>> og>>> operatører importerer java.io.*; // Driver klasse GFG { public static void main(String[] args) { int a = -16, b = 1;  // Brug af>> System.out.println(a >> b);  a = -17;  b = 1;  // Brug af>>> System.out.println(a >>> b);  } }>

Produktion
-8 2147483639>

42. Hvilken Java-operator er rigtig associativ?

Der er kun én operator, som er højreassociativ, som er = operator.

43. Hvad er prikoperator?

Dot-operatoren i Java bruges til at få adgang til instansvariabler og -metoder for klasseobjekter. Det bruges også til at få adgang til klasser og underpakker fra pakken.

44. Hvad er kovariant returtype?

Den kovariante returtype angiver, at returtypen kan variere i samme retning som underklassen. Det er muligt at have forskellige returtyper for en tilsidesættende metode i den underordnede klasse, men barnets returtype bør være en undertype af forælderens returtype og på grund af den tilsidesættende metode bliver en variant i forhold til returtypen.

Vi bruger covariant returtype på grund af følgende årsager:

  • Undgår forvirrende typecasts i klassehierarkiet og gør koden læsbar, brugbar og vedligeholdelig.
  • Giver frihed til at have mere specifikke returtyper ved tilsidesættelse af metoder.
  • Hjælp til at forhindre runtime ClassCastExceptions ved returnering.

45. Hvad er det forbigående nøgleord?

Det forbigående nøgleord bruges på tidspunktet for serialisering, hvis vi ikke ønsker at gemme værdien af ​​en bestemt variabel i en fil. Når JVM støder på et forbigående søgeord, ignorerer det den oprindelige værdi af variablen og gemmer standardværdien for den variable datatype.

46. ​​Hvad er forskellen mellem metoderne sleep() og wait()?

Søvn()

Vente()

Sleep()-metoden hører til trådklassen.

Wait()-metoden hører til objektklassen.

Sleep frigiver ikke låsen, som den aktuelle tråd holder.

wait() slip låsen, som tillader andre tråde at erhverve den.

Denne metode er en statisk metode.

Denne metode er ikke en statisk metode.

Sleep() kaster ikke en InterruptedException.InterruptedException vises, hvis tråden afbrydes, mens den venter.

Bruges hovedsageligt til at forsinke en tråd i en bestemt tidsperiode.

Bruges hovedsageligt til at sætte en tråd på pause, indtil den får besked fra en anden tråd.

Sleep() har to overbelastede metoder:

  • søvn(lang millis)millis: millisekunder
  • søvn (lang millis, int nanos) nanos: Nanosekunder

Wait() har tre overbelastede metoder:

  • vente()
  • vent (lang timeout)
  • vent (lang timeout, int nanos)

47. Hvad er forskellene mellem String og StringBuffer?

Snor

StringBuffer

Lagring af en sekvens af tegn.Giver funktionalitet til at arbejde med strengene.
Den er uforanderlig.Det kan ændres (kan modificeres og andre strengoperationer kan udføres på dem.)
Ingen trådhandlinger i en streng.Det er trådsikkert (to tråde kan ikke kalde StringBuffer-metoderne samtidigt)

48. Hvad er forskellene mellem StringBuffer og StringBuilder?

StringBuffer

StringBuilder

StringBuffer giver funktionalitet til at arbejde med strengene.StringBuilder er en klasse, der bruges til at bygge en foranderlig streng.
Det er trådsikkert (to tråde kan ikke kalde StringBuffer-metoderne samtidigt)Det er ikke trådsikkert (to tråde kan kalde metoderne samtidigt)
Forholdsvis langsom, da den er synkroniseret.Da den ikke er synkroniseret, er implementeringen hurtigere

49. Hvilken af ​​String eller String Buffer bør foretrækkes, når der er en masse opdateringer, der skal laves i dataene?

Strengen foretrækkes frem for StringBuffer, da StringBuilder er hurtigere end StringBuffer, men StringBuffer-objekter foretrækkes frem for, da det giver mere trådsikkerhed.


50. Hvorfor kaldes StringBuffer mutable?

StringBuffer-klassen i Java bruges til at repræsentere en udskiftelig streng af tegn. Det tilbyder et alternativ til den uforanderlige String-klasse ved at give dig mulighed for at ændre en strengs indhold uden konstant at oprette nye objekter. Foranderlige (modificerbare) strenge oprettes ved hjælp af StringBuffer-klassen. StringBuffer-klassen i Java er identisk med String-klassen, bortset fra at den kan ændres.

Eksempel:

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. Hvordan er oprettelsen af ​​en streng ved hjælp af new() forskellig fra den af ​​en bogstavelig?

String ved hjælp af new() er forskellig fra den bogstavelige, da når vi erklærer streng, gemmer den elementerne inde i stackhukommelsen, mens når den erklæres ved hjælp af new() allokerer den en dynamisk hukommelse i heap-hukommelsen. Objektet bliver oprettet i heap-hukommelsen, selvom det samme indholdsobjekt er til stede.

Syntaks:

String x = new String('ABC');>


3-768

52. Hvad er et array i Java?

Et array i Java er en datastruktur, der bruges til at lagre en sekvens af fast størrelse af elementer af samme type. Elementer i et array kan tilgås ved deres indeks, som starter fra 0 og går op til en længde på minus 1. Array-deklaration i Java udføres ved hjælp af firkantede parenteser og størrelse er også angivet under erklæringen.

Syntaks:

int[] Arr = new int[5];>

53. På hvilke hukommelsesarrays oprettes i Java?

Arrays i Java oprettes i heap-hukommelse. Når et array er oprettet ved hjælp af et nyt nøgleord, allokeres hukommelse i heapen til at lagre elementerne i arrayet. I Java administreres heap-hukommelsen af ​​Java Virtual Machine (JVM), og den deles også mellem alle tråde i Java-programmet. Hukommelsen, som ikke længere er i brug af programmet, JVM bruger en skraldeopsamler til at genvinde hukommelsen. Arrays i Java oprettes dynamisk, hvilket betyder, at størrelsen af ​​arrayet bestemmes under programmets køretid. Størrelsen af ​​arrayet er angivet under erklæringen af ​​arrayet, og det kan ikke ændres, når arrayet først er oprettet.

54. Hvad er typerne af et array?

Der er to typer arrays, dvs. Primitive arrays og Reference Arrays.

  • Enkeltdimensionelle arrays: Arrays, der kun har én dimension, dvs. et array af heltal eller et array af strenge, er kendt som enkeltdimensionelle arrays.

4-768

Syntaks:

data_type[] Array_Name = new data_type[ArraySize];>
  • Multidimensionelle arrays: Arrays, der har to eller flere dimensioner, såsom todimensionelle eller tredimensionelle arrays.

55. Hvorfor starter Java-array-indekset med 0?

Indekset for et array angiver afstanden fra starten af ​​arrayet. Så det første element har 0 afstand, derfor er startindekset 0.

Syntaks:

[Base Address + (index * no_of_bytes)]>

56. Hvad er forskellen mellem int array[] og int[] array?

Både int array[] og int[] array bruges til at erklære en matrix af heltal i java. Den eneste forskel mellem dem er på deres syntaks, ingen funktionalitetsforskel er til stede mellem dem.

int arr[] is a C-Style syntax to declare an Array.>
int[] arr is a Java-Style syntax to declare an Array.>

Det anbefales dog generelt at bruge Java-stil syntaks til at erklære en Array. Da det er let at læse og forstå, er det også mere i overensstemmelse med andre Java-sprogkonstruktioner.

57. Hvordan kopierer man et array i Java?

I Java er der flere måder at kopiere et array på baseret på kravene.

  • clone() metode i Java: Denne metode i Java bruges til at skabe en overfladisk kopi af det givne array, hvilket betyder, at det nye array vil dele den samme hukommelse som det originale array.
int[] Arr = { 1, 2, 3, 5, 0}; int[] tempArr = Arr.clone();>
  • arraycopy() metode: For at skabe en dyb kopi af arrayet kan vi bruge denne metode, som skaber en ny array med de samme værdier som den originale array.
int[] Arr = {1, 2, 7, 9, 8}; int[] tempArr = new int[Arr.length]; System.arraycopy(Arr, 0, tempArr, 0, Arr.length);>
  • copyOf() metode: Denne metode bruges til at oprette et nyt array med en bestemt længde og kopierer indholdet af det originale array til det nye array.
int[] Arr = {1, 2, 4, 8}; int[] tempArr = Arrays.copyOf(Arr, Arr.length);>
  • copyOfRange() metode: Denne metode ligner meget copyOf()-metoden i Java, men denne metode giver os også mulighed for at angive rækkevidden af ​​de elementer, der skal kopieres fra det originale array.
int[] Arr = {1, 2, 4, 8}; int[] temArr = Arrays.copyOfRange(Arr, 0, Arr.length);>

58. Hvad forstår du ved det takkede array?

Et takket array i Java er blot et todimensionelt array, hvor hver række i arrayet kan have forskellig længde. Da alle rækkerne i et 2-d Array har samme længde, men et takket array tillader mere fleksibilitet i størrelsen af ​​hver række. Denne funktion er meget nyttig under forhold, hvor dataene har varierende længder, eller når hukommelsesforbruget skal optimeres.

Syntaks:

int[][] Arr = new int[][] {  {1, 2, 8},   {7, 5},   {6, 7, 2, 6} };>

59. Er det muligt at gøre et array flygtigt?

I Java er det ikke muligt at lave en flygtig. Flygtige søgeord i Java kan kun anvendes på individuelle variabler, men ikke på arrays eller samlinger. Værdien af ​​variablen læses altid fra og skrives til hovedhukommelsen, når den er defineret som flygtig i stedet for at være cachelagret i en tråds lokale hukommelse. Dette gør det nemmere at sikre, at alle tråde, der har adgang til variablen, kan se ændringer foretaget i den.

60. Hvad er fordelene og ulemperne ved et array?

5-768

Fordelene ved Arrays er:

  • Direkte og effektiv adgang til ethvert element i samlingen er muliggjort af arrays. Et arrays elementer kan tilgås ved hjælp af en O(1) operation, hvilket betyder, at mængden af ​​tid, der er nødvendig for at gøre det, er konstant og uafhængig af arrayets størrelse.
  • Data kan lagres effektivt i hukommelsen ved hjælp af arrays. Størrelsen af ​​et array er kendt på kompileringstidspunktet, da dets elementer er lagret i sammenhængende hukommelsesområder.
  • På grund af det faktum, at dataene er lagret i sammenhængende hukommelsesområder, giver arrays hurtig datahentning.
  • Arrays er nemme at implementere og forstå, hvilket gør dem til et ideelt valg for begyndere, der lærer computerprogrammering.

Ulemperne ved Arrays er:

  • Arrays oprettes med en forudbestemt størrelse, der vælges på det tidspunkt. Det betyder, at hvis arrayets størrelse skal udvides, skal der laves et nyt array, og dataene skal kopieres fra det gamle array til det nye array, hvilket kan tage meget tid og hukommelse.
  • Der kan være ubrugt hukommelsesplads i et arrays hukommelsesplads, hvis arrayet ikke er helt optaget. Hvis du har dårlig hukommelse, kan dette være et problem.
  • Sammenlignet med andre datastrukturer som sammenkædede lister og træer kan arrays være stive på grund af deres faste størrelse og begrænsede understøttelse af sofistikerede datatyper.
  • Fordi et arrays elementer alle skal være af samme datatype, understøtter det ikke komplekse datatyper som objekter og strukturer.

61. Hvad er et objektorienteret paradigme?

Paradigme betyder bogstaveligt talt et mønster eller en metode. Programmeringsparadigmer er metoderne til at løse et program, der er af fire typer, nemlig imperativ, logisk, funktionel og objektorienteret. Når objekter bruges som basisenheder, hvorpå metoderne anvendes, udføres indkapslings- eller arvefunktionaliteter, er det kendt som et objektorienteret paradigme.

62. Hvad er hovedbegreberne for OOP'er i Java?

Hovedkoncepterne for OOP'er i Java er nævnt nedenfor:

  • Arv
  • Polymorfi
  • Abstraktion
  • Indkapsling

63. Hvad er forskellen mellem et objektorienteret programmeringssprog og et objektbaseret programmeringssprog?

Objektorienteret programmeringssprog

Objektbaseret programmeringssprog

Objektorienteret programmeringssprog dækker større begreber som arv, polymorfi, abstraktion osv.Omfanget af objektbaseret programmering er begrænset til brugen af ​​objekter og indkapsling.
Det understøtter alle de indbyggede objekterDet understøtter ikke alle de indbyggede objekter
Eksempler: Java, C# osv.Eksempler: Java script, visuel basis osv.

64. Hvordan adskiller 'new' operatoren sig fra 'newInstance()'-operatoren i Java?

den nye operator bruges til at oprette objekter, men hvis vi vil bestemme hvilken type objekt der skal oprettes ved kørsel, er der ingen måde vi kan bruge den nye operator. I dette tilfælde skal vi bruge newInstance() metode .

65. Hvad er klasser i Java?

I Java er klasser samlingen af ​​objekter, der deler lignende egenskaber og attributter. Klasser repræsenterer den blueprint eller skabelon, som objekter er oprettet ud fra. Klasser er ikke enheder i den virkelige verden, men hjælper os med at skabe objekter, som er enheder i den virkelige verden.

66. Hvad er forskellen mellem statisk (klasse) metode og instansmetode?

Statisk (klasse) metode

Forekomst metode

Statisk metode er forbundet med en klasse snarere end et objekt.

Forekomstmetoden er forbundet med et objekt i stedet for en klasse.

Statiske metoder kan kun kaldes ved hjælp af klassenavnet uden at oprette en forekomst af en klasse.

Forekomstmetoden kan kaldes på en specifik forekomst af en klasse ved hjælp af objektreferencen.

Statiske metoder har ikke adgang til det her søgeord .

Forekomstmetoder har adgang til det her søgeord .

Denne metode kan kun få adgang til statiske medlemmer af klassen

Denne metode kan få adgang til både statiske og ikke-statiske metoder i klassen.

67. Hvad er dette nøgleord i Java?

6

'dette' er et nøgleord, der bruges til at referere til en variabel, der refererer til det aktuelle objekt.

68. Hvad er korte adgangsspecifikationer og typer af adgangsspecifikationer?

Access_modifiers_in_java-768

Access Specifiers i Java hjælper med at begrænse omfanget af en klasse, konstruktør, variabel, metode eller datamedlem. Der er fire typer af adgangsspecifikationer i Java nævnt nedenfor:

  1. Offentlig
  2. Privat
  3. Beskyttet
  4. Standard

69. Hvad bliver startværdien af ​​en objektreference, der er defineret som en instansvariabel?

Startværdien af ​​en objektreference, der er defineret som en instansvariabel, er en NULL-værdi.

70. Hvad er en genstand?

Objektet er en virkelighed, der har visse egenskaber og metoder forbundet med sig. Objektet er også defineret som instansen af ​​en klasse. Et objekt kan erklæres ved hjælp af et nyt nøgleord.

71. Hvad er de forskellige måder at oprette objekter på i Java?

Metoder til at oprette objekter i Java er nævnt nedenfor:

  1. Brug af nyt søgeord
  2. Bruger ny instans
  3. Brug af clone() metode
  4. Bruger deserialisering
  5. Brug af metoden newInstance() fra Constructor-klassen

For at vide mere om metoder til at oprette objekter i Java henvises til denne artikel .

72. Hvad er fordelene og ulemperne ved objektkloning?

Der er mange fordele og ulemper ved at bruge objektkloning som nævnt nedenfor:

Fordele:

  • I Java kan tildelingsoperatoren '=' ikke bruges til kloning, da den blot opretter en kopi af referencevariabler. For at overvinde en sådan uoverensstemmelse kan clone()-metoden i Object-klassen bruges over tildelingsoperatoren.
  • clone()-metoden er en beskyttet metode af klassen Object, hvilket betyder, at kun Employee-klassen kan klone Employee-objekter. Dette betyder, at ingen anden klasse end Employee kan klone Employee-objekter, da den ikke kender Employee-klassens attributter.
  • Kodestørrelsen falder, når gentagelsen aftager.
  • Tillader replikering (lignende et prototypemønster) manuelt at starte hvert felt skaber stor kode, hvis objektet er komplekst, det er hurtigere med kloning.

Ulemper:

  • Da Object.clone()-metoden er beskyttet, er det nødvendigt at levere vores egen clone() og indirekte kalde Object.clone() fra den.
  • Hvis vi ikke har nogen metoder, er vi nødt til at levere en kloningsbar grænseflade, da vi skal levere JVM-information, så vi kan udføre en clone() på vores objekt. returner bare super.clone() fra klonmetoden, der kan være problematisk.

73. Hvad er fordelene ved at overføre dette til en metode i stedet for selve det aktuelle klasseobjekt?

Der er et par fordele ved at overføre dette til en metode i stedet for selve det aktuelle klasseobjekt, disse er:

  • dette er den endelige variabel, på grund af hvilken denne ikke kan tildeles nogen ny værdi, mens det aktuelle klasseobjekt muligvis ikke er endeligt og kan ændres.
  • dette kan bruges i den synkroniserede blok.

74. Hvad er konstruktøren?

Constructor er en speciel metode, der bruges til at initialisere objekter. Konstruktør kaldes, når et objekt oprettes. Navnet på konstruktøren er det samme som på klassen.

Eksempel:

// Class Created class XYZ{  private int val;    // Constructor  XYZ(){  val=0;  } };>

75. Hvad sker der, hvis du ikke leverer en konstruktør i en klasse?

Hvis du ikke leverer en konstruktør i en klasse i Java, genererer compileren automatisk en standardkonstruktør uden argumenter og ingen operation, som er en standardkonstruktør.

76. Hvor mange typer konstruktører bruges i Java?

Der er to typer konstruktører i Java som nævnt nedenfor:

  1. Standard konstruktør
  2. Parametriseret konstruktør

Standardkonstruktør: Det er typen, der ikke accepterer nogen parameterværdi. Det bruges til at indstille startværdier for objektattributter.

class_Name(); // Default constructor called>

Parameteriseret konstruktør: Det er den type konstruktør, der accepterer parametre som argumenter. Disse bruges til at tildele værdier til instansvariabler under initialiseringen af ​​objekter.

class_Name(parameter1, parameter2......); // All the values passed as parameter will be // allocated accordingly>

77. Hvad er formålet med en standardkonstruktør?

Konstruktører hjælper med at skabe forekomster af en klasse eller kan siges at skabe objekter af en klasse. Constructor kaldes under initialiseringen af ​​objekter. En standardkonstruktør er en type konstruktør, der ikke accepterer nogen parameter, så uanset hvilken værdi der tildeles til egenskaberne for objekterne, betragtes de som standardværdier.

78. Hvad forstår du ved kopikonstruktør i Java?

Kopikonstruktøren er den type konstruktør, hvori vi sender et andet objekt som en parameter, fordi hvilke egenskaber for begge objekter virker ens, derfor virker det som om konstruktører skaber en kopi af et objekt.

79. Hvor og hvordan kan du bruge en privat konstruktør?

En privat konstruktør bruges, hvis du ikke ønsker, at nogen anden klasse skal instansiere objektet for at undgå underklassificering. Brug private constructor kan ses som implementeret i eksemplet.

Eksempel:

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. Hvad er forskellene mellem konstruktørerne og metoderne?

Java-konstruktører bruges til at initialisere objekter. Under oprettelsen kaldes konstruktører til at indstille attributter for objekter bortset fra disse få grundlæggende forskelle mellem dem:

  1. Konstruktører kaldes kun, når objektet er oprettet, men andre metoder kan kaldes flere gange i løbet af et objekts levetid.
  2. Konstruktører returnerer ikke noget, hvorimod andre metoder kan returnere noget.
  3. Konstruktører er vant til at opsætte den oprindelige tilstand, men metoder bruges til at udføre specifikke handlinger.

81. Hvad er en grænseflade?

En grænseflade i Java er en samling af statiske slutvariabler og abstrakte metoder, der definerer kontrakten eller aftalen for et sæt forbundne klasser. Enhver klasse, der implementerer en grænseflade, er påkrævet for at implementere et specifikt sæt metoder. Det specificerer den adfærd, som en klasse skal udvise, men ikke detaljerne om, hvordan den skal implementeres.

Syntaks:

interface  {  // constant fields  // methds that are abstract by default }>

Eksempel:

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. Giv nogle funktioner i grænsefladen.

En grænseflade i Java programmeringssprog er defineret som en abstrakt type, der bruges til at specificere adfærden for en klasse. En grænseflade i Java er en blueprint af en adfærd. En Java-grænseflade indeholder statiske konstanter og abstrakte metoder.

Funktionerne i grænsefladen er nævnt nedenfor:

  • Interfacet kan være med til at opnå total abstraktion.
  • Giver os mulighed for at bruge flere arv i Java.
  • Enhver klasse kan implementere flere grænseflader, selv når én klasse kun kan udvide én klasse.
  • Det bruges også til at opnå løs kobling.

83. Hvad er en markørgrænseflade?

En grænseflade genkendes som en tom grænseflade (ingen felt eller metoder), det kaldes en markørgrænseflade. Eksempler på markørgrænseflader er Serialisable, Cloneable og Remote interfaces.

84. Hvad er forskellene mellem abstrakt klasse og grænseflade?

Abstrakt-klasse-og-grænseflade-768

Abstrakt klasse

Interface klasse

Både abstrakte og ikke-abstrakte metoder kan findes i en abstrakt klasse.

Grænsefladen indeholder kun abstrakte metoder.

Abstrakt klasse understøtter endelige metoder.

Interfaceklassen understøtter ikke Final-metoder.

Multipel nedarvning understøttes ikke af klassen Abstrakt.

Flere nedarvninger understøttes af Interface Class.

Abstrakt søgeord bruges til at erklære Abstrakt klasse.

Interfacenøgleord bruges til at erklære grænsefladeklassen.

forlænge nøgleordet bruges til at udvide en abstrakt klasse. redskaber Nøgleord bruges til at implementere grænsefladen.

Abstrakt klasse har medlemmer som beskyttede, private osv.

Alle klassemedlemmer er som standard offentlige.

85. Hvad mener du med dataindkapsling?

Indkapsling-i-Java-300

Data Encapsulation er begrebet OOPS egenskaber og karakteristika for de klasser, som grænsefladen er bundet sammen. Grundlæggende samler det data og metoder, der fungerer på disse data, inden for en enkelt enhed. Indkapsling opnås ved at erklære instansvariablerne i en klasse som private, hvilket betyder, at de kun kan tilgås inden for klassen.

86. Hvad er fordelene ved Encapsulation i Java?

Fordelene ved Encapsulation i Java er nævnt nedenfor:

  1. Dataskjul: det er en måde at begrænse adgangen til vores datamedlemmer ved at skjule implementeringsdetaljerne. Indkapsling giver også en måde at skjule data på. Brugeren vil ikke have nogen idé om den indre implementering af klassen.
  2. Øget fleksibilitet: Vi kan gøre klassens variable skrivebeskyttet eller skrivebeskyttet afhængigt af vores krav.
  3. Genanvendelighed: Indkapsling forbedrer også genanvendeligheden og er let at ændre med nye krav.
  4. Testkode er let: Kode er gjort let at teste til enhedstest.

87. Hvad er den primære fordel ved indkapsling?

Den største fordel ved Encapsulation i Java er dens evne til at beskytte den interne tilstand af et objekt mod ekstern ændring eller adgang. Det er en måde at skjule implementeringsdetaljerne for en klasse fra adgang udefra og kun afsløre en offentlig grænseflade, der kan bruges til at interagere med klassen. Den største fordel er at give en måde at kontrollere og styre et objekts tilstand og adfærd og også at beskytte det mod ændringer og uautoriseret adgang på samme tid.

Eksempel:

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. Hvad mener du med aggregering?

Aggregation-i-Java

Aggregation er et udtryk relateret til forholdet mellem to klasser, der bedst beskrives som et har-et forhold. Denne type er den mest specialiserede version af association. Det er en ensrettet forening, hvilket betyder, at det er et envejsforhold. Den indeholder referencen til en anden klasse og siges at have ejerskab til den klasse.

89. Hvad er 'IS-A'-forholdet i OOPs Java?

'IS-A' er en type relation i OOPs Java, hvor en klasse arver en anden klasse.

90. Definer arv.

Når et objekt, der tilhører en underklasse, erhverver alle egenskaber og adfærd for et overordnet objekt, der er fra superklassen, er det kendt som arv. En klasse inden for en klasse kaldes underklassen, og sidstnævnte omtales som superklassen. Underklassen eller underklassen siges at være specifik, mens superklassen eller overordnet klasse er generisk. Arv giver kodegenanvendelighed.

91. Hvad er de forskellige typer af arv i Java?

Nedarvning er den metode, hvormed Child-klassen kan arve funktionerne i Super- eller Parent-klassen. I Java er arv af fire typer:

  • Enkelt arv: Når et barn eller underklasse kun strækker sig over én superklasse, er det kendt at være enkeltarv. Klasseejendomme med en enkelt forælder videregives til den underordnede klasse.
  • Multilevel arv: Når et barn eller en underklasse udvider en hvilken som helst anden underklasse, oprettes et arvehierarki, som er kendt som multilevel arv. Med andre ord bliver en underklasse en andens overordnede klasse.
  • Hierarkisk arv: Når flere underklasser stammer fra den samme overordnede klasse, er det kendt som hierarkisk arv. Med andre ord har en klasse, der har en enkelt forælder, mange underklasser.
  • Multipel arv: Når en underordnet klasse arver fra flere forældreklasser, kaldes det Multiple Inheritance. I Java understøtter det kun multipel nedarvning af grænseflader, ikke klasser.

92. Hvad er multipel arv? Er det understøttet af Java?

En komponent af det objektorienterede begreb kendt som multiple arv tillader en klasse at arve egenskaber fra mange overordnede klasser. Når metoder med samme signatur er til stede i både superklasser og underklasser, opstår der et problem. Metodens kalder kan ikke specificere over for compileren, hvilken klassemetode der skal kaldes, eller endda hvilken klassemetode der skal have forrang.

Bemærk: Java understøtter ikke Multiple Inheritance

Eksempel:

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. Hvordan er arv i C++ forskellig fra Java?

Nedarvning i C++

Arv i Java

C++ lader brugeren arve flere klasser.Java understøtter ikke flere nedarvninger.
Når en klasse oprettes i C++, arver den ikke fra objektklassen, men eksisterer i stedet for sig selv.Java siges altid at have en enkelt arv, da alle klasserne arver på den ene eller den anden måde fra objektklassen.

94. Er der nogen begrænsning for at bruge arv?

Ja, der er en begrænsning ved at bruge Inheritance i Java, da man på grund af arv kan arve alt fra superklasse og interface på grund af hvilken underklasse der er for klynget og nogle gange fejltilbøjelig når dynamisk overstyring eller dynamisk overbelastning udføres i visse situationer.

95. Selvom arv er et populært OOPs-koncept, er det mindre fordelagtigt end sammensætning. Forklare.

Arv er et populært koncept inden for objektorienteret programmering (OOP), hvor en klasse kan arve egenskaberne og metoderne fra enhver anden klasse, som omtales som en overordnet eller superklasse. På den anden side i Composition kan en klasse indeholde en forekomst af en anden klasse som en medlemsvariabel, der ofte omtales som en del eller en komponent. Nedenfor er nogle grunde til, at sammensætning er mere fordelagtig end arv:

  • Tæt kobling: Når der foretages ændringer i superklassen, kan disse ændringer påvirke adfærden for alle dens underordnede eller underklasser. Dette problem gør koden mindre fleksibel og skaber også problemer under vedligeholdelse. Dette problem fører også til den tætte kobling mellem klasserne.
  • Skrøbelig basisklasseproblem: Når ændringerne til basisklassen kan bryde funktionaliteten af ​​dens afledte klasser. Dette problem kan gøre det vanskeligt at tilføje nye funktioner eller ændre de eksisterende. Dette problem er kendt som Fragile Base-klasseproblemet.
  • Begrænset genbrug: Nedarvning i Java kan føre til begrænset kodegenbrug og også kodeduplikering. Da en underklasse arver alle egenskaberne og metoderne i sin superklasse, kan den nogle gange ende med unødvendig kode, som ikke er nødvendig. Dette fører til en kodebase, der ikke kan vedligeholdes.

96. Hvad er en forening?

Foreningen er et forhold mellem to separate klasser etableret gennem deres objekter. Det repræsenterer Has-A's forhold.

97. Hvad mener du med aggregering?

Sammensætning er en begrænset form for aggregation, hvor to enheder er meget afhængige af hinanden. Det repræsenterer del af forholdet.

98. Hvad er sammensætningen af ​​Java?

Sammensætning indebærer et forhold, hvor barnet kan ikke eksistere selvstændigt af forælderen. For eksempel menneskeligt hjerte, hjertet eksisterer ikke adskilt fra et menneske.

99. Angiv forskellen mellem sammensætning og aggregation.

Aggregation

Sammensætning

Det definerer et forhold mellem objekterne

Det repræsenterer en del af forholdet

Objekter er uafhængige af hinanden.

Objekter er afhængige af hinanden.

Repræsenter det ved at bruge den fyldte diamant.

Repræsenter det ved at bruge den tomme diamant.

Børnegenstande har ikke en levetid.

Børnegenstande har en levetid.

100. Kan konstruktøren arves?

Nej, vi kan ikke arve en konstruktør.


101. Hvad er polymorfi?

Polymorfi er defineret som evnen til at antage mere end én form. Den er af to typer, nemlig kompileringstidspolymorfi eller metodeoverbelastning - en funktion kaldet under kompileringstiden. Tag for eksempel et klasse-'område'. Baseret på antallet af parametre kan den beregne arealet af en firkant, trekant eller cirkel. Køretidspolymorfi eller metodetilsidesættelse-links under kørselstid. Metoden inde i en klasse tilsidesætter metoden for den overordnede klasse.

102. Hvad er runtime polymorfi eller dynamisk metodeafsendelse?

Dynamisk metodeafsendelse er en løsningsmekanisme til metodetilsidesættelse under kørselstiden. Metodetilsidesættelse er den, hvor metoden i en underklasse har samme navn, parametre og returtype som en metode i superklassen. Når den tilsidesatte metode kaldes gennem en superklassereference, bestemmer java hvilken version (superklasse eller underklasse) af den metode, der skal udføres baseret på typen af ​​et objekt, der henvises til på det tidspunkt, kaldet finder sted. Derfor træffes beslutningen i løbet af tiden. Dette omtales som dynamisk metodeafsendelse.

103. Hvad er metodetilsidesættelse?

Metodetilsidesættelse, også kendt som run time polymorphism, er en, hvor den underordnede klasse indeholder den samme metode som den overordnede klasse. For eksempel har vi en metode ved navn 'gfg()' i den overordnede klasse. En metode gfg() er igen defineret i underklassen. Når gfg() kaldes i underklassen, udføres metoden inden for klasse-id'et. Her tilsidesatte gfg() i klassen metoden udenfor.

104. Hvad er metodeoverbelastning?

Overbelastning-i-Java-768

Metodetilsidesættelse er en metode til at opnå Run-time polymorfi i Java. Metodetilsidesættelse er en funktion, der gør det muligt for en underklasse at levere en specifik implementering af en metode, der allerede er leveret af en af ​​dens overordnede klasser. Når en metode i en underklasse har det samme navn, de samme parametre eller signatur og den samme returtype (eller undertype) som en metode i dens overordnede klasse, så siges metoden i underklassen at tilsidesætte metoden i superklassen.

105. Kan vi tilsidesætte den statiske metode?

Nej, da statiske metoder er en del af klassen snarere end objektet, så vi kan ikke tilsidesætte dem.

106. Kan vi tilsidesætte den overbelastede metode?

Ja, da den overbelastede metode er en helt anden metode i compilerens øjne. Tilsidesættelse er slet ikke det samme. Beslutningen om, hvilken metode der skal kaldes, udsættes til runtime.

107. Kan vi overbelaste main() metoden?

Ja i Java kan vi overbelaste hovedmetoden til at kalde hovedmetoden ved hjælp af dens foruddefinerede kaldemetode.

108. Hvad er metodeoverbelastning og metodetilsidesættelse?

Metodeoverbelastning: Det er også kendt som Compile Time Polymorphism. Ved metodeoverbelastning deles to eller flere metoder i samme klasse med en anden signatur.

Eksempel:

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>

Metodetilsidesættelse: Metodetilsidesættelse opstår, når en underklasse kan levere implementeringen af ​​en metode, som allerede er defineret i den overordnede klasse eller superklasse. Returtypen, navnet og argumenterne skal svare til metoderne i superklassen.

Eksempel:

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.>

Metode Overbelastning

Metode tilsidesættelse

Når to eller flere metoder er i samme klasse med forskellige parametre, men det samme navn.

Når en underklasse giver sin egen implementering af en metode, der allerede er defineret i den overordnede klasse.

Metodeoverbelastning kan kun ske i den samme klasse eller mellem en underklasse eller overordnet klasse.

Metodetilsidesættelse kan kun ske i underklasse.

Når der opstår en fejl, fanges den på kompileringstidspunktet for programmet.

Når der opstår en fejl, fanges den under programmets køretid.

Eksempel på kompileringstidspolymorfi.

Eksempel på Run Time Polymorphism.

Metode Overbelastning kræver muligvis nedarvning.

Metodetilsidesættelse har altid brug for arv.

Det sker i klassen.

Det udføres i to klasser med et arveforhold.

109. Kan vi tilsidesætte de private metoder?

Det er ikke muligt at tilsidesætte de private metoder i Java. Metodetilsidesættelse er, hvor metoden i underklassen er implementeret i stedet for metoden fra den overordnede klasse. De private metoder er kun tilgængelige inden for den klasse, hvori den er erklæret. Da denne metode ikke er synlig for andre klasser og ikke kan tilgås, kan den ikke tilsidesættes.

110. Kan vi ændre omfanget af den overstyrede metode i underklassen?

I Java er det ikke muligt at ændre den tilsidesatte metodes omfang. Underklassemetodens omfang skal være lig med eller bredere end Superclass-metodens overordnede metodes omfang. Den tilsidesatte metode i underklassen kan for eksempel have et offentligt omfang eller et mere tilgængeligt omfang som beskyttet eller standard, hvis den tilsidesatte metode i superklassen har et offentligt omfang. Det kan dog ikke have et mere eksklusivt omfang som privat.

111. Kan vi ændre throws-sætningen af ​​superklassemetoden, mens vi tilsidesætter den i underklassen?

Vi kan ændre throws-klausulen i Superclass-metoden med nogle begrænsninger, vi kan ændre throws-klausulen i superklassemetoden, mens vi tilsidesætter den i underklassen. Den tilsidesatte underklassemetode kan kun angive ukontrollerede undtagelser, hvis superklassemetoden ikke erklærer nogen undtagelser. Hvis superklassemetoden erklærer en undtagelse, kan underklassemetoden erklære den samme undtagelse, en underklasseundtagelse eller slet ingen undtagelse. Underklassemetoden kan dog ikke erklære en overordnet undtagelse, der er bredere end dem, der er erklæret i superklassemetoden.

112. Kan du have virtuelle funktioner i Java?

Ja, Java understøtter virtuelle funktioner. Funktioner er som standard virtuelle og kan gøres ikke-virtuelle ved hjælp af det endelige søgeord.

113. Hvad er abstraktion?

Abstraktion refererer til handlingen med at repræsentere væsentlige træk uden at inkludere baggrundsdetaljer. De detaljerede oplysninger eller implementeringen er skjult. Det mest almindelige eksempel på abstraktion er en bil, vi ved, hvordan man tænder motoren, accelererer og bevæger sig, men den måde, motoren fungerer på, og dens interne komponenter er kompleks logik skjult for de almindelige brugere. Dette gøres normalt for at håndtere kompleksiteten.

114. Hvad er abstrakt klasse?

En klasse, der er erklæret som abstrakt, kan ikke instansieres, dvs. objektet kan ikke oprettes. Den kan indeholde abstrakte metoder, men hvis en klasse har mindst én abstrakt metode, skal den erklæres abstrakt.

Eksempel på en abstrakt klasse med abstrakt metode:

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. Hvornår bruges abstrakte metoder?

En abstrakt metode bruges, når vi ønsker at bruge en metode, men ønsker at underordnede klasser bestemmer implementeringen i så fald bruger vi abstrakte metoder med forældreklasserne.

116. Hvordan kan du undgå serialisering i den underordnede klasse, hvis basisklassen implementerer Serializable-grænsefladen?

Serialisering i underklassen, hvis basisklassen implementerer Serializable-grænsefladen, kan vi undgå det ved at definere metoden writeObject() og smide NotSerializableException().

117. Hvad er Collection Framework i Java?

Samlinger er enheder af objekter i Java. Samlingsrammen er et sæt grænseflader og klasser i Java, der bruges til at repræsentere og manipulere samlinger af objekter på en række forskellige måder. Samlingsrammerne indeholder klasser (ArrayList, Vector, LinkedList, PriorityQueue, TreeSet) og flere grænseflader (Set, List, Queue, Deque), hvor hver grænseflade bruges til at gemme en bestemt type data.

118. Forklar forskellige grænseflader, der bruges i samlingsrammen.

Indsamlingsramme implementerer

  1. Samling grænseflade
  2. Listegrænseflade
  3. Indstil grænseflade
  4. Køgrænseflade
  5. Og grænsefladen
  6. Kortgrænseflade

Samling grænseflade: Collection er den primære tilgængelige grænseflade, der kan importeres ved hjælp af java.util.Collection.

Syntaks:

public interface Collection extends iterable>

119. Hvordan kan du synkronisere en ArrayList i Java?

En ArrayList kan synkroniseres ved hjælp af to metoder nævnt nedenfor:

  1. Brug af Collections.synchronizedList()
  2. Brug af CopyOnWriteArrayList

Brug af Collections.synchronizedList():

public static List synchronizedList(List list)>

Brug af CopyOnWriteArrayList:

  1. Opret en tom liste.
  2. Det implementerer List-grænsefladen
  3. Det er en trådsikker variant af ArrayList
  4. T repræsenterer generisk

120. Hvorfor har vi brug for en synkroniseret ArrayList, når vi har vektorer (som er synkroniseret) i Java?

ArrayList er i behov, selv når vi har vektorer på grund af visse årsager:

  1. ArrayList er hurtigere end Vectors.
  2. ArrayList understøtter multithreading, mens Vectors kun understøtter single-threading.
  3. ArrayList er sikrere at bruge, da Vectors understøtter enkelte tråde, og individuelle operationer er mindre sikre og tager længere tid at synkronisere.
  4. Vektorer betragtes som forældede i Java på grund af deres synkroniserede natur.

121. Hvorfor kan vi ikke oprette et generisk array?

Generiske arrays kan ikke oprettes, fordi en array bærer type information om dets elementer under kørsel, hvorfor den under kørsel kaster 'ArrayStoreException', hvis elementernes type ikke er ens. Da oplysninger om generisk type bliver slettet på kompileringstidspunktet af Type Erasure, ville array-lagerkontrollen være blevet bestået, hvor den skulle have mislykkedes.

122. Sammenhængende hukommelsesplaceringer bruges normalt til lagring af faktiske værdier i et array, men ikke i ArrayList. Forklare.

Elementerne i et array er gemt i sammenhængende hukommelsesplaceringer, hvilket betyder, at hvert element er gemt i en separat blok baseret på det placeret i arrayet. Da elementerne i arrayet er gemt på sammenhængende steder, kan det være relativt nemt at få adgang til ethvert element ved dets indeks, da elementadressen kan beregnes baseret på elementets placering. Men Java implementerer ArrayLists som dynamiske arrays, hvilket betyder, at størrelsen kan ændre sig, efterhånden som elementer fjernes eller tilføjes. ArrayList-elementer gemmes ikke i sammenhængende hukommelsesplaceringer for at kunne rumme denne dynamiske natur. I stedet gør ArrayList brug af en metode kendt som et udvideligt array, hvor det underliggende array udvides til en større størrelse efter behov, og elementerne derefter kopieres til den nye placering. I modsætning til en ArrayList, som har en dynamisk størrelse og ikke gemmer dens elementer i sammenhængende hukommelsesplaceringer, har en matrix en fast størrelse, og dens elementer er gemt der.

123. Forklar metoden til at konvertere ArrayList til Array og Array til ArrayList.

Konvertering af List til ArrayList

Der er flere metoder til at konvertere List til ArrayList

Konverter-Array-in-ArrayList-768

Programmører kan konvertere en Array til ArrayList ved hjælp af asList() metoden i Arrays-klassen. Det er en statisk metode i Arrays-klassen, der accepterer List-objektet.

Syntaks:

Arrays.asList(item)>

Eksempel:

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 af ArrayList til Array

Konverter-ArrayList-to-Array-768

Java-programmører kan konvertere ArrayList til

Syntaks:

List_object.toArray(new String[List_object.size()])>

Eksempel:

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. Hvordan vokser størrelsen af ​​ArrayList dynamisk? Og oplys også hvordan det implementeres internt.

På grund af ArrayLists array-baserede natur vokser den dynamisk i størrelse, hvilket sikrer, at der altid er plads nok til elementer. Når et ArrayList-element først oprettes, er standardkapaciteten omkring 10-16 elementer, hvilket grundlæggende afhænger af Java-versionen. ArrayList-elementer kopieres fra det originale array til det nye array, når kapaciteten af ​​det originale array er fuld. Da ArrayList-størrelsen øges dynamisk, opretter klassen en ny matrix af større størrelser, og den kopierer alle elementerne fra den gamle matrix til den nye matrix. Nu bruges referencen for det nye array internt. Denne proces med dynamisk vækst af et array er kendt som størrelsesændring.

125. Hvad er en vektor i Java?

Vektorer i Java ligner hinanden og kan gemme flere elementer inde i dem. Vektorer følger visse regler nævnt nedenfor:

  1. Vektor kan importeres ved hjælp af Java.util.Vector.
  2. Vektor implementeres ved hjælp af et dynamisk array, da størrelsen af ​​vektoren øges og falder afhængigt af de elementer, der er indsat i den.
  3. Elementer af vektoren ved hjælp af indeksnumre.
  4. Vektorer er synkroniseret i naturen betyder, at de kun brugte en enkelt tråd (kun én proces udføres på et bestemt tidspunkt).
  5. Vektoren indeholder mange metoder, der ikke er en del af samlingsrammerne.

Syntaks:

Vector gfg = new Vector(size, increment);>

126. Hvordan gør man Java ArrayList skrivebeskyttet?

En ArrayList kan kun gøres klar ved hjælp af metoden leveret af Collections ved hjælp af Collections.unmodifiableList() metoden.

Syntaks:

array_readonly = Collections.unmodifiableList(ArrayList);>

Eksempel:

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. Hvad er en prioritetskø i Java?

Prioritet-kø-768

En prioritetskø er en abstrakt datatype, der ligner en almindelig kø- eller stakdatastruktur. Elementer, der er gemt i elementer, afhænger af den definerede prioritet fra lav til høj. PriorityQueue er baseret på prioritetsbunken.

Syntaks:

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. Forklar LinkedList-klassen.

LinkedList klasse er Java, der bruger en dobbelt linket liste til at gemme elementer. Det arver AbstractList-klassen og implementerer List og Deque-grænseflader. Egenskaberne for LinkedList-klassen er nævnt nedenfor:

  1. LinkedList klasser er ikke-synkroniserede.
  2. Opretholder indføringsrækkefølgen.
  3. Den kan bruges som en liste, stak eller kø.

Syntaks:

LinkedList list_name=new LinkedList();>

129. Hvad er Stack-klassen i Java, og hvad er de forskellige metoder, som den tilbyder?

En Stack-klasse i Java er en LIFO-datastruktur, der implementerer Last In First Out-datastrukturen. Den er afledt af en Vector-klasse, men har funktioner, der er specifikke for stakke. Stack-klassen i java giver følgende metoder:

  • kig(): returnerer det øverste element fra stakken uden at fjerne det
  • tom(): returnerer sandt, hvis stakken ellers er tom og falsk
  • skubbe(): skubber et emne op på toppen af ​​stakken
  • pop(): fjerner og returnerer det øverste element fra stakken
  • Søg(): returnerer objektets 1-baserede position fra toppen af ​​stakken. Hvis objektet ikke er i stakken, returnerer det -1

130. Hvad er angivet i Java Collections-rammeværket og en liste over dets forskellige implementeringer?

Sæt er samlinger, der ikke gemmer duplikerede elementer. De holder ikke orden på elementerne. Java Collections-rammen giver flere implementeringer af Set-grænsefladen, herunder:

  • HashSet: HashSet i Java, gemmer elementerne i en has-tabel, som giver hurtigere opslag og hurtigere indsættelse. HashSet er ikke bestilt.
  • LinkedHashSet: LinkedHashSet er en implementering af HashSet, som opretholder elementernes indsættelsesrækkefølge.
  • Træsæt: TreeSet gemmer elementerne i en sorteret rækkefølge, der bestemmes af den naturlige rækkefølge af elementerne eller af en tilpasset komparator, der blev leveret på tidspunktet for oprettelsen.

131. Hvad er HashSet-klassen i Java, og hvordan gemmer den elementer?

HashSet-klassen implementerer Set-grænsefladen i Java Collections Framework og er medlem af HashSet-klassen. I modsætning til duplikerede værdier gemmer den en samling af forskellige elementer. I denne implementering er hvert element afbildet til et indeks i et array ved hjælp af en hash-funktion, og indekset bruges til hurtigt at få adgang til elementet. Det producerer et indeks for elementet i arrayet, hvor det er gemt baseret på inputelementet. Forudsat at hash-funktionen fordeler elementerne mellem spandene på passende måde, giver HashSet-klassen konstant-tidsydelse til grundlæggende operationer (tilføj, fjern, indeholder og størrelse).

132. Hvad er LinkedHashSet i Java Collections Framework?

LinkedHashSet er en ordnet version af Hashset, der vedligeholdes af en dobbelt-linket liste på tværs af alle elementerne. Det er meget nyttigt, når der er behov for iterationsrækkefølge. Under iteration i LinkedHashSet returneres elementer i samme rækkefølge, som de er indsat.

Syntaks:

LinkedHashSet hs = new LinkedHashSet();>

Eksempel:

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. Hvad er en kortgrænseflade i Java?

Kort-grænseflade-i-Java-660

Kortgrænsefladen er til stede i Java-samlingen og kan bruges med Java.util-pakken. En kortgrænseflade bruges til at kortlægge værdier i form af en nøgleværdi-formular. Kortet indeholder alle unikke nøgler. Det giver også metoder forbundet med det som containsKey(), indeholder værdi () osv.

Der er flere typer kort i kortgrænsefladen som nævnt nedenfor:

  1. Sorteret kort
  2. Trækort
  3. HashMap
  4. LinkedHashMap

134. Forklar Treemap i Java

TreeMap er en type kort, der gemmer data i form af nøgleværdi-par. Det implementeres ved hjælp af det rød-sorte træ. Funktionerne i TreeMap er:

  1. Den indeholder kun unikke elementer.
  2. Den kan ikke have en NULL-nøgle
  3. Det kan have flere NULL-værdier.
  4. Det er ikke-synkroniseret.
  5. Den opretholder stigende orden.

135. Hvad er EnumSet?

EnumSet er en specialiseret implementering af Set-grænsefladen til brug med opregningstype. Et par funktioner i EnumSet er:

  1. Det er ikke-synkroniseret.
  2. Hurtigere end HashSet.
  3. Alle elementerne i et EnumSet skal komme fra en enkelt opregningstype.
  4. Det tillader ikke null-objekter og kaster NullPointerException for undtagelser.
  5. Den bruger en fejlsikker iterator.

Syntaks:

public abstract class EnumSet>

Parameter: E angiver elementerne.

136. Hvad er BlockingQueue?

BlockingQueue-768

En blokeringskø er en kø, der understøtter de operationer, der venter på, at køen ikke bliver tom, mens elementet hentes og fjernes, og venter på, at der bliver ledig plads i køen, mens elementet tilføjes.

Syntaks:

public interface BlockingQueue extends Queue>

Parametre: E er den type elementer, der er gemt i samlingen

137. Hvad er ConcurrentHashMap i Java, og implementerer du det?

ConcurrentHashMap er implementeret ved hjælp af Hashtable.

Syntaks:

public class ConcurrentHashMap  extends AbstractMap  implements ConcurrentMap, Serializable>

Parametre : K er nøglen Objekttype og V er værdien Objekttype

138. Kan du bruge en hvilken som helst klasse som en kortnøgle?

Ja, vi kan bruge enhver klasse som en kortnøgle, hvis den følger visse foruddefinerede regler nævnt nedenfor:

  1. Klassen, der tilsidesætter equals()-metoden, skal også tilsidesætte hashCode()-metoden
  2. ConcurrentHashMap-klassen er trådsikker.
  3. Standard samtidighedsniveauet for ConcurrentHashMap er 16.
  4. Det er ikke muligt at indsætte null-objekter i ConcurrentHashMap som en nøgle eller som værdi.

139. Hvad er en iterator?

Iterator-i-Java-768

Iterator-grænsefladen giver metoder til at iterere over enhver samling i Java. Iterator er en erstatning for Enumeration i Java Collections Framework. Den kan hente en iterator-forekomst fra en samling ved hjælp af metoden _iterator()_. Det giver også den, der ringer, mulighed for at fjerne elementer fra den underliggende samling under iterationen.

140. Hvad er en opregning?

Optælling er en brugerdefineret datatype. Det bruges hovedsageligt til at tildele navne til integralkonstanter, navnene gør et program let at læse og vedligeholde. Hovedformålet med enummet er at definere brugerdefinerede datatyper.

Eksempel:

// A simple enum example where enum is declared  // outside any class (Note enum keyword instead of  // class keyword)  enum Color  {   RED, GREEN, BLUE;  }>

141. Hvad er forskellen mellem indsamling og samlinger?

Kollektion

Samlinger

Samlingen er en grænseflade.

Samlinger er en klasse.

Det giver datastrukturens standardfunktionalitet.

Det er at sortere og synkronisere samlingselementerne.

Det giver de metoder, der kan bruges til datastrukturen.

Det giver statiske metoder, der kan bruges til forskellige operationer.

142. Differentier mellem Array og ArrayList i Java.

Array

ArrayList

Endimensionel eller flerdimensional

Endimensionel

For og for hver brugt til iteration

Her bruges iterator til at krydse riverArrayList

længde nøgleordet returnerer størrelsen af ​​arrayet.

size() metoden bruges til at beregne størrelsen af ​​ArrayList.

Arrayet har fast størrelse.

ArrayList-størrelsen er dynamisk og kan øges eller formindskes i størrelse, når det kræves.

Den er hurtigere, da vi ovenfor ser den af ​​fast størrelse

Det er relativt langsommere på grund af dets dynamiske karakter

Primitive datatyper kan gemmes direkte i usandsynlige objekter.

Primitive datatyper tilføjes ikke direkte til usandsynlige arrays, de tilføjes indirekte ved hjælp af autoboxing og unboxing

De kan ikke tilføjes her, derfor er typen i det usikre.

De kan tilføjes her, hvilket gør ArrayList typesikker.

Opgaveoperatøren tjener kun formålet

Her bruges en speciel metode kendt som add() metode

143. Hvad er forskellen mellem Array og Collection i Java?

Array

Samlinger

Array i Java har en fast størrelse.

Samlinger i Java har dynamiske størrelser.

I et array gemmes elementer i sammenhængende hukommelsesplaceringer.

I samlinger gemmes elementer ikke nødvendigvis i sammenhængende hukommelsesplaceringer.

Objekter og primitive datatyper kan gemmes i et array.

Vi kan kun opbevare genstande i samlinger.

Manuel manipulation er påkrævet for at ændre størrelsen på arrayet.

Ændring af størrelse i samlinger håndteres automatisk.

Arrayet har grundlæggende metoder til manipulation.

Samlinger har avancerede metoder til manipulation og iteration.

Arrayet er tilgængeligt siden begyndelsen af ​​Java.

Samlinger blev introduceret i Java 1.2.

144. Forskel mellem ArrayList og LinkedList.

ArrayList

LinkedList

ArrayList er implementeret som en udvidelig Array.

LinkedList er implementeret som en dobbelt-linket liste.

I ArrayList gemmes elementer i sammenhængende hukommelsesplaceringer

LinkedList Elementer gemmes i ikke-sammenhængende hukommelsesplaceringer, da hvert element har en reference til de næste og forrige elementer.

ArrayLists er hurtigere til tilfældig adgang.

LinkedLists er hurtigere til indsættelse og sletning

ArrayLists er mere hukommelseseffektive.

LinkedList er mindre hukommelseseffektiv

ArrayLists Brug mere hukommelse på grund af opretholdelse af array-størrelsen.

LinkedList Bruger mindre hukommelse, da den kun har referencer til elementer

Søgeoperationen er hurtigere i ArrayList.

Søgeoperationen er langsommere i LinkedList

145. Differentier mellem ArrayList og Vector i Java.

ArrayList

Vektor

ArrayLists er implementeret som et udvideligt array.

Vector er implementeret som et array, der kan vokse.

ArrayList er ikke synkroniseret.

Vektoren er synkroniseret.

ArrayLists er hurtigere for ikke-samtidige operationer.

Vector er langsommere for ikke-samtidige operationer på grund af ekstra overhead af synkronisering.

ArrayLists blev introduceret i Java 1.2.

Vector blev introduceret i JDK 1.0.

Anbefales til brug i et enkelt-trådet miljø.

Vektorer anbefales til brug i et multi-threaded miljø.

Standardindledende kapacitet for ArrayLists er 10.

I vektorer er standardindledende kapacitet 10, men standardtilvæksten er dobbelt så stor.

ArrayList ydeevne er høj.

Vektorydelsen er lav.

146. Hvad er forskellen mellem Iterator og ListIterator?

Iterator

ListIterator

Kan kun krydse elementer i samlingen i fremadgående retning.

Kan krydse elementer, der findes i samlingen både fremad og bagud.

Bruges til at krydse kort, liste og sæt.

Kan kun krydse Liste og ikke de to andre.

Indekser kan ikke opnås ved hjælp af Iterator

Det har metoder som nextIndex() og previousIndex() til at opnå indekser af elementer til enhver tid, mens du krydser listen.

Kan ikke ændre eller erstatte elementer, der findes i samlingen

Kan ændre eller erstatte elementer ved hjælp af sæt(E e)

Kan ikke tilføje elementer, og kaster også ConcurrentModificationException.

Kan nemt tilføje elementer til en samling når som helst.

Visse metoder til Iterator er next(), remove() og hasNext().

Visse metoder i ListIterator er next(), previous(), hasNext(), hasPrevious(), add(E e).

147. Differentier mellem HashMap og HashTable.

HashMap

HashTabel

HashMap er ikke synkroniseret

HashTable er synkroniseret

Én nøgle kan være en NULL-værdi

NULL-værdier er ikke tilladt

Iteratoren bruges til at krydse HashMap.

Både Iterator og Enumertar kan bruges

HashMap er hurtigere.

HashTable er langsommere sammenlignet med HashMap.

148. Hvad er forskellen mellem Iterator og Enumeration?

Iterator

Optælling

Iteratoren kan krydse både arv og ikke-legacy elementer.

Optælling kan kun gennemløbe ældre elementer.

Iteratoren er fejlhurtig.

Optælling er ikke fejl-hurtig.

Iteratorerne er langsommere.

Optælling er hurtigere.

Iteratoren kan udføre en fjernelse, mens den krydser samlingen.

Optællingen kan kun udføre gennemløbsoperationer på samlingen.

149. Hvad er forskellen mellem Comparable og Comparator?

Sammenlignelig

Komparator

Interfacet er til stede i java.lang-pakken.

Interfacet er til stede i java.util-pakken.

Giver compareTo()-metoden til at sortere elementer.

Giver compare()-metoden til at sortere elementer.

Det giver enkelte sorteringssekvenser.

Det giver flere sorteringssekvenser.

Sorteringslogikken skal være i den samme klasse, hvis objekt du skal sortere.

Logikken i sortering bør være i en separat klasse for at skrive forskellig sortering baseret på forskellige attributter af objekter.

Metode sorterer dataene efter fast sorteringsrækkefølge.

Metode sorterer dataene i henhold til den tilpassede sorteringsrækkefølge.

Det påvirker den oprindelige klasse.

Det påvirker ikke den oprindelige klasse.

Implementeret ofte i API'et af kalender, Wrapper-klasser, dato og streng.

Det er implementeret til at sortere forekomster af tredjepartsklasser.

150. Hvad er forskellen mellem Set og Map?

Sæt

Kort

Set-grænsefladen er implementeret ved hjælp af java.util-pakken.

Kortet er implementeret ved hjælp af java.util-pakken.

Det kan udvide samlingsgrænsefladen.

Det udvider ikke indsamlingsgrænsefladen.

Det tillader ikke duplikerede værdier.

Det tillader duplikerede værdier.

Sættet kan kun sortere én nulværdi.

Kortet kan sortere flere nulværdier.

Java Intermediate Interview Spørgsmål

151. Forklar FailFast iterator og FailSafe iterator sammen med eksempler for hver.

En FailFast iterator er en iterator, der kaster en ConcurrentModificationException hvis den registrerer, at den underliggende samling er blevet ændret, mens iteratoren bruges. Dette er standardadfærden for iteratorer i Java Collections Framework. For eksempel er iteratoren for et HashMap FailFast.

Eksempel:

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 kaster ikke en ConcurrentModificationException hvis den underliggende samling ændres, mens iteratoren bruges. Alternativt opretter den et øjebliksbillede af samlingen på det tidspunkt, hvor iteratoren oprettes, og itererer over snapshottet. For eksempel er iteratoren for et ConcurrentHashMap FailSafe.

Eksempel:

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. Hvad er undtagelseshåndtering?

An Undtagelse er en hændelse, der afbryder programmets normale flow og kræver speciel behandling. Under afviklingen af ​​et program kan fejl og uplanlagte hændelser håndteres ved at bruge Java Exception Handling-mekanismen. Nedenfor er nogle grunde til, at undtagelser forekommer i Java:

  • Enhedsfejl
  • Tab af netværksforbindelse
  • Kodefejl
  • Åbning af en utilgængelig fil
  • Ugyldig brugerinput
  • Fysiske begrænsninger (mangler diskhukommelse)

153. Hvor mange typer undtagelser kan forekomme i et Java-program?

Undtagelsestyper-i-Java-660

Der er generelt to typer undtagelser i Java:

  • Indbyggede undtagelser: Indbyggede undtagelser i Java leveres af Java Libraries. Disse undtagelser kan yderligere opdeles i to underkategorier, dvs. kontrollerede og umarkerede undtagelser. Nedenfor er nogle af de indbyggede undtagelser i Java:
    • ArrayIndexOutOfBoundsExceptions
    • ClassNotFoundException
    • FileNotFoundException
    • IOException
    • NullPointerException
    • Aritmetisk Undtagelse
    • Afbrudt Undtagelse
    • RuntimeException
  • Brugerdefinerede undtagelser: Brugerdefinerede undtagelser er defineret af programmørerne selv for at håndtere nogle specifikke situationer eller fejl, som ikke er dækket af indbyggede undtagelser. For at definere brugerdefinerede undtagelser skal der defineres en ny klasse, der udvider den relevante undtagelsesklasse. Brugerdefinerede undtagelser i Java bruges, når de indbyggede undtagelser er i Java.

154. Forskellen mellem en fejl og en undtagelse.

Fejl

Undtagelser

Gendannelse fra fejl er ikke mulig.

Gendan fra undtagelser ved enten at bruge en try-catch-blok eller smide undtagelser tilbage til den, der ringer.

Fejl er alle umarkerede typer i Java.

Det inkluderer både kontrollerede og umarkerede typer, der forekommer.

Fejl er for det meste forårsaget af det miljø, hvor programmet kører.

Programmet er hovedsagelig ansvarlig for at forårsage undtagelser.

Der kan opstå fejl på kompileringstidspunktet såvel som ved kørselstiden. Kompileringstid: Syntaksfejl, Kørselstid: Logisk fejl.

Alle undtagelser forekommer under kørsel, men afkrydsede undtagelser er kendt af compileren, mens umarkerede ikke er det.

De er defineret i java.lang.Error-pakken.

De er defineret i java.lang.Exception-pakken

Eksempler : java.lang.StackOverflowError, java.lang.OutOfMemoryError

Eksempler : Markerede undtagelser: SQLException, IOException Umarkerede undtagelser: ArrayIndexOutOfBoundException, NullPointerException, ArithmeticException.

155. Forklar hierarkiet af Java Exception klasser.

Undtagelse-Handling-768

Alle undtagelses- og fejltyper i Java er underklasser af klassen throwable, som er basisklassen i hierarkiet. Denne klasse bruges derefter til ekstraordinære forhold, som brugerprogrammer bør fange. NullPointerException er et eksempel på en sådan undtagelse. En anden gren, fejl bruges af Java runtime-systemet til at indikere fejl, der har at gøre med JRE. StackOverflowError er et eksempel på en sådan fejl.

156. Forklar Runtime Undtagelser.

Runtime-undtagelser er undtagelser, der opstår under udførelsen af ​​en kode, i modsætning til undtagelser fra kompileringstid, der opstår under kompilering. Runtime-undtagelser er umarkerede undtagelser, da de ikke tages højde for af JVM.

Eksempler på runtime undtagelser i Java inkluderer:

  • NullPointerException: Dette sker, når et program forsøger at bruge en nul-objektreference.
  • ArrayIndexOutOfBoundsException: Dette sker, når et program forsøger at få adgang til et array-indeks, der er uden for grænserne.
  • ArithmeticException: Dette sker, når en applikation forsøger at dividere med nul.
  • IllegalArgumentException: Dette sker, når en metode videregives til et ulovligt eller upassende argument.

I modsætning til afkrydsede undtagelser kræver runtime-undtagelser ikke en erklæring i throws-klausulen eller indfangning i en try-catch-blok. Det er dog tilrådeligt at håndtere runtime-undtagelser for at give meningsfulde fejlmeddelelser og forhindre et systemnedbrud. Fordi runtime-undtagelser giver mere specifik information om problemet end kontrollerede undtagelser, gør de det muligt for udviklere at opdage og rette programmeringsfejl nemmere og hurtigere.

157. Hvad er NullPointerException?

Det er en type runtime-undtagelse, der kastes, når programmet forsøger at bruge en objektreference, der har en nulværdi. Hovedanvendelsen af ​​NullPointerException er at angive, at der ikke er tildelt nogen værdi til en referencevariabel, den bruges også til at implementere datastrukturer som sammenkædede lister og træer.

158. Hvornår afgives ArrayStoreException?

ArrayStoreException kastes, når der gøres et forsøg på at gemme den forkerte type objekt i et array af objekter.

Eksempel:

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);  } }>

Eksempel:

Exception in thread 'main' java.lang.ArrayStoreException: java.lang.Integer  at GFG.main(GFG.java:6)>

159. Hvad er forskellen mellem kontrolleret undtagelse og ukontrolleret undtagelse?

Afkrydset undtagelse:

Markerede undtagelser er de undtagelser, der kontrolleres under kompileringstiden for et program. I et program, hvis en eller anden kode inden for en metode kaster en markeret undtagelse, så skal metoden enten håndtere undtagelsen eller skal specificere undtagelsen ved hjælp af throws nøgleordet.

Afkrydsede undtagelser er af to typer:

  • Fuldt kontrollerede undtagelser: alle dens underordnede klasser kontrolleres også, som IOException og InterruptedException.
  • Delvist kontrollerede undtagelser: Nogle af dens underordnede klasser er ikke markeret, f.eks. en undtagelse.

Ikke markeret undtagelse:

Ikke markeret er de undtagelser, der ikke er markeret på kompileringstidspunktet for et program. Undtagelser under Error og RuntimeException klasserne er umarkerede undtagelser, alt andet under throwable er markeret.

160. Hvad er basisklassen for fejl og undtagelser?

Undtagelse-Handling-768

Fejl er en ulovlig handling udført af brugeren, som forårsager abnormitet i programmet. Undtagelser er de uventede hændelser eller forhold, der kommer, mens programmet kører, undtagelse forstyrrer det normale flow af programmets instruktioner.

Fejl og undtagelser har begge en fælles overordnet klasse, som er java.lang.Throwable-klassen.

161. Er det nødvendigt, at hver forsøgsblok skal efterfølges af en catch-blok?

Nej, det er ikke nødvendigt at bruge catch-blok efter try-blok i Java, da vi kan oprette en anden kombination med endelig blok. Endelig er blokken, der kører på trods af, at undtagelsen er smidt eller ej.

162. Hvad er undtagelsesudbredelse?

Undtagelsesudbredelse er en proces, hvor undtagelsen droppes fra toppen til bunden af ​​stakken. Hvis den ikke fanges én gang, falder undtagelsen igen ned til den forrige metode, og så videre, indtil den bliver fanget, eller indtil den når bunden af ​​opkaldsstakken.

163. Hvad vil der ske, hvis du sætter System.exit(0) på try- eller catch-blokken? Vil endelig blokere eksekvering?

System.exit(int) har evnen til at kaste SecurityException. Så hvis undtagelsen kastes i tilfælde af sikkerhed, vil blokeringen endelig blive udført, ellers vil JVM blive lukket, mens systemet kaldes. exit(0) på grund af hvilken blokering endelig ikke vil blive udført.

164. Hvad forstår du ved Object Cloning, og hvordan opnår du det i Java?

Det er processen med at skabe en nøjagtig kopi af ethvert objekt. For at understøtte dette skal en java-klasse implementere den Cloneable-grænseflade i java.lang-pakken og tilsidesætte clone()-metoden leveret af Object-klassen, hvis syntaks er:

Protected Object clone() kaster CloneNotSupportedException{ return (Object)super.clone();}Hvis den Cloneable-grænseflade ikke er implementeret, og blot metoden tilsidesættes, resulterer det i CloneNotSupportedException i Java.

165. Hvordan påvirker undtagelser programmet, hvis det ikke håndterer dem?

Undtagelser er ansvarlige for brat at afslutte afviklingen af ​​programmet, mens det udføres, og koden, der er skrevet efter undtagelsen opstår, udføres ikke.

166. Hvad er brugen af ​​det endelige søgeord?

Det sidste nøgleord bruges til at gøre funktioner ikke-virtuelle. Som standard er alle funktioner virtuelle, så for at gøre det ikke-virtuelt bruger vi det endelige søgeord.

167. Hvilket formål opfylder søgeordene final, finalize og finalize?

jeg). endelig:

final er et nøgleord bruges sammen med variablen, metoden eller klassen, så de ikke kan tilsidesættes.

Eksempel:

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). endelig

endelig er en kodeblok brugt med try-catch i undtagelseshåndtering. Kode skrevet i endelig blok kører på trods af, at undtagelsen er kastet eller ej.

Eksempel:

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). afslutte

Det er en metode, der kaldes lige før sletning/destruktion af de objekter, som er berettiget til affaldsopsamling til at udføre oprydningsaktivitet.

Eksempel:

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. Hvad er forskellen mellem this() og super() i Java?

det her( )

super( )

Det repræsenterer den aktuelle forekomst af klassen.

Det repræsenterer den aktuelle forekomst af den overordnede klasse.

Kalder standardkonstruktøren af ​​samme klasse.

Kalder standardkonstruktøren af ​​basisklassen.

Få adgang til metoderne i samme klasse.

Få adgang til metoderne i den overordnede klasse.

Peger på nuværende klasseforekomst.

Peger på superklasse-forekomsten.

169. Hvad er multitasking?

Multitasking i Java refererer til et programs kapacitet til at udføre flere opgaver på én gang. Tråde, som er hurtige operationer indeholdt i et enkelt program, kan gøre dette. At udføre mange ting på én gang er kendt som multitasking.

Eksempel:

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. Hvad mener du med et Multithreaded-program?

Multitrådede programmer i Java indeholder tråde, der kører samtidigt i stedet for at køre sekventielt. En computer kan bruge sine ressourcer mere effektivt ved at kombinere flere opgaver på én gang. Ethvert program med multithreading giver mere end én bruger mulighed for at bruge programmet samtidigt uden at køre flere kopier. Et multithreaded-program er designet til at køre flere processer på samme tid, hvilket kan forbedre et programs ydeevne og tillader programmet at bruge flere processorer og forbedrer den samlede gennemstrømning.

171. Hvad er fordelene ved multithreading?

Der er flere fordele ved at bruge multithreading, som er som følger:

  • Lydhørhed: Brugerens reaktionsevne øges, fordi multithreading interaktiv applikation tillader kørende kode, selv når sektionen er blokeret eller udfører en langvarig proces.
  • Ressourcedeling: Processen kan udføre meddelelsesoverførsel og delt hukommelse på grund af multithreading.
  • Økonomi: Vi er i stand til at dele hukommelse, hvorfor processerne er økonomiske.
  • Skalerbarhed: Multithreading på flere CPU-maskiner øger paralleliteten.
  • Bedre kommunikation: Trådsynkroniseringsfunktioner forbedrer kommunikationen mellem processerne.
  • Udnyttelse af multiprocessor-arkitektur
  • Minimeret brug af systemressourcer

172. Hvad er de to måder, hvorpå tråd kan oprettes?

Multithreading er en Java-funktion, der tillader samtidig udførelse af to eller flere dele af et program for maksimal udnyttelse af CPU'en. Generelt er tråde små, lette processer med separate udførelsesveje. Disse tråde bruger delt hukommelse, men de fungerer uafhængigt, så hvis en tråd fejler, påvirker det ikke de andre tråde. Der er to måder at oprette en tråd på:

  • Ved at udvide trådklassen
  • Ved at implementere en Runnable grænseflade.

Ved at udvide trådklassen

Vi opretter en klasse, der udvider java.lang.Tråd klasse . Denne klasse tilsidesætter run()-metoden, der er tilgængelig i Thread-klassen. En tråd begynder sit liv inde i run()-metoden.

Syntaks:

public class MyThread extends Thread { public void run() {  // thread code goes here  } }>

Ved at implementere Runnable-grænsefladen

Vi opretter en ny klasse, der implementerer java.lang.Kørbar interface og tilsidesætte run()-metoden. Derefter instansierer vi et Thread-objekt og kalder start()-metoden på dette objekt.

Syntaks:

public class MyRunnable implements Runnable { public void run() {  // thread code goes here  } }>

173. Hvad er en tråd?

Tråde i Java er underprocesser med letvægts med den mindste enhed af processer og har også separate udførelsesveje. Disse tråde bruger delt hukommelse, men de fungerer derfor uafhængigt, hvis der er en undtagelse i tråde, der ikke påvirker andre trådes funktion, selvom de deler den samme hukommelse. En tråd har sin egen programtæller, udførelsesstak og lokale variabler, men den deler den samme hukommelsesplads med andre tråde i samme proces. Java giver indbygget support til multithreading gennem Kørbar grænseflade og Tråd klasse .

174. Skelner mellem proces og tråd?

En proces og en tråd er begge udførelsesenheder i et computersystem, men de er forskellige på flere måder:

Behandle

Tråd

En proces er et program under udførelse.

En tråd er en enkelt sekvens af instruktioner i en proces.

Processen tager længere tid at afslutte.

Tråden tager kortere tid at afslutte.

Processen tager længere tid at skifte kontekst.

Tråden tager mindre tid til at skifte kontekst.

Processen er mindre effektiv med hensyn til kommunikation.

Tråd er mere effektiv med hensyn til kommunikation.

Processen er isoleret.

Tråde deler hukommelse.

Processen har sin egen proceskontrolblok, stak og adresserum.

Tråden har forældrenes PCB, sin egen trådkontrolblok og stak og fælles adresserum.

Processen deler ikke data med hinanden.

Tråde deler data med hinanden.

175. Beskriv trådens livscyklus?

Cycle-of-thread-768

EN tråd i Java på et hvilket som helst tidspunkt eksisterer i en af ​​følgende tilstande. En tråd ligger kun i en af ​​de viste tilstande på et hvilket som helst tidspunkt:

  1. Ny: Tråden er oprettet, men er endnu ikke startet.
  2. Kørbar: Tråden kører, udfører sin opgave eller er klar til at køre, hvis der ikke er andre tråde med højere prioritet.
  3. Blokeret: Tråden er midlertidigt suspenderet og venter på en ressource eller en begivenhed.
  4. Venter: Tråden venter på, at en anden tråd udfører en opgave eller på, at der går en bestemt tid.
  5. Afsluttet: Tråden har fuldført sin opgave eller er blevet afsluttet af en anden tråd.

176. Forklar suspend()-metoden under Thread-klassen.

suspend()-metoden for Thread-klassen i Java suspenderer midlertidigt udførelsen af ​​en tråd. Når en tråd er suspenderet, går den i en blokeret tilstand, og den vil ikke blive planlagt af operativsystemet, hvilket betyder, at den ikke vil være i stand til at udføre sin opgave, før den genoptages. Der er mere sikre og fleksible alternativer til suspend()-metoderne i det moderne java-programmeringssprog. Denne metode returnerer ingen værdi.

Syntaks:

  public final void   suspend();>

Eksempel:

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. Forklar hovedtråden under Trådklasseudførelse.

Java giver indbygget understøttelse af multithreaded programmering. Hovedtråden betragtes som overordnet tråd for alle de andre tråde, der oprettes under programafviklingen. Hovedtråden oprettes automatisk, når programmet starter. Denne tråd udfører programmets hovedmetode. Det er ansvarligt for at udføre Java-programmets hovedlogik samt håndtering af brugerinputoperationer. Hovedtråden fungerer som basistråden, hvorfra alle andre undertråde stammer.

Tråd-Klasse-udførelse-768

178. Hvad er en dæmontråd?

En dæmontråd i Java er en lavprioritet tråd, der bruges til at udføre baggrundsoperationer eller opgaver, der bruges til at udføre kontinuerligt. såsom Garbage collection, Signal-afsendelser, Action-lyttere osv. Daemon-tråde i Java har lavere prioritet end bruger-tråde, hvilket betyder, at de kun kan køre, når ingen brugertråde kører. Daemon-tråde i Java er nyttige funktioner, der kræves til baggrundsopgaver, der ikke kræver eksplicit lukning eller færdiggørelse. Det giver mulighed for mere effektiv brug af systemressourcer og bruges til at forenkle ressourcer og kan forenkle langvarige opgaver.

179. Hvad er de måder, hvorpå en tråd kan gå ind i ventetilstand?

Tråd er en letvægtsproces, der kører samtidig med den anden tråd i en enkelt proces. Hver tråd kan udføre en anden opgave og dele ressourcerne inden for en enkelt proces. Tråd i Java kan gå ind i ventetilstand på mange forskellige måder:

  • Sleep() metode Kald: Søvnen () metode bruges til at pause udførelsen af ​​tråden i et bestemt tidsrum. Mens tråden er sat på pause, går den i ventetilstand.
  • Vent() metode: Denne metode bruges til at vente en tråd, indtil den anden tråd signalerer, at den vågner. Tråden går i ventetilstand, indtil den modtager en meddelelse fra en anden tråd.
  • Join() metode: Join()-metoden kan bruges til at vente på, at tråden afslutter udførelsen. Kaldende tråd går i ventetilstand, indtil måltråden er afsluttet.
  • Venter på I/O-handlinger: Hvis tråden venter på, at input/output-operationen er fuldført, går den i ventetilstand, indtil operationen er afsluttet.
  • Synkroniseringsproblemer: Hvis der er synkroniseringsproblemer i et flertrådet program, kan tråde gå i ventetilstand, indtil synkroniseringsproblemerne er løst.

180. Hvordan foregår multi-threading på en computer med en enkelt CPU?

Java bruger en teknik kaldet time-sharing, almindeligvis omtalt som time-slicing, til at implementere multi-threading på computere med en enkelt CPU. Fremkomsten af ​​parallel eksekvering skabes ved, at CPU'en skifter mellem aktive tråde. Operativsystemet er ansvarlig for at allokere CPU-tid til hver tråd sekventielt og planlægge trådene.

For at forhindre tråde i at interagere med hinanden og skabe racesituationer eller andre problemer, har Java en række måder at styre trådes adfærd på, herunder synkronisering og låsning. Det er muligt at skabe multi-threaded programmører, der fungerer korrekt og effektivt på en maskine med en enkelt CPU ved at regulere interaktionen mellem tråde og sørge for, at vigtige kodedele er synkroniseret. I modsætning til at køre det samme program på en computer med flere CPU'er eller kerner, kan multi-threading på en enkelt CPU kun give indtryk af parallelitet, og de faktiske præstationsgevinster kan være beskedne. Operativsystemet deler den CPU-tid, der er tilgængelig, når adskillige tråde kører på en enkelt CPU, i små tidsudsnit og giver hver tråd et tidsudsnit at udføre. Hurtig skift mellem trådene af operativsystemet skaber udseendet af parallel udførelse. Skiftet mellem tråde ser ud til at være øjeblikkeligt, fordi tidsskiverne ofte er meget små, i størrelsesordenen millisekunder eller mikrosekunder.

Java-interviewspørgsmål for erfarne

181. Hvad er de forskellige typer af trådprioriteter i Java? Og hvad er standardprioriteten for en tråd tildelt af JVM?

Prioriteter i tråde er et koncept, hvor hver tråd har en prioritet, som på lægmandssprog kan man sige, at hvert objekt har prioritet her, hvilket er repræsenteret ved tal fra 1 til 10. Der er forskellige typer trådegenskaber i Java nævnt nedenfor:

  • MIN_PRIORITY
  • MAX_PRIORITY
  • NORM_PRIORITY

Som standard er tråden tildelt NORM_PRIORITY.

182. Hvorfor er Garbage Collection nødvendigt i Java?

For Java er garbage collection nødvendigt for at undgå hukommelseslækager, som kan få programmet til at gå ned og blive ustabilt. Der er ingen måde at undgå affaldsindsamling i Java. I modsætning til C++ hjælper Garbage collection i Java programmører med at fokusere på udviklingen af ​​applikationen i stedet for at styre hukommelsesressourcer og bekymre sig om hukommelseslækage. Java Virtual Machine (JVM) administrerer automatisk hukommelsen med jævne mellemrum ved at køre en skraldeopsamler, som frigør den ubrugte hukommelse i applikationen. Affaldsopsamling gør Java-hukommelsen effektiv, fordi den fjerner ikke-refererede objekter fra heap-hukommelsen.

183. Hvad er ulempen ved Garbage Collection?

Bortset fra mange fordele har Garbage Collector visse ulemper nævnt nedenfor:

  1. Den største ulempe ved Garbage Collection er, at det kan forårsage pauser i en applikations udførelse, da den arbejder på at rydde hukommelsen, hvilket bremser applikationens ydeevne.
  2. Processen med affaldsindsamling er ikke-deterministisk, hvilket gør det vanskeligt at forudsige, hvornår affaldsindsamling finder sted, hvilket forårsager uforudsigelig adfærd i applikationer. For eksempel, hvis vi skriver et hvilket som helst program, er det svært for programmører at beslutte, om problemet skyldes affaldsindsamling eller af andre faktorer i programmet.
  3. Affaldsopsamling kan også øge hukommelsesforbruget, hvis programmet opretter og kasserer en masse kortlivede objekter.

184. Forklar forskellen mellem en mindre, større og fuld affaldsindsamling.

Java Virtual Machine (JVM) fjerner objekter, der ikke længere er i brug, ved hjælp af en skraldeopsamler, som med jævne mellemrum kontrollerer og fjerner disse objekter. Der er forskellige typer affaldsindsamling i JVM, hver med forskellige karakteristika og præstationsimplikationer. De vigtigste typer affaldsindsamling er:

  • Mindre affaldsindsamling: Også kendt som den unge generation af affaldsindsamling, bruges denne type affaldsindsamling til at indsamle og genvinde hukommelse, der bruges af kortlivede genstande (objekter, der hurtigt skabes og kasseres).
  • Større affaldsindsamling: Også kendt som den gamle generation af affaldsindsamling, bruges denne type affaldsindsamling til at indsamle og genvinde hukommelse, der bruges af langlivede genstande (objekter, der overlever flere mindre affaldssamlinger og forfremmes til den gamle generation).
  • Fuld affaldsindsamling: Under fuld affaldsindsamling samles og genvindes minder fra alle generationer, inklusive minder om unge og gamle. En fuld affaldsindsamling tager normalt længere tid at fuldføre end en mindre eller større affaldsindsamling, hvilket får den pågældende app til at pause midlertidigt.

185. Hvordan vil du identificere større og mindre affaldssamlinger i Java?

Stor affaldsindsamling arbejder på overlevelsesrummet og mindre affaldsindsamling arbejder på Eden-området for at udføre en mark-and-sweep-rutine. Og vi kan identificere dem begge baseret på outputtet, hvor den mindre samling udskriver GC, hvorimod den større samling udskriver Full GC i det tilfælde, hvor logning af skraldindsamling er aktiveret med -XX:PrintGCDetails eller verbose:gc.

186. Hvad er en hukommelseslækage, og hvordan påvirker det affaldsindsamlingen?

I Java kan hukommelseslækager være forårsaget af en række faktorer, såsom ikke at lukke ressourcer ordentligt, holde på objektreferencer længere end nødvendigt, eller at skabe for mange objekter unødigt. Der er situationer, hvor skraldemand ikke samler genstande, fordi der er en reference til disse genstande. I disse situationer, hvor applikationen opretter masser af objekter og ikke bruger dem, og hvert objekt har nogle gyldige referencer, kan en Garbage collector i Java ikke ødelægge objekterne. Disse ubrugelige objekter, som ikke giver nogen værdi til programmet, er kendt som hukommelseslækager. Hukommelseslækager kan påvirke affaldsopsamlingen negativt ved at forhindre affaldssamleren i at genvinde ubrugt hukommelse. Denne adfærd vil føre til langsom ydeevne eller nogle gange systemfejl. I et program er det vigtigt at undgå hukommelseslækager ved at administrere ressourcer og objektreferencer korrekt.

Eksempel:

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ævn nogle klasser, der findes i java.util.regex-pakken.

Regular Expressions eller Regex i Java er en API, der bruges til at søge og manipulere strenge i Java. Det opretter strengmønstre, der kan udtrække de nødvendige data fra strengene eller kan generalisere et mønster.

Der er 3 klasser til stede i java.util.regex nævnt nedenfor:

  • Mønsterklasse: Kan definere mønstre
  • Matcher-klasse: Kan udføre match-operationer på tekst ved hjælp af mønstre
  • PatternSyntaxException Class: Kan indikere en syntaksfejl i et regulært udtryksmønster.

Ud over de 3 klasser består pakken også af en enkelt grænseflade MatchResult Interface, som kan bruges til at repræsentere resultatet af en match operation.

188. Skriv et regulært udtryk for at validere en adgangskode. Et kodeord skal starte med et alfabet og efterfulgt af alfanumeriske tegn; Dens længde skal være mellem 8 og 20.

regex = ^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&-+=()])(?=S+$).{8, 20}$>

Forklaring:

  • ^ bruges til at starte karakter af strengen.
  • (?=.*[0-9]), der bruges til et ciffer, skal forekomme mindst én gang.
  • (?=.*[a-z]), der bruges til et alfabet med små bogstaver, skal forekomme mindst én gang.
  • (?=.*[A-Z]) bruges til et alfabet med store bogstaver, der skal forekomme mindst én gang i understrengen.
  • (?=.*[@#$%^&-+=()] bruges til et specialtegn, der skal forekomme mindst én gang.
  • (?=S+$) hvide mellemrum tillader ikke i hele strengen.
  • .{8, 20} bruges til mindst 8 tegn og højst 20 tegn.
  • $ bruges til slutningen af ​​strengen.

189. Hvad er JDBC?

JDBC standard API bruges til at forbinde Java-applikationer og relationelle databaser. Det giver en samling af klasser og grænseflader, der lader programmører bruge Java-programmeringssproget til at kommunikere med databasen. Klasserne og grænsefladen af ​​JDBC tillader applikationen at sende anmodninger, som er lavet af brugere, til den specificerede database. Der er generelt fire komponenter af JDBC, hvorved det interagerer med databasen:

  • JDBC API
  • JDBC driver manager
  • JDBC Test Suite
  • JDBC-ODBC Bridge-drivere

JDBC-768

190. Hvad er JDBC-driver?

JDBC driver er en softwarekomponent, der bruges til at sætte en Java-applikation i stand til at interagere med databasen. JDBC leverer implementeringen af ​​JDBC API til et specifikt databasestyringssystem, som gør det muligt at forbinde databasen, udføre SQL-sætninger og hente data. Der er fire typer JDBC-drivere:

  • JDBC-ODBC Bridge driver
  • Native API-driver
  • Driver til netværksprotokol
  • Tynd driver

JDBC-driver-660

191. Hvad er trinene for at oprette forbindelse til databasen i Java?

Der er visse trin til at forbinde databasen og Java-programmet som nævnt nedenfor:

  • Importer pakkerne
  • Indlæs driverne ved hjælp af metoden forName().
  • Registrer driverne ved hjælp af DriverManager
  • Etabler en forbindelse ved hjælp af klasseobjektet Connection
  • Opret en erklæring
  • Udfør forespørgslen
  • Luk forbindelserne

192. Hvad er JDBC API-komponenterne?

JDBC API-komponenter giver forskellige metoder og grænseflader til nem kommunikation med databaserne, og det giver også pakker som java Se og java EE, som giver mulighed for at skrive en gang, hvor som helst (WORA).

Syntaks:

java.sql.*;>

193. Hvad er JDBC Connection interface?

Java database connectivity interface (JDBC) er en softwarekomponent, der gør det muligt for Java-applikationer at interagere med databaser. For at forbedre forbindelsen kræver JDBC drivere til hver database.

194. Hvad gør JDBC ResultSet-grænsefladen?

JDBC ResultSet interface bruges til at gemme data fra databasen og bruge dem i vores Java-program. Vi kan også bruge ResultSet til at opdatere dataene ved hjælp af updateXXX() metoder. ResultSet-objektet peger markøren før den første række af resultatdataene. Ved at bruge metoden next() kan vi iterere gennem ResultSet.

195. Hvad er JDBC Rowset?

Et JDBC RowSet giver en måde at gemme dataene i tabelform. RowSet er en grænseflade i java, der kan bruges i pakken java.sql. Forbindelsen mellem RowSet-objektet og datakilden opretholdes gennem hele dets livscyklus. RowSets er klassificeret i fem kategorier baseret på implementeringen nævnt nedenfor:

  1. JdbcRowSet
  2. CachedRowSet
  3. WebRowSet
  4. Filtreret rækkesæt
  5. Deltag i RowSet

196. Hvad er JDBC DriverManager-klassens rolle?

JDBC DriverManager-klassen fungerer som en grænseflade for brugere og drivere. Det bruges på mange måder som nævnt nedenfor:

  • Det bruges til at skabe en forbindelse mellem en Java-applikation og databasen.
  • Hjælper med at holde styr på de drivere, der er tilgængelige.
  • Det kan hjælpe med at etablere en forbindelse mellem en database og de relevante drivere.
  • Den indeholder alle de metoder, der kan registrere og afregistrere databasedriverklasserne.
  • DriverManager.registerDriver()-metoden kan vedligeholde listen over driverklasser, der har registreret sig selv.

Java Difference Interview Spørgsmål

197. Differentier mellem Iterable og Iterator.

Iterable

Iterator

Iterable giver en måde at iterere over en sekvens af elementer.

Iterator hjælper med at iterere over en samling af elementer sekventielt.

iterator() metoden returnerer en iterator. hasNext() og Næste() metoder er påkrævet.
fjerne() metoden er valgfri. fjerne() metode er påkrævet i iteratoren.

Eksempler er Liste, Kø og Sæt.

Eksempler er ListIterator, Enumeration og ArrayIterator.

198. Skel mellem Liste og Sæt.

Liste

Sæt

Bestilt

Uordnet

Listen tillader dubletter.

Sæt tillader ikke duplikerede værdier.

Listen tilgås via indeks.

Sættet tilgås af hashkode.

Flere nul-elementer kan gemmes.

Null-elementet kan kun lagres én gang.

Eksempler er ArrayList, LinkedList osv.

Eksempler er HashSet og TreeSet. LinkedHashSet osv.

199. Forskelle mellem Liste og Kort.

Liste

Kort

Listegrænseflade tillader duplikerede elementer.

Kort tillader ikke duplikerede elementer.

Listen bevarer indsættelsesrækkefølgen.

Kort bevarer ikke indsættelsesrækkefølge.

Flere nul-elementer kan gemmes.

Kortet tillader højst en enkelt null-nøgle og et hvilket som helst antal null-værdier.

Listen giver metoden get() til at få elementet i et specificeret indeks.

Kortet giver ikke en get-metode til at få elementerne til et specificeret indeks.

Listen er implementeret af ArrayList osv.

Kort er implementeret af HashMap, TreeMap, LinkedHashMap

200. Differentier mellem kø og stak.

Stak

Kødatastruktur bruges til at gemme elementer og bruges til at udføre operationer som kø, dekø fra bagsiden eller slutningen af ​​køen.

Stakdatastruktur bruges til at gemme elementer og bruges til at udføre operationer som push, pop fra toppen af ​​stakken.

Kødatastruktur Implementerer FIFO-rækkefølge.

Stakdatastruktur Implementerer LIFO-ordre.

Indsættelse og sletning i køer foregår fra de modsatte ender af listen. Sletning sker fra forsiden af ​​listen og indsættelse sker bagerst på listen.

Indsættelse og sletning i stakke finder kun sted fra den ene ende af listen kaldet toppen.

Indsættelsesoperation kaldes kødrift.

Indsættelsesoperation kaldes push-operation.

Kø bruges generelt til at løse problemer relateret til sekventiel behandling.

Stack bruges generelt til at løse problemer relateret til rekursion.

201. Differentier mellem PriorityQueue og TreeSet.

Prioritetskø

Træsæt

Den bruger Queue som en underliggende datastruktur.

Den bruger et sæt som en underliggende datastruktur.

Denne datastruktur tillader duplikerede elementer

Denne datastruktur tillader ikke duplikerede elementer

Priority Queue er implementeret af PriorityQueue-klassen.

TreeSet er implementeret af TreeSet-klassen.

PriorityQueue kommer i JDK 1.5.

TreeSet kommer i JDK 1.4.

PriorityQueue pq = new PriorityQueue();

reeSet ts = new TreeSet();

202. Forskel mellem Listen med enkelt lænkede og dobbeltforbundne liste.

Enkeltforbundet liste

Dobbeltforbundet liste

Singly Linked List indeholder kun to segmenter, dvs. Data og Link.

Dobbelt linket liste indeholder tre segmenter, dvs. Data og to pointere.

Kørsel i en enkeltforbundet liste er kun mulig i fremadgående retning.

Gennemkørsel i en dobbeltforbundet liste er kun mulig i begge retninger fremad såvel som bagud.

Det bruger mindre hukommelse, da hver enkelt node kun har én pointer.

Det kræver mere hukommelse end en enkelt linket liste, da hver node har to pointere.

Nem at bruge og indsæt noder i begyndelsen af ​​listen.

Lidt mere kompleks at bruge og nem at indsætte i slutningen af ​​listen.

Tidskompleksiteten af ​​insertion og deletion er O(n).

Tidskompleksiteten af ​​insertion og deletion er O(1).

Enkelt-linket-liste-660

Dobbelt-linket-liste-660

203. Skel mellem Failfast og Failsafe.

FailFast

Fejlsikker

Failsfast mislykkes med det samme, når det registrerer samtidig ændring under iterationstidspunktet.

Failsafe fortsætter med at iterere over den originale samling og opretter også en kopi, der skal ændres.

Failfast bruges generelt i enkelttrådede miljøer.

Failsafe bruges i flertrådede miljøer.

Failfast tillader ikke nogen ændring under iteration.

Failsafe tillader modifikation i løbet af iterationen.

Failfast er hurtigt sammenlignet med failsafe, da det ikke involverer kopiering af samlingen.

Failsafe er generelt langsom sammenlignet med failfast.

FailFast kaster ConcurrentModificationException hvis samlingen ændres under iteration.


FailSafe kaster ikke nogen undtagelse, men i stedet opretter den en kopi af samlingen for at gentage.

204. Differentier mellem HashMap og TreeMap.

HashMap

Trækort

Hasmap bruger en hashtabel til at gemme nøgleværdi-par.

Treemap bruger rød-sorte træer til at gemme nøgleværdi-par.

Hashmap opretholder ikke nogen specifik rækkefølge for nøgle-værdi-par.

Treemap opretholder en naturlig rækkefølge baseret på tasterne.

Iterationsrækkefølgen er ikke garanteret i hashmap'et.

Iteration er i sorteret rækkefølge baseret på nøgler.

Hashmaps er hurtigere til hentning sammenlignet med Treemap.

Hentning i Treemap er langsommere, da den bruger trægennemgang til at finde nøgler.

Hashmap implementeres ved at bruge en Array of linked list.

TreeMap er implementeret ved hjælp af et rød-sort træ.

Hashmap bruger equals()-metoden i Object-klassen til at sammenligne nøgler.

TreeMap bruger metoden compareTo() til at sammenligne nøgler.

205. Differentier mellem Queue og Deque.

Om hvad

Køen er en lineær datastruktur, der bruges til at gemme en samling af elementer.

Deque også kendt som en Double-ended-kø er også en lineær datastruktur, der gemmer en samling af elementer med operationer til at fjerne og tilføje fra begge ender.

Elementer i køen kan kun indsættes i slutningen af ​​datastrukturen.

Elementer kan indsættes fra begge ender af datastrukturen.

Kø kan implementeres ved hjælp af Array eller Linked List.

Dequeue kan implementeres ved hjælp af Circular Array eller Double Linked List.

Køer bruges generelt til at implementere en venteliste eller opgavekø.

Deque bruges til at implementere en stak eller dequeuing elementer fra begge ender.

Kø-660

Double-Ended-Queue-660

206. Differentier mellem HashSet og TreeSet.

HashSet

Træsæt

HashSet er uordnet.

TreeSet er baseret på naturlig rækkefølge.

HashSet tillader null-elementer.

TreeSet tillader ikke null-elementer.

HashSet er implementeret af HashSet-klassen.

TreeSet er implementeret af TreeSet-klassen.

HashSet hs = new HashSet();

TreeSet ts = new TreeSet();

Java-interviewspørgsmål – ofte stillede spørgsmål

Q1. Hvad er en Java-udviklers løn i Indien?

Ifølge forskellige ressourcer er den gennemsnitlige løn for en Java Backend-udvikler mere end 14 lakhs om året, hvilket er 30% højere end nogen anden udviklerrolle . Her kan du også tjekke vores seneste kursus vedr GeekforGeeks Practice Portal kan også være nyttigt.

Q5. Hvordan kan jeg skille mig ud i et Java-interview?

For at skille sig ud i et Java-interview skal du demonstrere en dyb forståelse af Java-koncepter og praktiske applikationer. Vis dine problemløsningsevner ved at forklare din tilgang til komplekse scenarier og levere effektive løsninger. Derudover skal du fremhæve eventuelle relevante projekter eller bidrag, du har givet til Java-fællesskabet. At vise entusiasme, god kommunikation og vilje til at lære kan også efterlade et positivt indtryk.