logo

Java-intervjuspørsmål og svar

Java er et av de mest populære programmeringsspråkene i verden, kjent for sin allsidighet, portabilitet og brede spekter av applikasjoner. Java er det mest brukte språket i toppselskaper som Uber, Airbnb, Google, Netflix, Instagram, Spotify, Amazon og mange flere på grunn av funksjonene og ytelsen.

I denne artikkelen vil vi gi 200+ Core Java-intervjuspørsmål skreddersydd for både ferskinger og erfarne fagfolk med 3, 5, og 8 års erfaring. Her dekker vi alt, inkludert kjerne Java-konsepter, objektorientert programmering (OOP), multithreading, unntakshåndtering, designmønstre, Java-samlinger og mer, som helt sikkert vil hjelpe deg med å knekke Java-intervjuer.

Kjerne-Java-intervju-spørsmål



Innholdsfortegnelse

Java-intervjuspørsmål for ferskinger

1. Er Java-plattformuavhengig hvis da hvordan?

Ja, Java er et plattformuavhengig språk. I motsetning til mange programmeringsspråk kompilerer javac-kompileren programmet for å danne en bytekode eller .class-fil. Denne filen er uavhengig av programvaren eller maskinvaren som kjører, men trenger en JVM(Java Virtual Machine)-fil forhåndsinstallert i operativsystemet for videre kjøring av bytekoden.

Selv om JVM er plattformavhengig , kan bytekoden opprettes på ethvert system og kan kjøres i et hvilket som helst annet system til tross for at maskinvare eller programvare brukes som gjør Java-plattformen uavhengig.

2. Hva er de beste Java-funksjonene?

Java er et av de mest kjente og mest brukte språkene i den virkelige verden, det er mange funksjoner i Java som gjør det bedre enn noe annet språk, noen av dem er nevnt nedenfor:

Funksjoner-av-Java-768

  • Enkel : Java er ganske enkelt å forstå og syntaksen
  • Plattformuavhengig: Java er plattformuavhengig betyr at vi kan kjøre det samme programmet i hvilken som helst programvare og maskinvare og vil få samme resultat.
  • Tolket : Java tolkes så vel som et kompilatorbasert språk.
  • Robust : funksjoner som søppelinnsamling, unntakshåndtering osv. som gjør språket robust.
  • Objekt orientert : Java er et objektorientert språk som støtter begrepene klasse, objekter, fire pilarer i OOPS, etc.
  • Sikret : Siden vi direkte kan dele en applikasjon med brukeren uten å dele selve programmet gjør Java til et sikkert språk.
  • Høy ytelse: raskere enn andre tradisjonelle tolkede programmeringsspråk.
  • Dynamisk : støtter dynamisk lasting av klasser og grensesnitt.
  • Distribuert : funksjonen til Java gjør oss i stand til å få tilgang til filer ved å ringe metodene fra hvilken som helst maskin tilkoblet.
  • Flertrådet : håndtere flere oppgaver samtidig ved å definere flere tråder
  • Arkitektur nøytral : det er ikke avhengig av arkitekturen.

3. Hva er JVM?

JVM-768

JVM står for Java Virtual Machine og er en Java-tolk. Den er ansvarlig for å laste, verifisere og utføre bytekoden opprettet i Java.

Selv om det er plattformavhengig, noe som betyr at programvaren til JVM er forskjellig for forskjellige operativsystemer, spiller den en viktig rolle i å gjøre Java-plattformen uavhengig.

For å vite mer om emnet se JVM i Java .

4. Hva er JIT?

JIT-768

JIT står for (Just-in-Time) kompilator er en del av JRE (Java Runtime Environment), den brukes for bedre ytelse av Java-applikasjonene under kjøring. Bruken av JIT er nevnt i trinn for trinn prosess nevnt nedenfor:

  1. Kildekoden er kompilert med javac kompilator for å danne bytekode
  2. Bytekode sendes videre til JVM
  3. JIT er en del av JVM, JIT er ansvarlig for å kompilere bytekode til innebygd maskinkode under kjøring.
  4. JIT-kompilatoren er aktivert hele veien, mens den blir aktivert når en metode påkalles. For en kompilert metode kaller JVM den kompilerte koden direkte, i stedet for å tolke den.
  5. Som JVM kaller den kompilerte koden som øker ytelsen og hastigheten på utførelsen.

For å vite mer om emnet se JIT i Java .

5. Hva er minnelagring tilgjengelig med JVM?

JVM-Areas-768

chmod 755

JVM består av noen få minnelager som nevnt nedenfor:

  1. Klasse(metode)-område: lagrer klassenivådata for hver klasse, for eksempel kjøretidskonstantpoolen, felt- og metodedata, og koden for metoder.
  2. Heap: Objekter opprettes eller objekter lagres. Den brukes til å allokere minne til objekter under kjøretid.
  3. Stack: lagrer data og delresultater som vil være nødvendig mens du returnerer verdien for metoden og utfører dynamisk kobling
  4. Program Counter Register: lagrer adressen til Java Virtual Machine-instruksjonen som kjøres for øyeblikket.
  5. Native Method Stack: lagrer alle de native metodene som brukes i applikasjonen.

For å vite mer om emnet se JVM-minnelagring .

6. Hva er en klasselaster?

Classloader er en del av JRE(Java Runtime Environment), under kjøringen av bytekoden eller opprettet .class-fil er klasselasteren ansvarlig for dynamisk å laste java-klassene og grensesnittene til JVM(Java Virtual Machine). På grunn av klasselastere trenger ikke Java kjøretidssystem å vite om filer og filsystemer.

For å vite mer om emnet se ClassLoader i Java.

7. Forskjellen mellom JVM, JRE og JDK.

JVM : JVM også kjent som Java Virtual Machine er en del av JRE. JVM er en type tolk som er ansvarlig for å konvertere bytekode til maskinlesbar kode. JVM i seg selv er plattformavhengig, men den tolker bytekoden som er den plattformuavhengige grunnen til at Java er plattformuavhengig.

JRE : JRE står for Java Runtime Environment, det er en installasjonspakke som gir et miljø for å kjøre Java-programmet eller -applikasjonen på hvilken som helst maskin.

JDK : JDK står for Java Development Kit som gir miljøet til å utvikle og kjøre Java-programmer. JDK er en pakke som inkluderer to ting Utviklingsverktøy for å gi et miljø for å utvikle Java-programmene dine og JRE for å kjøre Java-programmer eller -applikasjoner.

For å vite mer om emnet, se Forskjeller mellom JVM, JRE og JDK .

8. Hva er forskjellene mellom Java og C++?

Basis

C++

Java

Plattform

C++ er plattformavhengig

Java er plattformuavhengig

applikasjon

C++ brukes hovedsakelig til systemprogrammering

Java brukes hovedsakelig til applikasjonsprogrammering

Maskinvare

C++ er nærmere maskinvare

Java er ikke så interaktivt med maskinvare

Globalt omfang

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

Java støtter ikke globalt omfang.

Støtter ikke

Funksjonalitet som støttes i Java, men ikke i C++ er:

  • trådstøtte
  • dokumentasjonskommentar
  • usignert høyreskift(>>>)

Funksjonalitet som støttes i C++, men ikke i Java er:

  • gå til
  • Pekere
  • Ring ved referanse
  • Strukturer og fagforeninger
  • Multippel arv
  • Virtuelle funksjoner

OOPS

C++ er et objektorientert språk. Det er ikke et enkelt rothierarki.

Java er også et objektorientert språk. Det er et enkelt rothierarki ettersom alt blir avledet fra en enkelt klasse (java.lang.Object).

Arvetre

C++ oppretter alltid et nytt arvetre.

Java bruker et enkelt arvetre da klasser i Java er barnet til objektklasser i Java.

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

Hovedfunksjon

I motsetning til alle andre programmeringsspråk som C, C++, etc. I Java erklærte vi hovedfunksjonen som en offentlig statisk void hoved (String args[]). Betydningen av begrepene er nevnt nedenfor:

  1. offentlig : offentligheten er tilgangsmodifikatoren som er ansvarlig for å nevne hvem som kan få tilgang til elementet eller metoden og hva som er grensen. Den er ansvarlig for å gjøre hovedfunksjonen globalt tilgjengelig. Den gjøres offentlig slik at JVM kan påkalle den fra utenfor klassen da den ikke er til stede i den gjeldende klassen.
  2. statisk : static er et nøkkelord som brukes slik at vi kan bruke elementet uten å starte klassen for å unngå unødvendig tildeling av minnet.
  3. tomrom : void er et nøkkelord og brukes til å spesifisere at en metode ikke returnerer noe. Siden hovedfunksjonen ikke returnerer noe, bruker vi ugyldig.
  4. hoved- : main representerer at funksjonen deklarert er hovedfunksjonen. Det hjelper JVM å identifisere at den deklarerte funksjonen er hovedfunksjonen.
  5. Stringarg[] : Den lagrer Java-kommandolinjeargumenter og er en matrise av typen java.lang.String class.

10. Hva er Java String Pool?

En Java String Pool er et sted i haugminnet hvor alle strengene som er definert i programmet er lagret. Et eget sted i en stabel er der variabelen som lagrer strengen, er lagret. Hver gang vi oppretter et nytt strengobjekt, sjekker JVM for tilstedeværelsen av objektet i String-poolen. Hvis String er tilgjengelig i bassenget, deles den samme objektreferansen med variabelen, ellers opprettes et nytt objekt.

Java-String-Pool-768

Eksempel:

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

11. Hva vil skje hvis vi erklærer ikke erklærer hoveddelen som statisk?

Vi kan deklarere hovedmetoden uten å bruke statisk og uten å få noen feil. Men hovedmetoden vil ikke bli behandlet som inngangspunktet til applikasjonen eller programmet.

12. Hva er pakker i Java?

Pakker i Java kan defineres som en gruppering av relaterte typer klasser, grensesnitt osv. som gir tilgang til beskyttelse og navneområdeadministrasjon.

13. Hvorfor brukes pakker?

Pakker brukes i Java for å forhindre navnekonflikter, kontrollere tilgang og gjøre søk/lokalisering og bruk av klasser, grensesnitt osv. enklere.

14. Hva er fordelene med pakker i Java?

Det er ulike fordeler med å definere pakker i Java.

  • Pakker unngår navnesammenstøt.
  • Pakken gir enklere tilgangskontroll.
  • Vi kan også ha de skjulte klassene som ikke er synlige utenfor og som brukes av pakken.
  • Det er lettere å finne de relaterte klassene.

15. Hvor mange typer pakker er det i Java?

Det er to typer pakker i Java

  • Brukerdefinerte pakker
  • Innebygde pakker

16. Forklar ulike datatyper i Java.

Det er 2 typer datatyper i Java som nevnt nedenfor:

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

Primitiv datatype: Primitive data er enkeltverdier uten spesielle muligheter. Det er 8 primitive datatyper:

  • boolsk : lagrer verdien sann eller usann
  • byte : lagrer et 8-bits signert to-komplement heltall
  • røye : lagrer et enkelt 16-bits Unicode-tegn
  • kort : lagrer et 16-bits signert to-komplement heltall
  • int : lagrer et 32-bits signert to-komplement heltall
  • lang : lagrer et 64-bits to-komplement heltall
  • flyte : lagrer en enkeltpresisjon 32-bit IEEE 754 flytende komma
  • dobbelt : lagrer et 64-biters IEEE 754 flytende punkt med dobbel presisjon

Ikke-primitiv datatype: Referansedatatyper vil inneholde en minneadresse for variabelens verdier fordi den ikke er i stand til å lagre verdiene direkte i minnet. Typer ikke-primitive er nevnt nedenfor:

  • Strenger
  • Array
  • Klasse
  • Gjenstand
  • Grensesnitt

17. Når en byte datatype brukes?

En byte er et 8-bits signert to-komplement heltall. Minimumsverdien som støttes av bytes er -128 og 127 er maksimumsverdien. Den brukes i forhold der vi trenger å spare minne og grensen for antall nødvendige er mellom -128 til 127.

18. Kan vi erklære Pointer i Java?

Nei, Java gir ikke støtte fra Pointer. Som Java måtte være sikrere fordi hvilken funksjon av pekeren ikke er gitt i Java.

19. Hva er standardverdien for byte datatype i Java?

Standardverdien for bytedatatypen i Java er 0.

20. Hva er standardverdien for float og dobbel datatype i Java?

Standardverdien for float er 0.0f og dobbel er 0.0d i Java.

21. Hva er Wrapper-klassen i Java?

Wrapper er generelt referert til en større enhet som innkapsler en mindre enhet. Her i Java er wrapper-klassen en objektklasse som innkapsler de primitive datatypene.

De primitive datatypene er de som ytterligere datatyper kan opprettes fra. For eksempel kan heltall videre føre til konstruksjon av lang, byte, kort osv. På den annen side kan strengen ikke, derfor er den ikke primitiv.

For å komme tilbake til wrapper-klassen, inneholder Java 8 wrapper-klasser. De er boolsk, byte, kort, heltall, tegn, lang, flytende og dobbel. Videre kan tilpassede wrapper-klasser også opprettes i Java som ligner på konseptet Structure i C-programmeringsspråket. Vi lager vår egen wrapper-klasse med de nødvendige datatypene.

22. Hvorfor trenger vi innpakningsklasser?

Wrapper-klassen er en objektklasse som innkapsler de primitive datatypene, og vi trenger dem av følgende grunner:

  1. Wrapper klasser er endelige og uforanderlige
  2. Gir metoder som valueOf(), parseInt(), etc.
  3. Det gir funksjonen til autoboxing og unboxing.

23. Skille mellom instansvariabler og lokale variabler.

Forekomstvariabel

Lokal variabel

Erklært utenfor metoden, direkte påberopt av metoden.

Erklært innenfor metoden.

Har en standardverdi.

Ingen standardverdi

Den kan brukes gjennom hele klassen.

Omfanget er begrenset til metoden.

24. Hva er standardverdiene tilordnet til variabler og forekomster i Java?

I Java Når vi ikke har initialisert forekomstvariablene, initialiserer kompilatoren dem med standardverdier. Standardverdiene for forekomster og variabler avhenger av datatypene deres. Noen vanlige typer standarddatatyper er:

  • Standardverdien for numeriske typer (byte, short, int, long, float og double) er 0.
  • Standardverdien for den boolske typen er falsk.
  • Standardverdien for objekttyper (klasser, grensesnitt og matriser) er null.
  • Nulltegnet, u0000, er standardverdien 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);  } }>

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

