logo

Preguntes i respostes de l'entrevista de Java

Java és un dels llenguatges de programació més populars del món, conegut per la seva versatilitat, portabilitat i àmplia gamma d'aplicacions. Java és l'idioma més utilitzat a les principals empreses com Uber, Airbnb, Google, Netflix, Instagram, Spotify, Amazon i moltes més per les seves característiques i rendiment.

En aquest article, proporcionarem Més de 200 preguntes bàsiques d'entrevista de Java adaptat tant per a professionals novells com per a professionals amb experiència amb 3, 5 i 8 anys d'experiència. Aquí, cobrim tot, inclosos els conceptes bàsics de Java, programació orientada a objectes (OOP), multiprocés, maneig d'excepcions, patrons de disseny, col·leccions Java i molt més, que segur us ajudaran a resoldre entrevistes de Java.



Core-Java-Entrevista-Preguntes

Taula de contingut

Preguntes de l'entrevista de Java per a Freshers

1. És independent la plataforma Java si llavors com?

Sí, Java és un llenguatge independent de la plataforma. A diferència de molts llenguatges de programació, javac compiler compila el programa per formar un bytecode o un fitxer .class. Aquest fitxer és independent del programari o maquinari que s'executa, però necessita un fitxer JVM (Java Virtual Machine) preinstal·lat al sistema operatiu per a una execució posterior del bytecode.



Encara que JVM depèn de la plataforma , el bytecode es pot crear en qualsevol sistema i es pot executar en qualsevol altre sistema malgrat que s'utilitzi maquinari o programari que fa que la plataforma Java sigui independent.

2. Quines són les principals funcions de Java?

Java és un dels llenguatges més coneguts i utilitzats del món real, hi ha moltes característiques a Java que el fan millor que qualsevol altre llenguatge, algunes d'elles s'esmenten a continuació:

Característiques-de-Java-768



  • Simple : Java és bastant senzill d'entendre i la sintaxi
  • Plataforma independent: Java és independent de la plataforma, vol dir que podem executar el mateix programa en qualsevol programari i maquinari i obtindrem el mateix resultat.
  • Interpretat : Java s'interpreta així com un llenguatge basat en compiladors.
  • Robusta : funcions com la recollida d'escombraries, el maneig d'excepcions, etc. que fan que el llenguatge sigui robust.
  • Orientat a objectes : Java és un llenguatge orientat a objectes que admet els conceptes de classe, objectes, quatre pilars d'OOPS, etc.
  • Assegurat : Com que podem compartir directament una aplicació amb l'usuari sense compartir el programa real fa que Java sigui un llenguatge segur.
  • Gran actuació: més ràpid que altres llenguatges de programació interpretats tradicionals.
  • Dinàmic : admet la càrrega dinàmica de classes i interfícies.
  • Distribuït : característica de Java ens permet accedir als fitxers cridant als mètodes des de qualsevol màquina connectada.
  • Multifils : tractar diverses tasques alhora mitjançant la definició de diversos fils
  • Arquitectura neutral : no depèn de l'arquitectura.

3. Què és JVM?

JVM-768

JVM significa Java Virtual Machine és un intèrpret de Java. És responsable de carregar, verificar i executar el bytecode creat a Java.

Tot i que depèn de la plataforma, el que significa que el programari de JVM és diferent per a diferents sistemes operatius, té un paper vital per fer independent de la plataforma Java.

Per saber més sobre el tema consulta JVM en Java .

4. Què és el JIT?

JIT-768

JIT significa (Just-in-Time) compilador és una part de JRE (Java Runtime Environment), s'utilitza per a un millor rendiment de les aplicacions Java durant el temps d'execució. L'ús de JIT s'esmenta en el procés pas a pas que s'esmenta a continuació:

  1. El codi font està compilat amb javac compilador per formar bytecode
  2. El bytecode es transmet a JVM
  3. JIT és una part de JVM, JIT és responsable de compilar bytecode en codi de màquina natiu en temps d'execució.
  4. El compilador JIT està habilitat en tot moment, mentre que s'activa quan s'invoca un mètode. Per a un mètode compilat, la JVM crida directament el codi compilat, en lloc d'interpretar-lo.
  5. Com JVM crida al codi compilat que augmenta el rendiment i la velocitat de l'execució.

Per saber més sobre el tema consulta JIT a Java .

5. Quins són els emmagatzematges de memòria disponibles amb JVM?

JVM-Àrees-768

JVM consta d'uns quants emmagatzematges de memòria tal com s'esmenta a continuació:

  1. Àrea Class(Mètode): emmagatzema les dades a nivell de classe de cada classe, com ara el conjunt de constants d'execució, el camp i les dades del mètode, i el codi dels mètodes.
  2. Muntatge: es creen objectes o s'emmagatzemen. S'utilitza per assignar memòria als objectes durant el temps d'execució.
  3. Pila: emmagatzema dades i resultats parcials que es necessitaran mentre es retorna el valor del mètode i es realitza l'enllaç dinàmic
  4. Registre del comptador del programa: emmagatzema l'adreça de la instrucció de la màquina virtual Java que s'està executant actualment.
  5. Pila de mètodes natius: emmagatzema tots els mètodes natius utilitzats a l'aplicació.

Per saber més sobre el tema consulta Emmagatzematge de memòria JVM .

6. Què és un carregador de classes?

Classloader és la part de JRE (Java Runtime Environment), durant l'execució del bytecode o del fitxer .class creat, el classloader s'encarrega de carregar dinàmicament les classes i les interfícies de Java a la JVM (Java Virtual Machine). A causa dels carregadors de classes, el sistema de temps d'execució de Java no necessita saber sobre fitxers i sistemes de fitxers.

Per saber més sobre el tema consulta ClassLoader a Java.

7. Diferència entre JVM, JRE i JDK.

JVM : JVM també coneguda com Java Virtual Machine forma part de JRE. JVM és un tipus d'intèrpret responsable de convertir bytecode en codi llegible per màquina. JVM en si depèn de la plataforma, però interpreta el bytecode que és la raó independent de la plataforma per la qual Java és independent de la plataforma.

JRE : JRE significa Java Runtime Environment, és un paquet d'instal·lació que proporciona un entorn per executar el programa o aplicació Java a qualsevol màquina.

JDK : JDK significa Java Development Kit que proporciona l'entorn per desenvolupar i executar programes Java. JDK és un paquet que inclou dues eines de desenvolupament per proporcionar un entorn per desenvolupar els vostres programes Java i JRE per executar programes o aplicacions Java.

Per saber més sobre el tema consulteu el Diferències entre JVM, JRE i JDK .

8. Quines diferències hi ha entre Java i C++?

Base

C++

Java

Plataforma

C++ depèn de la plataforma

Java és independent de la plataforma

Aplicació

C++ s'utilitza principalment per a la programació del sistema

Java s'utilitza principalment per a la programació d'aplicacions

Maquinari

C++ és més proper al maquinari

Java no és tan interactiu amb el maquinari

Àmbit global

C++ admet l'àmbit global i l'espai de noms.

Java no admet l'abast global.

No donar suport

Les funcionalitats admeses a Java però no a C++ són:

  • suport de fil
  • comentari de documentació
  • canvi dret sense signar(>>>)

Les funcionalitats admeses en C++ però no en Java són:

  • anar a
  • Apuntadors
  • Trucar per referència
  • Estructures i Sindicats
  • Herència múltiple
  • Funcions virtuals

OOPS

C++ és un llenguatge orientat a objectes. No és una jerarquia arrel única.

Java també és un llenguatge orientat a objectes. És una jerarquia arrel única, ja que tot es deriva d'una sola classe (java.lang.Object).

Arbre de l'herència

C++ sempre crea un nou arbre d'herència.

Java utilitza un arbre d'herència únic ja que les classes a Java són fill de les classes d'objectes a Java.

9. Expliqueu public static void main(String args[]) a Java.

Funció_principal

A diferència de qualsevol altre llenguatge de programació com C, C++, etc. A Java, vam declarar la funció principal com a void main estàtica pública (String args[]). Els significats dels termes s'esmenten a continuació:

  1. públic : el públic és el modificador d'accés encarregat d'esmentar qui pot accedir a l'element o el mètode i quin és el límit. És responsable de fer que la funció principal estigui disponible a nivell mundial. Es fa públic perquè JVM pugui invocar-lo des de fora de la classe ja que no està present a la classe actual.
  2. estàtica : static és una paraula clau utilitzada perquè puguem utilitzar l'element sense iniciar la classe per evitar l'assignació innecessària de la memòria.
  3. buit : void és una paraula clau i s'utilitza per especificar que un mètode no retorna res. Com que la funció principal no retorna res, fem servir void.
  4. principal : main representa que la funció declarada és la funció principal. Ajuda a JVM a identificar que la funció declarada és la funció principal.
  5. Arguments de cadena[] : Emmagatzema arguments de la línia d'ordres de Java i és una matriu de tipus java.lang.String class.

10. Què és Java String Pool?

Un grup de cadenes de Java és un lloc a la memòria dinàmica on s'emmagatzemen totes les cadenes definides al programa. Un lloc separat d'una pila és allà on s'emmagatzema la variable que emmagatzema la cadena. Sempre que creem un objecte de cadena nou, JVM comprova la presència de l'objecte a l'agrupació de cadenes, si String està disponible a l'agrupació, la mateixa referència d'objecte es comparteix amb la variable, en cas contrari es crea un objecte nou.

Java-String-Pool-768

Exemple:

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

11. Què passarà si declarem que no declarem el principal com a estàtic?

Podem declarar el mètode principal sense utilitzar estàtic i sense obtenir cap error. Però, el mètode principal no es tractarà com el punt d'entrada a l'aplicació o al programa.

12. Què són els paquets a Java?

Els paquets en Java es poden definir com l'agrupació de tipus relacionats de classes, interfícies, etc. que proporcionen accés a la protecció i la gestió de l'espai de noms.

13. Per què s'utilitzen paquets?

Els paquets s'utilitzen a Java per evitar conflictes de noms, controlar l'accés i facilitar la cerca/localització i l'ús de classes, interfícies, etc.

14. Quins són els avantatges dels paquets en Java?

Hi ha diversos avantatges de definir paquets en Java.

  • Els paquets eviten conflictes de noms.
  • El paquet proporciona un control d'accés més fàcil.
  • També podem tenir les classes ocultes que no són visibles a l'exterior i són utilitzades pel paquet.
  • És més fàcil localitzar les classes relacionades.

15. Quants tipus de paquets hi ha a Java?

Hi ha dos tipus de paquets a Java

  • Paquets definits per l'usuari
  • Paquets integrats

16. Explica els diferents tipus de dades en Java.

Hi ha 2 tipus de tipus de dades a Java, com s'esmenta a continuació:

  1. Tipus de dades primitives
  2. Tipus de dades no primitives o tipus de dades d'objecte

Tipus de dades primitives: les dades primitives són valors únics sense capacitats especials. Hi ha 8 tipus de dades primitives:

  • booleà : emmagatzema el valor true o false
  • byte : emmagatzema un enter de complement a dos amb signe de 8 bits
  • char : emmagatzema un únic caràcter Unicode de 16 bits
  • curt : emmagatzema un enter de complement a dos amb signe de 16 bits
  • int : emmagatzema un enter de complement a dos amb signe de 32 bits
  • llarg : emmagatzema un enter de complement a dos de 64 bits
  • flotar : emmagatzema un punt flotant IEEE 754 de 32 bits de precisió única
  • doble : emmagatzema un punt flotant IEEE 754 de 64 bits de doble precisió

Tipus de dades no primitives: els tipus de dades de referència contindran una adreça de memòria dels valors de la variable perquè no és capaç d'emmagatzemar directament els valors a la memòria. Els tipus de no-primitius s'esmenten a continuació:

  • Cordes
  • Matriu
  • Classe
  • Objecte
  • Interfície

17. Quan s'utilitza un tipus de dades byte?

Un byte és un nombre enter de dos complements signat de 8 bits. El valor mínim suportat per bytes és -128 i 127 és el valor màxim. S'utilitza en condicions en què necessitem estalviar memòria i el límit de nombres necessaris està entre -128 i 127.

18. Podem declarar Pointer a Java?

No, Java no ofereix el suport de Pointer. Com que Java havia de ser més segur perquè quina característica del punter no es proporciona a Java.

19. Quin és el valor predeterminat del tipus de dades byte a Java?

El valor predeterminat del tipus de dades byte a Java és 0.

20. Quin és el valor per defecte de float i double datatype a Java?

El valor per defecte del float és 0.0f i de double és 0.0d a Java.

21. Què és la classe Wrapper a Java?

Wrapper, en general, es refereix a una entitat més gran que encapsula una entitat més petita. Aquí a Java, la classe wrapper és una classe d'objectes que encapsula els tipus de dades primitius.

Els tipus de dades primitius són aquells a partir dels quals es podrien crear altres tipus de dades. Per exemple, els nombres enters poden conduir a la construcció de llargs, bytes, curts, etc. D'altra banda, la cadena no, per tant, no és primitiva.

Tornant a la classe d'embolcall, Java conté 8 classes d'embolcall. Són booleans, bytes, curts, enters, caràcters, llargs, flotants i dobles. A més, també es poden crear classes d'embolcall personalitzades en Java, que és similar al concepte d'Estructura en el llenguatge de programació C. Creem la nostra pròpia classe d'embolcall amb els tipus de dades necessaris.

22. Per què necessitem classes d'embolcall?

La classe wrapper és una classe d'objectes que encapsula els tipus de dades primitius i els necessitem pels motius següents:

  1. Les classes d'embolcall són definitives i immutables
  2. Proporciona mètodes com valueOf(), parseInt(), etc.
  3. Proporciona la funció d'autoboxing i unboxing.

23. Diferenciar entre variables instància i locals.

Variable d'instància

Variable local

Declarat fora del mètode, invocat directament pel mètode.

Declarat dins del mètode.

Té un valor predeterminat.

Cap valor predeterminat

Es pot utilitzar durant tota la classe.

L'abast es limita al mètode.

24. Quins són els valors per defecte assignats a variables i instàncies a Java?

A Java Quan no hem inicialitzat les variables d'instància, el compilador les inicialitza amb valors per defecte. Els valors per defecte de les instàncies i les variables depenen dels seus tipus de dades. Alguns tipus habituals de tipus de dades predeterminats són:

  • El valor predeterminat per als tipus numèrics (byte, short, int, long, float i double) és 0.
  • El valor per defecte per al tipus booleà és fals.
  • El valor predeterminat per als tipus d'objecte (classes, interfícies i matrius) és nul.
  • El caràcter nul, u0000, és el valor predeterminat per al tipus de caràcter.

