top 50 core java interview questions
Preguntes i respostes a les entrevistes més freqüents de Java amb exemples:
En aquest tutorial, hem tractat gairebé més de 50 preguntes bàsiques sobre entrevistes de Java importants per a estudiants més recents i amb experiència.
Aquest post sobre JAVA Entrevista Questions està preparat per ajudar-vos a comprendre els conceptes bàsics de la programació Java per a finalitats d’entrevistes. Aquí s’expliquen tots els conceptes importants de JAVA amb exemples per facilitar-ne la comprensió.
Aquest tutorial inclou temes de JAVA com definicions bàsiques de Java, conceptes de POO, especificadors d'accés, col·leccions, excepcions, fils, serialització, etc., amb exemples per preparar-vos perfectament per afrontar qualsevol entrevista de JAVA amb confiança.
Preguntes i respostes d'entrevistes Java més populars
A continuació es mostra una llista completa de les preguntes bàsiques i avançades de l'entrevista de programació de Java més importants i més freqüents amb respostes detallades.
P # 1) Què és JAVA?
Resposta: Java és un llenguatge de programació d’alt nivell i és independent de la plataforma.
Java és una col·lecció d'objectes. Va ser desenvolupat per Sun Microsystems. Hi ha moltes aplicacions, llocs web i jocs desenvolupats amb Java.
P # 2) Quines són les característiques de JAVA?
Resposta: Les funcions de Java són les següents:
- Conceptes OOP
- Orientat a objectes
- Herència
- Encapsulació
- Polimorfisme
- Abstracció
- Plataforma independent: Un sol programa funciona en diferents plataformes sense cap modificació.
- Gran actuació: El compilador JIT (Just In Time) permet un alt rendiment a Java. JIT converteix el bytecode en llenguatge de màquina i després JVM inicia l'execució.
- Múltiples fils: Un flux d'execució es coneix com a fil. JVM crea un fil que s'anomena fil principal. L'usuari pot crear diversos fils ampliant la classe de fils o implementant la interfície Runnable.
P # 3) Com permet Java un alt rendiment?
Resposta: Java utilitza el compilador Just In Time per permetre un alt rendiment. S'utilitza per convertir les instruccions en codis byt.
P # 4) Anomeneu els IDE de Java?
Resposta: Eclipse i NetBeans són els IDE de JAVA.
P # 5) Què voleu dir amb Constructor?
Resposta: El constructor es pot explicar amb detall amb els punts reclutats:
- Quan es crea un nou objecte en un programa, s'invoca un constructor corresponent a la classe.
- El constructor és un mètode que té el mateix nom que el nom de la classe.
- Si un usuari no crea un constructor implícitament, es crearà un constructor per defecte.
- El constructor es pot sobrecarregar.
- Si l'usuari va crear un constructor amb un paràmetre, hauria de crear un altre constructor explícitament sense un paràmetre.
P # 6) Què s’entén per variable local i variable d’instància?
Resposta:
Variables locals es defineixen en el mètode i l'abast de les variables que existeixen dins del propi mètode.
Variable d’instància es defineix dins de la classe i fora del mètode i l'abast de les variables existeix a tota la classe.
Q # 7) Què és una classe?
Resposta: Tots els codis Java es defineixen en una classe. Té variables i mètodes.
variables són atributs que defineixen l'estat d'una classe.
Mètodes són el lloc on s’ha de fer la lògica empresarial exacta. Conté un conjunt d’instruccions (o) instruccions per satisfer el requisit particular.
Exemple:
public class Addition{ //Class name declaration int a = 5; //Variable declaration int b= 5; public void add(){ //Method declaration int c = a+b; } }
Q # 8) Què és un objecte?
Resposta: Una instància d’una classe s’anomena objecte. L’objecte té estat i comportament.
Sempre que la JVM llegeixi la paraula clau 'new ()', es crearà una instància d'aquesta classe.
Exemple:
public class Addition{ public static void main(String() args){ Addion add = new Addition();//Object creation } }
El codi anterior crea l'objecte per a la classe Addition.
P # 9) Quins són els conceptes OOP?
Resposta: els conceptes de POO inclouen:
- Herència
- Encapsulació
- Polimorfisme
- Abstracció
- Interfície
Lectura suggerida = >> Preguntes principals sobre les entrevistes de les POO
P # 10) Què és l’herència?
Resposta: L'herència significa que una classe es pot estendre a una altra. De manera que els codis es puguin reutilitzar d'una classe a una altra. La classe existent es coneix com a classe Super, mentre que la classe derivada es coneix com a subclasse.
Exemple:
Super class: public class Manupulation(){ } Sub class: public class Addition extends Manipulation(){ }
L’herència només s’aplica als membres públics i protegits. Els membres privats no es poden heretar.
Q # 11) Què és l’encapsulament?
Resposta: Propòsit de l’encapsulació:
- Protegeix el codi d'altres persones.
- Manteniment del codi.
Exemple:
Declarem 'a' com a variable sencera i no ha de ser negativa.
public class Addition(){ int a=5; }
Si algú canvia la variable exacta com a ' a = -5 ' llavors és dolent.
Per superar el problema, hem de seguir els passos següents:
- Podem fer la variable privada o protegida.
- Utilitzeu mètodes d'accés públic com set i get.
De manera que el codi anterior es pot modificar com:
public class Addition(){ private int a = 5; //Here the variable is marked as private }
El codi següent mostra el getter i el setter.
Es poden proporcionar condicions mentre es defineix la variable.
get A(){ } set A(int a){ if(a>0){// Here condition is applied ......... } }
Per a l’encapsulació, hem de fer privades totes les variables d’instància i crear setter i getter per a aquestes variables. El que al seu torn obligarà a altres a trucar als definidors en lloc d’accedir directament a les dades.
P # 12) Què és el polimorfisme?
Resposta: El polimorfisme significa moltes formes.
Un sol objecte pot referir-se a la superclasse o subclasse en funció del tipus de referència que s’anomena polimorfisme.
Exemple:
Public class Manipulation(){ //Super class public void add(){ } } public class Addition extends Manipulation(){ // Sub class public void add(){ } public static void main(String args()){ Manipulation addition = new Addition();//Manipulation is reference type and Addition is reference type addition.add(); } }
Mitjançant el tipus de referència Manipulació podem anomenar el mètode Addition de classe 'add ()'. Aquesta capacitat es coneix com a polimorfisme. El polimorfisme és aplicable a primordial i no per sobrecàrrega .
P # 13) Què s’entén per mètode d’anul·lació?
Resposta: la substitució del mètode passa si el mètode de la classe secundària compleix les condicions següents amb el mètode de la classe super:
- El nom del mètode hauria de ser el mateix
- L’argument hauria de ser el mateix
- El tipus de retorn també ha de ser el mateix
El principal avantatge de superar és que la subclasse pot proporcionar informació específica sobre aquest tipus de subclasse que la superclasse.
Exemple:
public class Manipulation{ //Super class public void add(){ ……………… } } Public class Addition extends Manipulation(){ Public void add(){ ……….. } Public static void main(String args()){ Manipulation addition = new Addition(); //Polimorphism is applied addition.add(); // It calls the Sub class add() method } }
addition.add () method crida el mètode add () a la subclasse i no a la classe pare. Per tant, substitueix el mètode de la classe Super i es coneix com Method Overriding.
P # 14) Què s’entén per sobrecàrrega?
Resposta: La sobrecàrrega del mètode passa per a diferents classes o dins de la mateixa classe.
Per a la sobrecàrrega de mètodes, el mètode de subclasse hauria de complir les condicions següents amb els mètodes (o) mètodes de Superclasse de la mateixa classe:
- El mateix nom del mètode
- Diferents tipus d'arguments
- Pot haver-hi diferents tipus de devolució
Exemple:
public class Manipulation{ //Super class public void add(String name){ //String parameter ……………… } } Public class Addition extends Manipulation(){ Public void add(){//No Parameter ……….. } Public void add(int a){ //integer parameter } Public static void main(String args()){ Addition addition = new Addition(); addition.add(); } }
Aquí el mètode add () té paràmetres diferents a la classe Addition que es sobrecarrega a la mateixa classe que amb la superclasse.
Nota: El polimorfisme no és aplicable per a la sobrecàrrega de mètodes.
P # 15) Què s’entén per interfície?
Resposta: No es poden aconseguir herències múltiples a Java. Per superar aquest problema s’introdueix el concepte d’interfície.
Una interfície és una plantilla que només té declaracions de mètodes i no la implementació del mètode.
Exemple:
Public abstract interface IManupulation{ //Interface declaration Public abstract void add();//method declaration public abstract void subtract(); }
- Tots els mètodes de la interfície són interns buit abstracte públic .
- Totes les variables de la interfície són internes públic estàtic final això és constant.
- Les classes poden implementar la interfície i no s’amplien.
- La classe que implementa la interfície hauria de proporcionar una implementació per a tots els mètodes declarats a la interfície.
public class Manupulation implements IManupulation{ //Manupulation class uses the interface Public void add(){ …………… } Public void subtract(){ ……………. } }
P # 16) Què s’entén per classe abstracta?
Resposta: Podem crear la classe Abstract mitjançant la paraula clau 'Abstract' abans del nom de la classe. Una classe abstracta pot tenir tant mètodes 'abstractes' com mètodes 'no abstractes' que són una classe concreta.
Mètode abstracte:
El mètode que només té la declaració i no la implementació s'anomena mètode abstracte i té la paraula clau anomenada 'abstracte'. Les declaracions acaben amb punt i coma.
Exemple:
public abstract class Manupulation{ public abstract void add();//Abstract method declaration Public void subtract(){ } }
- Una classe abstracta també pot tenir un mètode no abstracte.
- La subclasse concreta que amplia la classe Abstract hauria de proporcionar la implementació de mètodes abstractes.
P # 17) Diferència entre matriu i llista de matrius.
Resposta: La diferència entre matriu i llista de matrius es pot entendre a la taula següent:
Matriu | Llista de matrius |
---|---|
La mida s'hauria de donar en el moment de la declaració de la matriu. String () name = new String (2) | És possible que la mida no sigui necessària. Canvia la mida dinàmicament. ArrayList name = nova ArrayList |
Per posar un objecte a la matriu hem d’especificar l’índex. nom (1) = 'llibre' | No cal cap índex. name.add ('llibre') |
La matriu no està parametritzada | ArrayList a Java 5.0 es parametritza. Per exemple: aquest parèntesi angular és un paràmetre tipus que significa una llista de cadenes. |
P # 18) Diferència entre cadena, generador de cadenes i memòria intermèdia de cadenes.
Resposta:
Cadena: Les variables de cadena s’emmagatzemen en un “grup de cadenes constant”. Quan la referència de cadena canvia el valor antic que existeix a la 'agrupació de cadenes constant', no es pot esborrar.
Exemple:
Nom de la cadena = 'llibre';
Agrupació de cadenes constant
.
Si el valor del nom ha canviat de 'llibre' a 'llapis'.
Agrupació de cadenes constant
editor d'àtoms vs codi d'estudi visual
A continuació, el valor més antic es manté a l'agrupació de cadenes constant.
Búfer de cadenes:
- Aquí els valors de les cadenes s’emmagatzemen en una pila. Si es canvien els valors, el valor nou substituirà el valor anterior.
- La memòria intermèdia de cadenes està sincronitzada, que és segura per a fils.
- El rendiment és més lent que el String Builder.
Exemple:
Nom del buffer de cadena = 'llibre';
Un cop canviat el valor del nom a 'ploma', el 'llibre' s'esborra a la pila.
Creador de cadenes:
Això és el mateix que el búfer de cadenes, excepte el creador de cadenes, que no s’enfila de manera segura i no està sincronitzat. Per tant, òbviament, el rendiment és ràpid.
P # 19) Expliqueu els especificadors d'accés públic i privat.
Resposta: Els mètodes i les variables d’instància es coneixen com a membres.
Públic:
Els membres públics són visibles al mateix paquet, així com al paquet exterior que hi ha per a altres paquets.
Els membres públics de la classe A són visibles a la classe B (mateix paquet), així com a la classe C (paquets diferents).
Privat:
Els membres privats només són visibles a la mateixa classe i no a la resta de classes del mateix paquet, així com a les classes dels paquets externs.
Els membres privats de la classe A només són visibles en aquesta classe. És invisible tant per a la classe B com per a la classe C.
P # 20) Diferència entre els especificadors d'accés predeterminat i protegit.
Resposta:
Valor per defecte: Els mètodes i variables declarats en una classe sense cap especificador d’accés s’anomenen predeterminats.
Els membres per defecte de la classe A són visibles per a les altres classes que estan dins del paquet i invisibles per a les classes que es troben fora del paquet.
Per tant, els membres de la classe A són visibles per a la classe B i invisibles per a la classe C.
Protegit:
.
Protected és el mateix que Default, però si una classe s'estén, és visible fins i tot si es troba fora del paquet.
Els membres de la classe A són visibles per a la classe B perquè es troba dins del paquet. Per a la classe C és invisible, però si la classe C amplia la classe A, els membres són visibles per a la classe C encara que estigui fora del paquet.
Q # 21) Diferència entre HashMap i HashTable.
Resposta: A continuació es pot veure la diferència entre HashMap i HashTable:
HashMap | HashTable |
---|---|
Els mètodes no estan sincronitzats | Els mètodes clau estan sincronitzats |
No la seguretat del fil | Seguretat del fil |
Iterator s'utilitza per iterar els valors | L’enumerador s’utilitza per iterar els valors |
Permet una clau nul·la i diversos valors nuls | No permet res que sigui nul |
El rendiment és alt que HashTable | El rendiment és lent |
Q # 22) Diferència entre HashSet i TreeSet.
Resposta: A continuació es pot veure la diferència entre HashSet i TreeSet:
HashSet | Conjunt d'arbres |
---|---|
Els elements inserits estan en ordre aleatori | Manté els elements en l'ordre ordenat |
Pot emmagatzemar objectes nuls | No s'han pogut emmagatzemar objectes nuls |
El rendiment és ràpid | El rendiment és lent |
Q # 23) Diferència entre classe abstracta i interfície.
Resposta: Les diferències entre la classe abstracta i la interfície són les següents:
Classe resum:
- Les classes abstractes tenen un constructor per defecte i s’anomena sempre que s’instancia la subclasse concreta.
- Conté mètodes abstractes i mètodes no abstractes.
- La classe que amplia la classe Abstract no hauria d’exigir la implementació de tots els mètodes, sinó que només s’han d’implementar els mètodes abstractes a la subclasse concreta.
- La classe Resum conté variables d’instància.
Interfície:
- No té cap constructor i no es podia instanciar.
- Cal declarar només el mètode abstracte.
- Les classes que implementin la interfície haurien de proporcionar la implementació de tots els mètodes.
- La interfície només conté constants.
Q # 24) Quin significat tenen les col·leccions a Java?
Resposta: La col·lecció és un marc dissenyat per emmagatzemar els objectes i manipular el disseny per emmagatzemar-los.
Les col·leccions s’utilitzen per realitzar les operacions següents:
què és una clau de seguretat per al wifi
- Cercant
- Classificació
- Manipulació
- Inserció
- Supressió
Un grup d’objectes es coneix com a col·leccions. Totes les classes i interfícies per recollir estan disponibles al paquet Java util.
P # 25) Quines són totes les classes i interfícies disponibles a les col·leccions?
Resposta: A continuació es detallen les classes i les interfícies disponibles a les col·leccions:
Interfícies:
- Col · lecció
- Llista
- Conjunt
- Mapa
- Conjunt ordenat
- Mapa ordenat
- Cua
Classes:
- Llistes:
- Llista de matrius
- Vector
- Llista enllaçada
Conjunts:
- Conjunt de hash
- Conjunt de hash enllaçat
- Conjunt d’arbres
Mapes:
- Mapa hash
- Taula de hash
- Mapa d’arbres
- Mapa trencat enllaçat
Cua:
- Cua de prioritat
P # 26) Què s'entén per ordenat i ordenat en col·leccions?
Resposta:
Ordenat: Vol dir que els valors que s’emmagatzemen en una col·lecció es basen en els valors que s’afegeixen a la col·lecció. Per tant, podem iterar els valors de la col·lecció en un ordre específic.
Ordenat: Els mecanismes d'ordenació es poden aplicar internament o externament de manera que el grup d'objectes ordenats en una col·lecció determinada es basi en les propietats dels objectes.
P # 27) Expliqueu les diferents llistes disponibles a la col·lecció.
Resposta: Els valors afegits a la llista es basen en la posició de l’índex i s’ordena per posició de l’índex. Es permeten duplicats.
Els tipus de llistes són:
a) Llista de matrius:
- Iteració ràpida i accés aleatori ràpid.
- És una col·lecció ordenada (per índex) i no ordenada.
- Implementa la interfície d'accés aleatori.
Exemple:
public class Fruits{ public static void main (String ( ) args){ ArrayList names=new ArrayList (); names.add (“apple”); names.add (“cherry”); names.add (“kiwi”); names.add (“banana”); names.add (“cherry”); System.out.println (names); } }
Sortida:
(Poma, cirera, kiwi, plàtan, cirera)
Des de la sortida, Array List manté l'ordre d'inserció i accepta els duplicats. Però no està ordenat.
b) Vector:
És el mateix que Array List.
- Els mètodes vectorials se sincronitzen.
- Seguretat del fil.
- També implementa l'accés aleatori.
- La seguretat del fil sol provocar un èxit de rendiment.
Exemple:
public class Fruit { public static void main (String ( ) args){ Vector names = new Vector ( ); names.add (“cherry”); names.add (“apple”); names.add (“banana”); names.add (“kiwi”); names.add (“apple”); System.out.println (“names”); } }
Sortida:
(cirera, poma, plàtan, kiwi, poma)
Vector també manté l'ordre d'inserció i accepta els duplicats.
c) Llista enllaçada:
- Els elements estan doblement lligats entre si.
- El rendiment és més lent que la llista de matrius.
- Bona opció per a la inserció i la supressió.
- A Java 5.0 admet mètodes de cua comuns peek (), Pool (), Offer (), etc.
Exemple:
public class Fruit { public static void main (String ( ) args){ Linkedlist names = new linkedlist ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }
Sortida:
(plàtan, cirera, poma, kiwi, plàtan)
Manté l'ordre d'inserció i accepta els duplicats.
P # 28) Expliqueu sobre Set i els seus tipus en una col·lecció.
Resposta: El conjunt es preocupa per la singularitat. No permet duplicacions. Aquí s’utilitza el mètode “equals ()” per determinar si dos objectes són idèntics o no.
a) Conjunt de hash:
- Sense ordenar i sense ordenar.
- Utilitza el codi hash de l'objecte per inserir els valors.
- Utilitzeu aquesta opció quan el requisit és 'sense duplicats i no us interessa la comanda'.
Exemple:
public class Fruit { public static void main (String( ) args){ HashSet names = new HashSet ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }
Sortida:
(plàtan, cirera, kiwi, poma)
No segueix cap ordre d’inserció. No es permeten duplicats.
b) Conjunt de hash enllaçat:
- Una versió ordenada del conjunt de hash es coneix com Linked Hash Set.
- Manté una llista doblement enllaçada de tots els elements.
- Utilitzeu-ho quan es requereixi una ordre d'iteració.
Exemple:
public class Fruit { public static void main (String( ) args){ LinkedHashSet; names = new LinkedHashSet ( ) ; names.add(“banana”); names.add(“cherry”); names.add(“apple”); names.add(“kiwi”); names.add(“banana”); System.out.println (names); } }
Sortida:
(plàtan, cirera, poma, kiwi)
Manté l'ordre d'inserció en què s'han afegit al conjunt. No es permeten duplicats.
c) Conjunt d'arbres:
- És una de les dues col·leccions ordenades.
- Utilitza l’estructura d’arbre “Read-Black” i garanteix que els elements estaran en ordre ascendent.
- Podem construir un conjunt d’arbres amb el constructor mitjançant un comparador (o) comparable.
Exemple:
public class Fruits{ public static void main (String( )args) { Treeset names= new TreeSet( ) ; names.add(“cherry”); names.add(“banana”); names.add(“apple”); names.add(“kiwi”); names.add(“cherry”); System.out.println(names); } }
Sortida:
(poma, plàtan, cirera, kiwi)
TreeSet ordena els elements en ordre ascendent. I no es permeten duplicats.
P # 29) Expliqueu sobre el mapa i els seus tipus.
Resposta: Mapa es preocupa per l’identificador únic. Podem assignar una clau única a un valor específic. És un parell clau / valor. Podem cercar un valor basat en la clau. Igual que el conjunt, el mapa també utilitza el mètode 'equals ()' per determinar si dues tecles són iguals o diferents.
El mapa és dels tipus següents:
a) Mapa hash:
- Mapa no ordenat i no ordenat.
- Hashmap és una bona opció quan no ens importa la comanda.
- Permet una clau nul·la i diversos valors nuls.
Exemple:
Public class Fruit{ Public static void main(String( ) args){ HashMap names =new HashMap( ); names.put(“key1”,“cherry”); names.put (“key2”,“banana”); names.put (“key3”,“apple”); names.put (“key4”,“kiwi”); names.put (“key1”,“cherry”); System.out.println(names); } }
Sortida:
{clau2 = plàtan, clau1 = cirera, clau4 = kiwi, clau3 = poma}
No es permeten les claus duplicades al mapa.
No manté cap ordre d’inserció i no està classificat.
b) Taula de hash:
- Igual que la clau vectorial, els mètodes de la classe se sincronitzen.
- La seguretat del fil i, per tant, alenteix el rendiment.
- No permet res que sigui nul.
Exemple:
public class Fruit{ public static void main(String( )args){ Hashtable names =new Hashtable( ); names.put(“key1”,“cherry”); names.put(“key2”,“apple”); names.put(“key3”,“banana”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }
Sortida:
{clau2 = poma, clau1 = cirera, clau4 = kiwi, clau3 = plàtan}
No es permeten les claus duplicades.
c) Mapa Hash enllaçat:
- Manté l'ordre d'inserció.
- Mapa més lent que el mapa Hash.
- Puc esperar una iteració més ràpida.
Exemple:
public class Fruit{ public static void main(String( ) args){ LinkedHashMap names =new LinkedHashMap( ); names.put(“key1”,“cherry”); names.put(“key2”,“apple”); names.put(“key3”,“banana”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }
Sortida:
{clau2 = poma, clau1 = cirera, clau4 = kiwi, clau3 = plàtan}
No es permeten les claus duplicades.
d) Arbre:
- Mapa ordenat.
- Igual que el conjunt d’arbres, podem construir un ordre d’ordenació amb el constructor.
Exemple:
public class Fruit{ public static void main(String( )args){ TreeMap names =new TreeMap( ); names.put(“key1”,“cherry”); names.put(“key2”,“banana”); names.put(“key3”,“apple”); names.put(“key4”,“kiwi”); names.put(“key2”,“orange”); System.out.println(names); } }
Sortida:
{clau1 = cirera, clau2 = plàtan, clau3 = poma, clau4 = kiwi}
S'ordena en ordre ascendent en funció de la clau. No es permeten les claus duplicades.
P # 30) Expliqueu la cua de prioritat.
Resposta: interfície de cua
Cua de prioritat: La classe de llista enllaçada s'ha millorat per implementar la interfície de cua. Les cues es poden gestionar amb una llista enllaçada. L'objectiu d'una cua és 'Prioritat d'entrada, Prioritat de sortida'.
Per tant, els elements s’ordenen de forma natural o segons el comparador. L'ordenació dels elements representa la seva prioritat relativa.
P # 31) Què s’entén per excepció?
Resposta: Una excepció és un problema que es pot produir durant el flux d'execució normal. Un mètode pot generar una excepció quan alguna cosa lamenta en temps d'execució. Si no es va poder gestionar aquesta excepció, finalitzarà l'execució abans de completar la tasca.
Si gestionem l'excepció, el flux normal continua. Les excepcions són una subclasse de java.lang.Exception.
Exemple per gestionar l'excepció:
try{ //Risky codes are surrounded by this block }catch(Exception e){ //Exceptions are caught in catch block }
P # 32) Quins són els tipus d’excepcions?
Resposta: Hi ha dos tipus d’excepcions. A continuació s’expliquen detalladament.
a) Excepció marcada:
Aquestes excepcions són verificades pel compilador en el moment de la compilació. Les classes que amplien la classe Throwable excepte l'execució Runtime time i Error s'anomenen Excepció marcada.
Les excepcions marcades han de declarar l'excepció mitjançant la paraula clau throws (o) envoltada de try / catch adequat.
Per exemple, Excepció ClassNotFound
b) Excepció sense marcar:
Aquestes excepcions no són verificades durant el temps de compilació pel compilador. El compilador no obliga a gestionar aquestes excepcions. Inclou:
- Excepció aritmètica
- Excepció ArrayIndexOutOfBounds
P # 33) Quines són les diferents maneres de gestionar les excepcions?
Resposta: A continuació s’expliquen dues maneres diferents de gestionar les excepcions:
a) Utilitzar try / catch:
El codi arriscat està envoltat de bloc de prova. Si es produeix una excepció, el bloc de captura el captura, seguit del bloc de prova.
Exemple:
class Manipulation{ public static void main(String() args){ add(); } Public void add(){ try{ addition(); }catch(Exception e){ e.printStacktrace(); } } }
b) En declarar la paraula clau de llançaments:
Al final del mètode, podem declarar l'excepció mitjançant la paraula clau throws.
Exemple:
class Manipulation{ public static void main(String() args){ add(); } public void add() throws Exception{ addition(); } }
P # 34) Quins avantatges té la manipulació d'excepcions?
Resposta: Els avantatges són els següents:
- El flux normal de l'execució no s'acabarà si es gestiona una excepció
- Podem identificar el problema mitjançant la declaració de captures
P # 35) Quines són les paraules clau de gestió d'excepcions a Java?
Resposta: A continuació es detallen les dues paraules clau de tractament d’excepcions:
a) proveu:
Quan un codi arriscat està envoltat d’un bloc de prova. Una excepció que es produeix al bloc try és capturada per un bloc catch. Prova es pot seguir capturant (o) finalment (o) tots dos. Però qualsevol dels blocs és obligatori.
b) captura:
A continuació hi ha un bloc de prova. Aquí s’exceptuen excepcions.
c) finalment:
A continuació, hi ha un bloc de prova (o) de captura. Aquest bloc s'executa independentment d'una excepció. Per tant, en general es proporcionen codis de neteja aquí.
P # 36) Expliqueu sobre la propagació d’excepcions.
Resposta: L'excepció es llança primer des del mètode que es troba a la part superior de la pila. Si no s’enganxa, apareix el mètode i passa al mètode anterior i així successivament fins que s’obtenen.
Això s’anomena propagació d’excepcions.
Exemple:
public class Manipulation{ public static void main(String() args){ add(); } public void add(){ addition(); }
De l'exemple anterior, la pila té l'aspecte que es mostra a continuació:
Si es produeix una excepció al fitxer addició () El mètode no es detecta i es mou al mètode add () . Després es trasllada al fitxer main () mètode i després aturarà el flux d'execució. Es diu propagació d’excepcions.
P # 37) Quina és la paraula clau final a Java?
Resposta:
Final variable: Quan es declara una variable com a final, no es pot canviar el valor de la variable. És com una constant.
Exemple:
int final = 12;
Mètode final: No s'ha pogut anul·lar una paraula clau final d'un mètode. Si un mètode es marca com a final, la subclasse no la pot anul·lar.
Classe final: Si es declara una classe com a final, la classe no es podrà subclasificar. Cap classe pot ampliar la classe final.
P # 38) Què és un fil?
Resposta: A Java, el flux d'execució es diu Thread. Cada programa Java té almenys un fil anomenat fil principal, el fil principal el crea JVM. L'usuari pot definir els seus propis fils ampliant la classe de fils (o) implementant la interfície Runnable. Els fils s’executen simultàniament.
Exemple:
public static void main(String() args){//main thread starts here }
P # 39) Com es crea un fil a Java?
Resposta: Hi ha dues maneres disponibles per crear un fil.
a) Amplieu la classe de fils: S'estén una classe Thread i substitueix el mètode d'execució. El fil està disponible a java.lang.thread.
Exemple:
Public class Addition extends Thread { public void run () { } }
L’inconvenient d’utilitzar una classe de fil és que no podem ampliar cap altra classe perquè ja hem ampliat la classe de fil. Podem sobrecarregar el mètode run () a la nostra classe.
b) Implementa la interfície executable: Una altra manera és implementar la interfície executable. Per a això, hauríem de proporcionar la implementació del mètode run () que es defineix a la interfície.
Exemple:
Public class Addition implements Runnable { public void run () { } }
P # 40) Expliqueu el mètode join ().
Resposta: El mètode Join () s’utilitza per unir un fil amb el final del fil en curs.
Exemple:
public static void main (String() args){ Thread t = new Thread (); t.start (); t.join (); }
Basat en el codi anterior, el fil principal ha començat l'execució. Quan arriba al codi t.start () llavors 'thread t' inicia la pròpia pila per a l'execució. JVM canvia entre el fil principal i el 'fil t'.
Un cop arriba al codi t.join () llavors només s’executa el ‘fil t’ i finalitza la seva tasca, llavors només el fil principal inicia l’execució.
És un mètode no estàtic. El mètode Join () té una versió sobrecarregada. Així doncs, podem esmentar la durada del temps en el mètode join () també '.s'.
P # 41) Què fa el mètode de rendiment de la classe Thread?
Resposta: Un mètode yield () mou el fil actualment executant a un estat executable i permet executar els altres fils. De manera que els fils de prioritat igual tenen la possibilitat d'executar-se. És un mètode estàtic. No allibera cap pany.
El mètode Yield () fa que el fil es torni a l'estat Runnable només, i no el fil per bloquejar sleep (), wait () (o).
Exemple:
public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ Thread.yield(); } }
Q # 42) Expliqueu el mètode wait ().
Resposta: wait () s'utilitza el mètode per fer que el fil esperi a la piscina d'espera. Quan el mètode wait () s'executa durant l'execució d'un fil, immediatament el fil deixa el bloqueig de l'objecte i es dirigeix al grup d'espera. El mètode Wait () indica al fil que espereu una determinada quantitat de temps.
Aleshores, el fil es despertarà després que es cridi el mètode notification () (o) notification all ().
Wait () i els altres mètodes esmentats anteriorment no proporcionen el bloqueig de l'objecte immediatament fins que el fil en execució actual no completa el codi sincronitzat. S'utilitza principalment en sincronització.
Exemple:
public static void main (String() args){ Thread t = new Thread (); t.start (); Synchronized (t) { Wait(); } }
Q # 43) Diferència entre el mètode notification () i el mètode notificationAll () a Java.
Resposta: A continuació es detallen les diferències entre el mètode de notificació () i el mètode de notificació All ():
notificar () | notificationAll () |
---|---|
Aquest mètode s’utilitza per enviar un senyal per despertar un únic fil a la piscina d’espera. | Aquest mètode envia el senyal per despertar tots els fils en un carret d’espera. |
P # 44) Com aturar un fil a Java? Expliqueu el mètode sleep () en un fil?
Resposta: Podem aturar un fil mitjançant els mètodes de fil següents:
- Dorment
- Esperant
- Bloquejat
Dormir: El mètode Sleep () s’utilitza per dormir el fil que s’executa actualment durant el temps donat. Un cop es desperta el fil, es pot passar a l'estat executable. Per tant, s’utilitza el mètode sleep () per retardar l’execució durant algun període.
És un mètode estàtic.
Exemple:
Fil. Dorm (2000)
Per tant, retarda el fil a dormir 2 mil·lisegons. El mètode Sleep () genera una excepció ininterrompuda, per tant, necessitem envoltar el bloc amb try / catch.
public class ExampleThread implements Runnable{ public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ try{ Thread.sleep(2000); }catch(InterruptedException e){ } }
Q # 45) Quan s'utilitza la classe d'execució de la interfície Vs Thread a Java?
Resposta: Si necessitem que la nostra classe ampliï altres classes diferents del fil, podem anar amb la interfície executable perquè a Java només podem ampliar una classe.
Si no ampliem cap classe, podem ampliar la classe de fil.
Q # 46) Diferència entre el mètode start () i run () de la classe de fil.
Resposta: El mètode Start () crea un nou fil i el codi dins del mètode run () s’executa al nou fil. Si anomenem directament el mètode run (), no es crea un nou fil i el fil en execució actual seguirà executant el mètode run ().
Q # 47) Què és el multi-threading?
Resposta: S'executen diversos fils simultàniament. Cada fil inicia la seva pròpia pila en funció del flux (o) de la prioritat dels fils.
Exemple de programa:
public class MultipleThreads implements Runnable { public static void main (String() args){//Main thread starts here Runnable r = new runnable (); Thread t=new thread (); t.start ();//User thread starts here Addition add=new addition (); } public void run(){ go(); }//User thread ends here }
A l'execució de la primera línia, JVM crida al mètode principal i la pila de fils principal es veu com es mostra a continuació.
Un cop arriba l'execució, t.start () line, es crea un nou fil i també es crea la nova pila del fil. Ara la JVM canvia al nou fil i el fil principal torna a l'estat executable.
Les dues piles es veuen com es mostra a continuació.
Ara, el fil de l'usuari ha executat el codi dins del mètode run ().
Un cop finalitzat el mètode run (), la JVM torna al fil principal i el fil de l'usuari ha completat la tasca i la pila ha desaparegut.
JVM canvia entre cada fil fins que es completen tots dos. Això s’anomena multi-threading.
Q # 48) Expliqueu el cicle de vida del fil a Java.
Resposta: El fil té els estats següents:
- Novetat
- Executable
- Córrer
- No executable (bloquejat)
- Finalitzat
- Novetat: En estat nou, s'ha creat una instància de fil, però encara no s'ha invocat el mètode start (). Ara el fil no es considera viu.
- Executable : El fil està en estat executable després de la invocació del mètode start (), però abans que s'invoqui el mètode run (). Però un fil també pot tornar a l’estat executable d’esperar / dormir. En aquest estat, el fil es considera viu.
- Córrer : El fil està en estat d'execució després de cridar al mètode run (). Ara el fil comença l'execució.
- No executable (Bloquejat): el fil està viu, però no es pot executar. No es troba en estat executable, però també tornarà a l'estat executable després d'un temps. Exemple: espera, dorm, bloqueja.
- Finalitzat : Un cop finalitzat el mètode d'execució, s'acaba. Ara el fil no està viu.
Q # 49) Què és la sincronització?
Resposta: La sincronització fa que només hi hagi un fil per accedir a un bloc de codi alhora. Si diversos fils accedeixen al bloc de codi, al final hi ha la possibilitat de tenir resultats inexactes. Per evitar aquest problema, podem proporcionar sincronització per al bloc sensible de codis.
La paraula clau sincronitzada significa que un fil necessita una clau per accedir al codi sincronitzat.
Els panys són per objecte. Tots els objectes Java tenen un bloqueig. Un pany només té una clau. Un fil pot accedir a un mètode sincronitzat només si el fil pot obtenir la clau dels objectes a bloquejar.
Per a això, fem servir la paraula clau 'Sincronitzada'.
Exemple:
public class ExampleThread implements Runnable{ public static void main (String() args){ Thread t = new Thread (); t.start (); } public void run(){ synchronized(object){ { } }
P # 50) Quin és l’inconvenient de la sincronització?
Anys: No es recomana la sincronització per implementar tots els mètodes. Perquè si un fil accedeix al codi sincronitzat, el següent fil hauria d’esperar. Per tant, té un rendiment lent a l’altre extrem.
P # 51) Què s’entén per serialització?
Resposta: La conversió d’un fitxer en un flux de bytes es coneix com a serialització. Els objectes del fitxer es converteixen en bytes per motius de seguretat. Per a això, hem d’implementar una interfície java.io.Serializable. No té cap mètode per definir.
Les variables que es marquen com a transitòries no formaran part de la serialització. Per tant, podem ometre la serialització de les variables del fitxer mitjançant una paraula clau transitòria.
Més informació = >> Serialitzable i clonable
P # 52) Quin és el propòsit d'una variable transitòria?
Resposta: Les variables transitòries no formen part del procés de serialització. Durant la deserialització, els valors de les variables transitòries s’estableixen al valor per defecte. No s’utilitza amb variables estàtiques.
Exemple:
amplada primer cerca arbre c ++
nombres int transitoris;
P # 53) Quins mètodes s’utilitzen durant el procés de serialització i deserialització?
Resposta: Les classes ObjectOutputStream i ObjectInputStream són de nivell superior java.io. paquet. Els utilitzarem amb classes de nivell inferior FileOutputStream i FileInputStream.
ObjectOutputStream.writeObject -> Serialitzeu l'objecte i escriviu l'objecte serialitzat en un fitxer.
ObjectInputStream.readObject -> Llegeix el fitxer i deserialitza l'objecte.
Per ser serialitzat, un objecte ha d'implementar la interfície serialitzable. Si la superclasse implementa Serializable, la subclasse es serialitzarà automàticament.
Q # 54) Quin és el propòsit d'una variable volàtil?
Resposta: Els valors de les variables volàtils sempre es llegeixen des de la memòria principal i no des de la memòria cau del fil. S’utilitza principalment durant la sincronització. Només és aplicable a les variables.
Exemple:
nombre int volàtil;
Q # 55) Diferència entre serialització i deserialització a Java.
Resposta: Aquestes són les diferències entre la serialització i la deserialització a Java:
Serialització | Deserialització |
---|---|
La serialització és el procés que s’utilitza per convertir els objectes en flux de bytes | La deserialització és el procés oposat de serialització on podem recuperar els objectes del flux de bytes. |
Un objecte es serialitza escrivint-lo en ObjectOutputStream. | Un objecte es deserialitza llegint-lo des d’un ObjectInputStream. |
P # 56) Què és SerialVersionUID?
Resposta: Sempre que un objecte es serialitza, s’obté l’objecte amb un número d’ID de versió per a la classe d’objecte. Aquest identificador s’anomena SerialVersionUID. S'utilitza durant la deserialització per verificar que l'emissor i el receptor són compatibles amb la serialització.
Conclusió
Aquestes són algunes de les preguntes bàsiques de l’entrevista JAVA que cobreixen tant els conceptes bàsics i avançats de Java per a la programació com les entrevistes amb desenvolupadors, i aquestes són les que han estat respostes pels nostres experts en JAVA.
Espero que aquest tutorial us proporcioni una detallada informació detallada sobre els conceptes bàsics de codificació JAVA. Les explicacions anteriors realment enriquiran el vostre coneixement i augmentaran la vostra comprensió de la programació JAVA.
Prepareu-vos per trencar una entrevista JAVA amb confiança.