I Java er en klassevariabel (også kjent som en statisk variabel) en variabel som er deklarert innenfor en klasse, men utenfor en hvilken som helst metode, konstruktør eller blokk. Klassevariabler er deklarert med det statiske nøkkelordet, og de deles av alle forekomster (objekter) av klassen så vel som av klassen selv. Uansett hvor mange objekter som er avledet fra en klasse, vil hver klassevariabel bare 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);  } }>

Produksjon
Number of objects created are 3>

26. Hva er standardverdien som er lagret i lokale variabler?

Det er ingen standardverdi lagret med lokale variabler. Primitive variabler og objekter har heller ingen standardverdier.

27. Forklar forskjellen mellom instansvariabel og en klassevariabel.

Forekomstvariabel: En klassevariabel uten en statisk modifikator kjent som en forekomstvariabel deles vanligvis av alle forekomster av klassen. Disse variablene kan ha forskjellige verdier mellom flere objekter. Innholdet i en forekomstvariabel er helt uavhengig av en objektforekomst fra en annen fordi de er relatert til en spesifikk objektforekomst av 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());  } }>

Produksjon
Name John>

Klassevariabel: Klassevariabelvariabel kan deklareres hvor som helst på klassenivå ved å bruke nøkkelordet static. Disse variablene kan bare ha én verdi når de brukes på ulike objekter. Disse variablene kan deles av alle klassemedlemmer siden de ikke er koblet til noe spesifikt 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());  } }>

Produksjon
Area of circle: 78.53975>

28. Hva er en statisk variabel?

Det statiske nøkkelordet brukes til å dele samme variabel eller metode for en gitt klasse. Statiske variabler er variablene som en gang er deklarert, opprettes en enkelt kopi av variabelen og deles mellom alle objekter på klassenivå.

29. Hva er forskjellen mellom System.out, System.err og System.in?

System.out – Det er en PrintStream som brukes til å skrive tegn eller kan sies at den kan sende ut dataene vi ønsker å skrive på kommandolinjegrensesnittkonsollen/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 – Den brukes til å vise feilmeldinger.

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

Produksjon:

This is how we throw error with System.err>

Selv om System.err har mange likheter, har begge ganske store forskjeller også, la oss sjekke dem.

System.ut System.err

Det vil skrives ut til standard ut av systemet.

Den skrives ut til standardfeilen.

Det brukes mest til å vise resultater på konsollen.

Den brukes mest til å skrive ut feiltekster.

Den gir utdata på konsollen med standard (svart) farge.

Den gir også utdata på konsollen, men de fleste IDE-ene gir den en rød farge for å skille.

System.in – Det er en InputStream som brukes til å lese input fra terminalvinduet. Vi kan ikke bruke System.in direkte, så vi bruker Scanner-klassen for å ta innspill 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);  } }>

Produksjon:

3 4 Addition: 7>

30. Hva forstår du med en IO-strøm?

2-768

Java bringer forskjellige strømmer med sin I/O-pakke som hjelper brukeren til å utføre alle input-output operasjoner. Disse strømmene støtter alle typer objekter, datatyper, tegn, filer osv. for å fullføre I/O-operasjonene.

31. Hva er forskjellen mellom Leser/Skriver-klassehierarkiet og InputStream/OutputStream-klassehierarkiet?

Hovedforskjellen mellom dem er at bytestrømdata leses og skrives av input/output-strømklasser. Karakterer håndteres av Leser- og Writer-klassene. I motsetning til Reader/Writer-klasser, som aksepterer tegnarrayer som parametere, aksepterer input/output-strømklassemetoder byte-arrayer. Sammenlignet med input/output-strømmer er Reader/Writer-klassene mer effektive, håndterer alle Unicode-tegn og er nyttige for internalisering. Bruk Reader/Writer-klasser i stedet for binære data, for eksempel bilder, med mindre du gjø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();  }  } }>

Produksjon
-32 79 -48 32 -22>

32. Hva er de super fleste timene for alle strømmene?

Alle stream-klassene kan deles inn i to typer klasser som er ByteStream-klasser og CharacterStream-klasser. ByteStream-klassene er videre delt inn i InputStream-klasser og OutputStream-klasser. CharacterStream-klasser er også delt inn i leserklasser og forfatterklasser. SuperMost-klassene for alle InputStream-klassene er java.io.InputStream og for alle output-streamklassene er java.io.OutPutStream. På samme måte, for alle leserklassene, er den beste klassen java.io.Reader, og for alle forfatterklassene er det java.io.Writer.

33. Hva er FileInputStream og FileOutputStream?

For å lese og skrive data tilbyr Java I/O-strømmer. En Stream representerer en inngangskilde eller en utdatadestinasjon, som kan være en fil, en i/o-enhet, et annet program osv. FileInputStream i Java brukes til å lese data fra en fil som en strøm av byte. Det brukes mest til å lese binære data som bilder, lydfiler eller serialiserte objekter.

Eksempel:

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

I Java er FileOutputStream funksjonen brukes til å skrive data byte for byte inn i en gitt fil eller filbeskrivelse. Vanligvis blir råbytedata, for eksempel bilder, skrevet inn i en fil ved hjelp av FileOutputStream.

Eksempel:

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

34. Hva er hensikten med å bruke klassene BufferedInputStream og BufferedOutputStream?

Når vi jobber med filene eller streamen, må vi bruke klassene BufferedInputStream og BufferedOutputStream for å øke Input/Output-ytelsen til programmet. Disse begge klassene gir mulighet for buffering, noe som betyr at dataene vil bli lagret i en buffer før de skrives til en fil eller leses fra en strøm. Det reduserer også antall ganger operativsystemet vårt trenger å samhandle med nettverket eller disken. Bufring lar programmer skrive en stor mengde data i stedet for å skrive den i små biter. Dette reduserer også kostnadene ved tilgang til nettverket 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. Hva er FilterStreams?

Strømfilter eller Filterstrømmer returnerer en strøm som består av elementene i denne strømmen som samsvarer med det gitte predikatet. Mens filter() jobber, utfører den faktisk ikke filtrering, men oppretter i stedet en ny strøm som, når den krysses, inneholder elementene i innledende strømmer som samsvarer med det gitte predikatet.

Eksempel:

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


36. Hva er et I/O-filter?

Et I/O-filter også definert som et Input Output-filter er et objekt som leser fra én strøm og skriver data til inngangs- og utdatakilder. Den brukte java.io-pakken for å bruke dette filteret.

37. Hvor mange måter kan du ta innspill fra konsollen på?

Det er to metoder for å ta innspill fra konsollen i Java nevnt nedenfor:

  1. Bruker kommandolinjeargumentet
  2. Bruke Bufret Reader Class
  3. Bruke Console Class
  4. Bruke skannerklasse

Programmet som viser bruken av hver metode er gitt 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);  } }>

Produksjon:

techcodeview.com>

38. Forskjell i bruken av print, println og printf.

print, println og printf brukes alle for å skrive ut elementene, men print skriver ut alle elementene og markøren forblir på samme linje. println flytter markøren til neste linje. Og med printf kan vi også bruke formatidentifikatorer.

39. Hva er operatører?

Operatorer er de spesielle typene symboler som brukes for å utføre enkelte operasjoner over variabler og verdier.

40. Hvor mange typer operatører er tilgjengelige i Java?

Alle typer operatører i Java er nevnt nedenfor:

  1. Aritmetiske operatorer
  2. Unære operatører
  3. Oppdragsoperatør
  4. Relasjonelle operatører
  5. Logiske operatører
  6. Ternær operatør
  7. Bitvise operatører
  8. Skiftoperatører
  9. forekomst av operatør

Postfix-operatører anses som den høyeste prioritet i henhold til Java-operatørprioritet.

41. Forklar forskjellen mellom>> og>>> operatorer.

Operatører som>> og>>> ser ut til å være de samme, men oppfører seg litt annerledes.>>-operatoren forskyver fortegnsbitene og>>>-operatoren brukes til å skifte ut de nullfylte bitene.

Eksempel:

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

Produksjon
-8 2147483639>

42. Hvilken Java-operatør er rett assosiativ?

Det er bare én operator som er rett assosiativ som er = operator.

43. Hva er punktoperator?

Dot-operatoren i Java brukes for å få tilgang til instansvariablene og metodene til klasseobjekter. Den brukes også for å få tilgang til klasser og underpakker fra pakken.

44. Hva er kovariant returtype?

Den kovariante returtypen spesifiserer at returtypen kan variere i samme retning som underklassen. Det er mulig å ha forskjellige returtyper for en overordnet metode i barneklassen, men barnets returtype bør være en undertype av forelderens returtype og på grunn av den overordnede metoden blir en variant med hensyn til returtypen.

Vi bruker kovariant returtype på grunn av følgende årsaker:

  • Unngår forvirrende type casts i klassehierarkiet og gjør koden lesbar, brukbar og vedlikeholdbar.
  • Gir frihet til å ha mer spesifikke returtyper ved overstyring av metoder.
  • Hjelp til å forhindre kjøring av ClassCastExceptions på returer.

45. Hva er det forbigående nøkkelordet?

Det forbigående nøkkelordet brukes på tidspunktet for serialisering hvis vi ikke ønsker å lagre verdien av en bestemt variabel i en fil. Når JVM kommer over et forbigående nøkkelord, ignorerer det den opprinnelige verdien til variabelen og lagrer standardverdien for den variabeldatatypen.

46. ​​Hva er forskjellen mellom metodene sleep() og wait()?

Sove()

Vente()

Sleep()-metoden tilhører trådklassen.

Wait()-metoden tilhører objektklassen.

Sleep frigjør ikke låsen som den gjeldende tråden har.

wait() slipp låsen som lar andre tråder skaffe den.

Denne metoden er en statisk metode.

Denne metoden er ikke en statisk metode.

Sleep() kaster ikke et InterruptedException.InterruptedException vises hvis tråden blir avbrutt mens den venter.

Brukes hovedsakelig til å forsinke en tråd for en bestemt tidsperiode.

Brukes hovedsakelig til å sette en tråd på pause til den blir varslet av en annen 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 tidsavbrudd)
  • vent (lang tidsavbrudd, int nanos)

47. Hva er forskjellene mellom String og StringBuffer?

String

StringBuffer

Lagring av en sekvens av tegn.Gir funksjonalitet for å jobbe med strengene.
Den er uforanderlig.Den kan endres (kan endres og andre strengoperasjoner kan utføres på dem.)
Ingen trådoperasjoner i en streng.Det er trådsikkert (to tråder kan ikke kalle metodene til StringBuffer samtidig)

48. Hva er forskjellene mellom StringBuffer og StringBuilder?

StringBuffer

StringBuilder

StringBuffer gir funksjonalitet for å jobbe med strengene.StringBuilder er en klasse som brukes til å bygge en mutbar streng.
Det er trådsikkert (to tråder kan ikke kalle metodene til StringBuffer samtidig)Det er ikke trådsikkert (to tråder kan kalle metodene samtidig)
Forholdsvis sakte da den er synkronisert.Siden den ikke er synkronisert, er implementeringen raskere

49. Hvilken av String eller String Buffer bør foretrekkes når det kreves mange oppdateringer i dataene?

Strengen foretrekkes fremfor StringBuffer siden StringBuilder er raskere enn StringBuffer, men StringBuffer-objekter foretrekkes fremfor siden den gir mer trådsikkerhet.


50. Hvorfor kalles StringBuffer mutable?

StringBuffer-klassen i Java brukes til å representere en utskiftbar streng med tegn. Den tilbyr et alternativ til den uforanderlige String-klassen ved å la deg endre innholdet i en streng uten å stadig lage nye objekter. Mulige (modifiserbare) strenger lages ved hjelp av StringBuffer-klassen. StringBuffer-klassen i Java er identisk med String-klassen bortsett fra at den kan endres.

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

Produksjon
techcodeview.com>

51. Hvordan er opprettelsen av en streng ved å bruke new() forskjellig fra den til en bokstavelig?

String som bruker new() er forskjellig fra den bokstavelige siden når vi erklærer streng, lagrer den elementene inne i stabelminnet, mens når den er deklarert ved hjelp av new() allokerer den et dynamisk minne i heap-minnet. Objektet blir opprettet i haugminnet selv om det samme innholdsobjektet er til stede.

Syntaks:

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


3-768

52. Hva er en array i Java?

En Array i Java er en datastruktur som brukes til å lagre en sekvens med fast størrelse av elementer av samme type. Elementer i en array kan nås med indeksen deres, som starter fra 0 og går opp til en lengde på minus 1. Array-deklarasjon i Java gjøres ved hjelp av hakeparenteser og størrelsen spesifiseres også under erklæringen.

Syntaks:

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

53. På hvilke minnearrayer er laget i Java?

Arrays i Java er opprettet i heap-minne. Når en matrise opprettes ved hjelp av et nytt nøkkelord, blir minne tildelt i haugen for å lagre elementene i matrisen. I Java administreres haugminnet av Java Virtual Machine (JVM), og det deles også mellom alle tråder i Java-programmet. Minnet som ikke lenger er i bruk av programmet, JVM bruker en søppelsamler for å gjenvinne minnet. Arrays i Java lages dynamisk, noe som betyr at størrelsen på arrayen bestemmes under programmets kjøretid. Størrelsen på matrisen spesifiseres under erklæringen av matrisen, og den kan ikke endres når matrisen først er opprettet.

54. Hva er typene av en matrise?

Det er to typer matriser, dvs. primitive matriser og referansematriser.

  • Endimensjonale matriser: Matriser som bare har én dimensjon, dvs. en matrise med heltall eller en matrise med strenger, er kjent som endimensjonale matriser.

4-768

Syntaks:

data_type[] Array_Name = new data_type[ArraySize];>
  • Multi-dimensjonale matriser: Matriser som har to eller flere dimensjoner, for eksempel todimensjonale eller tredimensjonale matriser.

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

Indeksen til en matrise angir avstanden fra starten av matrisen. Så det første elementet har 0 avstand, derfor er startindeksen 0.

Syntaks:

[Base Address + (index * no_of_bytes)]>

56. Hva er forskjellen mellom int array[] og int[] array?

Både int array[] og int[] array brukes til å erklære en matrise med heltall i java. Den eneste forskjellen mellom dem er på deres syntaks, ingen funksjonalitetsforskjell er tilstede mellom dem.

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