Exemple:

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

Sortida
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. Què és una variable de classe?

A Java, una variable de classe (també coneguda com a variable estàtica) és una variable que es declara dins d'una classe però fora de qualsevol mètode, constructor o bloc. Les variables de classe es declaren amb la paraula clau estàtica i són compartides per totes les instàncies (objectes) de la classe així com per la classe mateixa. No importa quants objectes es derivin d'una classe, cada variable de classe només existiria una vegada.

Exemple:

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

Sortida
Number of objects created are 3>

26. Quin és el valor predeterminat emmagatzemat a les variables locals?

No hi ha cap valor predeterminat emmagatzemat amb variables locals. A més, les variables primitives i els objectes no tenen cap valor predeterminat.

27. Explica la diferència entre una variable d'instància i una variable de classe.

Variable d'instància: Una variable de classe sense un modificador estàtic conegut com a variable d'instància normalment la comparteixen totes les instàncies de la classe. Aquestes variables poden tenir valors diferents entre diversos objectes. Els continguts d'una variable d'instància són completament independents d'una instància d'objecte d'una altra perquè estan relacionats amb una instància d'objecte específica de la classe.

Exemple:

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

Sortida
Name John>

Variable de classe: La variable de classe variable es pot declarar en qualsevol lloc del nivell de classe mitjançant la paraula clau static. Aquestes variables només poden tenir un valor quan s'apliquen a diversos objectes. Aquestes variables poden ser compartides per tots els membres de la classe ja que no estan connectades a cap objecte específic de la classe.

Exemple:

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

Sortida
Area of circle: 78.53975>

28. Què és una variable estàtica?

La paraula clau estàtica s'utilitza per compartir la mateixa variable o mètode d'una classe determinada. Les variables estàtiques són les variables que un cop declarades es crea una única còpia de la variable i es comparteix entre tots els objectes a nivell de classe.

29. Quina diferència hi ha entre System.out, System.err i System.in?

System.out - És un PrintStream que s'utilitza per escriure caràcters o es pot dir que pot sortir les dades que volem escriure a la consola/terminal de la interfície de línia d'ordres.

Exemple:

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 - S'utilitza per mostrar missatges d'error.

Exemple:

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

Sortida:

This is how we throw error with System.err>

Tot i que System.err té moltes similituds, tots dos també tenen moltes diferències, comprovem-los.

System.out System.err

S'imprimirà amb l'estàndard fora del sistema.

S'imprimirà amb l'error estàndard.

S'utilitza principalment per mostrar resultats a la consola.

S'utilitza principalment per enviar textos d'error.

Proporciona una sortida a la consola amb el color predeterminat (negre).

També dóna sortida a la consola, però la majoria dels IDE li donen un color vermell per diferenciar-lo.

System.in – És un InputStream utilitzat per llegir l'entrada des de la finestra del terminal. No podem utilitzar el System.in directament, de manera que utilitzem la classe Scanner per prendre entrada amb el system.in.

Exemple:

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

Sortida:

3 4 Addition: 7>

30. Què entens per un flux d'IO?

2-768

Java aporta diversos fluxos amb el seu paquet d'E/S que ajuda l'usuari a realitzar totes les operacions d'entrada-sortida. Aquests fluxos admeten tot tipus d'objectes, tipus de dades, caràcters, fitxers, etc. per executar completament les operacions d'E/S.

31. Quina diferència hi ha entre la jerarquia de classes Reader/Writer i la jerarquia de classes InputStream/OutputStream?

La diferència clau entre ells és que les dades del flux de bytes es llegeixen i escriuen mitjançant classes de flux d'entrada/sortida. Els personatges els gestionen les classes de Reader i Writer. A diferència de les classes Reader/Writer, que accepten matrius de caràcters com a paràmetres, els mètodes de classes de flux d'entrada/sortida accepten matrius de bytes. En comparació amb els fluxos d'entrada/sortida, les classes Reader/Writer són més eficients, gestionen tots els caràcters Unicode i són útils per a la interiorització. Utilitzeu classes de Reader/Writer en lloc de dades binàries, com ara imatges, tret que ho feu.

Exemple:

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

Sortida
-32 79 -48 32 -22>

32. Quines són les súper classes per a tots els streams?

Totes les classes de flux es poden dividir en dos tipus de classes que són classes ByteStream i Classes CharacterStream. Les classes ByteStream es divideixen a més en classes InputStream i classes OutputStream. Les classes CharacterStream també es divideixen en classes Reader i classes Writer. Les classes SuperMost per a totes les classes InputStream són java.io.InputStream i per a totes les classes de sortida és java.io.OutPutStream. De la mateixa manera, per a totes les classes de lectors, la classe més gran és java.io.Reader, i per a totes les classes d'escriptor, és java.io.Writer.

33. Què són els FileInputStream i FileOutputStream?

Per llegir i escriure dades, Java ofereix fluxos d'E/S. Un Stream representa una font d'entrada o una destinació de sortida, que pot ser un fitxer, un dispositiu d'entrada/sida, un altre programa, etc. FileInputStream en Java s'utilitza per llegir dades d'un fitxer com un flux de bytes. S'utilitza principalment per llegir dades binàries com ara imatges, fitxers d'àudio o objectes serialitzats.

Exemple:

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

A Java, el FileOutputStream La funció s'utilitza per escriure dades byte per byte en un fitxer o descriptor de fitxer determinat. Normalment, les dades de bytes en brut, com ara imatges, s'escriuen en un fitxer mitjançant FileOutputStream.

Exemple:

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

34. Quin és l'objectiu d'utilitzar les classes BufferedInputStream i BufferedOutputStream?

Quan estem treballant amb els fitxers o el flux, per augmentar el rendiment d'entrada/sortida del programa, hem d'utilitzar les classes BufferedInputStream i BufferedOutputStream. Aquestes dues classes ofereixen la capacitat d'emmagatzemar la memòria intermèdia, la qual cosa significa que les dades s'emmagatzemaran en una memòria intermèdia abans d'escriure en un fitxer o llegir-lo des d'un flux. També redueix el nombre de vegades que el nostre sistema operatiu necessita per interactuar amb la xarxa o el disc. L'emmagatzematge en memòria intermèdia permet als programes escriure una gran quantitat de dades en lloc d'escriure-les en petits trossos. Això també redueix la sobrecàrrega d'accés a la xarxa o al disc.

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. Què són els FilterStreams?

Filtre de flux o Filtre fluxos retorna un flux format pels elements d'aquest flux que coincideixen amb el predicat donat. Mentre funciona filter() en realitat no realitza el filtratge, sinó que crea un nou flux que, quan es travessa, conté els elements dels fluxos inicials que coincideixen amb el predicat donat.

Exemple:

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


36. Què és un filtre d'E/S?

Un filtre d'E/S també definit com a filtre d'entrada i sortida és un objecte que llegeix d'un flux i escriu dades a les fonts d'entrada i sortida. Va utilitzar el paquet java.io per utilitzar aquest filtre.

37. De quantes maneres podeu rebre entrada des de la consola?

Hi ha dos mètodes per prendre entrada des de la consola en Java esmentada a continuació:

  1. Utilitzant l'argument de la línia d'ordres
  2. Utilitzant la classe de lector de memòria intermèdia
  3. Ús de la classe de consola
  4. Utilitzant Scanner Class

A continuació es mostra el programa que demostra l'ús de cada mètode.

Exemple:

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

Sortida:

techcodeview.com>

38. Diferència en l'ús de print, println i printf.

print, println i printf s'utilitzen per imprimir els elements, però print imprimeix tots els elements i el cursor roman a la mateixa línia. println desplaça el cursor a la línia següent. I amb printf també podem utilitzar identificadors de format.

39. Què són els operadors?

Els operadors són els tipus especials de símbols utilitzats per realitzar algunes operacions sobre variables i valors.

40. Quants tipus d'operadors hi ha disponibles a Java?

A continuació s'esmenten tots els tipus d'operadors a Java:

  1. Operadors aritmètics
  2. Operadors unaris
  3. Operador d'assignació
  4. Operadors relacionals
  5. Operadors lògics
  6. Operador Ternari
  7. Operadors per bits
  8. Operadors de torn
  9. instància de l'operador

Els operadors Postfix es consideren com la precedència més alta segons la precedència de l'operador Java.

41. Explica la diferència entre els operadors>> i>>>.

Els operadors com>> i>>> semblen ser els mateixos però actuen una mica diferent. L'operador>> desplaça els bits de signe i l'operador>>> s'utilitza per desplaçar els bits plens de zero.

Exemple:

Java
// Java Program to demostrate //>> i>>> els operadors importen java.io.*; // Classe de controlador GFG { public static void main(String[] args) { int a = -16, b = 1;  // Ús de>> System.out.println(a >> b);  a = -17;  b = 1;  // Ús de>>> System.out.println(a >>> b);  } }>>>  
Sortida
-8 2147483639>

42. Quin operador Java és associatiu correctament?

Només hi ha un operador associatiu correcte que és l'operador =.

43. Què és l'operador de punts?

L'operador Dot a Java s'utilitza per accedir a les variables d'instància i mètodes dels objectes de classe. També s'utilitza per accedir a classes i subpaquets des del paquet.

44. Què és el tipus de retorn covariant?

El tipus de retorn covariant especifica que el tipus de retorn pot variar en la mateixa direcció que la subclasse. És possible tenir diferents tipus de retorn per a un mètode d'anul·lació a la classe secundaria, però el tipus de retorn del fill hauria de ser un subtipus del tipus de retorn del pare i, a causa d'aquest mètode d'anul·lació, esdevé una variant respecte al tipus de retorn.

Utilitzem el tipus de retorn covariant pels motius següents:

  • Evita conversions de tipus confuses presents a la jerarquia de classes i fa que el codi sigui llegible, utilitzable i mantenible.
  • Dóna la llibertat de tenir tipus de retorn més específics quan es substitueixen mètodes.
  • Ajuda a prevenir ClassCastExceptions en temps d'execució a les devolucions.

45. Quina és la paraula clau transitòria?

La paraula clau transitòria s'utilitza en el moment de la serialització si no volem desar el valor d'una variable concreta en un fitxer. Quan JVM troba una paraula clau transitòria, ignora el valor original de la variable i desa el valor predeterminat d'aquest tipus de dades variable.

46. ​​Quina diferència hi ha entre els mètodes sleep() i wait()?

Dormir ()

Espera ()

El mètode sleep() pertany a la classe thread.

El mètode Wait() pertany a la classe d'objectes.

Sleep no allibera el bloqueig que manté el fil actual.

wait() allibera el bloqueig que permet que altres fils l'adquireixin.

Aquest mètode és un mètode estàtic.

Aquest mètode no és un mètode estàtic.

Sleep() no llança una InterruptedException.InterruptedException es mostra si el fil s'interromp mentre s'espera.

S'utilitza principalment per retardar un fil durant un temps determinat.

S'utilitza principalment per posar en pausa un fil fins que un altre no ho notifica.

Sleep() té dos mètodes sobrecarregats:

  • dormir (mill·lisos llargs) mil·lisegons: mil·lisegons
  • sleep(mills llargs, int nanos) nanos: nanosegons

Wait() té tres mètodes sobrecarregats:

  • espera ()
  • espera (temps d'espera llarg)
  • espera (temps d'espera llarg, int nanos)

47. Quines diferències hi ha entre String i StringBuffer?

Corda

StringBuffer

Emmagatzematge d'una seqüència de caràcters.Proporciona funcionalitat per treballar amb les cadenes.
És immutable.És mutable (es pot modificar i es poden realitzar altres operacions de cadena sobre ells).
No hi ha operacions de fil en una cadena.És segur per a fils (dos fils no poden cridar els mètodes de StringBuffer simultàniament)

48. Quines diferències hi ha entre StringBuffer i StringBuilder?

StringBuffer

StringBuilder

StringBuffer proporciona funcionalitat per treballar amb les cadenes.StringBuilder és una classe utilitzada per construir una cadena mutable.
És segur per a fils (dos fils no poden cridar els mètodes de StringBuffer simultàniament)No és segur per a fils (dos fils poden cridar els mètodes simultàniament)
Comparativament lent ja que està sincronitzat.En no estar sincronitzat, la implementació és més ràpida

49. Quin entre String o String Buffer s'hauria de preferir quan cal fer moltes actualitzacions a les dades?

La cadena es prefereix a StringBuffer, ja que StringBuilder és més ràpid que StringBuffer, però els objectes StringBuffer són els preferits, ja que ofereix més seguretat de fil.


50. Per què es diu StringBuffer mutable?

La classe StringBuffer a Java s'utilitza per representar una cadena canviable de caràcters. Ofereix una alternativa a la classe String immutable, ja que us permet canviar el contingut d'una cadena sense crear nous objectes constantment. Les cadenes mutables (modificables) es creen amb l'ajuda de la classe StringBuffer. La classe StringBuffer a Java és idèntica a la classe String excepte que és canviable.

Exemple:

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

Sortida

La cadena que utilitza new() és diferent del literal, ja que quan declarem una cadena emmagatzema els elements dins de la memòria de la pila, mentre que quan es declara amb new() assigna una memòria dinàmica a la memòria dinàmica. L'objecte es crea a la memòria dinàmica encara que hi hagi el mateix objecte de contingut.

Sintaxi:

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


3-768

52. Què és una matriu a Java?

Una matriu en Java és una estructura de dades que s'utilitza per emmagatzemar una seqüència de mida fixa d'elements del mateix tipus. Es pot accedir als elements d'una matriu mitjançant el seu índex, que comença des de 0 i arriba fins a una longitud de menys 1. La declaració de matriu en Java es fa amb l'ajuda de claudàtors i la mida també s'especifica durant la declaració.

Sintaxi:

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

53. En quines matrius de memòria es creen a Java?

Les matrius en Java es creen a la memòria heap. Quan es crea una matriu amb l'ajuda d'una paraula clau nova, la memòria s'assigna al munt per emmagatzemar els elements de la matriu. A Java, la memòria de pila la gestiona la màquina virtual Java (JVM) i també es comparteix entre tots els fils del programa Java. La memòria que ja no està utilitzada pel programa, JVM utilitza un col·lector d'escombraries per recuperar la memòria. Les matrius a Java es creen dinàmicament, la qual cosa significa que la mida de la matriu es determina durant el temps d'execució del programa. La mida de la matriu s'especifica durant la declaració de la matriu i no es pot canviar un cop creada la matriu.

54. Quins són els tipus d'una matriu?

Hi ha dos tipus de matrius, és a dir, matrius primitives i matrius de referències.

  • Matrius unidimensionals: Les matrius que només tenen una dimensió, és a dir, una matriu d'enters o una matriu de cadenes es coneixen com a matrius unidimensionals.

4-768

Sintaxi:

data_type[] Array_Name = new data_type[ArraySize];>
  • Matrius multidimensionals: Matrius que tenen dues o més dimensions, com ara matrius bidimensionals o tridimensionals.

55. Per què l'índex de matriu Java comença amb 0?

L'índex d'una matriu indica la distància des de l'inici de la matriu. Per tant, el primer element té una distància 0, per tant l'índex inicial és 0.

Sintaxi:

[Base Address + (index * no_of_bytes)]>

56. Quina diferència hi ha entre la matriu int[] i la matriu int[]?

Tant int array[] com int[] array s'utilitzen per declarar una matriu d'enters en java. L'única diferència entre ells és en la seva sintaxi, no hi ha cap diferència de funcionalitat entre ells.

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

Tanmateix, generalment es recomana utilitzar la sintaxi d'estil Java per declarar una matriu. Com que és fàcil de llegir i entendre, també és més coherent amb altres construccions del llenguatge Java.

57. Com copiar una matriu en Java?

A Java hi ha diverses maneres de copiar una matriu en funció dels requisits.

  • mètode clone() a Java: Aquest mètode a Java s'utilitza per crear una còpia superficial de la matriu donada, la qual cosa significa que la nova matriu compartirà la mateixa memòria que la matriu original.
int[] Arr = { 1, 2, 3, 5, 0}; int[] tempArr = Arr.clone();>
  • mètode arraycopy(): Per crear una còpia profunda de la matriu podem utilitzar aquest mètode que crea una nova matriu amb els mateixos valors que la matriu original.
int[] Arr = {1, 2, 7, 9, 8}; int[] tempArr = new int[Arr.length]; System.arraycopy(Arr, 0, tempArr, 0, Arr.length);>
  • Mètode copyOf(): Aquest mètode s'utilitza per crear una matriu nova amb una longitud específica i copia el contingut de la matriu original a la matriu nova.
int[] Arr = {1, 2, 4, 8}; int[] tempArr = Arrays.copyOf(Arr, Arr.length);>
  • Mètode copyOfRange(): Aquest mètode és molt similar al mètode copyOf() de Java, però aquest mètode també ens permet especificar l'interval dels elements a copiar de la matriu original.
int[] Arr = {1, 2, 4, 8}; int[] temArr = Arrays.copyOfRange(Arr, 0, Arr.length);>

58. Què entens per la matriu dentada?

Una matriu irregular a Java és només una matriu bidimensional en la qual cada fila de la matriu pot tenir una longitud diferent. Com que totes les files d'una matriu 2-d tenen la mateixa longitud, però una matriu irregular permet més flexibilitat en la mida de cada fila. Aquesta característica és molt útil en condicions en què les dades tenen longituds variables o quan cal optimitzar l'ús de la memòria.

Sintaxi:

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

59. És possible fer volàtil una matriu?

A Java, no és possible fer un volàtil. Les paraules clau volàtils a Java només es poden aplicar a variables individuals, però no a matrius o col·leccions. El valor de la variable sempre es llegeix i s'escriu a la memòria principal quan es defineix com a volàtil en lloc d'emmagatzemar-se a la memòria cau a la memòria local d'un fil. Això fa que sigui més fàcil assegurar-se que tots els fils que accedeixen a la variable puguin veure els canvis que s'hi han fet.

60. Quins són els avantatges i els inconvenients d'una matriu?

5-768

Els avantatges dels Arrays són:

  • L'accés directe i efectiu a qualsevol element de la col·lecció és possible gràcies a les matrius. Es pot accedir als elements d'una matriu mitjançant una operació O(1), el que significa que la quantitat de temps necessari per fer-ho és constant i independent de la mida de la matriu.
  • Les dades es poden emmagatzemar de manera efectiva a la memòria mitjançant matrius. La mida d'una matriu es coneix en temps de compilació, ja que els seus elements s'emmagatzemen en regions de memòria contigües.
  • A causa del fet que les dades s'emmagatzemen en àrees de memòria contigües, les matrius proporcionen una recuperació ràpida de dades.
  • Les matrius són fàcils d'implementar i entendre, cosa que els converteix en una opció ideal per als principiants que aprenen programació d'ordinadors.

Els desavantatges dels Arrays són:

  • Les matrius es creen amb una mida predeterminada que es tria en aquest moment. Això vol dir que si la mida de la matriu s'ha d'ampliar, caldrà crear una nova matriu i les dades s'hauran de copiar de la matriu antiga a la matriu nova, la qual cosa pot prendre molt de temps i memòria.
  • Pot haver-hi espai de memòria no utilitzat a l'espai de memòria d'una matriu si la matriu no està completament ocupada. Si teniu un record pobre, això pot ser un problema.
  • En comparació amb altres estructures de dades, com ara llistes i arbres enllaçats, les matrius poden ser rígides a causa de la seva mida fixa i el suport limitat per a tipus de dades sofisticats.
  • Com que els elements d'una matriu han de ser tots del mateix tipus de dades, no admet tipus de dades complexos com ara objectes i estructures.

61. Què és un paradigma orientat a objectes?

Paradigma significa literalment un patró o un mètode. Els paradigmes de programació són els mètodes per resoldre un programa que és de quatre tipus, a saber, imperatiu, lògic, funcional i orientat a objectes. Quan s'utilitzen objectes com a entitats base sobre les quals s'apliquen els mètodes, es realitzen funcionalitats d'encapsulació o d'herència, es coneix com a paradigma orientat a objectes.

62. Quins són els conceptes principals dels POO a Java?

A continuació s'esmenten els conceptes principals de POO a Java:

taula desc a mysql
  • Herència
  • Polimorfisme
  • Abstracció
  • Encapsulació

63. Quina diferència hi ha entre un llenguatge de programació orientat a objectes i un llenguatge de programació basat en objectes?

Llenguatge de programació orientat a objectes

Llenguatge de programació basat en objectes

El llenguatge de programació orientat a objectes cobreix conceptes més grans com l'herència, el polimorfisme, l'abstracció, etc.L'abast de la programació basada en objectes es limita a l'ús d'objectes i a l'encapsulació.
Admet tots els objectes integratsNo admet tots els objectes integrats
Exemples: Java, C#, etc.Exemples: Java script, visual basics, etc.

64. En què és diferent l'operador 'new' de l'operador 'newInstance()' a Java?

l'operador new s'utilitza per crear objectes, però si volem decidir el tipus d'objecte que es crearà en temps d'execució, no hi ha manera que puguem utilitzar l'operador nou. En aquest cas, hem d'utilitzar mètode newInstance(). .

65. Què són les classes a Java?

A Java, les classes són la col·lecció d'objectes que comparteixen característiques i atributs similars. Les classes representen el plànol o la plantilla a partir de la qual es creen els objectes. Les classes no són entitats del món real, però ens ajuden a crear objectes que són entitats del món real.

66. Quina diferència hi ha entre el mètode estàtic (de classe) i el mètode d'instància?

Mètode estàtic (classe).

Mètode d'instància

El mètode estàtic s'associa a una classe en lloc d'un objecte.

El mètode d'instància s'associa amb un objecte en lloc d'una classe.

Els mètodes estàtics només es poden cridar utilitzant el nom de classe sense crear una instància d'una classe.

El mètode instància es pot cridar en una instància específica d'una classe mitjançant la referència d'objecte.

Els mètodes estàtics no tenen accés això paraula clau .

Els mètodes d'instància tenen accés això paraula clau .

Aquest mètode només pot accedir als membres estàtics de la classe

Aquest mètode pot accedir a mètodes estàtics i no estàtics de la classe.

67. Quina és aquesta paraula clau a Java?

6

'això' és una paraula clau que s'utilitza per fer referència a una variable que fa referència a l'objecte actual.

68. Què són els especificadors d'accés breus i els tipus d'especificadors d'accés?

Modificadors_d'accés_a_java-768

Els especificadors d'accés a Java ajuden a restringir l'abast d'una classe, un constructor, una variable, un mètode o un membre de dades. Hi ha quatre tipus d'especificadors d'accés a Java esmentats a continuació:

  1. Públic
  2. Privat
  3. Protegit
  4. Per defecte

69. Quin serà el valor inicial d'una referència d'objecte que es defineix com a variable d'instància?

El valor inicial d'una referència d'objecte que es defineix com a variable d'instància és un valor NULL.

70. Què és un objecte?

L'objecte és una entitat de la vida real que té certes propietats i mètodes associats. L'objecte també es defineix com la instància d'una classe. Un objecte es pot declarar mitjançant una paraula clau nova.

71. Quines són les diferents maneres de crear objectes en Java?

Els mètodes per crear objectes en Java s'esmenten a continuació:

  1. S'utilitza la paraula clau nova
  2. S'utilitza una nova instància
  3. Utilitzant el mètode clone().
  4. Utilitzant la deserialització
  5. Utilitzant el mètode newInstance() de la classe Constructor

Per obtenir més informació sobre els mètodes per crear objectes en Java, consulteu Aquest article .

72. Quins són els avantatges i els inconvenients de la clonació d'objectes?

Hi ha molts avantatges i desavantatges d'utilitzar la clonació d'objectes com s'esmenta a continuació:

Avantatges:

  • A Java, l'operador d'assignació '=' no es pot utilitzar per a la clonació, ja que simplement crea una còpia de les variables de referència. Per superar aquesta discrepància, el mètode clone() de la classe Object es pot utilitzar sobre l'operador d'assignació.
  • El mètode clone() és un mètode protegit de la classe Object, el que significa que només la classe Employee pot clonar objectes Employee. Això vol dir que cap altra classe que no sigui Employee pot clonar objectes Employee ja que no coneix els atributs de la classe Employee.
  • La mida del codi disminueix a mesura que disminueix la repetició.
  • Permet la replicació (una mena de patró de prototipus) la inicialització manual de cada camp crea un codi gran si l'objecte és complex, és més ràpid amb la clonació.

Desavantatges:

  • Com que el mètode Object.clone() està protegit, hem de proporcionar el nostre propi clone() i trucar indirectament a Object.clone() des d'ell.
  • Si no tenim cap mètode, hem de proporcionar una interfície clonable, ja que hem de proporcionar informació de JVM perquè puguem realitzar un clone() al nostre objecte. Si no, no podrem clonar el clon fer còpies superficials dels camps si només retorneu super.clone() del mètode clon que pot ser problemàtic.

73. Quins són els avantatges de passar això a un mètode en lloc de l'objecte de classe actual?

Hi ha alguns avantatges de passar-ho a un mètode en comptes de l'objecte de classe actual, aquests són:

  • aquesta és la variable final perquè no es pot assignar a cap valor nou, mentre que l'objecte de classe actual podria no ser final i es pot canviar.
  • això es pot utilitzar al bloc sincronitzat.

74. Què és el constructor?

El constructor és un mètode especial que s'utilitza per inicialitzar objectes. El constructor es diu quan es crea un objecte. El nom del constructor és el mateix que el de la classe.

Exemple:

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

75. Què passa si no proporciones un constructor en una classe?

Si no proporcioneu un constructor en una classe en Java, el compilador genera automàticament un constructor predeterminat sense arguments i sense operació que és un constructor predeterminat.

76. Quants tipus de constructors s'utilitzen a Java?

Hi ha dos tipus de constructors a Java, com s'esmenta a continuació:

  1. Constructor per defecte
  2. Constructor parametritzat

Constructor per defecte: És el tipus que no accepta cap valor de paràmetre. S'utilitza per establir valors inicials per als atributs de l'objecte.

class_Name(); // Default constructor called>

Constructor parametritzat: és el tipus de constructor que accepta paràmetres com a arguments. S'utilitzen per assignar valors a variables d'instància durant la inicialització d'objectes.

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

77. Quina és la finalitat d'un constructor predeterminat?

Els constructors ajuden a crear instàncies d'una classe o es pot dir que creen objectes d'una classe. El constructor es crida durant la inicialització dels objectes. Un constructor predeterminat és un tipus de constructor que no accepta cap paràmetre, de manera que qualsevol valor que s'assigni a les propietats dels objectes es considera valors per defecte.

78. Què entens per constructor de còpies a Java?

El constructor de còpia és el tipus de constructor en el qual passem un altre objecte com a paràmetre perquè quines propietats d'ambdós objectes semblen iguals, per això sembla com si els constructors creessin una còpia d'un objecte.

79. On i com es pot utilitzar un constructor privat?

S'utilitza un constructor privat si no voleu que cap altra classe instanciï l'objecte per evitar la subclassificació. L'ús del constructor privat es pot veure com implementat a l'exemple.

Exemple:

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

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

80. Quines diferències hi ha entre els constructors i els mètodes?

Els constructors Java s'utilitzen per inicialitzar objectes. Durant la creació, els constructors són cridats per establir atributs per als objectes, a part d'aquestes poques diferències bàsiques entre ells:

  1. Els constructors només es criden quan es crea l'objecte, però altres mètodes es poden cridar diverses vegades durant la vida d'un objecte.
  2. Els constructors no retornen res, mentre que altres mètodes poden retornar qualsevol cosa.
  3. Els constructors s'utilitzen per configurar l'estat inicial, però els mètodes s'utilitzen per dur a terme accions específiques.

81. Què és una interfície?

Una interfície en Java és una col·lecció de variables finals estàtiques i mètodes abstractes que defineixen el contracte o acord per a un conjunt de classes enllaçades. Qualsevol classe que implementi una interfície és necessària per implementar un conjunt específic de mètodes. Especifica el comportament que ha de mostrar una classe, però no els detalls de com s'ha d'implementar.

Sintaxi:

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

Exemple:

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

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

82. Doneu algunes característiques de la Interfície.

Una interfície en llenguatge de programació Java es defineix com un tipus abstracte utilitzat per especificar el comportament d'una classe. Una interfície en Java és un pla d'un comportament. Una interfície Java conté constants estàtiques i mètodes abstractes.

Les característiques de la interfície s'esmenten a continuació:

  • La interfície pot ajudar a aconseguir una abstracció total.
  • Ens permet utilitzar múltiples herències a Java.
  • Qualsevol classe pot implementar múltiples interfícies fins i tot quan una classe només pot estendre una classe.
  • També s'utilitza per aconseguir un acoblament solt.

83. Què és una interfície de marcador?

Una interfície es reconeix com una interfície buida (sense camp ni mètodes) s'anomena interfície de marcador. Exemples d'interfícies de marcadors són les interfícies serialitzables, clonables i remotes.

84. Quines diferències hi ha entre la classe abstracta i la interfície?

Resum-classe-i-interfície-768

Classe abstracta

Classe d'interfície

Tant els mètodes abstractes com els no abstractes es poden trobar en una classe abstracta.

La interfície només conté mètodes abstractes.

Abstract Class admet els mètodes finals.

La classe d'interfície no admet els mètodes Finals.

La classe Abstract no admet l'herència múltiple.

Interface Class admet les herències múltiples.

La paraula clau abstracta s'utilitza per declarar la classe abstracta.

La paraula clau d'interfície s'utilitza per declarar la classe d'interfície.

estendre La paraula clau s'utilitza per ampliar una classe abstracta. implements La paraula clau s'utilitza per implementar la interfície.

La classe abstracta té membres com a protegits, privats, etc.

Tots els membres de la classe són públics per defecte.

85. Què entens per encapsulació de dades?

Encapsulació-en-Java-300

L'encapsulació de dades és el concepte de propietats OOPS i característiques de les classes que La interfície està unida. Bàsicament, agrupa dades i mètodes que operen amb aquestes dades dins d'una sola unitat. L'encapsulació s'aconsegueix declarant les variables d'instància d'una classe com a privades, el que significa que només es pot accedir dins de la classe.

86. Quins són els avantatges de l'encapsulació a Java?

Els avantatges de l'encapsulació a Java s'esmenten a continuació:

  1. Ocultació de dades: és una manera de restringir l'accés dels nostres membres de dades ocultant els detalls de la implementació. L'encapsulació també ofereix una manera d'amagar les dades. L'usuari no tindrà ni idea de la implementació interna de la classe.
  2. Augment de la flexibilitat: podem fer que les variables de la classe siguin només de lectura o només d'escriptura en funció dels nostres requisits.
  3. Reutilitzabilitat: l'encapsulació també millora la reutilització i és fàcil de canviar amb nous requisits.
  4. Testar el codi és fàcil: el codi es fa fàcil de provar per a les proves d'unitat.

87. Quin és el benefici principal de l'encapsulació?

El principal avantatge de l'encapsulació a Java és la seva capacitat per protegir l'estat intern d'un objecte de modificacions o accés externs. És una manera d'ocultar els detalls d'implementació d'una classe de l'accés extern i només exposar una interfície pública que es pot utilitzar per interactuar amb la classe. El principal avantatge és proporcionar una manera de controlar i gestionar l'estat i el comportament d'un objecte i també protegir-lo de modificacions i accessos no autoritzats alhora.

Exemple:

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

Sortida
Name is Rohan Age is 29>

88. Què entens per agregació?

Agregació-en-Java

L'agregació és un terme relacionat amb la relació entre dues classes millor descrita com una relació té-a. Aquest tipus és la versió més especialitzada de l'associació. És una associació unidireccional significa que és una relació unidireccional. Conté la referència a una altra classe i es diu que té la propietat d'aquesta classe.

89. Quina és la relació 'IS-A' en Java OOP?

'IS-A' és un tipus de relació en Java OOP on una classe hereta una altra classe.

90. Definir Herència.

Quan un objecte que pertany a una subclasse adquireix totes les propietats i el comportament d'un objecte pare que és de la superclasse, es coneix com a herència. Una classe dins d'una classe s'anomena subclasse i aquesta última s'anomena superclasse. Es diu que la subclasse o la classe fill són específiques, mentre que la superclasse o la classe pare són genèriques. L'herència proporciona la reutilització del codi.

91. Quins són els diferents tipus d'herència a Java?

L'herència és el mètode pel qual la classe Child pot heretar les característiques de la classe Super o Parent. A Java, l'herència és de quatre tipus:

  • Herència única: Quan un fill o una subclasse només esten una superclasse, se sap que és una herència única. Les propietats de classe monoparental es transmeten a la classe fill.
  • Herència multinivell: Quan un fill o subclasse amplia qualsevol altra subclasse es crea una jerarquia d'herència que es coneix com a herència multinivell. En altres paraules, una subclasse es converteix en la classe pare d'una altra.
  • Herència jeràrquica: Quan diverses subclasses deriven de la mateixa classe pare es coneix com a herència jeràrquica. En altres paraules, una classe que té un sol pare té moltes subclasses.
  • Herència múltiple: Quan una classe secundària hereta de diverses classes pares es coneix com a herència múltiple. A Java, només admet l'herència múltiple d'interfícies, no classes.

92. Què és l'herència múltiple? És compatible amb Java?

Un component de la noció orientada a objectes conegut com a herències múltiples permet que una classe hereti propietats de moltes classes pares. Quan els mètodes amb la mateixa signatura estan presents tant a les superclasses com a les subclasses, sorgeix un problema. La persona que truca al mètode no pot especificar al compilador quin mètode de classe s'ha de cridar o fins i tot quin mètode de classe s'ha de donar prioritat.

Nota: Java no admet l'herència múltiple

Exemple:

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

Sortida
Eating Drinking Barking>

93. En què és diferent l'herència en C++ de Java?

Herència en C++

Herència en Java

C++ permet a l'usuari heretar diverses classes.Java no admet múltiples herències.
Quan es crea una classe en C++, no hereta de la classe d'objecte, sinó que existeix per si sola.Sempre es diu que Java té una sola herència, ja que totes les classes hereten d'una o altra manera de la classe d'objectes.

94. Hi ha alguna limitació per utilitzar l'herència?

Sí, hi ha una limitació d'utilitzar l'herència a Java, ja que a causa de l'herència es pot heretar tot, des de la superclasse i la interfície, perquè la subclasse està massa agrupada i, de vegades, propensa a errors quan es fa una substitució dinàmica o una sobrecàrrega dinàmica en determinades situacions.

95. Encara que l'herència és un concepte popular de POO, és menys avantatjosa que la composició. Explica.

L'herència és un concepte popular de programació orientada a objectes (OOP), en què una classe pot heretar les propietats i mètodes de qualsevol altra classe, que es coneix com a pare o superclasse. D'altra banda, a Composition, una classe pot contenir una instància d'una altra classe com a variable membre que sovint s'anomena part o component. A continuació es mostren alguns motius pels quals la composició és més avantatjosa que l'herència:

  • Acoblament estret: Sempre que es fa cap canvi a la superclasse, aquests canvis poden afectar el comportament de tots els seus fills o subclasses. Aquest problema fa que el codi sigui menys flexible i també crea problemes durant el manteniment. Aquest problema també condueix a l'acoblament estret entre les classes.
  • Problema de classe base fràgil: Quan els canvis a la classe base poden trencar la funcionalitat de les seves classes derivades. Aquest problema pot dificultar l'addició de noves funcions o la modificació de les existents. Aquest problema es coneix com a problema de classe base fràgil.
  • Reutilització limitada: L'herència a Java pot provocar una reutilització limitada del codi i també la duplicació del codi. Com que una subclasse hereta totes les propietats i mètodes de la seva superclasse, de vegades pot acabar amb codi innecessari que no és necessari. Això condueix a una base de codi menys mantenible.

96. Què és una associació?

L'associació és una relació entre dues classes separades establerta a través dels seus Objectes. Representa la relació de Has-A.

97. Què entens per agregació?

La composició és una forma restringida d'agregació en la qual dues entitats depenen molt entre si. Representa part de la relació.

98. Quina és la composició de Java?

La composició implica una relació on el nen no pot existir independentment del progenitor. Per exemple, el cor humà, el cor no existeix per separat d'un humà.

99. Digues la diferència entre Composició i Agregació.

Agregació

Composició

Defineix una relació entre els objectes

Representa la part de la relació

Els objectes són independents els uns dels altres.

Els objectes depenen els uns dels altres.

Representeu-lo fent servir el diamant farcit.

Representeu-lo fent servir el diamant buit.

Els objectes infantils no tenen tota la vida.

Els objectes infantils tenen tota la vida.

100. Es pot heretar el constructor?

No, no podem heretar un constructor.


101. Què és el polimorfisme?

El polimorfisme es defineix com la capacitat de prendre més d'una forma. És de dos tipus, a saber, polimorfisme en temps de compilació o sobrecàrrega de mètodes, una funció que es diu durant el temps de compilació. Per exemple, agafeu una 'àrea' de classe. En funció del nombre de paràmetres, pot calcular l'àrea d'un quadrat, triangle o cercle. Polimorfisme en temps d'execució o substitució de mètodes: enllaços durant el temps d'execució. El mètode dins d'una classe anul·la el mètode de la classe pare.

102. Què és el polimorfisme en temps d'execució o l'enviament de mètodes dinàmics?

L'enviament de mètodes dinàmics és un mecanisme de resolució per substituir mètodes durant el temps d'execució. La substitució de mètodes és aquella en què el mètode d'una subclasse té el mateix nom, paràmetres i tipus de retorn que un mètode de la superclasse. Quan el mètode anul·lat es crida mitjançant una referència de superclasse, java determina quina versió (superclasse o subclasse) d'aquest mètode s'ha d'executar en funció del tipus d'objecte al qual es fa referència en el moment en què es produeix la trucada. Així, la decisió es pren en temps d'execució. Això s'anomena enviament de mètodes dinàmics.

103. Què és la substitució del mètode?

La substitució de mètodes, també coneguda com a polimorfisme en temps d'execució, és aquella en què la classe fill conté el mateix mètode que la classe pare. Per exemple, tenim un mètode anomenat 'gfg()' a la classe pare. Un mètode gfg() es torna a definir a la subclasse. Així, quan es crida a gfg() a la subclasse, s'executa el mètode dins de l'identificador de classe. Aquí, gfg() dins de la classe anul·la el mètode de fora.

104. Què és la sobrecàrrega de mètodes?

Sobrecàrrega-a-Java-768

La substitució de mètodes és un mètode per aconseguir el polimorfisme en temps d'execució a Java. La substitució de mètodes és una característica que permet que una classe secundària proporcioni una implementació específica d'un mètode que ja proporciona una de les seves classes pare. Quan un mètode d'una classe secundaria té el mateix nom, els mateixos paràmetres o signatura i el mateix tipus de retorn (o subtipus) que un mètode de la seva classe pare, es diu que el mètode de la subclasse anul·la el mètode de la superclasse.

105. Podem anul·lar el mètode estàtic?

No, ja que els mètodes estàtics formen part de la classe i no de l'objecte, de manera que no els podem anul·lar.

106. Podem anul·lar el mètode sobrecarregat?

Sí, ja que el mètode sobrecarregat és un mètode completament diferent als ulls del compilador. Anular no és gens el mateix. La decisió sobre quin mètode cridar es difereix al temps d'execució.

107. Podem sobrecarregar el mètode main()?

Sí, a Java podem sobrecarregar el mètode principal per cridar el mètode principal amb l'ajuda del seu mètode de crida predefinit.

108. Què són la sobrecàrrega de mètodes i la substitució de mètodes?

Sobrecàrrega del mètode: També es coneix com a polimorfisme de temps de compilació. En la sobrecàrrega de mètodes, dos o més mètodes es comparteixen a la mateixa classe amb una signatura diferent.

Exemple:

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

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

Anulació del mètode: La substitució de mètodes es produeix quan una subclasse pot proporcionar la implementació d'un mètode que ja està definit a la classe pare o superclasse. El tipus de retorn, el nom i els arguments han de ser similars als mètodes de la superclasse.

Exemple:

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

Sortida
drive() method of derived class Car is driving. drive() method of base class driving the Car. drive() method of derived class Car is driving.>

Sobrecàrrega del mètode

Anulació del mètode

Quan dos o diversos mètodes estan a la mateixa classe amb diferents paràmetres però el mateix nom.

Quan una subclasse proporciona la seva pròpia implementació d'un mètode que ja està definit a la classe pare.

La sobrecàrrega de mètodes només es pot produir a la mateixa classe o entre una subclasse o classe pare.

La substitució de mètodes només es pot produir a la subclasse.

Quan es produeix un error, es detecta en el moment de la compilació del programa.

Quan es produeix un error, es detecta en temps d'execució del programa.

Exemple de polimorfisme de temps de compilació.

Exemple de polimorfisme en temps d'execució.

La sobrecàrrega del mètode pot requerir o no l'herència.

La substitució del mètode sempre necessita herència.

Es produeix dins de la classe.

Es realitza en dues classes amb relació d'herència.

109. Podem anul·lar els mètodes privats?

No és possible anul·lar els mètodes privats a Java. La substitució del mètode és on s'implementa el mètode de la subclasse en lloc del mètode de la classe pare. Els mètodes privats només són accessibles dins de la classe en què es declara. Com que aquest mètode no és visible per a altres classes i no s'hi pot accedir, no es pot anul·lar.

110. Podem canviar l'abast del mètode anul·lat a la subclasse?

A Java, no és possible modificar l'abast del mètode anul·lat. L'abast del mètode de subclasse ha de ser igual o més ampli que l'abast del mètode anul·lat del mètode Superclass. El mètode anul·lat a la subclasse, per exemple, pot tenir un àmbit públic o un àmbit més accessible com protegit o predeterminat si el mètode anul·lat de la superclasse té un àmbit públic. No pot, però, tenir un àmbit més exclusiu com el privat.

111. Podem modificar la clàusula throws del mètode de la superclasse mentre la substituïm a la subclasse?

Podem modificar la clàusula throws del mètode Superclass amb algunes limitacions, podem canviar la clàusula throws del mètode superclass mentre l'anul·legem a la subclasse. El mètode anul·lat de subclasse només pot especificar excepcions no marcades si el mètode de superclasse no declara cap excepció. Si el mètode de la superclasse declara una excepció, el mètode de la subclasse pot declarar la mateixa excepció, una excepció de subclasse o cap excepció. Tanmateix, el mètode de subclasse no pot declarar una excepció principal que sigui més àmplia que les declarades al mètode de la superclasse.

112. Pots tenir funcions virtuals en Java?

Sí, Java admet funcions virtuals. Les funcions són virtuals per defecte i es poden convertir en no virtuals mitjançant la paraula clau final.

113. Què és l'abstracció?

L'abstracció es refereix a l'acte de representar trets essencials sense incloure detalls de fons. La informació detallada o la implementació s'amaga. L'exemple més comú d'abstracció és un cotxe, sabem com encendre el motor, accelerar i moure's, però, com funciona el motor, i els seus components interns són una lògica complexa oculta als usuaris generals. Normalment es fa per gestionar la complexitat.

114. Què és la classe abstracta?

Una classe declarada com a abstracta, no es pot instanciar, és a dir, l'objecte no es pot crear. Pot contenir o no mètodes abstractes, però si una classe té almenys un mètode abstracte, s'ha de declarar abstracte.

Exemple d'una classe abstracta amb mètode abstracte:

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. Quan s'utilitzen mètodes abstractes?

S'utilitza un mètode abstracte quan volem utilitzar un mètode però volem que les classes fills decideixin la implementació, en aquest cas utilitzem mètodes abstractes amb les classes pare.

116. Com es pot evitar la serialització a la classe secundària si la classe base està implementant la interfície Serializable?

La serialització a la classe secundària si la classe base està implementant la interfície Serializable, podem evitar-la definint el mètode writeObject() i llançant NotSerializableException().

117. Què és Collection Framework a Java?

Les col·leccions són unitats d'objectes en Java. El marc de col·lecció és un conjunt d'interfícies i classes en Java que s'utilitzen per representar i manipular col·leccions d'objectes de diverses maneres. El marc de col·lecció conté classes (ArrayList, Vector, LinkedList, PriorityQueue, TreeSet) i múltiples interfícies (Set, List, Queue, Deque) on cada interfície s'utilitza per emmagatzemar un tipus específic de dades.

118. Explica diverses interfícies utilitzades en el marc de la Col·lecció.

Implementa el marc de recollida

  1. Interfície de col·lecció
  2. Interfície de llista
  3. Estableix la interfície
  4. Interfície de cua
  5. I la interfície
  6. Interfície de mapes

Interfície de col·lecció: La col·lecció és la interfície principal disponible que es pot importar mitjançant java.util.Collection.

Sintaxi:

public interface Collection extends iterable>

119. Com es pot sincronitzar una ArrayList a Java?

Una ArrayList es pot sincronitzar mitjançant dos mètodes esmentats a continuació:

  1. Ús de Collections.synchronizedList()
  2. Utilitzant CopyOnWriteArrayList

Utilitzant Collections.synchronizedList():

public static List synchronizedList(List list)>

Ús de CopyOnWriteArrayList:

  1. Creeu una llista buida.
  2. Implementa la interfície de llista
  3. És una variant segura per a fils de ArrayList
  4. T representa genèric

120. Per què necessitem una ArrayList sincronitzada quan tenim Vectors (que estan sincronitzats) a Java?

ArrayList es necessita fins i tot quan tenim vectors per certs motius:

  1. ArrayList és més ràpid que Vectors.
  2. ArrayList admet multithreading mentre que Vectors només admet l'ús d'un sol fil.
  3. ArrayList és més segur d'utilitzar, ja que Vectors admet fils únics i les operacions individuals són menys segures i triguen més a sincronitzar-se.
  4. Els vectors es consideren obsolets a Java per la seva naturalesa sincronitzada.

121. Per què no podem crear una matriu genèrica?

No es poden crear matrius genèriques perquè un matriu porta escriviu informació dels seus elements en temps d'execució perquè durant el temps d'execució llança 'ArrayStoreException' si el tipus d'elements no és similar. Com que la informació de tipus genèrics s'esborra en temps de compilació mitjançant l'esborrat de tipus, la comprovació del magatzem de matrius s'hauria passat on hauria d'haver fallat.

122. Normalment s'utilitzen ubicacions de memòria contigües per emmagatzemar valors reals en una matriu, però no a ArrayList. Explica.

Els elements d'una matriu s'emmagatzemen en ubicacions de memòria contigües, el que significa que cada element s'emmagatzema en un bloc separat basat en ell situat dins de la matriu. Com que els elements de la matriu s'emmagatzemen en ubicacions contigües, pot ser relativament fàcil accedir a qualsevol element mitjançant el seu índex, ja que l'adreça de l'element es pot calcular en funció de la ubicació de l'element. Però Java implementa ArrayLists com a matrius dinàmiques, el que significa que la mida pot canviar a mesura que s'eliminen o s'afegeixen elements. Els elements ArrayList no s'emmagatzemen en ubicacions de memòria contigües per tal d'acomodar aquesta naturalesa dinàmica. En lloc d'això, ArrayList fa ús d'un mètode conegut com a matriu expandible en què la matriu subjacent s'amplia a una mida més gran segons sigui necessari i els elements es copien a la nova ubicació. A diferència d'una ArrayList, que té una mida dinàmica i no emmagatzema els seus elements en ubicacions de memòria contigües, una matriu té una mida fixa i els seus elements s'emmagatzemen allà.

123. Expliqueu el mètode per convertir ArrayList a Array i Array a ArrayList.

Conversió de List a ArrayList

Hi ha diversos mètodes per convertir List en ArrayList

Converteix-Array-en-ArrayList-768

Els programadors poden convertir un Array en ArrayList utilitzant el mètode asList() de la classe Arrays. És un mètode estàtic de la classe Arrays que accepta l'objecte List.

Sintaxi:

Arrays.asList(item)>

Exemple:

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

Sortida
[Abc, Def, Ghi, Jkl]>

Conversió de ArrayList a Array

Converteix-ArrayList-a-Array-768

Els programadors de Java poden convertir ArrayList a

Sintaxi:

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

Exemple:

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

Sortida
1 2 3 2 1>

124. Com creix dinàmicament la mida de ArrayList? I també indicar com s'implementa internament.

A causa de la naturalesa basada en matrius ArrayLists, creix dinàmicament en mida assegurant que sempre hi ha prou espai per als elements. Quan es crea per primera vegada un element ArrayList, la capacitat per defecte és d'uns 10-16 elements, que bàsicament depèn de la versió de Java. Els elements ArrayList es copien de la matriu original a la nova matriu quan la capacitat de la matriu original és plena. A mesura que la mida ArrayList augmenta dinàmicament, la classe crea una nova matriu de mides més grans i copia tots els elements de la matriu antiga a la nova matriu. Ara, la referència de la nova matriu s'utilitza internament. Aquest procés de creixement dinàmic d'una matriu es coneix com a redimensionament.

125. Què és un vector a Java?

Els vectors a Java són similars i poden emmagatzemar diversos elements al seu interior. Els vectors segueixen certes regles esmentades a continuació:

  1. El vector es pot importar mitjançant Java.util.Vector.
  2. Vector s'implementa utilitzant una matriu dinàmica a mesura que la mida del vector augmenta i disminueix depenent dels elements inserits en ell.
  3. Elements del vector utilitzant números índex.
  4. Els vectors estan sincronitzats per naturalesa, vol dir que només utilitzaven un sol fil (només es realitza un procés en un moment determinat).
  5. El vector conté molts mètodes que no formen part del marc de col·leccions.

Sintaxi:

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

126. Com fer que Java ArrayList sigui només de lectura?

Una ArrayList només es pot preparar mitjançant el mètode proporcionat per Collections mitjançant el mètode Collections.unmodiableList().

Sintaxi:

array_readonly = Collections.unmodifiableList(ArrayList);>

Exemple:

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

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

127. Què és una cua de prioritat a Java?

Prioritat-Cua-768

Una cua de prioritat és un tipus de dades abstracte similar a una cua normal o una estructura de dades de pila. Els elements emmagatzemats als elements depenen de la prioritat definida de baixa a alta. PriorityQueue es basa en l'munt de prioritat.

Sintaxi:

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

Sortida
10>

128. Explica la classe LinkedList.

La classe LinkedList és Java que utilitza una llista doblement enllaçada per emmagatzemar elements. Hereta la classe AbstractList i implementa les interfícies List i Deque. Les propietats de la classe LinkedList s'esmenten a continuació:

  1. Les classes LinkedList no estan sincronitzades.
  2. Manté l'ordre d'inserció.
  3. Es pot utilitzar com a llista, pila o cua.

Sintaxi:

LinkedList list_name=new LinkedList();>

129. Què és la classe Stack a Java i quins són els diferents mètodes que ofereix?

Una classe Stack a Java és una estructura de dades LIFO que implementa l'estructura de dades Last In First Out. Es deriva d'una classe Vector però té funcions específiques per a les piles. La classe Stack a Java proporciona els mètodes següents:

  • ullada(): retorna l'element superior de la pila sense eliminar-lo
  • buit(): retorna true si la pila està buida i false en cas contrari
  • push(): empeny un element a la part superior de la pila
  • pop(): elimina i torna l'element superior de la pila
  • cerca(): retorna la posició basada en 1 de l'objecte des de la part superior de la pila. Si l'objecte no és a la pila, retorna -1

130. Què és Set al marc de col·leccions de Java i enumera les seves diferents implementacions?

Els conjunts són col·leccions que no emmagatzemen elements duplicats. No guarden cap ordre dels elements. El marc de col·leccions de Java proporciona diverses implementacions de la interfície Set, que inclouen:

  • HashSet: HashSet a Java, emmagatzema els elements en una taula has que proporciona cerques i insercions més ràpides. HashSet no està ordenat.
  • LinkedHashSet: LinkedHashSet és una implementació de HashSet que manté l'ordre d'inserció dels elements.
  • Conjunt d'arbres: TreeSet emmagatzema els elements en un ordre ordenat determinat per l'ordre natural dels elements o per un comparador personalitzat proporcionat en el moment de la creació.

131. Què és la classe HashSet a Java i com emmagatzema els elements?

La classe HashSet implementa la interfície Set al Java Collections Framework i és membre de la classe HashSet. A diferència dels valors duplicats, emmagatzema una col·lecció d'elements diferents. En aquesta implementació, cada element s'assigna a un índex d'una matriu mitjançant una funció hash, i l'índex s'utilitza per accedir ràpidament a l'element. Produeix un índex per a l'element de la matriu on s'emmagatzema en funció de l'element d'entrada. Suposant que la funció hash distribueix els elements entre els cubs de manera adequada, la classe HashSet proporciona un rendiment en temps constant per a les operacions bàsiques (afegir, eliminar, contenir i mida).

132. Què és LinkedHashSet a Java Collections Framework?

El LinkedHashSet és una versió ordenada de Hashset mantinguda per una llista doblement enllaçada a través de tots els elements. És molt útil quan es necessita un ordre d'iteració. Durant la iteració a LinkedHashSet, els elements es retornen en el mateix ordre en què s'insereixen.

Sintaxi:

LinkedHashSet hs = new LinkedHashSet();>

Exemple:

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

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

133. Què és una interfície de mapa a Java?

Interfície-mapa-a-Java-660

La interfície de mapes està present a la col·lecció Java i es pot utilitzar amb el paquet Java.util. S'utilitza una interfície de mapa per assignar valors en forma de formulari de valor-clau. El mapa conté totes les claus úniques. A més, proporciona mètodes associats amb ell com containsKey(), conté valor (), etc.

Hi ha diversos tipus de mapes a la interfície de mapes, tal com s'esmenta a continuació:

  1. Mapa ordenat
  2. TreeMap
  3. HashMap
  4. LinkedHashMap

134. Explica el mapa d'arbre a Java

TreeMap és un tipus de mapa que emmagatzema dades en forma de parell clau-valor. S'implementa utilitzant l'arbre vermell-negre. Les característiques de TreeMap són:

  1. Conté només elements únics.
  2. No pot tenir una clau NULL
  3. Pot tenir diversos valors NULL.
  4. No està sincronitzat.
  5. Manté l'ordre ascendent.

135. Què és EnumSet?

EnumSet és una implementació especialitzada de la interfície Set per utilitzar-la amb el tipus d'enumeració. Algunes característiques d'EnumSet són:

  1. No està sincronitzat.
  2. Més ràpid que HashSet.
  3. Tots els elements d'un EnumSet han de provenir d'un sol tipus d'enumeració.
  4. No permet objectes nuls i llança NullPointerException per a les excepcions.
  5. Utilitza un iterador de seguretat contra errors.

Sintaxi:

public abstract class EnumSet>

Paràmetre: E especifica els elements.

136. Què és BlockingQueue?

BlockingQueue-768

Una cua de bloqueig és una cua que admet les operacions que esperen que la cua no estigui buida mentre es recupera i s'elimina l'element, i que esperen que hi hagi espai disponible a la cua mentre s'afegeix l'element.

Sintaxi:

public interface BlockingQueue extends Queue>

Paràmetres: E és el tipus d'elements emmagatzemats a la Col·lecció

137. Què és el ConcurrentHashMap a Java i el implementeu?

ConcurrentHashMap s'implementa mitjançant Hashtable.

Sintaxi:

public class ConcurrentHashMap  extends AbstractMap  implements ConcurrentMap, Serializable>

Paràmetres : K és el tipus d'objecte clau i V és el valor tipus d'objecte

138. Pots utilitzar qualsevol classe com a clau de mapa?

Sí, podem utilitzar qualsevol classe com a clau de mapa si segueix determinades regles predefinides esmentades a continuació:

  1. La classe que anul·la el mètode equals() també ha de substituir el mètode hashCode().
  2. La classe concurrentHashMap és segura per a fils.
  3. El nivell de concurrència predeterminat de ConcurrentHashMap és 16.
  4. No és possible inserir objectes nuls a ConcurrentHashMap com a clau o com a valor.

139. Què és un iterador?

Iterador-en-Java-768

La interfície Iterator proporciona mètodes per iterar sobre qualsevol col·lecció a Java. Iterator és el reemplaçament de l'enumeració al Java Collections Framework. Pot obtenir una instància d'iterador d'una col·lecció mitjançant el mètode _iterator()_. També permet a la persona que truca eliminar elements de la col·lecció subjacent durant la iteració.

140. Què és una enumeració?

L'enumeració és un tipus de dades definit per l'usuari. S'utilitza principalment per assignar noms a constants integrals, els noms fan que un programa sigui fàcil de llegir i mantenir. L'objectiu principal de la enumeració és definir els tipus de dades definides per l'usuari.

Exemple:

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

141. Quina diferència hi ha entre Col·lecció i Col·leccions?

Col · lecció

Col·leccions

La col·lecció és una interfície.

Les col·leccions són una classe.

Proporciona la funcionalitat estàndard de l'estructura de dades.

Es tracta d'ordenar i sincronitzar els elements de la col·lecció.

Proporciona els mètodes que es poden utilitzar per a l'estructura de dades.

Proporciona mètodes estàtics que es poden utilitzar per a diverses operacions.

142. Diferenciar entre Array i ArrayList a Java.

Matriu

ArrayList

Unidimensional o multidimensional

Unidimensional

Per i per a cadascun utilitzat per a la iteració

Aquí s'utilitza l'iterador per recórrer riverArrayList

La paraula clau length retorna la mida de la matriu.

El mètode size() s'utilitza per calcular la mida de ArrayList.

La matriu té una mida fixa.

punters al c

La mida de ArrayList és dinàmica i es pot augmentar o disminuir quan calgui.

És més ràpid com més amunt el veiem de mida fixa

És relativament més lent per la seva naturalesa dinàmica

Els tipus de dades primitives es poden emmagatzemar directament en objectes poc probables.

Els tipus de dades primitives no s'afegeixen directament a matrius poc probables, s'afegeixen indirectament amb l'ajuda de l'autoboxing i unboxing

No es poden afegir aquí, per tant, el tipus és insegur.

Es poden afegir aquí, per tant, fer que ArrayList sigui segur de tipus.

L'operador de l'assignació només compleix el propòsit

Aquí s'utilitza un mètode especial conegut com a mètode add().

143. Quina diferència hi ha entre Array i Collection a Java?

Matriu

Col·leccions

La matriu en Java té una mida fixa.

Les col·leccions en Java tenen mides dinàmiques.

En una matriu, els elements s'emmagatzemen en ubicacions de memòria contigües.

A les col·leccions, els elements no s'emmagatzemen necessàriament en ubicacions de memòria contigües.

Els objectes i els tipus de dades primitius es poden emmagatzemar en una matriu.

Només podem emmagatzemar objectes en col·leccions.

Es requereix manipulació manual per canviar la mida de la matriu.

El canvi de mida a les col·leccions es gestiona automàticament.

La matriu té mètodes bàsics de manipulació.

Les col·leccions tenen mètodes avançats de manipulació i iteració.

La matriu està disponible des de l'inici de Java.

Les col·leccions es van introduir a Java 1.2.

144. Diferència entre ArrayList i LinkedList.

ArrayList

LinkedList

ArrayList s'implementa com una matriu ampliable.

LinkedList s'implementa com una llista doblement enllaçada.

A ArrayList, els elements s'emmagatzemen en ubicacions de memòria contigües

Els elements LinkedList s'emmagatzemen en ubicacions de memòria no contigües, ja que cada element té una referència als elements següents i anteriors.

ArrayLists són més ràpids per a l'accés aleatori.

LinkedLists són més ràpids per a les operacions d'inserció i supressió

ArrayLists són més eficients amb la memòria.

LinkedList és menys eficient de memòria

ArrayLists Utilitzeu més memòria per mantenir la mida de la matriu.

LinkedList Utilitza menys memòria ja que només té referències a elements

L'operació de cerca és més ràpida a ArrayList.

L'operació de cerca és més lenta a LinkedList

145. Diferenciar entre ArrayList i Vector a Java.

ArrayList

Vector

ArrayLists s'implementen com una matriu ampliable.

Vector s'implementa com una matriu que es pot augmentar.

ArrayList no està sincronitzat.

El vector està sincronitzat.

ArrayLists són més ràpids per a operacions no concurrents.

Vector és més lent per a operacions no simultànies a causa de la sobrecàrrega afegida de sincronització.

Les ArrayLists es van introduir a Java 1.2.

Vector es va introduir a JDK 1.0.

Recomanat per al seu ús en un entorn d'un sol fil.

Es recomana utilitzar vectors en un entorn multifil.

La capacitat inicial predeterminada de ArrayLists és 10.

En Vectors, la capacitat inicial predeterminada és 10, però l'increment predeterminat és el doble de la mida.

El rendiment de ArrayList és alt.

El rendiment del vector és baix.

146. Quina diferència hi ha entre Iterator i ListIterator?

Iterador

ListIterator

Pot travessar els elements presents a la Col·lecció només en direcció cap endavant.

Pot recórrer els elements presents a la col·lecció tant en direccions cap endavant com enrere.

S'utilitza per recórrer el mapa, la llista i el conjunt.

Només es pot recórrer List i no els altres dos.

Els índexs no es poden obtenir amb Iterator

Té mètodes com nextIndex() i previousIndex() per obtenir índexs d'elements en qualsevol moment mentre travessa la llista.

No es poden modificar ni substituir els elements presents a la col·lecció

Pot modificar o substituir elements amb l'ajuda del conjunt (E e)

No es poden afegir elements i també llança ConcurrentModificationException.

Pot afegir fàcilment elements a una col·lecció en qualsevol moment.

Alguns mètodes d'Iterator són next(), remove() i hasNext().

Alguns mètodes de ListIterator són next(), previous(), hasNext(), hasPrevious(), add(E e).

147. Diferenciar entre HashMap i HashTable.

HashMap

HashTable

HashMap no està sincronitzat

HashTable està sincronitzat

Una clau pot ser un valor NULL

No es permeten valors NULL

L'iterador s'utilitza per recórrer HashMap.

Es poden utilitzar tant Iterator com Enumertar

HashMap és més ràpid.

HashTable és més lent en comparació amb HashMap.

148. Quina diferència hi ha entre iterador i enumeració?

Iterador

Enumeració

L'iterador pot travessar tant els llegats com els elements no heretats.

L'enumeració només pot travessar elements heretats.

L'iterador és ràpid de fallar.

L'enumeració no és ràpida.

Els iteradors són més lents.

La enumeració és més ràpida.

L'iterador pot realitzar una operació d'eliminació mentre recorre la col·lecció.

L'enumeració només pot realitzar operacions transversals a la col·lecció.

149. Quina diferència hi ha entre Comparable i Comparator?

Comparable

Comparador

La interfície està present al paquet java.lang.

La interfície està present al paquet java.util.

Proporciona el mètode compareTo() per ordenar els elements.

Proporciona el mètode compare() per ordenar els elements.

Proporciona seqüències d'ordenació individuals.

Proporciona múltiples seqüències d'ordenació.

La lògica de l'ordenació ha d'estar en la mateixa classe l'objecte de la qual voleu ordenar.

La lògica de l'ordenació hauria d'estar en una classe separada per escriure una ordenació diferent basada en diferents atributs dels objectes.

El mètode ordena les dades segons un ordre d'ordenació fix.

El mètode ordena les dades segons l'ordre d'ordenació personalitzat.

Afecta a la classe original.

No afecta la classe original.

Implementat amb freqüència a l'API per Calendar, classes Wrapper, Data i String.

S'implementa per ordenar instàncies de classes de tercers.

150. Quina diferència hi ha entre Set i Map?

Conjunt

Mapa

La interfície Set s'implementa mitjançant el paquet java.util.

El mapa s'implementa amb el paquet java.util.

Pot ampliar la interfície de col·lecció.

No amplia la interfície de col·lecció.

No admet valors duplicats.

Permet duplicar valors.

El conjunt només pot ordenar un valor nul.

El mapa pot ordenar diversos valors nuls.

Preguntes d'entrevista intermèdia de Java

151. Expliqueu l'iterador FailFast i l'iterador FailSafe juntament amb exemples per a cadascun.

Un iterador FailFast és un iterador que llança a ConcurrentModificationException si detecta que la col·lecció subjacent s'ha modificat mentre s'utilitza l'iterador. Aquest és el comportament predeterminat dels iteradors al Java Collections Framework. Per exemple, l'iterador d'un HashMap és FailFast.

Exemple:

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

Sortida:

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

Un iterador FailSafe no llança a ConcurrentModificationException si la col·lecció subjacent es modifica mentre s'utilitza l'iterador. Alternativament, crea una instantània de la col·lecció en el moment en què es crea l'iterador i itera sobre la instantània. Per exemple, l'iterador d'un ConcurrentHashMap és FailSafe.

Exemple:

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. Què és el tractament d'excepcions?

An Excepció és un esdeveniment que interromp el flux normal del programa i requereix un processament especial. Durant l'execució d'un programa, els errors i els fets no planificats es poden tractar mitjançant el mecanisme de gestió d'excepcions de Java. A continuació es mostren alguns motius pels quals es produeixen excepcions a Java:

  • Error del dispositiu
  • Pèrdua de connexió a la xarxa
  • Errors de codi
  • Obrint un fitxer no disponible
  • Entrada d'usuari no vàlida
  • Limitacions físiques (fora de memòria del disc)

153. Quants tipus d'excepcions es poden produir en un programa Java?

Tipus d'excepció-a-Java-660

En general hi ha dos tipus d'excepcions a Java:

  • Excepcions integrades: Les biblioteques de Java proporcionen les excepcions integrades a Java. Aquestes excepcions es poden dividir a més en dues subcategories, és a dir, Excepcions marcades i no marcades. A continuació es mostren algunes de les excepcions integrades a Java:
    • ArrayIndexOutOfBoundsExceptions
    • ClassNotFoundException
    • FileNotFoundException
    • IOException
    • NullPointerException
    • Excepció aritmètica
    • InterruptedException
    • RuntimeException
  • Excepcions definides per l'usuari: Les excepcions definides per l'usuari les defineixen els mateixos programadors per gestionar algunes situacions o errors específics que no estan coberts per excepcions integrades. Per definir excepcions definides per l'usuari s'ha de definir una nova classe que ampliï la classe d'excepció adequada. Les excepcions definides per l'usuari a Java s'utilitzen quan les excepcions integrades estan a Java.

154. Diferència entre un error i una excepció.

Errors

Excepcions

La recuperació d'errors no és possible.

Recuperar-se de les excepcions utilitzant un bloc try-catch o enviant excepcions a la persona que truca.

Tots els errors són tipus no marcats a Java.

Inclou tant els tipus marcats com els no marcats que es produeixen.

Els errors són causats principalment per l'entorn en què s'executa el programa.

El programa és principalment responsable de provocar excepcions.

Els errors es poden produir tant en temps de compilació com en temps d'execució. Temps de compilació: error de sintaxi, temps d'execució: error lògic.

Totes les excepcions es produeixen en temps d'execució, però les excepcions marcades són conegudes pel compilador mentre que no ho són.

Es defineixen al paquet java.lang.Error.

Es defineixen al paquet java.lang.Exception

Exemples : java.lang.StackOverflowError, java.lang.OutOfMemoryError

Exemples : Excepcions marcades: SQLException, IOException Excepcions no marcades: ArrayIndexOutOfBoundException, NullPointerException, ArithmeticException.

155. Expliqueu la jerarquia de les classes d'excepció de Java.

Gestió d'excepcions-768

Tots els tipus d'excepció i error a Java són subclasses de la classe throwable, que és la classe base de la jerarquia. Aquesta classe s'utilitza llavors per a condicions excepcionals que els programes d'usuari haurien d'agafar. NullPointerException és un exemple d'aquesta excepció. El sistema d'execució de Java utilitza una altra branca, l'error per indicar errors que tenen a veure amb el JRE. StackOverflowError és un exemple d'un d'aquests errors.

156. Expliqueu les excepcions en temps d'execució.

Les excepcions en temps d'execució són excepcions que es produeixen durant l'execució d'un codi, a diferència de les excepcions en temps de compilació que es produeixen durant la compilació. Les excepcions en temps d'execució són excepcions no marcades, ja que la JVM no les té en compte.

Alguns exemples d'excepcions en temps d'execució a Java inclouen:

  • NullPointerException: es produeix quan una aplicació intenta utilitzar una referència d'objecte nul.
  • ArrayIndexOutOfBoundsException: es produeix quan una aplicació intenta accedir a un índex de matriu que està fora dels límits.
  • ArithmeticException: es produeix quan una aplicació intenta dividir per zero.
  • IllegalArgumentException: es produeix quan es passa un mètode a un argument il·legal o inadequat.

A diferència de les excepcions marcades, les excepcions en temps d'execució no requereixen una declaració a la clàusula throws ni una captura en un bloc try-catch. No obstant això, és recomanable gestionar les excepcions en temps d'execució per tal de proporcionar missatges d'error significatius i evitar una fallada del sistema. Com que les excepcions en temps d'execució proporcionen informació més específica sobre el problema que les excepcions marcades, permeten als desenvolupadors detectar i corregir errors de programació amb més facilitat i rapidesa.

157. Què és NullPointerException?

És un tipus d'excepció en temps d'execució que es llança quan el programa intenta utilitzar una referència d'objecte que té un valor nul. L'ús principal de NullPointerException és indicar que no s'assigna cap valor a una variable de referència, també s'utilitza per implementar estructures de dades com llistes i arbres enllaçats.

158. Quan es llança l'excepció ArrayStoreException?

ArrayStoreException es llança quan s'intenta emmagatzemar el tipus incorrecte d'objecte en una matriu d'objectes.

Exemple:

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

Exemple:

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

159. Quina diferència hi ha entre l'excepció marcada i l'excepció no marcada?

Excepció marcada:

Les excepcions verificades són les excepcions que es comproven durant el temps de compilació d'un programa. En un programa, si algun codi d'un mètode llança una excepció marcada, llavors el mètode ha de gestionar l'excepció o bé especificar l'excepció mitjançant la paraula clau throws.

Les excepcions marcades són de dos tipus:

  • Excepcions totalment verificades: també es comproven totes les seves classes fills, com ara IOException i InterruptedException.
  • Excepcions parcialment verificades: algunes de les seves classes secundàries no estan marcades, com una excepció.

Excepció no marcada:

Desmarcades són les excepcions que no es marquen en temps de compilació d'un programa. Les excepcions de les classes Error i RuntimeException són excepcions sense marcar, tot el que es pot llançar està comprovat.

160. Quina és la classe base per a error i excepció?

Gestió d'excepcions-768

L'error és una operació il·legal realitzada per l'usuari que provoca una anomalia en el programa. Les excepcions són els esdeveniments o condicions inesperats que es produeixen durant l'execució del programa, l'excepció interromp el flux normal de les instruccions del programa.

Els errors i les excepcions tenen una classe pare comuna que és la classe java.lang.Throwable.

161. És necessari que cada bloc try hagi d'anar seguit d'un bloc catch?

No, no és necessari utilitzar catch block després try block a Java, ja que podem crear una altra combinació amb finally block. Finalment és el bloc que s'executa malgrat que l'excepció es llança o no.

162. Què és la propagació d'excepcions?

La propagació d'excepcions és un procés en el qual l'excepció es deixa anar de dalt a baix de la pila. Si no es detecta una vegada, l'excepció torna a baixar al mètode anterior, i així successivament fins que s'atrapa o fins que arriba al final de la pila de trucades.

163. Què passarà si poseu System.exit(0) al bloc try o catch? Finalment s'executarà el bloc?

System.exit(int) té la capacitat de llançar SecurityException. Per tant, si en cas de seguretat, es llança l'excepció, finalment s'executarà el bloc, en cas contrari, la JVM es tancarà mentre es crida al sistema. exit(0) per la qual cosa finalment no s'executarà el bloc.

164. Què entens per Object Cloning i com ho aconsegueixes a Java?

És el procés de crear una còpia exacta de qualsevol objecte. Per tal de donar suport a això, una classe java ha d'implementar la interfície Cloneable del paquet java.lang i anul·lar el mètode clone() proporcionat per la classe Object la sintaxi de la qual és:

L'objecte protegit clone() genera CloneNotSupportedException{ return (Object)super.clone();}En cas que la interfície Cloneable no estigui implementada i només s'ha substituït el mètode, es produeix una CloneNotSupportedException a Java.

165. Com afecten les excepcions al programa si no les gestiona?

Les excepcions són responsables d'acabar bruscament l'execució del programa mentre s'executa i el codi escrit després de l'excepció no s'executa.

166. Per a què serveix la paraula clau final?

La paraula clau final s'utilitza per fer que les funcions no siguin virtuals. Per defecte, totes les funcions són virtuals, de manera que per fer-ho no virtual fem servir la paraula clau final.

167. Quina finalitat tenen les paraules clau final, finally i finalize?

i). final:

final és una paraula clau que s'utilitza amb la variable, el mètode o la classe perquè no es puguin substituir.

Exemple:

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

Sortida:

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

ii). finalment