Imidlertid anbefales det generelt å bruke Java-stilsyntaks for å deklarere en Array. Siden det er lett å lese og forstå, er det også mer konsistent med andre Java-språkkonstruksjoner.

57. Hvordan kopiere en array i Java?

I Java er det flere måter å kopiere en Array på basert på kravene.

  • clone() metode i Java: Denne metoden i Java brukes til å lage en grunn kopi av den gitte matrisen som betyr at den nye matrisen vil dele samme minne som den opprinnelige matrisen.
int[] Arr = { 1, 2, 3, 5, 0}; int[] tempArr = Arr.clone();>
  • arraycopy() metode: For å lage en dyp kopi av matrisen kan vi bruke denne metoden som lager en ny matrise med samme verdier som den originale matrisen.
int[] Arr = {1, 2, 7, 9, 8}; int[] tempArr = new int[Arr.length]; System.arraycopy(Arr, 0, tempArr, 0, Arr.length);>
  • copyOf() metode: Denne metoden brukes til å lage en ny matrise med en bestemt lengde og kopierer innholdet i den originale matrisen til den nye matrisen.
int[] Arr = {1, 2, 4, 8}; int[] tempArr = Arrays.copyOf(Arr, Arr.length);>
  • copyOfRange() metode: Denne metoden er veldig lik copyOf()-metoden i Java, men denne metoden lar oss også spesifisere rekkevidden til elementene som skal kopieres fra den originale matrisen.
int[] Arr = {1, 2, 4, 8}; int[] temArr = Arrays.copyOfRange(Arr, 0, Arr.length);>

58. Hva forstår du med den taggete matrisen?

En tagget matrise i Java er bare en todimensjonal matrise der hver rad i matrisen kan ha forskjellig lengde. Siden alle radene i en 2-d matrise har samme lengde, men en tagget matrise gir mer fleksibilitet i størrelsen på hver rad. Denne funksjonen er veldig nyttig i forhold der dataene har varierende lengder eller når minnebruken må optimaliseres.

Syntaks:

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

59. Er det mulig å gjøre en matrise flyktig?

I Java er det ikke mulig å lage en volatile. Flyktige nøkkelord i Java kan bare brukes på individuelle variabler, men ikke på matriser eller samlinger. Verdien av variabelen leses alltid fra og skrives til hovedminnet når den er definert som flyktig i stedet for å bli bufret i en tråds lokale minne. Dette gjør det lettere å sikre at alle tråder som har tilgang til variabelen kan se endringer som er gjort i den.

60. Hva er fordelene og ulempene med en matrise?

5-768

Fordelene med Arrays er:

  • Direkte og effektiv tilgang til ethvert element i samlingen er muliggjort av arrays. En matrises elementer kan nås ved hjelp av en O(1)-operasjon, som betyr at tiden som trengs for å gjøre det er konstant og uavhengig av matrisens størrelse.
  • Data kan lagres effektivt i minnet ved hjelp av arrays. Størrelsen på en matrise er kjent på kompileringstidspunktet siden dens elementer er lagret i sammenhengende minneområder.
  • På grunn av det faktum at dataene er lagret i sammenhengende minneområder, gir arrays rask datainnhenting.
  • Arrays er enkle å implementere og forstå, noe som gjør dem til et ideelt valg for nybegynnere som lærer dataprogrammering.

Ulempene med Arrays er:

  • Matriser opprettes med en forhåndsbestemt størrelse som velges i det øyeblikket. Dette betyr at hvis matrisens størrelse må utvides, må en ny matrise lages, og dataene må kopieres fra den gamle matrisen til den nye matrisen, noe som kan ta mye tid og minne.
  • Det kan være ubrukt minneplass i en arrays minneplass hvis arrayen ikke er helt okkupert. Hvis du har dårlig hukommelse, kan dette være et problem.
  • Sammenlignet med andre datastrukturer som koblede lister og trær, kan arrays være stive på grunn av deres faste størrelse og begrensede støtte for sofistikerte datatyper.
  • Fordi en matrises elementer alle må være av samme datatype, støtter den ikke komplekse datatyper som objekter og strukturer.

61. Hva er et objektorientert paradigme?

Paradigme betyr bokstavelig talt et mønster eller en metode. Programmeringsparadigmer er metodene for å løse et program som er av fire typer, nemlig imperativ, logisk, funksjonell og objektorientert. Når objekter brukes som basisenheter som metodene brukes på, utføres innkapslings- eller arvefunksjoner, er det kjent som et objektorientert paradigme.

62. Hva er hovedkonseptene til OOPs i Java?

Hovedkonseptene til OOPs i Java er nevnt nedenfor:

  • Arv
  • Polymorfisme
  • Abstraksjon
  • Innkapsling

63. Hva er forskjellen mellom et objektorientert programmeringsspråk og et objektbasert programmeringsspråk?

Objektorientert programmeringsspråk

Objektbasert programmeringsspråk

Objektorientert programmeringsspråk dekker større begreper som arv, polymorfisme, abstraksjon, etc.Omfanget av objektbasert programmering er begrenset til bruk av objekter og innkapsling.
Den støtter alle innebygde objekterDen støtter ikke alle de innebygde objektene
Eksempler: Java, C#, etc.Eksempler: Java-script, visuell grunnleggende osv.

64. Hvordan er «new»-operatøren forskjellig fra «newInstance()»-operatoren i Java?

den nye operatoren brukes til å lage objekter, men hvis vi ønsker å bestemme hvilken type objekt som skal opprettes under kjøring, er det ingen måte vi kan bruke den nye operatoren. I dette tilfellet må vi bruke newInstance()-metoden .

65. Hva er klasser i Java?

I Java er klasser samlingen av objekter som deler lignende egenskaper og attributter. Klasser representerer blåkopien eller malen som objekter er opprettet fra. Klasser er ikke enheter i den virkelige verden, men hjelper oss å lage objekter som er enheter i den virkelige verden.

66. Hva er forskjellen mellom statisk (klasse) metode og instansmetode?

Statisk (klasse) metode

Forekomstmetode

Statisk metode er assosiert med en klasse i stedet for et objekt.

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

Statiske metoder kan kalles bare ved å bruke klassenavnet uten å opprette en forekomst av en klasse.

Forekomstmetoden kan kalles på en spesifikk forekomst av en klasse ved å bruke objektreferansen.

Statiske metoder har ikke tilgang til dette nøkkelord .

Forekomstmetoder har tilgang til dette nøkkelord .

Denne metoden har kun tilgang til statiske medlemmer av klassen

Denne metoden kan få tilgang til både statiske og ikke-statiske metoder for klassen.

67. Hva er dette nøkkelordet i Java?

6

'dette' er et nøkkelord som brukes til å referere til en variabel som refererer til det gjeldende objektet.

68. Hva er korte tilgangsspesifikasjoner og typer tilgangsspesifikasjoner?

Access_modifiers_in_java-768

Tilgangsspesifikasjoner i Java bidrar til å begrense omfanget av en klasse, konstruktør, variabel, metode eller datamedlem. Det er fire typer tilgangsspesifikasjoner i Java nevnt nedenfor:

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

69. Hva vil være startverdien til en objektreferanse som er definert som en forekomstvariabel?

Startverdien til en objektreferanse som er definert som en forekomstvariabel er en NULL-verdi.

70. Hva er en gjenstand?

Objektet er en virkelighet som har visse egenskaper og metoder knyttet til seg. Objektet er også definert som forekomsten av en klasse. Et objekt kan deklareres ved hjelp av et nytt nøkkelord.

71. Hva er de forskjellige måtene å lage objekter på i Java?

Metoder for å lage objekter i Java er nevnt nedenfor:

  1. Bruker nytt søkeord
  2. Bruker ny instans
  3. Bruker klone() metoden
  4. Bruker deserialisering
  5. Ved å bruke newInstance()-metoden til Constructor-klassen

For å vite mer om metoder for å lage objekter i Java, se denne artikkelen .

72. Hva er fordelene og ulempene med objektkloning?

Det er mange fordeler og ulemper ved å bruke objektkloning som nevnt nedenfor:

Fordeler:

  • I Java kan ikke tilordningsoperatøren '=' brukes til kloning, da den ganske enkelt lager en kopi av referansevariabler. For å overvinne et slikt avvik kan klone()-metoden til Object-klassen brukes over tildelingsoperatøren.
  • Clone()-metoden er en beskyttet metode av klassen Object som betyr at bare Employee-klassen kan klone Employee-objekter. Dette betyr at ingen annen klasse enn Employee kan klone Employee-objekter siden den ikke kjenner attributtene til Employee-klassen.
  • Kodestørrelsen reduseres når repetisjonen reduseres.
  • Tillater replikering (som et prototypemønster) manuell initialisering av hvert felt skaper stor kode hvis objektet er komplekst, det går raskere med kloning.

Ulemper:

  • Siden Object.clone()-metoden er beskyttet, så må vi gi vår egen clone() og indirekte kalle Object.clone() fra den.
  • Hvis vi ikke har noen metoder, må vi gi et klonbart grensesnitt, da vi må gi JVM-informasjon slik at vi kan utføre en klone() på objektet vårt. Hvis ikke, kan vi ikke klone klone gjør grunne kopier av felt hvis vi bare returner super.clone() fra klonemetoden som kan være problematisk.

73. Hva er fordelene med å overføre dette til en metode i stedet for selve det nåværende klasseobjektet?

Det er noen fordeler med å overføre dette til en metode i stedet for selve det nåværende klasseobjektet, disse er:

  • dette er den endelige variabelen på grunn av hvilken denne ikke kan tilordnes noen ny verdi, mens det gjeldende klasseobjektet kanskje ikke er endelig og kan endres.
  • dette kan brukes i den synkroniserte blokken.

74. Hva er konstruktøren?

Constructor er en spesiell metode som brukes til å initialisere objekter. Konstruktør kalles når et objekt lages. Navnet på konstruktøren er det samme som på klassen.

Eksempel:

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

75. Hva skjer hvis du ikke har en konstruktør i en klasse?

Hvis du ikke oppgir en konstruktør i en klasse i Java, genererer kompilatoren automatisk en standardkonstruktør uten argumenter og ingen operasjon som er en standardkonstruktør.

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

Det er to typer konstruktører i Java som nevnt nedenfor:

  1. Standard konstruktør
  2. Parameterisert konstruktør

Standard konstruktør: Det er typen som ikke godtar noen parameterverdi. Den brukes til å angi startverdier for objektattributter.

class_Name(); // Default constructor called>

Parameterisert konstruktør: Det er typen konstruktør som godtar parametere som argumenter. Disse brukes til å tilordne verdier til instansvariabler under initialiseringen av objekter.

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

77. Hva er hensikten med en standardkonstruktør?

Konstruktører hjelper til med å lage forekomster av en klasse eller kan sies å lage objekter av en klasse. Konstruktør kalles opp under initialisering av objekter. En standard konstruktør er en type konstruktør som ikke godtar noen parameter, så uansett hvilken verdi som tildeles egenskapene til objektene regnes som standardverdier.

78. Hva forstår du med kopikonstruktør i Java?

Kopikonstruktøren er typen konstruktør der vi sender et annet objekt som en parameter fordi hvilke egenskaper til begge objektene virker like, det er derfor det virker som om konstruktører lager en kopi av et objekt.

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

En privat konstruktør brukes hvis du ikke vil at noen annen klasse skal instansiere objektet for å unngå underklassing. Bruk privat konstruktør kan sees som implementert 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);  } }>

Produksjon
Value of a.x = 20 Value of b.x = 20>

80. Hva er forskjellene mellom konstruktørene og metodene?

Java-konstruktører brukes til å initialisere objekter. Under opprettelsen blir konstruktører kalt til å angi attributter for objekter bortsett fra disse få grunnleggende forskjellene mellom dem:

  1. Konstruktører kalles bare når objektet er opprettet, men andre metoder kan kalles flere ganger i løpet av et objekts levetid.
  2. Konstruktører returnerer ikke noe, mens andre metoder kan returnere noe.
  3. Konstruktører er vant til å sette opp starttilstanden, men metoder brukes til å utføre spesifikke handlinger.

81. Hva er et grensesnitt?

Et grensesnitt i Java er en samling av statiske sluttvariabler og abstrakte metoder som definerer kontrakten eller avtalen for et sett med koblede klasser. Enhver klasse som implementerer et grensesnitt er nødvendig for å implementere et spesifikt sett med metoder. Den spesifiserer atferden som en klasse må vise, men ikke spesifikasjonene for 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());  } }>

Produksjon
Area of circle is 78.53981633974483 Perimeter of circle is31.41592653589793>

82. Gi noen funksjoner i grensesnittet.

Et grensesnitt i programmeringsspråket Java er definert som en abstrakt type som brukes til å spesifisere oppførselen til en klasse. Et grensesnitt i Java er en blåkopi av en atferd. Et Java-grensesnitt inneholder statiske konstanter og abstrakte metoder.

Funksjonene til grensesnittet er nevnt nedenfor:

  • Grensesnittet kan bidra til å oppnå total abstraksjon.
  • Lar oss bruke flere arv i Java.
  • Enhver klasse kan implementere flere grensesnitt selv når én klasse kan utvide bare én klasse.
  • Den brukes også for å oppnå løs kobling.

83. Hva er et markørgrensesnitt?

Et grensesnitt gjenkjennes som et tomt grensesnitt (ingen felt eller metoder), det kalles et markørgrensesnitt. Eksempler på markørgrensesnitt er Serialiserbare, Klonbare og Remote-grensesnitt.

84. Hva er forskjellene mellom abstrakt klasse og grensesnitt?

Abstrakt-klasse-og-grensesnitt-768

Abstrakt klasse

Grensesnittklasse

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

Grensesnittet inneholder kun abstrakte metoder.

Abstrakt klasse støtter endelige metoder.

Grensesnittklassen støtter ikke Final-metoder.

Multippel arv støttes ikke av Abstrakt-klassen.

Flere arv støttes av Interface Class.

Abstrakt nøkkelord brukes til å erklære Abstrakt klasse.

Interface Keyword brukes til å deklarere grensesnittklassen.

forlenge nøkkelord brukes til å utvide en abstrakt klasse. redskaper Nøkkelord brukes til å implementere grensesnittet.

Abstrakt klasse har medlemmer som beskyttet, privat osv.

Alle klassemedlemmer er offentlige som standard.