finalment és un bloc de codi utilitzat amb try-catch en el maneig d'excepcions. El codi escrit al bloc finally s'executa malgrat que es produeixi o no una excepció.

Exemple:

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

Sortida
Try block Always runs even without exceptions>

iii). finalitzar

És un mètode que es crida just abans de suprimir/destruir els objectes que són aptes per a la recollida d'escombraries per dur a terme activitats de neteja.

Exemple:

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

Sortida
Main function running>

168. Quina diferència hi ha entre this() i super() a Java?

això ( )

super()

Representa la instància actual de la classe.

Representa la instància actual de la classe pare.

Crida al constructor predeterminat de la mateixa classe.

Crida al constructor predeterminat de la classe base.

Accedir als mètodes de la mateixa classe.

Accediu als mètodes de la classe pare.

Apunta la instància de classe actual.

Assenyala la instància de la superclasse.

169. Què és la multitasca?

La multitasca en Java es refereix a la capacitat d'un programa per dur a terme diverses tasques alhora. Els fils, que són operacions ràpides contingudes en un sol programa, poden fer-ho. Executar moltes coses alhora es coneix com a multitasca.

Exemple:

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. Què entens per programa multifil?

Els programes multifils de Java contenen fils que s'executen simultàniament en lloc d'executar-se seqüencialment. Un ordinador pot utilitzar els seus recursos de manera més eficient combinant diverses tasques alhora. Qualsevol programa amb multithreading permet a més d'un usuari utilitzar el programa simultàniament sense executar diverses còpies. Un programa multifil està dissenyat per executar diversos processos al mateix temps, cosa que pot millorar el rendiment d'un programa i permet que el programa utilitzi diversos processadors i millora el rendiment global.

171. Quins són els avantatges del multithreading?

Hi ha múltiples avantatges d'utilitzar multithreading que són els següents:

  • Capacitat de resposta: la capacitat de resposta de l'usuari augmenta perquè l'aplicació interactiva multithreading permet executar codi fins i tot quan la secció està bloquejada o executa un procés llarg.
  • Compartició de recursos: el procés pot realitzar el pas de missatges i la memòria compartida a causa del multithreading.
  • Economia: som capaços de compartir la memòria per la qual cosa els processos són econòmics.
  • Escalabilitat: el multithreading en múltiples màquines de CPU augmenta el paral·lelisme.
  • Millor comunicació: les funcions de sincronització de fils milloren la comunicació entre processos.
  • Ús de l'arquitectura multiprocessador
  • Ús minimitzat dels recursos del sistema

172. Quines són les dues maneres en què es pot crear Thread?

El multithreading és una característica de Java que permet l'execució simultània de dues o més parts d'un programa per a la màxima utilització de la CPU. En general, els fils són processos petits i lleugers amb camins d'execució separats. Aquests fils utilitzen memòria compartida, però actuen de manera independent, de manera que si algun fil falla, no afecta els altres fils. Hi ha dues maneres de crear un fil:

  • Ampliant la classe Thread
  • Mitjançant la implementació d'una interfície Runnable.