85. Hva mener du med datainnkapsling?

Innkapsling-i-Java-300

Data Encapsulation er begrepet OOPS egenskaper og karakteristikker av klassene som Grensesnittet er bundet sammen. I utgangspunktet samler den data og metoder som opererer på disse dataene i en enkelt enhet. Innkapsling oppnås ved å erklære forekomstvariablene til en klasse som private, noe som betyr at de bare kan nås innenfor klassen.

86. Hva er fordelene med Encapsulation i Java?

Fordelene med Encapsulation i Java er nevnt nedenfor:

  1. Dataskjuling: det er en måte å begrense tilgangen til våre datamedlemmer ved å skjule implementeringsdetaljene. Innkapsling gir også en måte å skjule data på. Brukeren vil ikke ha noen formening om den indre gjennomføringen av klassen.
  2. Økt fleksibilitet: Vi kan gjøre variablene i klassen skrivebeskyttet eller skrivebeskyttet avhengig av kravene våre.
  3. Gjenbrukbarhet: Innkapsling forbedrer også gjenbrukbarheten og er lett å endre med nye krav.
  4. Det er enkelt å teste kode: Kode er gjort enkelt å teste for enhetstesting.

87. Hva er den primære fordelen med Encapsulation?

Den største fordelen med Encapsulation i Java er dens evne til å beskytte den interne tilstanden til et objekt fra ekstern modifikasjon eller tilgang. Det er en måte å skjule implementeringsdetaljene til en klasse fra tilgang utenfor og bare avsløre et offentlig grensesnitt som kan brukes til å samhandle med klassen. Den største fordelen er å tilby en måte å kontrollere og administrere tilstanden og oppførselen til et objekt og samtidig beskytte det mot modifikasjon og uautorisert tilgang.

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

Produksjon
Name is Rohan Age is 29>

88. Hva mener du med aggregering?

Aggregasjon-i-Java

Aggregasjon er et begrep relatert til forholdet mellom to klasser som best beskrives som et har-et forhold. Denne typen er den mest spesialiserte versjonen av assosiasjon. Det er en ensrettet assosiasjon betyr at det er et enveisforhold. Den inneholder referansen til en annen klasse og sies å ha eierskap til den klassen.

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

'IS-A' er en type relasjon i OOPs Java der en klasse arver en annen klasse.

90. Definer arv.

Når et objekt som tilhører en underklasse får alle egenskapene og oppførselen til et overordnet objekt som er fra superklassen, kalles det arv. En klasse innenfor en klasse kalles underklassen og sistnevnte omtales som superklassen. Underklassen eller barneklassen sies å være spesifikk, mens superklassen eller overordnet klasse er generisk. Arv gir kodegjenbrukbarhet.

91. Hva er de forskjellige typer arv i Java?

Arv er metoden som Child-klassen kan arve egenskapene til Super- eller Parent-klassen på. I Java er arv av fire typer:

  • Enkeltarv: Når et barn eller underklasse bare strekker seg over én superklasse, er det kjent å være enkeltarv. Egenskaper for enslige forsørgere overføres til barneklassen.
  • Flernivåarv: Når et barn eller underklasse utvider en hvilken som helst annen underklasse, opprettes et arvehierarki som er kjent som flernivåarv. Med andre ord, en underklasse blir overordnet klasse til en annen.
  • Hierarkisk arv: Når flere underklasser stammer fra samme overordnede klasse, kalles hierarkisk arv. Med andre ord, en klasse som har en enslig forelder har mange underklasser.
  • Multippel arv: Når en barneklasse arver fra flere overordnede klasser er kjent som Multiple Inheritance. I Java støtter den bare multippel nedarving av grensesnitt, ikke klasser.

92. Hva er multippel arv? Støttes det av Java?

En komponent av den objektorienterte forestillingen kjent som multiple arv tillater en klasse å arve egenskaper fra mange overordnede klasser. Når metoder med samme signatur er tilstede i både superklasser og underklasser, oppstår det et problem. Metodens kaller kan ikke spesifisere for kompilatoren hvilken klassemetode som skal kalles eller til og med hvilken klassemetode som skal gis prioritet.

Merk: Java stø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();  } }>

Produksjon
Eating Drinking Barking>

93. Hvordan er arv i C++ forskjellig fra Java?

Arv i C++

Arv i Java

C++ lar brukeren arve flere klasser.Java støtter ikke flere arv.
Når en klasse opprettes i C++, arver den ikke fra objektklassen, i stedet eksisterer den alene.Java sies alltid å ha en enkelt arv ettersom alle klassene arver på den ene eller andre måten fra objektklassen.

94. Er det noen begrensning for bruk av arv?

Ja, det er en begrensning ved bruk av arv i Java, da man på grunn av arv kan arve alt fra superklasse og grensesnitt på grunn av hvilken underklasse som er for klynget og noen ganger feilutsatt når dynamisk overstyring eller dynamisk overbelastning gjøres i visse situasjoner.

95. Selv om arv er et populært OOPs-konsept, er det mindre fordelaktig enn sammensetning. Forklare.

Arv er et populært konsept for objektorientert programmering (OOP), der en klasse kan arve egenskapene og metodene fra en hvilken som helst annen klasse, som omtales som en overordnet eller superklasse. På den annen side i komposisjon kan en klasse inneholde en forekomst av en annen klasse som en medlemsvariabel som ofte omtales som en del eller en komponent. Nedenfor er noen grunner til at sammensetning er mer fordelaktig enn arv:

  • Tett kobling: Hver gang det gjøres endringer i superklassen, kan disse endringene påvirke oppførselen til alle dens barn eller underklasser. Dette problemet gjør koden mindre fleksibel og skaper også problemer under vedlikehold. Dette problemet fører også til den tette koblingen mellom klassene.
  • Problem med skjør grunnklasse: Når endringene i basisklassen kan bryte funksjonaliteten til dens avledede klasser. Dette problemet kan gjøre det vanskelig å legge til nye funksjoner eller endre de eksisterende. Dette problemet er kjent som Fragile Base-klasseproblemet.
  • Begrenset gjenbruk: Arv i Java kan føre til begrenset kodegjenbruk og også kodeduplisering. Ettersom en underklasse arver alle egenskapene og metodene til sin superklasse, kan den noen ganger ende opp med unødvendig kode som ikke er nødvendig. Dette fører til en mindre vedlikeholdbar kodebase.

96. Hva er en forening?

Foreningen er et forhold mellom to separate klasser etablert gjennom deres objekter. Det representerer Has-As forhold.

97. Hva mener du med aggregering?

Komposisjon er en begrenset form for aggregering der to enheter er svært avhengige av hverandre. Det representerer del av forholdet.

98. Hva er sammensetningen av Java?

Komposisjon innebærer et forhold der barnet kan ikke eksistere uavhengig av forelderen. For eksempel menneskelig hjerte, hjertet eksisterer ikke separat fra et menneske.

99. Angi forskjellen mellom komposisjon og aggregasjon.

Aggregasjon

Komposisjon

Den definerer en har et forhold mellom objektene

Det representerer delen av forholdet

Objekter er uavhengige av hverandre.

Objekter er avhengige av hverandre.

Representer det ved å bruke den fylte diamanten.

Representer det ved å bruke den tomme diamanten.

Barneobjekter har ikke en levetid.

Barneobjekter har en levetid.

100. Kan konstruktøren arves?

Nei, vi kan ikke arve en konstruktør.


101. Hva er polymorfisme?

Polymorfisme er definert som evnen til å ta mer enn én form. Den er av to typer, nemlig kompileringstidspolymorfisme eller metodeoverbelastning - en funksjon som kalles under kompileringstiden. Ta for eksempel et klasse-'område'. Basert på antall parametere kan den beregne arealet av en firkant, trekant eller sirkel. Kjøretidspolymorfisme eller metodeoverstyrende koblinger under kjøretid. Metoden inne i en klasse overstyrer metoden til den overordnede klassen.

102. Hva er runtime polymorfisme eller dynamisk metodeutsendelse?

Dynamisk metodeutsendelse er en løsningsmekanisme for metodeoverstyring i løpet av kjøretiden. Metodeoverstyring er den der metoden i en underklasse har samme navn, parametere og returtype som en metode i superklassen. Når den overstyrte metoden kalles gjennom en superklassereferanse, bestemmer java hvilken versjon (superklasse eller underklasse) av den metoden som skal kjøres basert på typen objekt det refereres til på tidspunktet kallet skjer. Dermed blir avgjørelsen tatt på kjøretid. Dette omtales som dynamisk metodeutsendelse.

103. Hva er metodeoverstyring?

Metodeoverstyring, også kjent som kjøretidspolymorfisme, er en der barneklassen inneholder samme metode som den overordnede klassen. For eksempel har vi en metode som heter 'gfg()' i den overordnede klassen. En metode gfg() er igjen definert i underklassen. Når gfg() kalles i underklassen, blir metoden innenfor klasse-ID-en utført. Her overstyrte gfg() i klassen metoden utenfor.

104. Hva er metodeoverbelastning?

Overbelastning-i-Java-768

Metodeoverstyring er en metode for å oppnå Run-time polymorfisme i Java. Metodeoverstyring er en funksjon som lar en barneklasse gi en spesifikk implementering av en metode som allerede er levert av en av dens overordnede klasser. Når en metode i en barneklasse har samme navn, samme parametere eller signatur og samme returtype (eller undertype) som en metode i overordnet klasse, så sies metoden i underklassen å overstyre metoden i superklassen.

105. Kan vi overstyre den statiske metoden?

Nei, siden statiske metoder er en del av klassen i stedet for objektet, så vi kan ikke overstyre dem.

106. Kan vi overstyre den overbelastede metoden?

Ja, siden den overbelastede metoden er en helt annen metode i kompilatorens øyne. Overstyring er ikke det samme i det hele tatt. Beslutningen om hvilken metode som skal kalles, blir utsatt til kjøretid.

107. Kan vi overbelaste main()-metoden?

Ja i Java kan vi overbelaste hovedmetoden for å kalle hovedmetoden ved hjelp av dens forhåndsdefinerte kallemetode.

108. Hva er metodeoverbelastning og metodeoverstyring?

Metodeoverbelastning: Det er også kjent som Compile Time Polymorphism. Ved metodeoverbelastning deles to eller flere metoder i samme klasse med en annen 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));  } }>

Produksjon
multiply() with 2 parameters 20 multiply() with 3 parameters 24 multiply() with 4 parameters 24>

Metodeoverstyring: Metodeoverstyring skjer når en underklasse kan gi implementering av en metode som allerede er definert i overordnet klasse eller superklasse. Returtypen, navnet og argumentene må være lik metodene 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();  } }>

Produksjon
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

Metodeoverstyring

Når to eller flere metoder er i samme klasse med forskjellige parametere, men samme navn.

Når en underklasse gir sin egen implementering av en metode som allerede er definert i den overordnede klassen.

Metodeoverbelastning kan bare skje i samme klasse eller mellom en underklasse eller overordnet klasse.

Metodeoverstyring kan bare skje i underklasse.

Når en feil oppstår, fanges den opp på kompileringstidspunktet for programmet.

Når en feil oppstår, fanges den opp under programmets kjøretid.

Eksempel på kompileringstidspolymorfisme.

Eksempel på Run Time Polymorphism.

Metode Overbelastning kan kreve arv eller ikke.

Metodeoverstyring trenger alltid arv.

Det skjer i klassen.

Det utføres i to klasser med et arveforhold.

109. Kan vi overstyre de private metodene?

Det er ikke mulig å overstyre de private metodene i Java. Metodeoverstyring er der metoden i underklassen implementeres i stedet for metoden fra overordnet klasse. De private metodene er bare tilgjengelige innenfor klassen de er deklarert i. Siden denne metoden ikke er synlig for andre klasser og ikke er tilgjengelig, kan den ikke overstyres.

110. Kan vi endre omfanget av den overstyrte metoden i underklassen?

I Java er det ikke mulig å endre omfanget av den overstyrte metoden. Underklassemetodens omfang må være lik eller bredere enn Superclass-metodens overstyrte metodes omfang. Den overstyrte metoden i underklassen, for eksempel, kan ha et offentlig omfang eller et mer tilgjengelig omfang som beskyttet eller standard hvis den overstyrte metoden i superklassen har et offentlig omfang. Det kan imidlertid ikke ha et mer eksklusivt omfang som privat.

111. Kan vi modifisere throws-klausulen til superklassemetoden mens vi overstyrer den i underklassen?

Vi kan endre throws-leddet til Superclass-metoden med noen begrensninger, vi kan endre throws-leddet til superklassemetoden mens vi overstyrer det i underklassen. Den overstyrte underklassens metode kan bare spesifisere ukontrollerte unntak hvis superklassemetoden ikke erklærer noen unntak. Hvis superklassemetoden erklærer et unntak, kan underklassemetoden erklære det samme unntaket, et underklasseunntak eller ikke noe unntak i det hele tatt. Underklassemetoden kan imidlertid ikke deklarere et overordnet unntak som er bredere enn de som er deklarert i superklassemetoden.

112. Kan du ha virtuelle funksjoner i Java?

Ja, Java støtter virtuelle funksjoner. Funksjoner er som standard virtuelle og kan gjøres ikke-virtuelle ved å bruke det endelige nøkkelordet.

113. Hva er abstraksjon?

Abstraksjon refererer til handlingen med å representere essensielle funksjoner uten å inkludere bakgrunnsdetaljer. Den detaljerte informasjonen eller implementeringen er skjult. Det vanligste eksemplet på abstraksjon er en bil, vi vet hvordan man slår på motoren, akselererer og beveger seg, men måten motoren fungerer på, og dens interne komponenter er kompleks logikk skjult for de generelle brukerne. Dette gjøres vanligvis for å håndtere kompleksiteten.

114. Hva er abstrakt klasse?

En klasse erklært som abstrakt kan ikke instansieres, dvs. objektet kan ikke opprettes. Den kan inneholde abstrakte metoder, men hvis en klasse har minst én abstrakt metode, må 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. Når abstrakte metoder brukes?

En abstrakt metode brukes når vi ønsker å bruke en metode, men ønsker å underordnede klasser for å bestemme implementeringen i så fall bruker vi abstrakte metoder med overordnede klasser.

116. Hvordan kan du unngå serialisering i barneklassen hvis basisklassen implementerer Serializable-grensesnittet?

Serialisering i barneklassen hvis basisklassen implementerer Serializable-grensesnittet, kan vi unngå det ved å definere writeObject()-metoden og kaste NotSerializableException().

117. Hva er Collection Framework i Java?

Samlinger er enheter av objekter i Java. Samlingsrammeverket er et sett med grensesnitt og klasser i Java som brukes til å representere og manipulere samlinger av objekter på en rekke måter. Samlingsrammeverket inneholder klasser (ArrayList, Vector, LinkedList, PriorityQueue, TreeSet) og flere grensesnitt (Set, List, Queue, Deque) der hvert grensesnitt brukes til å lagre en bestemt type data.

118. Forklar ulike grensesnitt som brukes i innsamlingsrammeverket.

Innsamlingsramme implementerer

  1. Innsamlingsgrensesnitt
  2. Listegrensesnitt
  3. Angi grensesnitt
  4. Køgrensesnitt
  5. Og grensesnittet
  6. Kartgrensesnitt

Samlingsgrensesnitt: Samling er det primære grensesnittet som er tilgjengelig som kan importeres ved hjelp av java.util.Collection.

Syntaks:

public interface Collection extends iterable>

119. Hvordan kan du synkronisere en ArrayList i Java?

En ArrayList kan synkroniseres ved å bruke to metoder nevnt nedenfor:

  1. Bruke Collections.synchronizedList()
  2. Bruker CopyOnWriteArrayList

Bruker Collections.synchronizedList():

public static List synchronizedList(List list)>

Bruke CopyOnWriteArrayList:

  1. Lag en tom liste.
  2. Den implementerer List-grensesnittet
  3. Det er en trådsikker variant av ArrayList
  4. T representerer generisk

120. Hvorfor trenger vi en synkronisert ArrayList når vi har vektorer (som er synkronisert) i Java?

ArrayList er i nød selv når vi har vektorer på grunn av visse grunner:

  1. ArrayList er raskere enn Vectors.
  2. ArrayList støtter multithreading mens Vectors bare støtter enkelttrådsbruk.
  3. ArrayList er tryggere å bruke, siden Vectors støtter enkelttråder og individuelle operasjoner er mindre sikre og tar lengre tid å synkronisere.
  4. Vektorer anses som utdaterte i Java på grunn av deres synkroniserte natur.

121. Hvorfor kan vi ikke lage en generisk matrise?

Generiske matriser kan ikke opprettes fordi en array bærer type informasjon om elementene ved kjøring, på grunn av dette under kjøring, kaster den 'ArrayStoreException' hvis elementenes type ikke er lik. Siden generisk type informasjon blir slettet ved kompilering av Type Erasure, ville array store-kontrollen blitt bestått der den burde ha mislyktes.

122. Sammenhengende minneplasseringer brukes vanligvis til å lagre faktiske verdier i en matrise, men ikke i ArrayList. Forklare.

Elementene i en matrise er lagret i sammenhengende minneplasseringer, noe som betyr at hvert element er lagret i en separat blokk basert på det plassert i matrisen. Siden elementene i matrisen er lagret på sammenhengende steder, kan det være relativt enkelt å få tilgang til ethvert element ved hjelp av indeksen, siden elementadressen kan beregnes basert på plasseringen til elementet. Men Java implementerer ArrayLists som dynamiske arrays, noe som betyr at størrelsen kan endres etter hvert som elementer fjernes eller legges til. ArrayList-elementer lagres ikke i sammenhengende minneplasseringer for å imøtekomme denne dynamiske naturen. I stedet bruker ArrayList en metode kjent som en utvidbar matrise der den underliggende matrisen utvides til en større størrelse etter behov, og elementene deretter kopieres til den nye plasseringen. I motsetning til en ArrayList, som har en dynamisk størrelse og ikke lagrer elementene i sammenhengende minneplasseringer, har en matrise en fast størrelse og elementene lagres der.

123. Forklar metoden for å konvertere ArrayList til Array og Array til ArrayList.

Konvertering av List til ArrayList

Det er flere metoder for å konvertere List til ArrayList

Convert-Array-to-ArrayList-768

Programmerere kan konvertere en Array til ArrayList ved å bruke asList()-metoden i Arrays-klassen. Det er en statisk metode i Arrays-klassen som aksepterer 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);  } }>

Produksjon
[Abc, Def, Ghi, Jkl]>

Konvertering av ArrayList til Array

Konverter-ArrayList-to-Array-768

Java-programmerere 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 + ' ');  } }>

Produksjon
1 2 3 2 1>

124. Hvordan vokser størrelsen på ArrayList dynamisk? Og oppgi også hvordan det implementeres internt.

På grunn av ArrayLists array-baserte natur, vokser den dynamisk i størrelse, noe som sikrer at det alltid er nok plass til elementer. Når et ArrayList-element først opprettes, er standardkapasiteten rundt 10-16 elementer som i utgangspunktet avhenger av Java-versjonen. ArrayList-elementer kopieres over fra den opprinnelige matrisen til den nye matrisen når kapasiteten til den originale matrisen er full. Ettersom ArrayList-størrelsen øker dynamisk, oppretter klassen en ny matrise med større størrelser, og den kopierer alle elementene fra den gamle matrisen til den nye matrisen. Nå brukes referansen til den nye matrisen internt. Denne prosessen med å dynamisk vokse en matrise er kjent som å endre størrelse.

125. Hva er en vektor i Java?

Vektorer i Java er like og kan lagre flere elementer inne i dem. Vektorer følger visse regler nevnt nedenfor:

  1. Vektor kan importeres ved hjelp av Java.util.Vector.
  2. Vektor implementeres ved hjelp av en dynamisk matrise når størrelsen på vektoren øker og reduseres avhengig av elementene som er satt inn i den.
  3. Elementer av vektoren ved hjelp av indeksnummer.
  4. Vektorer er synkronisert i naturen betyr at de bare brukte en enkelt tråd (kun én prosess utføres på et bestemt tidspunkt).
  5. Vektoren inneholder mange metoder som ikke er en del av samlingsrammeverket.

Syntaks:

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

126. Hvordan gjøre Java ArrayList skrivebeskyttet?

En ArrayList kan bare gjøres klar ved å bruke metoden gitt av Collections ved å bruke 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);  }  } }>

Produksjon
Initial list: [X, Y, Z] ReadOnly ArrayList: [X, Y, Z] If add element in the ReadOnly ArrayList Exception is thrown : java.lang.UnsupportedOperationException>

127. Hva er en prioritert kø i Java?

Prioritet-kø-768

En prioritetskø er en abstrakt datatype som ligner på en vanlig kø- eller stabeldatastruktur. Elementer som er lagret i elementer er avhengig av prioriteten definert fra lav til høy. PriorityQueue er basert på prioritetshaugen.

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

Produksjon
10>

128. Forklar LinkedList-klassen.

LinkedList-klassen er Java som bruker en dobbeltlenket liste for å lagre elementer. Den arver AbstractList-klassen og implementerer List og Deque-grensesnitt. Egenskapene til LinkedList-klassen er nevnt nedenfor:

  1. LinkedList-klasser er ikke-synkroniserte.
  2. Opprettholder innsettingsrekkefølge.
  3. Den kan brukes som en liste, stabel eller kø.

Syntaks:

LinkedList list_name=new LinkedList();>

129. Hva er Stack-klassen i Java og hva er de ulike metodene som tilbys av den?

En Stack-klasse i Java er en LIFO-datastruktur som implementerer Last In First Out-datastrukturen. Den er avledet fra en Vector-klasse, men har funksjoner som er spesifikke for stabler. Stack-klassen i java gir følgende metoder:

  • kikk(): returnerer det øverste elementet fra stabelen uten å fjerne det
  • tømme(): returnerer true hvis stabelen er tom og usann ellers
  • trykk(): skyver et element på toppen av stabelen
  • pop(): fjerner og returnerer det øverste elementet fra stabelen
  • Søk(): returnerer den 1, baserte posisjonen til objektet fra toppen av stabelen. Hvis objektet ikke er i stabelen, returnerer det -1

130. Hva er satt i Java Collections-rammeverket og liste ned de ulike implementeringene?

Sett er samlinger som ikke lagrer dupliserte elementer. De holder ikke orden på elementene. Java Collections-rammeverket gir flere implementeringer av Set-grensesnittet, inkludert:

  • HashSet: HashSet i Java, lagrer elementene i en has-tabell som gir raskere oppslag og raskere innsetting. HashSet er ikke bestilt.
  • LinkedHashSet: LinkedHashSet er en implementering av HashSet som opprettholder innsettingsrekkefølgen til elementene.
  • Tresett: TreeSet lagrer elementene i en sortert rekkefølge som bestemmes av den naturlige rekkefølgen av elementene eller av en tilpasset komparator levert på tidspunktet for opprettelsen.

131. Hva er HashSet-klassen i Java og hvordan lagrer den elementer?

HashSet-klassen implementerer Set-grensesnittet i Java Collections Framework og er medlem av HashSet-klassen. I motsetning til dupliserte verdier, lagrer den en samling av distinkte elementer. I denne implementeringen tilordnes hvert element til en indeks i en matrise ved hjelp av en hash-funksjon, og indeksen brukes til å raskt få tilgang til elementet. Den produserer en indeks for elementet i matrisen der det er lagret basert på inngangselementet. Forutsatt at hash-funksjonen fordeler elementene mellom bøttene på riktig måte, gir HashSet-klassen konstant-tid ytelse for grunnleggende operasjoner (legg til, fjern, inneholder og størrelse).

132. Hva er LinkedHashSet i Java Collections Framework?

LinkedHashSet er en ordnet versjon av Hashset vedlikeholdt av en dobbeltkoblet liste på tvers av alle elementene. Det er veldig nyttig når iterasjonsrekkefølge er nødvendig. Under iterasjon i LinkedHashSet blir elementene returnert i samme rekkefølge som de er satt inn.

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

Produksjon
Values:[1, 2, 5, 3]>

133. Hva er et kartgrensesnitt i Java?

Kart-grensesnitt-i-Java-660

Kartgrensesnittet finnes i Java-samlingen og kan brukes med Java.util-pakken. Et kartgrensesnitt brukes til å kartlegge verdier i form av et nøkkelverdiskjema. Kartet inneholder alle unike nøkler. Det gir også metoder assosiert med det som containsKey(), inneholder verdi (), etc.

Det er flere typer kart i kartgrensesnittet som nevnt nedenfor:

  1. Sortert kart
  2. Trekart
  3. HashMap
  4. LinkedHashMap

134. Forklar Treemap i Java

TreeMap er en type kart som lagrer data i form av nøkkelverdi-par. Det implementeres ved hjelp av det rød-svarte treet. TreeMaps funksjoner er:

  1. Den inneholder bare unike elementer.
  2. Den kan ikke ha en NULL-nøkkel
  3. Den kan ha flere NULL-verdier.
  4. Den er ikke-synkronisert.
  5. Den opprettholder stigende rekkefølge.

135. Hva er EnumSet?

EnumSet er en spesialisert implementering av Set-grensesnittet for bruk med oppregningstype. Noen få funksjoner i EnumSet er:

  1. Den er ikke-synkronisert.
  2. Raskere enn HashSet.
  3. Alle elementene i et EnumSet må komme fra en enkelt oppregningstype.
  4. Den tillater ikke null-objekter og kaster NullPointerException for unntak.
  5. Den bruker en feilsikker iterator.

Syntaks:

public abstract class EnumSet>

Parameter: E spesifiserer elementene.

136. Hva er BlockingQueue?

BlockingQueue-768

En blokkeringskø er en kø som støtter operasjonene som venter på at køen ikke blir tom mens elementet hentes og fjernes, og venter på at det blir ledig plass i køen mens elementet legges til.

Syntaks:

public interface BlockingQueue extends Queue>

Parametere: E er typen elementer som er lagret i samlingen

137. Hva er ConcurrentHashMap i Java og implementerer du det?

ConcurrentHashMap er implementert ved hjelp av Hashtable.

Syntaks:

public class ConcurrentHashMap  extends AbstractMap  implements ConcurrentMap, Serializable>

Parametere : K er nøkkelen Objekttype og V er verdien Objekttype

138. Kan du bruke hvilken som helst klasse som en kartnøkkel?

Ja, vi kan bruke hvilken som helst klasse som en kartnøkkel hvis den følger visse forhåndsdefinerte regler nevnt nedenfor:

  1. Klassen som overstyrer equals()-metoden må også overstyre hashCode()-metoden
  2. ConcurrentHashMap-klassen er trådsikker.
  3. Standard samtidighetsnivå for ConcurrentHashMap er 16.
  4. Å sette inn null-objekter i ConcurrentHashMap er ikke mulig som nøkkel eller verdi.

139. Hva er en iterator?

Iterator-i-Java-768

Iterator-grensesnittet gir metoder for å iterere over enhver samling i Java. Iterator er erstatningen for Enumeration i Java Collections Framework. Den kan hente en iteratorforekomst fra en samling ved å bruke _iterator()_-metoden. Den lar også innringeren fjerne elementer fra den underliggende samlingen under iterasjonen.

140. Hva er en oppregning?

Opptelling er en brukerdefinert datatype. Det brukes hovedsakelig til å tildele navn til integrerte konstanter, navnene gjør et program lett å lese og vedlikeholde. Hovedmålet med enumet er å definere brukerdefinerte 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. Hva er forskjellen mellom Samling og Samlinger?

Samling

Samlinger

Samlingen er et grensesnitt.

Samlinger er en klasse.

Det gir standardfunksjonaliteten til datastruktur.

Det er å sortere og synkronisere samlingselementene.

Den gir metodene som kan brukes for datastrukturen.

Den gir statiske metoder som kan brukes til ulike operasjoner.

142. Skille mellom Array og ArrayList i Java.

Array

ArrayList

Endimensjonal eller flerdimensjonal

Endimensjonal

For og for hver brukt til iterasjon

Her brukes iterator for å krysse riverArrayList

length nøkkelord returnerer størrelsen på matrisen.

size()-metoden brukes til å beregne størrelsen på ArrayList.

Matrisen har fast størrelse.

ArrayList-størrelsen er dynamisk og kan økes eller reduseres ved behov.

Den er raskere som ovenfor vi ser den av fast størrelse

Den er relativt tregere på grunn av dens dynamiske natur

Primitive datatyper kan lagres direkte i usannsynlige objekter.