Ampliant la classe Thread

Creem una classe que amplia el classe java.lang.Thread . Aquesta classe anul·la el mètode run() disponible a la classe Thread. Un fil comença la seva vida dins del mètode run().

Sintaxi:

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

Mitjançant la implementació de la interfície Runnable

Creem una nova classe que implementa java.lang.Runnable interfície i anul·la el mètode run(). A continuació, instanciem un objecte Thread i cridem al mètode start() en aquest objecte.

Sintaxi:

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

173. Què és un fil?

Els fils a Java són subprocés amb pes lleuger amb la unitat més petita de processos i també tenen camins d'execució separats. Aquests fils utilitzen memòria compartida, però actuen de manera independent, per tant, si hi ha una excepció en els fils que no afecten el funcionament d'altres fils malgrat que comparteixen la mateixa memòria. Un fil té el seu propi comptador de programa, pila d'execució i variables locals, però comparteix el mateix espai de memòria amb altres fils del mateix procés. Java proporciona suport integrat per multithreading a través de Interfície executable i la Classe de fil .

174. Diferenciar entre procés i fil?

Un procés i un fil són unitats d'execució en un sistema informàtic, però són diferents de diverses maneres:

Procés

Fil

Un procés és un programa en execució.

Un fil és una seqüència única d'instruccions dins d'un procés.