Primitive datatyper legges ikke direkte til usannsynlige arrays, de legges til indirekte ved hjelp av autoboxing og unboxing

De kan ikke legges til her, derfor er typen i det usikre.

De kan legges til her og dermed gjøre ArrayList typesikker.

Oppdragsoperatøren tjener kun formålet

Her brukes en spesiell metode kjent som add() metode

143. Hva er forskjellen mellom Array og Collection i Java?

Array

Samlinger

Array i Java har en fast størrelse.

Samlinger i Java har dynamiske størrelser.

I en matrise lagres elementer i sammenhengende minneplasseringer.

I samlinger lagres ikke nødvendigvis elementer i sammenhengende minneplasseringer.

Objekter og primitive datatyper kan lagres i en matrise.

Vi kan kun lagre gjenstander i samlinger.

Manuell manipulering er nødvendig for å endre størrelsen på matrisen.

Endre størrelse i samlinger håndteres automatisk.

Arrayen har grunnleggende metoder for manipulering.

Samlinger har avanserte metoder for manipulasjon og iterasjon.

Arrayen er tilgjengelig siden begynnelsen av Java.

Samlinger ble introdusert i Java 1.2.

144. Forskjellen mellom ArrayList og LinkedList.

ArrayList

LinkedList

ArrayList er implementert som en utvidbar Array.

LinkedList er implementert som en dobbeltlenket liste.

I ArrayList lagres elementer i sammenhengende minneplasseringer

LinkedList-elementer lagres i ikke-sammenhengende minneplasseringer ettersom hvert element har en referanse til neste og forrige elementer.

ArrayLists er raskere for tilfeldig tilgang.

LinkedLists er raskere for innsettings- og slettingsoperasjoner

ArrayLists er mer minneeffektive.

LinkedList er mindre minneeffektivt

ArrayLists Bruk mer minne på grunn av å opprettholde array-størrelsen.

LinkedList Bruker mindre minne da den kun har referanser til elementer

Søkeoperasjonen er raskere i ArrayList.

Søkeoperasjonen er tregere i LinkedList

145. Skille mellom ArrayList og Vector i Java.

ArrayList

Vektor

ArrayLists er implementert som en utvidbar matrise.

Vector er implementert som en vekstbar matrise.

ArrayList er ikke synkronisert.

Vektoren er synkronisert.

ArrayLists er raskere for ikke-samtidige operasjoner.

Vector er tregere for ikke-samtidige operasjoner på grunn av ekstra overhead for synkronisering.

ArrayLists ble introdusert i Java 1.2.

Vector ble introdusert i JDK 1.0.

Anbefalt for bruk i ett-tråds miljø.

Vektorer anbefales for bruk i et flertrådsmiljø.

Standard innledende kapasitet for ArrayLists er 10.

I Vectors er standard startkapasitet 10, men standardøkningen er dobbelt så stor.

ArrayList-ytelsen er høy.

Vektorytelsen er lav.

146. Hva er forskjellen mellom Iterator og ListIterator?

Iterator

ListIterator

Kan krysse elementer som er tilstede i samlingen bare i retning fremover.

Kan krysse elementer som finnes i samlingen både fremover og bakover.

Brukes til å krysse kart, liste og sett.

Kan bare krysse List og ikke de to andre.

Indekser kan ikke fås ved hjelp av Iterator

Den har metoder som nextIndex() og previousIndex() for å hente indekser av elementer når som helst mens du går gjennom listen.

Kan ikke endre eller erstatte elementer som finnes i samlingen

Kan modifisere eller erstatte elementer ved hjelp av sett(E e)

Kan ikke legge til elementer, og kaster også ConcurrentModificationException.

Kan enkelt legge til elementer i en samling når som helst.

Enkelte metoder for Iterator er next(), remove() og hasNext().

Visse metoder for ListIterator er neste(), forrige(), hasNext(), hasPrevious(), add(E e).

147. Skille mellom HashMap og HashTable.

HashMap

HashTable

HashMap er ikke synkronisert

HashTable er synkronisert

Én nøkkel kan være en NULL-verdi

NULL-verdier er ikke tillatt

Iteratoren brukes til å krysse HashMap.

Både Iterator og Enumertar kan brukes

HashMap er raskere.

HashTable er tregere sammenlignet med HashMap.

148. Hva er forskjellen mellom Iterator og Enumeration?

Iterator

Oppregning

Iteratoren kan krysse både arv så vel som ikke-legacy elementer.

Oppregning kan bare krysse eldre elementer.

Iteratoren er feilrask.

Oppregningen er ikke rask.

Iteratorene er tregere.

Opptellingen er raskere.

Iteratoren kan utføre en fjerningsoperasjon mens den går gjennom samlingen.

Enumerasjonen kan bare utføre traverseringsoperasjoner på samlingen.

149. Hva er forskjellen mellom Comparable og Comparator?

Sammenlignbar

Komparator

Grensesnittet er til stede i java.lang-pakken.

Grensesnittet er til stede i java.util-pakken.

Gir compareTo()-metoden for å sortere elementer.

Gir compare()-metoden for å sortere elementer.

Den gir enkelt sorteringssekvenser.

Det gir flere sorteringssekvenser.

Logikken for sortering må være i samme klasse hvis objektet du skal sortere.

Logikken for sortering bør være i en egen klasse for å skrive ulik sortering basert på ulike attributter til objekter.

Metode sorterer dataene i henhold til fast sorteringsrekkefølge.

Metode sorterer dataene i henhold til den tilpassede sorteringsrekkefølgen.

Det påvirker den opprinnelige klassen.

Det påvirker ikke den opprinnelige klassen.

Implementert ofte i API-en av kalender, Wrapper-klasser, dato og streng.

Den er implementert for å sortere forekomster av tredjepartsklasser.

150. Hva er forskjellen mellom sett og kart?

Sett

Kart

Set-grensesnittet er implementert ved hjelp av java.util-pakken.

Kartet er implementert ved hjelp av java.util-pakken.

Det kan utvide samlingsgrensesnittet.

Det utvider ikke samlingsgrensesnittet.

Den tillater ikke dupliserte verdier.

Det tillater dupliserte verdier.

Settet kan bare sortere én nullverdi.

Kartet kan sortere flere nullverdier.

Java Intermediate Intermediate Spørsmål

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

En FailFast iterator er en iterator som kaster en ConcurrentModificationException hvis den oppdager at den underliggende samlingen har blitt endret mens iteratoren brukes. Dette er standardoppførselen til 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);  }  }  } }>

Produksjon:

Exception in thread 'main' java.util.ConcurrentModificationException>

En FailSafe iterator kaster ikke en ConcurrentModificationException hvis den underliggende samlingen endres mens iteratoren brukes. Alternativt lager den et øyeblikksbilde av samlingen på det tidspunktet iteratoren opprettes og itererer over øyeblikksbildet. 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. Hva er unntakshåndtering?

An Unntak er en hendelse som avbryter den normale flyten av programmet og krever spesiell behandling. Under kjøringen av et program kan feil og uplanlagte hendelser håndteres ved å bruke Java Exception Handling-mekanismen. Nedenfor er noen grunner til at unntak forekommer i Java:

  • Enhetsfeil
  • Tap av nettverkstilkobling
  • Kodefeil
  • Åpne en utilgjengelig fil
  • Ugyldig brukerinndata
  • Fysiske begrensninger (tom diskminne)

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

Typer-av-unntak-i-Java-660

Det er generelt to typer unntak i Java:

  • Innebygde unntak: Innebygde unntak i Java leveres av Java Libraries. Disse unntakene kan videre deles inn i to underkategorier, dvs. avmerket og uavmerket unntak. Nedenfor er noen av de innebygde unntakene i Java:
    • ArrayIndexOutOfBoundsExceptions
    • ClassNotFoundException
    • FileNotFoundException
    • IOException
    • NullPointerException
    • Aritmetisk unntak
    • AvbruttUntak
    • RuntimeException
  • Brukerdefinerte unntak: Brukerdefinerte unntak er definert av programmererne selv for å håndtere noen spesifikke situasjoner eller feil som ikke dekkes av innebygde unntak. For å definere brukerdefinerte unntak må en ny klasse som utvider den aktuelle unntaksklassen defineres. Brukerdefinerte unntak i Java brukes når de innebygde unntakene er i Java.

154. Forskjellen mellom en feil og et unntak.

Feil

Unntak

Gjenoppretting fra feil er ikke mulig.

Gjenopprett fra unntak ved enten å bruke en try-catch-blokk eller kaste unntak tilbake til den som ringer.

Feil er alle ukontrollerte typer i Java.

Det inkluderer både sjekkede og ukontrollerte typer som forekommer.

Feil er hovedsakelig forårsaket av miljøet der programmet kjører.

Programmet er hovedsakelig ansvarlig for å forårsake unntak.

Feil kan oppstå både ved kompilering og kjøretid. Kompileringstid: Syntaksfeil, Kjøretid: Logisk feil.

Alle unntak forekommer under kjøring, men avmerkede unntak er kjent for kompilatoren mens uavmerket ikke er det.

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

De er definert i java.lang.Exception-pakken

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

Eksempler : Avmerket unntak: SQLException, IOException Ukontrollerte unntak: ArrayIndexOutOfBoundException, NullPointerException, ArithmeticException.

155. Forklar hierarkiet til Java Exception-klasser.

Unntak-Handling-768

Alle unntaks- og feiltyper i Java er underklasser av klassen throwable, som er basisklassen til hierarkiet. Denne klassen brukes deretter for eksepsjonelle forhold som brukerprogrammer bør fange opp. NullPointerException er et eksempel på et slikt unntak. En annen gren, feil brukes av Java-kjøringssystemet for å indikere feil som har med JRE å gjøre. StackOverflowError er et eksempel på en av slike feil.

156. Forklar kjøretidsunntak.

Runtime Unntak er unntak som oppstår under utførelse av en kode, i motsetning til kompileringstidsunntak som oppstår under kompilering. Kjøretidsunntak er uavmerkede unntak, siden de ikke blir tatt med av JVM.

Eksempler på kjøretidsunntak i Java inkluderer:

  • NullPointerException: Dette skjer når en applikasjon prøver å bruke en null-objektreferanse.
  • ArrayIndexOutOfBoundsException: Dette skjer når et program prøver å få tilgang til en matriseindeks som er utenfor grensene.
  • ArithmeticException: Dette skjer når en applikasjon prøver å dele på null.
  • IllegalArgumentException: Dette skjer når en metode sendes på et ulovlig eller upassende argument.

I motsetning til sjekkede unntak, krever ikke kjøretidsunntak en erklæring i throws-klausulen eller fangst i en try-catch-blokk. Det er imidlertid tilrådelig å håndtere kjøretidsunntak for å gi meningsfulle feilmeldinger og forhindre systemkrasj. Fordi kjøretidsunntak gir mer spesifikk informasjon om problemet enn sjekkede unntak, gjør de det mulig for utviklere å oppdage og korrigere programmeringsfeil enklere og raskere.

157. Hva er NullPointerException?

Det er en type kjøretidsunntak som blir kastet når programmet prøver å bruke en objektreferanse som har en nullverdi. Hovedbruken av NullPointerException er å indikere at ingen verdi er tilordnet en referansevariabel, den brukes også for å implementere datastrukturer som koblede lister og trær.

158. Når blir ArrayStoreException kastet?

ArrayStoreException blir kastet når det gjøres et forsøk på å lagre feil type objekt i en rekke 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. Hva er forskjellen mellom avmerket unntak og ukontrollert unntak?

Avmerket unntak:

Kontrollerte unntak er unntakene som kontrolleres under kompileringstiden for et program. I et program, hvis noen kode i en metode kaster et sjekket unntak, må metoden enten håndtere unntaket eller må spesifisere unntaket ved å bruke nøkkelordet throws.

Avmerkede unntak er av to typer:

  • Fullt sjekkede unntak: alle barneklassene blir også sjekket, som IOException og InterruptedException.
  • Delvis avmerkede unntak: noen av barneklassene er ikke merket av, som et unntak.

Uavmerket unntak:

Uavmerket er unntakene som ikke er merket på kompileringstidspunktet for et program. Unntak under Error og RuntimeException-klassene er ukontrollerte unntak, alt annet under throwable er sjekket.

160. Hva er basisklassen for feil og unntak?

Unntak-Handling-768

Feil er en ulovlig operasjon utført av brukeren som forårsaker unormalitet i programmet. Unntak er de uventede hendelsene eller forholdene som kommer mens du kjører programmet, unntak forstyrrer den normale flyten av programmets instruksjoner.

Feil og unntak har begge en felles overordnet klasse som er java.lang.Throwable-klassen.

161. Er det nødvendig at hver forsøksblokk må følges av en fangstblokk?

Nei, det er ikke nødvendig å bruke catch-blokk etter prøveblokk i Java, da vi kan lage en annen kombinasjon med endelig blokk. Til slutt er blokken som kjører til tross for at unntaket er kastet eller ikke.

162. Hva er unntaksformidling?

Utbredelse av unntak er en prosess der unntaket slippes fra toppen til bunnen av stabelen. Hvis det ikke fanges én gang, faller unntaket igjen ned til forrige metode, og så videre til det blir fanget eller til det når bunnen av anropsstakken.

163. Hva vil skje hvis du setter System.exit(0) på try or catch-blokken? Vil endelig blokkering utføres?

System.exit(int) har muligheten til å kaste SecurityException. Så hvis unntaket blir kastet i tilfelle av sikkerhet, vil blokkeringen til slutt bli utført, ellers vil JVM bli stengt mens systemet kalles. exit(0) på grunn av hvilken blokkering til slutt ikke vil bli utført.

164. Hva forstår du med Object Cloning og hvordan oppnår du det i Java?

Det er prosessen med å lage en nøyaktig kopi av ethvert objekt. For å støtte dette, må en java-klasse implementere det Cloneable-grensesnittet til java.lang-pakken og overstyre clone()-metoden levert av Object-klassen hvis syntaks er:

Protected Object clone() kaster CloneNotSupportedException{ return (Object)super.clone();}I tilfelle Cloneable-grensesnittet ikke er implementert og bare metoden overstyres, resulterer det i CloneNotSupportedException i Java.

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

Unntak er ansvarlige for å brått avslutte kjøringen av programmet mens det kjøres, og koden som er skrevet etter at unntaket inntreffer, blir ikke utført.

166. Hva er bruken av det endelige søkeordet?

Det siste nøkkelordet brukes til å gjøre funksjoner ikke-virtuelle. Som standard er alle funksjonene virtuelle, så for å gjøre det ikke-virtuelt bruker vi det siste nøkkelordet.

167. Hvilket formål oppfyller søkeordene final, finalize og finalize?

Jeg). endelig:

final er et nøkkelord som brukes med variabelen, metoden eller klassen slik at de ikke kan overstyres.

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

Produksjon:

./GFG.java:6: error: cannot assign a value to final variable x  x=50;  ^ 1 error>

ii). endelig

endelig er en kodeblokk brukt med try-catch i unntakshåndtering. Kode skrevet i endelig blokk kjører til tross for at unntak er kastet eller ikke.

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

Produksjon
Try block Always runs even without exceptions>

iii). fullføre

Det er en metode som kalles rett før sletting/destruksjon av objektene som er kvalifisert for søppelinnsamling for å utføre oppryddingsaktivitet.

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

Produksjon
Main function running>

168. Hva er forskjellen mellom this() og super() i Java?

dette ( )

super( )

Den representerer gjeldende forekomst av klassen.

Den representerer gjeldende forekomst av overordnet klasse.

Kaller standardkonstruktøren for samme klasse.

Kaller standardkonstruktøren til basisklassen.

Få tilgang til metodene i samme klasse.

Få tilgang til metodene til overordnet klasse.

Poeng gjeldende klasseforekomst.

Peker på superklasseforekomsten.

169. Hva er multitasking?

Multitasking i Java refererer til et programs kapasitet til å utføre flere oppgaver samtidig. Tråder, som er raske operasjoner i et enkelt program, kan gjøre dette. Å utføre mange ting på en gang er kjent 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. Hva mener du med et Multithreaded-program?

Flertrådede programmer i Java inneholder tråder som kjører samtidig i stedet for å kjøre sekvensielt. En datamaskin kan bruke ressursene sine mer effektivt ved å kombinere flere oppgaver samtidig. Ethvert program med multithreading lar mer enn én bruker bruke programmet samtidig uten å kjøre flere kopier. Et multithreaded program er designet for å kjøre flere prosesser samtidig som kan forbedre ytelsen til et program og lar programmet bruke flere prosessorer og forbedrer den totale gjennomstrømningen.

171. Hva er fordelene med multithreading?

Det er flere fordeler med å bruke multithreading, som er som følger:

  • Respons: Brukerresponsen øker fordi multithreading interaktiv applikasjon tillater kjørende kode selv når delen er blokkert eller utfører en langvarig prosess.
  • Ressursdeling: Prosessen kan utføre meldingsoverføring og delt minne på grunn av multithreading.
  • Økonomi: Vi er i stand til å dele minne på grunn av hvilke prosessene er økonomiske.
  • Skalerbarhet: Multithreading på flere CPU-maskiner øker parallelliteten.
  • Bedre kommunikasjon: Trådsynkroniseringsfunksjoner forbedrer kommunikasjon mellom prosesser.
  • Utnyttelse av multiprosessorarkitektur
  • Minimert bruk av systemressurser

172. Hva er de to måtene tråden kan opprettes på?

Multithreading er en Java-funksjon som tillater samtidig kjøring av to eller flere deler av et program for maksimal utnyttelse av CPU. Generelt er tråder små, lette prosesser med separate veier for utførelse. Disse trådene bruker delt minne, men de fungerer uavhengig, så hvis en tråd mislykkes, påvirker det ikke de andre trådene. Det er to måter å lage en tråd på:

  • Ved å utvide trådklassen
  • Ved å implementere et kjørbart grensesnitt.

Ved å utvide trådklassen

Vi lager en klasse som utvider java.lang.Trådklasse . Denne klassen overstyrer run()-metoden som er tilgjengelig i Thread-klassen. En tråd begynner sitt liv innenfor run()-metoden.

Syntaks:

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

Ved å implementere Runnable-grensesnittet

Vi oppretter en ny klasse som implementerer java.lang.Kjørbar grensesnitt og overstyr run()-metoden. Deretter instansierer vi et Thread-objekt og kaller start()-metoden på dette objektet.

Syntaks:

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

173. Hva er en tråd?

Tråder i Java er underprosesser med lettvekt med den minste enhet av prosesser og har også separate veier for utførelse. Disse trådene bruker delt minne, men de fungerer derfor uavhengig hvis det er et unntak i tråder som ikke påvirker driften av andre tråder til tross for at de deler samme minne. En tråd har sin egen programteller, utførelsesstack og lokale variabler, men den deler den samme minneplassen med andre tråder i samme prosess. Java gir innebygd støtte for multithreading gjennom Kjørbart grensesnitt og Trådklasse .

174. Skille mellom prosess og tråd?

En prosess og en tråd er begge utførelsesenheter i et datasystem, men de er forskjellige på flere måter:

Prosess

Tråd

En prosess er et program under utførelse.

En tråd er en enkelt sekvens av instruksjoner i en prosess.

Prosessen tar lengre tid å avslutte.

Tråden tar kortere tid å avslutte.

Prosessen tar mer tid for kontekstbytte.

Tråden tar mindre tid for kontekstbytte.

Prosessen er mindre effektiv når det gjelder kommunikasjon.

Tråden er mer effektiv når det gjelder kommunikasjon.

Prosessen er isolert.

Tråder deler minne.

Prosessen har sin egen prosesskontrollblokk, stabel og adresserom.

Tråden har foreldrenes PCB, sin egen trådkontrollblokk og stabel og felles adresserom.

Prosessen deler ikke data med hverandre.

Tråder deler data med hverandre.

175. Beskriv livssyklusen til tråden?

Cycle-of-thread-768

EN tråd i Java til enhver tid eksisterer i en av følgende tilstander. En tråd ligger bare i en av de viste tilstandene til enhver tid:

  1. Ny: Tråden er opprettet, men har ikke startet ennå.
  2. Kjørbar: Tråden kjører, utfører oppgaven sin, eller er klar til å kjøre hvis det ikke finnes andre tråder med høyere prioritet.
  3. Blokkert: Tråden er midlertidig suspendert, venter på en ressurs eller en hendelse.
  4. Venter: Tråden venter på at en annen tråd skal utføre en oppgave eller på en spesifisert tid som skal gå.
  5. Avsluttet: Tråden har fullført oppgaven eller blitt avsluttet av en annen tråd.

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

suspend()-metoden til Thread-klassen i Java suspenderer kjøringen av en tråd midlertidig. Når en tråd er suspendert, går den inn i en blokkert tilstand og den vil ikke bli planlagt av operativsystemet, noe som betyr at den ikke vil være i stand til å utføre oppgaven sin før den gjenopptas. Det finnes sikrere og fleksible alternativer til suspend()-metodene i det moderne programmeringsspråket java. Denne metoden returnerer ingen verdi.

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

Produksjon:

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ådklasseutførelse.

Java gir innebygd støtte for flertrådsprogrammering. Hovedtråden regnes som overordnet tråd for alle de andre trådene som opprettes under programkjøringen. Hovedtråden opprettes automatisk når programmet begynner å kjøre. Denne tråden utfører hovedmetoden til programmet. Det er ansvarlig for å utføre hovedlogikken til Java-programmet samt håndtere brukerinndataoperasjonene. Hovedtråden fungerer som basistråden som alle andre undertråder er avledet fra.

Tråd-Klasse-Utførelse-768

178. Hva er en demon-tråd?

En daemon-tråd i Java er en lavprioritert tråd som brukes til å utføre bakgrunnsoperasjoner eller oppgaver som brukes til å utføre kontinuerlig. slik som søppelinnsamling, signalutsendelser, handlingslyttere osv. Daemon-tråder i Java har lavere prioritet enn brukertråder, noe som betyr at de kun kan kjøres når ingen brukertråder kjører. Daemon-tråder i Java er nyttige funksjoner som kreves for bakgrunnsoppgaver som ikke krever eksplisitt avslutning eller sluttføring. Den tillater mer effektiv bruk av systemressurs og brukes til å forenkle ressurser og kan forenkle langvarige oppgaver.

179. Hva er måtene en tråd kan gå inn i ventetilstand på?

Tråd er en lett prosess som kjøres samtidig med den andre tråden i en enkelt prosess. Hver tråd kan utføre en annen oppgave og dele ressursene i en enkelt prosess. Tråd i Java kan gå inn i ventetilstand på mange forskjellige måter:

  • Sleep()-metoden Anrop: Søvnen ()-metoden brukes til å pause utførelsen av tråden i en bestemt tidsperiode. Mens tråden er satt på pause, går den inn i ventetilstand.
  • Vent() metode: Denne metoden brukes til å vente en tråd til den andre tråden signaliserer at den skal våkne. Tråden går i ventetilstand til den mottar et varsel fra en annen tråd.
  • Join() metode: Join()-metoden kan brukes til å vente på at tråden fullfører utførelsen. Ringetråden går i ventetilstand til måltråden er fullført.
  • Venter på I/O-operasjoner: Hvis tråden venter på at Input/Output-operasjonen skal fullføres, går den inn i ventetilstand til operasjonen er fullført.
  • Synkroniseringsproblemer: Hvis det er noen synkroniseringsproblemer i en flertrådsapplikasjon, kan tråder gå i ventetilstand til synkroniseringsproblemene er løst.

180. Hvordan foregår flertråding på en datamaskin med en enkelt CPU?

Java bruker en teknikk som kalles time-sharing, ofte referert til som time-slicing, for å implementere multi-threading på datamaskiner med en enkelt CPU. Utseendet til parallell kjøring skapes ved at CPU-en bytter mellom aktive tråder. Operativsystemet er ansvarlig for å tildele CPU-tid til hver tråd sekvensielt og planlegge trådene.

For å stoppe tråder fra å samhandle med hverandre og skape rasesituasjoner eller andre problemer, har Java en rekke måter å styre trådens oppførsel på, inkludert synkronisering og låsing. Det er mulig å lage flertrådede programmerere som fungerer riktig og effektivt på en maskin med en enkelt CPU ved å regulere interaksjonen mellom tråder og sørge for at viktige kodedeler er synkronisert. I motsetning til å kjøre det samme programmet på en datamaskin med flere CPUer eller kjerner, kan multi-threading på en enkelt CPU bare gi inntrykk av parallellitet, og faktiske ytelsesgevinster kan være beskjedne. Operativsystemet deler CPU-tiden som er tilgjengelig når mange tråder kjører på en enkelt CPU i små tidsstykker og gir hver tråd et tidsstykke å kjøre. Rask veksling mellom trådene av operativsystemet skaper inntrykk av parallell utførelse. Byttingen mellom tråder ser ut til å være umiddelbar fordi tidsskivene ofte er veldig små, i størrelsesorden millisekunder eller mikrosekunder.

Java-intervjuspørsmål for erfarne

181. Hva er de forskjellige typene trådprioriteringer i Java? Og hva er standardprioriteten til en tråd tildelt av JVM?

Prioriteter i tråder er et konsept der hver tråd har en prioritet som man på lekmannsspråk kan si at hvert objekt har prioritet her som er representert med tall fra 1 til 10. Det er forskjellige typer trådegenskaper i Java nevnt nedenfor:

  • MIN_PRIORITY
  • MAX_PRIORITY
  • NORM_PRIORITY

Som standard er tråden tildelt NORM_PRIORITY.

182. Hvorfor er søppelinnsamling nødvendig i Java?

For Java er søppelinnsamling nødvendig for å unngå minnelekkasjer som kan føre til at programmet krasjer og blir ustabilt. Det er ingen måte å unngå søppelinnsamling i Java. I motsetning til C++, hjelper Garbage collection i Java programmerere til å fokusere på utviklingen av applikasjonen i stedet for å administrere minneressurser og bekymre seg for minnelekkasje. Java Virtual Machine (JVM) administrerer automatisk minnet med jevne mellomrom ved å kjøre en søppeloppsamler som frigjør ubrukt minne i applikasjonen. Søppelinnsamling gjør Java-minne effektivt fordi det fjerner ikke-refererte objekter fra haugminnet.

183. Hva er ulempen med Garbage Collection?

Bortsett fra mange fordeler, har Garbage Collector visse ulemper nevnt nedenfor:

  1. Den største ulempen med Garbage Collection er at det kan forårsake pauser i en applikasjons utførelse, da den jobber for å tømme minnet som bremser ytelsen til applikasjonen.
  2. Prosessen med søppelinnsamling er ikke-deterministisk, noe som gjør det vanskelig å forutsi når søppelinnsamling skjer, noe som forårsaker uforutsigbar oppførsel i applikasjoner. For eksempel, hvis vi skriver et program, er det vanskelig for programmerere å avgjøre om problemet skyldes søppelinnsamling eller andre faktorer i programmet.
  3. Søppelinnsamling kan også øke minnebruken hvis programmet lager og forkaster mange kortlivede objekter.

184. Forklar forskjellen mellom en mindre, større og full søppelsamling.

Java Virtual Machine (JVM) fjerner objekter som ikke lenger er i bruk ved hjelp av en søppeloppsamler som med jevne mellomrom sjekker og fjerner disse objektene. Det er forskjellige typer søppelinnsamling i JVM, hver med forskjellige egenskaper og ytelsesimplikasjoner. Hovedtypene for søppelinnsamling er:

  • Mindre søppelhenting: Også kjent som den unge generasjonens søppelinnsamling, brukes denne typen søppelsamling til å samle og gjenvinne minne som brukes av kortlivede objekter (objekter som raskt opprettes og kastes).
  • Stor søppelinnsamling: Også kjent som gammelgenerasjons søppelinnsamling, brukes denne typen søppelsamling til å samle og gjenvinne minne som brukes av gjenstander med lang levetid (gjenstander som overlever flere mindre søppelsamlinger og blir forfremmet til den gamle generasjonen).
  • Full søppelsamling: Under full søppelhenting samles og gjenvinnes minner fra alle generasjoner, inkludert minner fra store og små. En fullstendig søppelinnsamling tar normalt lengre tid å fullføre enn en mindre eller større søppelsamling som fører til at appen stopper midlertidig.

185. Hvordan vil du identifisere større og mindre søppelsamlinger i Java?

Stor søppelinnsamling jobber på overlevende-området og Minor søppelinnsamling jobber på Eden-området for å utføre en mark-and-sweep-rutine. Og vi kan identifisere begge basert på utdataene der den mindre samlingen skriver ut GC, mens hovedsamlingen skriver ut Full GC for tilfellet hvor søppelinnsamlingslogging er aktivert med -XX:PrintGCDetails eller verbose:gc.