El procés triga més temps a finalitzar.

El fil triga menys a finalitzar.

El procés requereix més temps per canviar de context.

El fil necessita menys temps per canviar de context.

El procés és menys eficient pel que fa a la comunicació.

Thread és més eficient en termes de comunicació.

El procés està aïllat.

Els fils comparteixen la memòria.

El procés té el seu propi bloc de control de processos, pila i espai d'adreces.

Thread té PCB dels pares, el seu propi bloc de control de fils i un espai d'adreces comú i de pila.

El procés no comparteix dades entre ells.

Els fils comparteixen dades entre ells.

175. Descriu el cicle de vida del fil?

Cicle-de-fil-768

A fil en Java en qualsevol moment del temps existeix en qualsevol dels estats següents. Un fil només es troba en un dels estats mostrats en qualsevol moment:

  1. Nou: El fil s'ha creat però encara no ha començat.
  2. Es pot executar: El fil s'està executant, executant la seva tasca o està llest per executar-se si no hi ha altres fils de prioritat més alta.
  3. Bloquejat: El fil està suspès temporalment, esperant un recurs o un esdeveniment.
  4. Esperant: El fil està esperant que un altre fil realitzi una tasca o que passi un període de temps especificat.
  5. Finalitzat: El fil ha completat la seva tasca o ha estat finalitzat per un altre fil.

176. Expliqueu el mètode suspend() a la classe Thread.

El mètode suspend() de la classe Thread a Java suspèn temporalment l'execució d'un fil. Quan se suspèn un fil passa a un estat bloquejat i no seria programat pel sistema operatiu, la qual cosa significa que no podrà executar la seva tasca fins que es reprèn. Hi ha alternatives més segures i flexibles als mètodes suspend() en el llenguatge de programació Java modern. Aquest mètode no retorna cap valor.

Sintaxi:

  public final void   suspend();>

Exemple:

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

Sortida:

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. Expliqueu el fil principal a Execució de la classe Thread.

Java proporciona suport integrat per a la programació multiprocés. El fil principal es considera el fil principal de tots els altres fils que es creen durant l'execució del programa. El fil principal es crea automàticament quan el programa comença a executar-se. Aquest fil executa el mètode principal del programa. S'encarrega d'executar la lògica principal del programa Java així com de gestionar les operacions d'entrada de l'usuari. El fil principal serveix com a fil base des del qual es generen tots els altres fils secundaris.

Thread-Class-Execution-768

178. Què és un fil de dimoni?

Un fil de dimoni a Java és un fil de baixa prioritat que s'utilitza per realitzar operacions en segon pla o tasques que s'utilitzen per dur a terme contínuament. com ara la recollida d'escombraries, els enviaments de senyals, els oients d'acció, etc. Els fils de dimoni a Java tenen una prioritat més baixa que els fils d'usuari, la qual cosa significa que només es poden executar quan no s'està executant cap fil d'usuari. Els fils de dimoni a Java són funcions útils que es requereixen per a tasques en segon pla que no requereixen tancament o finalització explícita. Permet un ús més eficient dels recursos del sistema i s'utilitzen per simplificar els recursos i pot simplificar les tasques de llarga durada.

179. Quines són les maneres en què un fil pot entrar a l'estat d'espera?

El fil és un procés lleuger que s'executa simultàniament amb l'altre fil dins d'un sol procés. Cada fil pot executar una tasca diferent i compartir els recursos dins d'un sol procés. El fil a Java pot entrar a l'estat d'espera de moltes maneres diferents:

  • Mètode Sleep() Crida: El somni () s'utilitza per aturar l'execució del fil durant un període de temps específic. Mentre el fil està en pausa, passa a l'estat d'espera.
  • Mètode Wait(): Aquest mètode s'utilitza per esperar un fil fins que l'altre li indiqui que es desperta. El fil passa a l'estat d'espera fins que rep una notificació d'un altre fil.
  • Mètode Join(): El mètode Join() es pot utilitzar per esperar que el fil acabi l'execució. El fil cridant passa a l'estat d'espera fins que s'ha completat el fil de destinació.
  • Esperant les operacions d'E/S: Si el fil està esperant que finalitzi l'operació d'entrada/sortida, passa a l'estat d'espera fins que s'acabi l'operació.
  • Problemes de sincronització: Si hi ha problemes de sincronització en una aplicació multifils, els fils poden passar a l'estat d'espera fins que es resolguin els problemes de sincronització.

180. Com es fa el multi-threading en un ordinador amb una sola CPU?

Java utilitza una tècnica anomenada temps compartit, comunament anomenada time-slicing, per implementar multi-threading en ordinadors amb una sola CPU. L'aspecte d'execució paral·lela es crea quan la CPU canvia entre fils actius. El sistema operatiu és l'encarregat d'assignar el temps de la CPU a cada fil de manera seqüencial i de programar els fils.

Per evitar que els fils interactuïn entre ells i creïn situacions de carrera o altres problemes, Java té diverses maneres de governar el comportament dels fils, com ara la sincronització i el bloqueig. És factible crear programadors multifils que funcionin correctament i eficaçment en una màquina amb una sola CPU regulant la interacció entre fils i assegurant-se que les parts crucials del codi estiguin sincronitzades. A diferència de l'execució del mateix programa en un ordinador amb múltiples CPU o nuclis, el multi-threading en una sola CPU només pot donar l'aparença de paral·lelisme i els guanys de rendiment reals poden ser modestos. El sistema operatiu divideix el temps de CPU que està disponible quan s'executen nombrosos fils en una sola CPU en petites parts de temps i dóna a cada fil una porció de temps per executar. El canvi ràpid entre els fils per part del sistema operatiu crea l'aparença d'execució paral·lela. El canvi entre fils sembla ser immediat perquè els intervals de temps solen ser molt petits, de l'ordre de mil·lisegons o microsegons.

Preguntes d'entrevista de Java per a persones amb experiència

181. Quins són els diferents tipus de prioritats de fil a Java? I quina és la prioritat per defecte d'un fil assignat per JVM?

Les prioritats en fils és un concepte on cada fil té una prioritat que en llenguatge profà es pot dir que cada objecte té prioritat aquí, que es representa amb nombres que van de l'1 al 10. Hi ha diferents tipus de propietats de fil a Java esmentades a continuació:

  • MIN_PRIORITY
  • MAX_PRIORITY
  • NORM_PRIORITY

Per defecte, el fil s'assigna NORM_PRIORITY.

182. Per què és necessària la recollida d'escombraries a Java?

Per a Java, la recollida d'escombraries és necessària per evitar fuites de memòria que poden provocar que el programa es bloquegi i es torni inestable. No hi ha manera d'evitar la recollida d'escombraries a Java. A diferència de C++, la recollida d'escombraries a Java ajuda els programadors a centrar-se en el desenvolupament de l'aplicació en lloc de gestionar els recursos de memòria i preocupar-se per les fuites de memòria. La màquina virtual de Java (JVM) gestiona automàticament la memòria periòdicament executant un col·lector d'escombraries que allibera la memòria no utilitzada a l'aplicació. La recollida d'escombraries fa que la memòria Java sigui eficient perquè elimina els objectes sense referència de la memòria de l'munt.

183. Quin és l'inconvenient de la recollida d'escombraries?

A part de molts avantatges, Garbage Collector té alguns inconvenients esmentats a continuació:

  1. El principal inconvenient de la recollida d'escombraries és que pot provocar pauses en l'execució d'una aplicació, ja que treballa per esborrar la memòria, cosa que alenteix el rendiment de l'aplicació.
  2. El procés de recollida d'escombraries no és determinista, cosa que dificulta la predicció de quan es produeix la recollida d'escombraries, cosa que provoca un comportament impredictible a les aplicacions. Per exemple, si escrivim qualsevol programa, als programadors és difícil decidir si el problema és causat per la recollida d'escombraries o per qualsevol altre factor del programa.
  3. La recollida d'escombraries també pot augmentar l'ús de memòria si el programa crea i descarta molts objectes de curta durada.

184. Explica la diferència entre una recollida d'escombraries menor, major i completa.

La màquina virtual Java (JVM) elimina els objectes que ja no s'utilitzen mitjançant un col·lector d'escombraries que comprova i elimina periòdicament aquests objectes. Hi ha diferents tipus de recollida d'escombraries a la JVM, cadascun amb diferents característiques i implicacions de rendiment. Els principals tipus de recollida d'escombraries són:

  • Recollida d'escombraries menors: També conegut com a recollida d'escombraries de la generació jove, aquest tipus de recollida d'escombraries s'utilitza per recollir i recuperar la memòria que utilitzen objectes de curta durada (objectes que es creen i es descarten ràpidament).
  • Principal recollida d'escombraries: També coneguda com a recollida d'escombraries de l'antiga generació, aquest tipus de recollida d'escombraries s'utilitza per recollir i recuperar la memòria que utilitzen objectes de llarga vida (objectes que sobreviuen a diverses col·leccions d'escombraries menors i es promocionen a l'antiga generació).
  • Recollida completa d'escombraries: Durant la recollida completa d'escombraries, es recullen i es recuperen records de totes les generacions, inclosos records de joves i grans. Normalment, una recollida d'escombraries completa triga més a completar-se que una recollida d'escombraries menor o important, cosa que fa que l'aplicació s'atura temporalment.

185. Com identificareu les col·leccions d'escombraries principals i menors a Java?

La recollida d'escombraries principal treballa a l'espai dels supervivents i la recollida d'escombraries menor treballa a l'espai Eden per realitzar una rutina de marca i escombra. I podem identificar tots dos en funció de la sortida on la col·lecció menor imprimeix GC, mentre que la col·lecció principal imprimeix GC complet per al cas en què el registre de recollida d'escombraries està habilitat amb -XX:PrintGCDetails o verbose:gc.