186. Hva er en minnelekkasje, og hvordan påvirker den søppelinnsamlingen?

I Java kan minnelekkasjer være forårsaket av en rekke faktorer, for eksempel å ikke lukke ressurser ordentlig, holde på objektreferanser lenger enn nødvendig, eller å lage for mange objekter unødvendig. Det er situasjoner der søppelsamleren ikke samler gjenstander fordi det er en referanse til disse gjenstandene. I disse situasjonene hvor applikasjonen lager mange objekter og ikke bruker dem og hvert objekt har noen gyldige referanser, kan ikke en søppelsamler i Java ødelegge objektene. Disse ubrukelige objektene som ikke gir noen verdi til programmet er kjent som minnelekkasjer. Minnelekkasjer kan påvirke søppelinnsamlingen negativt ved å hindre søppeloppsamleren i å gjenvinne ubrukt minne. Denne oppførselen vil føre til treg ytelse eller noen ganger systemfeil. I et program er det viktig å unngå minnelekkasjer ved å administrere ressurser og objektreferanser riktig.

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

Produksjon:

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. Nevn noen klasser som finnes i java.util.regex-pakken.

Regular Expressions eller Regex in Java er et API som brukes til å søke og manipulere strenger i Java. Den lager strengmønstre som kan trekke ut dataene som trengs fra strengene eller kan generalisere et mønster.

Det er 3 klasser til stede i java.util.regex nevnt nedenfor:

  • Mønsterklasse: Kan definere mønstre
  • Matcher Class: Kan utføre matchoperasjoner på tekst ved hjelp av mønstre
  • PatternSyntaxException Class: Kan indikere en syntaksfeil i et regulært uttrykksmønster.

I tillegg, bortsett fra de 3 klassene, består pakken av et enkelt grensesnitt MatchResult Interface som kan brukes til å representere resultatet av en matchoperasjon.

188. Skriv et regulært uttrykk for å validere et passord. Et passord må starte med et alfabet og etterfulgt av alfanumeriske tegn; Lengden må være mellom 8 og 20.

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

Forklaring:

  • ^ brukes for startkarakteren til strengen.
  • (?=.*[0-9]) brukt for et siffer må forekomme minst én gang.
  • (?=.*[a-z]) brukt for små bokstaver må forekomme minst én gang.
  • (?=.*[A-Z]) brukes for et alfabet med store bokstaver som må forekomme minst én gang i understrengen.
  • (?=.*[@#$%^&-+=()] brukes for et spesialtegn som må forekomme minst én gang.
  • (?=S+$) hvite mellomrom tillater ikke i hele strengen.
  • .{8, 20} brukt for minst 8 tegn og maksimalt 20 tegn.
  • $ brukes for slutten av strengen.

189. Hva er JDBC?

JDBC standard API brukes til å koble sammen Java-applikasjoner og relasjonsdatabaser. Den gir en samling av klasser og grensesnitt som lar programmerere bruke programmeringsspråket Java til å kommunisere med databasen. Klassene og grensesnittet til JDBC lar applikasjonen sende forespørsler som er laget av brukere til den spesifiserte databasen. Det er generelt fire komponenter av JDBC som den samhandler med databasen på:

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

JDBC-768

190. Hva er JDBC-driver?

JDBC-driver er en programvarekomponent som brukes til å gjøre det mulig for en Java-applikasjon å samhandle med databasen. JDBC gir implementeringen av JDBC API for et spesifikt databasebehandlingssystem, som lar det koble til databasen, utføre SQL-setninger og hente data. Det er fire typer JDBC-drivere:

  • JDBC-ODBC Bridge driver
  • Native API-driver
  • Driver for nettverksprotokoll
  • Tynn driver

JDBC-driver-660

191. Hva er trinnene for å koble til databasen i Java?

Det er visse trinn for å koble databasen og Java-programmet som nevnt nedenfor:

  • Importer pakkene
  • Last inn driverne ved å bruke forName()-metoden
  • Registrer driverne ved hjelp av DriverManager
  • Etabler en tilkobling ved å bruke klassen Connection-objektet
  • Lag en uttalelse
  • Utfør spørringen
  • Lukk tilkoblingene

192. Hva er JDBC API-komponentene?

JDBC API-komponenter gir forskjellige metoder og grensesnitt for enkel kommunikasjon med databasene, og den gir også pakker som java Se og java EE som gir mulighet til å skrive en gang kjøre hvor som helst (WORA).

Syntaks:

java.sql.*;>

193. Hva er JDBC Connection-grensesnitt?

Java database connectivity interface (JDBC) er en programvarekomponent som lar Java-applikasjoner samhandle med databaser. For å forbedre tilkoblingen krever JDBC drivere for hver database.

194. Hva har JDBC ResultSet-grensesnittet?

JDBC ResultSet-grensesnittet brukes til å lagre dataene fra databasen og bruke dem i vårt Java-program. Vi kan også bruke ResultSet til å oppdatere dataene ved hjelp av updateXXX()-metoder. ResultSet-objektet peker markøren før den første raden med resultatdata. Ved å bruke next()-metoden kan vi iterere gjennom ResultSet.

195. Hva er JDBC-radsettet?

Et JDBC RowSet gir en måte å lagre dataene i tabellform. RowSet er et grensesnitt i java som kan brukes i java.sql-pakken. Forbindelsen mellom RowSet-objektet og datakilden opprettholdes gjennom hele livssyklusen. RowSets er klassifisert i fem kategorier basert på implementeringen nevnt nedenfor:

  1. JdbcRowSet
  2. Cached RowSet
  3. WebRowSet
  4. Filtered RowSet
  5. Bli med i RowSet

196. Hva er rollen til JDBC DriverManager-klassen?

JDBC DriverManager-klassen fungerer som et grensesnitt for brukere og drivere. Den brukes på mange måter som nevnt nedenfor:

  • Den brukes til å opprette en forbindelse mellom en Java-applikasjon og databasen.
  • Hjelper med å holde styr på driverne som er tilgjengelige.
  • Det kan hjelpe å etablere en forbindelse mellom en database og de aktuelle driverne.
  • Den inneholder alle metodene som kan registrere og avregistrere databasedriverklassene.
  • DriverManager.registerDriver()-metoden kan opprettholde listen over driverklasser som har registrert seg selv.

Java Difference Intervju Spørsmål

197. Skille mellom Iterable og Iterator.

Iterable

Iterator

Iterable gir en måte å iterere over en sekvens av elementer.

Iterator hjelper til med å iterere over en samling av elementer sekvensielt.

iterator() metoden returnerer en iterator. hasNext() og neste() metoder kreves.
fjerne() metoden er valgfri. fjerne() metode er nødvendig i iteratoren.

Eksempler er Liste, Kø og Sett.

Eksempler er ListIterator, Enumeration og ArrayIterator.

198. Skille mellom liste og sett.

Liste

Sett

Bestilt

Uordnet

Listen tillater duplikater.

Settet tillater ikke dupliserte verdier.

Listen er tilgjengelig via indeks.

Settet er tilgjengelig med hashkode.

Flere nullelementer kan lagres.

Null-elementet kan bare lagres én gang.

Eksempler er ArrayList, LinkedList, etc.

Eksempler er HashSet og TreeSet. LinkedHashSet etc.

199. Skille mellom Liste og Kart.

Liste

Kart

Listegrensesnittet tillater dupliserte elementer.

Kart tillater ikke dupliserte elementer.

Listen opprettholder innsettingsrekkefølge.

Kart opprettholder ikke innsettingsrekkefølge.

Flere null-elementer kan lagres.

Kartet tillater maksimalt én enkelt nullnøkkel og et hvilket som helst antall nullverdier.

Listen gir get()-metoden for å få elementet ved en spesifisert indeks.

Kartet gir ikke en get-metode for å få elementene til en spesifisert indeks.

Listen er implementert av ArrayList, etc.

Kart er implementert av HashMap, TreeMap, LinkedHashMap

200. Skille mellom kø og stabel.

Stable

Kødatastruktur brukes til å lagre elementer, og brukes til å utføre operasjoner som kø, dekø fra baksiden eller slutten av køen.

Stabeldatastruktur brukes til å lagre elementer, og brukes til å utføre operasjoner som push, pop fra toppen av stabelen.

Kødatastruktur Implementerer FIFO-rekkefølge.

Stabeldatastruktur Implementerer LIFO-ordre.

Innsetting og sletting i køer skjer fra motsatt ende av listen. Sletting skjer fra forsiden av listen og innsetting skjer bakerst i listen.

Innsetting og sletting i stabler skjer kun fra den ene enden av listen som kalles toppen.

Innsettingsoperasjon kalles køoperasjon.

Innsettingsoperasjon kalles push-operasjon.

Kø brukes vanligvis til å løse problemer knyttet til sekvensiell behandling.

Stack brukes vanligvis til å løse problemer knyttet til rekursjon.

201. Skille mellom PriorityQueue og TreeSet.

Prioritetskø

Tresett

Den bruker Queue som en underliggende datastruktur.

Den bruker et sett som en underliggende datastruktur.

Denne datastrukturen tillater dupliserte elementer

Denne datastrukturen tillater ikke dupliserte elementer

Priority Queue er implementert av PriorityQueue-klassen.

TreeSet er implementert av TreeSet-klassen.

PriorityQueue kommer i JDK 1.5.

TreeSet kommer i JDK 1.4.

PriorityQueue pq = new PriorityQueue();

reeSet ts = new TreeSet();

202. Skille mellom enkeltlenket liste og dobbeltlenket liste.

Enkeltlenket liste

Dobbeltkoblet liste

Singly Linked List inneholder bare to segmenter, dvs. Data og Link.

Dobbeltkoblet liste inneholder tre segmenter, dvs. data, og to pekere.

Traversering i en enkeltlenket liste er kun mulig i foroverretning.

Traversering i en dobbeltlenket liste er kun mulig i begge retninger forover og bakover.

Den bruker mindre minne da hver enkelt node bare har én peker.

Det krever mer minne enn en enkelt koblet liste, da hver node har to pekere.

Enkel å bruke og sett inn noder i begynnelsen av listen.

Litt mer kompleks å bruke og enkel å sette inn på slutten av listen.

Tidskompleksiteten for innsetting og sletting er O(n).

Tidskompleksiteten for innsetting og sletting er O(1).

Enkelt-lenket-liste-660

Dobbeltkoblet-liste-660

203. Skille mellom Failfast og Failsafe.

FailFast

FailSafe

Failsfast mislykkes umiddelbart når den oppdager samtidig modifikasjon i løpet av iterasjonstiden.

Failsafe fortsetter å iterere over den originale samlingen og oppretter også en kopi for å endre.

Failfast brukes vanligvis i enkelt-trådede miljøer.

Failsafe brukes i flertrådede miljøer.

Failfast tillater ingen modifikasjon under iterasjon.

Failsafe tillater endringer i løpet av iterasjonstiden.

Failfast er raskt sammenlignet med failsafe da det ikke innebærer kopiering av samlingen.

Failsafe er generelt sakte sammenlignet med failfast.

FailFast kaster ConcurrentModificationException hvis samlingen endres under iterasjon.


FailSafe gir ikke noe unntak, men i stedet oppretter den en kopi av samlingen for å iterere.

204. Skille mellom HashMap og TreeMap.

HashMap

Trekart

Hasmap bruker en hashtabell for å lagre nøkkelverdi-par.

Treemap bruker rød-svarte trær for å lagre nøkkelverdi-par.

Hashmap opprettholder ingen spesifikk rekkefølge for nøkkelverdi-par.

Treemap opprettholder en naturlig rekkefølge basert på tastene.

Iterasjonsrekkefølgen er ikke garantert i hashmapet.

Iterasjon er i sortert rekkefølge basert på nøkler.

Hashmaps er raskere for gjenfinning sammenlignet med Treemap.

Henting i Treemap er tregere ettersom den bruker tregjennomgang for å finne nøkler.

Hashmap implementeres ved å bruke en Array of linked list.

TreeMap er implementert ved hjelp av et rød-svart tre.

Hashmap bruker equals()-metoden til Object-klassen for å sammenligne nøkler.

TreeMap bruker metoden compareTo() for å sammenligne nøkler.

205. Skille mellom Queue og Deque.

Om hva

Køen er en lineær datastruktur som brukes til å lagre en samling av elementer.

Deque, også kjent som en Double-ended-kø, er også en lineær datastruktur som lagrer en samling elementer med operasjoner for å fjerne og legge til fra begge ender.

Elementer i køen kan kun settes inn på slutten av datastrukturen.

Elementer kan settes inn fra begge ender av datastrukturen.

Kø kan implementeres ved hjelp av Array eller Linked List.

Dequeue kan implementeres ved hjelp av Circular Array eller Double Linked List.

Køer brukes vanligvis til å implementere en venteliste eller oppgavekø.

Deque brukes til å implementere en stabel eller dekø-elementer fra begge ender.

Kø-660

Double-ended-kø-660

206. Skille mellom HashSet og TreeSet.

HashSet

Tresett

HashSet er uordnet.

TreeSet er basert på naturlig rekkefølge.

HashSet tillater null-elementer.

TreeSet tillater ikke null-elementer.

HashSet er implementert av HashSet-klassen.

TreeSet er implementert av TreeSet-klassen.

HashSet hs = new HashSet();

TreeSet ts = new TreeSet();

Java-intervjuspørsmål – vanlige spørsmål

Q1. Hva er en Java-utviklers lønn i India?

I følge ulike ressurser er gjennomsnittslønnen til en Java Backend-utvikler mer enn 14 lakhs per år som er 30% høyere enn noen annen utviklerrolle . Her kan du også sjekke vårt siste kurs på GeekforGeeks Practice Portal kan også være nyttig.

Q5. Hvordan kan jeg skille meg ut i et Java-intervju?

For å skille seg ut i et Java-intervju, demonstrer en dyp forståelse av Java-konsepter og praktiske applikasjoner. Vis frem dine problemløsningsferdigheter ved å forklare din tilnærming til komplekse scenarier og gi effektive løsninger. I tillegg, fremhev eventuelle relevante prosjekter eller bidrag du har gitt til Java-fellesskapet. Å vise entusiasme, god kommunikasjon og vilje til å lære kan også gi et positivt inntrykk.