186. Què és una fuga de memòria i com afecta la recollida d'escombraries?

A Java, les fuites de memòria poden ser causades per diversos factors, com ara no tancar correctament els recursos, mantenir les referències d'objectes més temps del necessari o crear massa objectes innecessàriament. Hi ha situacions en què el recollida d'escombraries no recull objectes perquè hi ha una referència a aquests objectes. En aquestes situacions en què l'aplicació crea molts objectes i no els utilitza i cada objecte té algunes referències vàlides, un Garbage Collector a Java no pot destruir els objectes. Aquests objectes inútils que no aporten cap valor al programa es coneixen com a fuites de memòria. Les fuites de memòria poden afectar negativament la recollida d'escombraries en impedir que el col·lector d'escombraries recuperi la memòria no utilitzada. Aquest comportament comportarà un rendiment lent o, de vegades, una fallada del sistema. En un programa, és important evitar fuites de memòria gestionant correctament els recursos i les referències d'objectes.

Exemple:

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

Sortida:

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. Anomena algunes classes presents al paquet java.util.regex.

Expressions regulars o Regex a Java és una API que s'utilitza per cercar i manipular cadenes a Java. Crea patrons de cadenes que poden extreure les dades necessàries de les cadenes o poden generalitzar un patró.

Hi ha 3 classes presents a java.util.regex esmentades a continuació:

  • Classe de patrons: pot definir patrons
  • Classe de concordança: pot realitzar operacions de concordança en text mitjançant patrons
  • Classe PatternSyntaxException: pot indicar un error de sintaxi en un patró d'expressió regular.

A més, a part del paquet de 3 classes, consta d'una única interfície MatchResult Interface que es pot utilitzar per representar el resultat d'una operació de coincidència.

188. Escriu una expressió regular per validar una contrasenya. Una contrasenya ha de començar amb un abecedari i seguit de caràcters alfanumèrics; La seva longitud ha d'estar entre 8 i 20.

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

Explicació:

  • ^ s'utilitza per al caràcter inicial de la cadena.
  • (?=.*[0-9]) utilitzat per a un dígit s'ha de produir almenys una vegada.
  • (?=.*[a-z]) utilitzat per a un alfabet en minúscula s'ha d'ocupar almenys una vegada.
  • (?=.*[A-Z]) s'utilitza per a un alfabet en majúscules que s'ha de produir almenys una vegada a la subcadena.
  • (?=.*[@#$%^&-+=()] s'utilitza per a un caràcter especial que s'ha de produir almenys una vegada.
  • (?=S+$) els espais en blanc no permeten a tota la cadena.
  • .{8, 20} utilitzat per a almenys 8 caràcters i com a màxim 20 caràcters.
  • $ utilitzat per al final de la cadena.

189. Què és JDBC?

JDBC API estàndard s'utilitza per enllaçar aplicacions Java i bases de dades relacionals. Proporciona una col·lecció de classes i interfícies que permeten als programadors utilitzar el llenguatge de programació Java per comunicar-se amb la base de dades. Les classes i la interfície de JDBC permeten a l'aplicació enviar sol·licituds que fan els usuaris a la base de dades especificada. En general, hi ha quatre components de JDBC mitjançant els quals interactua amb la base de dades:

  • API JDBC
  • Gestor de controladors JDBC
  • Suite de proves JDBC
  • Controladors de pont JDBC-ODBC

JDBC-768

190. Què és el controlador JDBC?

Controlador JDBC és un component de programari que s'utilitza per permetre que una aplicació Java interactuï amb la base de dades. JDBC proporciona la implementació de l'API JDBC per a un sistema de gestió de bases de dades específic, que li permet connectar la base de dades, executar sentències SQL i recuperar dades. Hi ha quatre tipus de controladors JDBC:

  • Controlador de pont JDBC-ODBC
  • Controlador de l'API nativa
  • Controlador de protocol de xarxa
  • Conductor prim

JDBC-Driver-660

191. Quins són els passos per connectar-se a la base de dades en Java?

Hi ha alguns passos per connectar la base de dades i el programa Java tal com s'esmenta a continuació:

  • Importa els paquets
  • Carregueu els controladors mitjançant el mètode forName().
  • Registreu els controladors mitjançant DriverManager
  • Establiu una connexió mitjançant l'objecte de classe Connection
  • Crea una declaració
  • Executeu la consulta
  • Tanqueu les connexions

192. Quins són els components de l'API JDBC?

Els components de l'API JDBC proporcionen diversos mètodes i interfícies per a una comunicació fàcil amb les bases de dades, a més, ofereix paquets com java Se i java EE que ofereixen la capacitat d'escriure un cop executat a qualsevol lloc (WORA).

Sintaxi:

java.sql.*;>

193. Què és la interfície de connexió JDBC?

La interfície de connectivitat de bases de dades Java (JDBC) és un component de programari que permet que les aplicacions Java interactuïn amb les bases de dades. Per millorar la connexió, JDBC requereix controladors per a cada base de dades.

194. Què fa la interfície JDBC ResultSet?

La interfície JDBC ResultSet s'utilitza per emmagatzemar les dades de la base de dades i utilitzar-les al nostre programa Java. També podem utilitzar ResultSet per actualitzar les dades mitjançant els mètodes updateXXX(). L'objecte ResultSet apunta el cursor abans de la primera fila de les dades del resultat. Utilitzant el mètode next(), podem iterar a través del ResultSet.

195. Què és el conjunt de files JDBC?

Un JDBC RowSet proporciona una manera d'emmagatzemar les dades en forma tabular. RowSet és una interfície en Java que es pot utilitzar dins del paquet java.sql. La connexió entre l'objecte RowSet i la font de dades es manté durant tot el seu cicle de vida. Els RowSets es classifiquen en cinc categories en funció de la implementació esmentada a continuació:

  1. JdbcRowSet
  2. CachedRowSet
  3. WebRowSet
  4. FilteredRowSet
  5. JoinRowSet

196. Quin és el paper de la classe JDBC DriverManager?

La classe JDBC DriverManager actua com a interfície per als usuaris i els controladors. S'utilitza de moltes maneres com s'esmenta a continuació:

  • S'utilitza per crear una connexió entre una aplicació Java i la base de dades.
  • Ajuda a fer un seguiment dels controladors disponibles.
  • Pot ajudar a establir una connexió entre una base de dades i els controladors adequats.
  • Conté tots els mètodes que poden registrar i anul·lar el registre de les classes de controladors de base de dades.
  • El mètode DriverManager.registerDriver() pot mantenir la llista de classes de controladors que s'han registrat.

Preguntes d'entrevista de diferència de Java

197. Diferenciar entre iterable i iterable.

Iterable

Iterador

Iterable proporciona una manera d'iterar sobre una seqüència d'elements.

Iterator ajuda a iterar sobre una col·lecció d'elements seqüencialment.

iterador() El mètode retorna un iterador. hasNext() i Pròxim() es requereixen mètodes.
eliminar () mètode és opcional. eliminar () El mètode és necessari a l'iterador.

En són exemples Llista, cua i conjunt.

En són exemples ListIterator, Enumeració i ArrayIterator.

198. Diferenciar entre Llista i Conjunt.

Llista

Conjunt

Ordenat

No ordenat

La llista permet duplicats.

El conjunt no permet valors duplicats.

S'accedeix a la llista per índex.

S'accedeix al conjunt mitjançant codi hash.

Es poden emmagatzemar diversos elements nuls.

L'element nul només es pot emmagatzemar una vegada.

Alguns exemples són ArrayList, LinkedList, etc.

Alguns exemples són HashSet i TreeSet. LinkedHashSet, etc.

199. Diferenciar entre Llista i Mapa.

Llista

Mapa

La interfície de llista permet elements duplicats.

El mapa no permet elements duplicats.

La llista manté l'ordre d'inserció.

El mapa no manté l'ordre d'inserció.

Es poden emmagatzemar diversos elements nuls.

El mapa permet una única clau nul·la com a màxim i qualsevol nombre de valors nuls.

La llista proporciona el mètode get() per obtenir l'element en un índex especificat.

El mapa no proporciona un mètode get per obtenir els elements en un índex especificat.

La llista està implementada per ArrayList, etc.

El mapa està implementat per HashMap, TreeMap, LinkedHashMap

200. Diferenciar entre cua i pila.

Cua

Pila

L'estructura de dades de la cua s'utilitza per emmagatzemar elements i s'utilitza per realitzar operacions com ara posar en cua, treure la cua des del darrere o al final de la cua.

L'estructura de dades de la pila s'utilitza per emmagatzemar elements i s'utilitza per realitzar operacions com push, pop des de la part superior de la pila.

Estructura de dades de la cua Implementa l'ordre FIFO.

Estructura de dades de pila Implementa l'ordre LIFO.

La inserció i l'eliminació a les cues es fan des dels extrems oposats de la llista. L'eliminació es fa des de la part davantera de la llista i la inserció es fa a la part posterior de la llista.

La inserció i l'eliminació de les piles es produeixen només des d'un extrem de la llista anomenat el superior.

L'operació d'inserció s'anomena operació de cua.

L'operació d'inserció s'anomena operació Push.

La cua s'utilitza generalment per resoldre problemes relacionats amb el processament seqüencial.

La pila s'utilitza generalment per resoldre problemes relacionats amb la recursivitat.

201. Diferenciar entre PriorityQueue i TreeSet.

Cua de prioritats

Conjunt d'arbres

Utilitza la cua com a estructura de dades subjacent.

Utilitza un conjunt com a estructura de dades subjacent.

Aquesta estructura de dades permet duplicar elements

Aquesta estructura de dades no permet elements duplicats

Priority Queue està implementat per la classe PriorityQueue.

TreeSet està implementat per la classe TreeSet.

PriorityQueue ve al JDK 1.5.

TreeSet ve al JDK 1.4.

PriorityQueue pq = new PriorityQueue();

reeSet ts = new TreeSet();

202. Diferenciar entre la llista individualment enllaçada i la llista doblement enllaçada.

Llista enllaçada individualment

Llista doblement enllaçada

La llista enllaçada individualment conté només dos segments, és a dir, Dades i Enllaç.

La llista doblement enllaçada conté tres segments, és a dir, Dades i dos punters.

La travessa en una llista enllaçada individualment és possible només en direcció cap endavant.

El recorregut en una llista doblement enllaçada només és possible en ambdues direccions cap endavant i cap enrere.

Utilitza menys memòria ja que cada node només té un punter.

Requereix més memòria que una llista enllaçada individualment, ja que cada node té dos punters.

Fàcil d'utilitzar i inserir nodes al principi de la llista.

Una mica més complex d'utilitzar i fàcil d'inserir al final de la llista.

La complexitat temporal d'inserció i supressió és O(n).

La complexitat temporal d'inserció i supressió és O(1).

Llista enllaçada individualment-660

Llista-doblement-enllaçada-660

203. Diferenciar entre Failsafe i Failsafe.

FailFast

A prova de fallades

Failsfast falla immediatament quan detecta una modificació concurrent durant el temps de la iteració.

Failsafe continua iterant sobre la col·lecció original i també crea una còpia per modificar.

Failfast s'utilitza generalment en entorns d'un sol fil.

Failsafe s'utilitza en entorns multifils.

Failfast no permet cap modificació durant la iteració.

Failsafe permet la modificació durant el temps d'iteració.

Failfast és ràpid en comparació amb failsafe, ja que no implica la còpia de la col·lecció.

Failsafe és generalment lent en comparació amb failfast.

FailFast llança ConcurrentModificationException si la col·lecció es modifica durant la iteració.


FailSafe no llança cap excepció, sinó que crea una còpia de la col·lecció per repetir.

204. Diferenciar entre HashMap i TreeMap.

HashMap

TreeMap

Hasmap utilitza una taula hash per emmagatzemar parells clau-valor.

Treemap utilitza arbres vermell-negre per emmagatzemar la parella clau-valor.

Hashmap no manté cap ordre específic per als parells clau-valor.

Treemap manté un ordre natural basat en les claus.

L'ordre d'iteració no està garantit al mapa hash.

La iteració està ordenada en funció de les claus.

Els mapes hash són més ràpids per a la recuperació que els Treemap.

La recuperació a Treemap és més lenta, ja que utilitza el recorregut de l'arbre per trobar claus.

Hashmap s'implementa mitjançant una matriu de llista enllaçada.

TreeMap s'implementa amb un arbre vermell-negre.

Hashmap utilitza el mètode equals() de la classe Object per comparar claus.

TreeMap utilitza el mètode compareTo() per comparar claus.

205. Diferenciar entre Queue i Deque.

Cua

Dec

La cua és una estructura de dades lineal que s'utilitza per emmagatzemar una col·lecció d'elements.

Deque també coneguda com a cua de doble extrem també és una estructura de dades lineal que emmagatzema una col·lecció d'elements amb operacions per eliminar i afegir d'ambdós extrems.

Els elements de la cua només es poden inserir al final de l'estructura de dades.

Els elements es poden inserir des dels dos extrems de l'estructura de dades.

La cua es pot implementar mitjançant Array o Linked List.

La retirada de la cua es pot implementar mitjançant una matriu circular o una llista doblement enllaçada.

Les cues s'utilitzen generalment per implementar una llista d'espera o una cua de tasques.

Deque s'utilitza per implementar una pila o treure elements de cua dels dos extrems.

Cua-660

Cua-660 de doble final

206. Diferenciar entre HashSet i TreeSet.

HashSet

Conjunt d'arbres

HashSet no està ordenat.

TreeSet es basa en l'ordre natural.

HashSet permet elements nuls.

TreeSet no permet elements nuls.

HashSet està implementat per la classe HashSet.

TreeSet està implementat per la classe TreeSet.

HashSet hs = nou HashSet();

TreeSet ts = nou TreeSet();

Preguntes d'entrevista de Java - Preguntes freqüents

Q1. Quin és el sou d'un desenvolupador de Java a l'Índia?

Segons diversos recursos, el salari mitjà d'un desenvolupador de Java Backend és superior a 14 lakhs per any, que és un 30% més gran que qualsevol altre paper de desenvolupador . Aquí també podeu consultar el nostre darrer curs Portal de pràctiques GeekforGeeks també pot ser útil.

P5. Com puc destacar en una entrevista de Java?

Per destacar en una entrevista de Java, demostreu una comprensió profunda dels conceptes i aplicacions pràctiques de Java. Mostra les teves habilitats per resoldre problemes explicant el teu enfocament a escenaris complexos i aportant solucions eficients. A més, destaca qualsevol projecte o contribució rellevant que hagis fet a la comunitat Java. Mostrar entusiasme, bona comunicació i voluntat d'aprendre també pot deixar una impressió positiva.