Post Top Ad

Your Ad Spot

domingo, 19 de abril de 2020

300 preguntas principales de la entrevista Java | Serie 1

90% de garantía de las preguntas de la entrevista.
Hay una lista de 300 preguntas principales de la entrevista Java. Si se le ha formulado alguna pregunta básica de la entrevista Java, publíquela en la sección de preguntas frecuentes. Le aseguramos que obtendrá aquí el 90% de las preguntas y respuestas frecuentes de las entrevistas.
Las respuestas a las preguntas de la entrevista de Core Java son breves y precisas. Las preguntas principales de la entrevista Java se clasifican en Conceptos básicos de las preguntas de la entrevista Java, preguntas de la entrevista de OOP, preguntas de la entrevista de manejo de cadenas, preguntas de la entrevista de subprocesos múltiples, preguntas de la entrevista de recopilación, preguntas de la entrevista de JDBC, etc.

5

Core Java: conceptos básicos de las preguntas de la entrevista Java


1) ¿Qué es Java?

Java es el lenguaje de programación de alto nivel, orientado a objetos , robusto y seguro, independiente de la plataforma, de alto rendimiento, lenguaje de programación multiproceso y portátil. Fue desarrollado por James Gosling en junio de 1991. También puede conocerse como la plataforma, ya que proporciona su propio JRE y API.

2) ¿Cuáles son las diferencias entre C ++ y Java?

Las diferencias entre C ++ y Java se dan en la siguiente tabla.
Índice de comparaciónC ++Java
Plataforma independienteC ++ depende de la plataforma.Java es independiente de la plataforma.
Utilizado principalmente paraC ++ se utiliza principalmente para la programación del sistema.Java se utiliza principalmente para la programación de aplicaciones. Es ampliamente utilizado en aplicaciones de ventana, basadas en web, empresariales y móviles.
Objetivo de diseñoC ++ fue diseñado para la programación de sistemas y aplicaciones. Era una extensión del lenguaje de programación C .Java fue diseñado y creado como un intérprete para sistemas de impresión, pero luego se extendió como una red de soporte informático. Fue diseñado con el objetivo de ser fácil de usar y accesible para un público más amplio.
IrC ++ admite la declaración goto .Java no admite la declaración goto.
Herencia múltipleC ++ admite herencia múltiple.Java no admite herencia múltiple a través de la clase. Se puede lograr mediante interfaces en java .
Sobrecarga del operadorC ++ admite la sobrecarga del operador .Java no admite la sobrecarga del operador.
PunterosC ++ admite punteros . Puede escribir el programa puntero en C ++.Java admite puntero internamente. Sin embargo, no puede escribir el programa puntero en java. Significa que Java tiene soporte de puntero restringido en Java.
Compilador e IntérpreteC ++ usa solo el compilador. C ++ se compila y ejecuta utilizando el compilador que convierte el código fuente en código de máquina, por lo que C ++ depende de la plataforma.Java usa compilador e intérprete ambos. El código fuente de Java se convierte en bytecode en el momento de la compilación. El intérprete ejecuta este código de bytes en tiempo de ejecución y produce resultados. Java se interpreta por eso es independiente de la plataforma.
Llamada por valor y Llamada por referenciaC ++ admite llamadas por valor y llamadas por referencia.Java solo admite llamadas por valor. No hay llamada por referencia en java.
Estructura y unionC ++ soporta estructuras y uniones.Java no es compatible con estructuras y sindicatos.
Soporte de hiloC ++ no tiene soporte incorporado para hilos. Se basa en bibliotecas de terceros para el soporte de hilos.Java tiene soporte de hilo incorporado.
Comentario de documentaciónC ++ no admite comentarios de documentación.Java admite comentarios de documentación (/ ** ... * /) para crear documentación para el código fuente de Java.
Palabra clave virtualC ++ admite palabras clave virtuales para que podamos decidir si anular o no una función.Java no tiene una palabra clave virtual. Podemos anular todos los métodos no estáticos de forma predeterminada. En otras palabras, los métodos no estáticos son virtuales por defecto.
desplazamiento a la derecha sin firmar >>>C ++ no es compatible con el operador >>>.Java admite el operador de desplazamiento a la derecha sin signo >>> que llena cero en la parte superior para los números negativos. Para números positivos, funciona igual que >> operador.
Árbol de herenciaC ++ crea un nuevo árbol de herencia siempre.Java utiliza un solo árbol de herencia siempre porque todas las clases son hijo de la clase Object en java. La clase de objeto es la raíz del árbol de herencia en java.
HardwareC ++ está más cerca del hardware.Java no es tan interactivo con el hardware.
Orientado a objetosC ++ es un lenguaje orientado a objetos. Sin embargo, en lenguaje C, la jerarquía de raíz única no es posible.Java también es un lenguaje orientado a objetos. Sin embargo, todo (excepto los tipos fundamentales) es un objeto en Java. Es una jerarquía de raíz única, ya que todo se deriva de java.lang.Object.

3) Enumere las características del lenguaje de programación Java.

Existen las siguientes características en Java Programming Language.
  • Simple: Java es fácil de aprender. La sintaxis de Java se basa en C ++, lo que facilita la escritura del programa.

  • Orientado a objetos: Java sigue el paradigma orientado a objetos que nos permite mantener nuestro código como la combinación de diferentes tipos de objetos que incorporan datos y comportamiento.

  • Portátil: Java admite el enfoque de leer una vez y escribir en cualquier lugar. Podemos ejecutar el programa Java en cada máquina. El programa Java (.java) se convierte en bytecode (.class) que se puede ejecutar fácilmente en todas las máquinas.

  • Independiente de la plataforma: Java es un lenguaje de programación independiente de la plataforma. Es diferente de otros lenguajes de programación como C y C ++ que necesitan una plataforma para ejecutarse. Java viene con su plataforma en la que se ejecuta su código. Java no depende del sistema operativo que se ejecutará.

  • Seguro: Java está protegido porque no utiliza punteros explícitos. Java también proporciona el concepto de manejo de ByteCode y Exception que lo hace más seguro.

  • Robusto: Java es un lenguaje de programación fuerte, ya que utiliza una sólida gestión de memoria. Los conceptos como recolección automática de basura, manejo de excepciones, etc., lo hacen más robusto.

  • Arquitectura neutral: Java es arquitectónico neutral ya que no depende de la arquitectura. En C, el tamaño de los tipos de datos puede variar según la arquitectura (32 bits o 64 bits) que no existe en Java.

  • Interpretado: Java utiliza el intérprete Just-in-time (JIT) junto con el compilador para la ejecución del programa.

  • Alto rendimiento: Java es más rápido que otros lenguajes de programación interpretados tradicionales porque el código de bytes de Java está "cerca" del código nativo. Todavía es un poco más lento que un lenguaje compilado (por ejemplo, C ++).

  • Multiproceso: podemos escribir programas Java que se encarguen de muchas tareas a la vez definiendo múltiples hilos. La principal ventaja de los subprocesos múltiples es que no ocupa memoria para cada subproceso. Comparte un área de memoria común. Los hilos son importantes para multimedia, aplicaciones web, etc.

  • Distribuido: Java se distribuye porque facilita a los usuarios crear aplicaciones distribuidas en Java. RMI y EJB se utilizan para crear aplicaciones distribuidas. Esta característica de Java nos permite acceder a los archivos llamando a los métodos desde cualquier máquina en Internet.

  • Dinámico: Java es un lenguaje dinámico. Es compatible con la carga dinámica de clases. Significa que las clases se cargan a pedido. También admite funciones de sus lenguajes nativos, es decir, C y C ++.

4) ¿Qué entiendes por máquina virtual Java?

Java Virtual Machine es una máquina virtual que permite que la computadora ejecute el programa Java. JVM actúa como un motor de tiempo de ejecución que llama al método principal presente en el código Java. JVM es la especificación que debe implementarse en el sistema informático. JVM compila el código Java para que sea un código de bytes independiente de la máquina y cercano al código nativo.

5) ¿Cuál es la diferencia entre JDK, JRE y JVM?

JVM

JVM es un acrónimo de Java Virtual Machine; Es una máquina abstracta que proporciona el entorno de tiempo de ejecución en el que se puede ejecutar el bytecode de Java. Es una especificación que especifica el funcionamiento de Java Virtual Machine. Su implementación ha sido proporcionada por Oracle y otras compañías. Su implementación se conoce como JRE.
Las JVM están disponibles para muchas plataformas de hardware y software (por lo que JVM depende de la plataforma). Es una instancia de tiempo de ejecución que se crea cuando ejecutamos la clase Java. Hay tres nociones de la JVM: especificación, implementación e instancia.

JRE

JRE significa Java Runtime Environment. Es la implementación de JVM. Java Runtime Environment es un conjunto de herramientas de software que se utilizan para desarrollar aplicaciones Java. Se utiliza para proporcionar el entorno de tiempo de ejecución. Es la implementación de JVM. Existe físicamente. Contiene un conjunto de bibliotecas + otros archivos que JVM usa en tiempo de ejecución.

JDK

JDK es un acrónimo de Java Development Kit. Es un entorno de desarrollo de software que se utiliza para desarrollar aplicaciones y applets de Java. Existe físicamente. Contiene herramientas de desarrollo JRE +. JDK es una implementación de cualquiera de las plataformas Java dadas a continuación lanzadas por Oracle Corporation:
  • Plataforma Java Edición Estándar
  • Enterprise Edition Java Platform
  • Micro Edition Java Platform
Más detalles.

6) ¿Cuántos tipos de áreas de memoria asigna JVM?

Muchos tipos:
  1. Área de clase (método): el área de clase almacena estructuras por clase, como el grupo constante de tiempo de ejecución, el campo, los datos del método y el código para los métodos.
  2. Montón: es el área de datos de tiempo de ejecución en la que se asigna la memoria a los objetos
  3. Stack: Java Stack almacena marcos. Contiene variables locales y resultados parciales, y juega un papel en la invocación y devolución de métodos. Cada hilo tiene una pila JVM privada, creada al mismo tiempo que el hilo. Se crea un nuevo marco cada vez que se invoca un método. Un marco se destruye cuando se completa la invocación de su método.
  4. Registro de contador de programa: el registro de PC (contador de programa) contiene la dirección de la instrucción de máquina virtual Java que se está ejecutando actualmente.
  5. Pila de métodos nativos: contiene todos los métodos nativos utilizados en la aplicación.
Más detalles.

7) ¿Qué es el compilador JIT?

Compilador Just-In-Time (JIT): se utiliza para mejorar el rendimiento. JIT compila partes del código de bytes que tienen una funcionalidad similar al mismo tiempo y, por lo tanto, reduce la cantidad de tiempo necesario para la compilación. Aquí el término "compilador" se refiere a un traductor del conjunto de instrucciones de una máquina virtual Java (JVM) al conjunto de instrucciones de una CPU específica.

8) ¿Qué es la plataforma?

Una plataforma es el entorno de hardware o software en el que se ejecuta una pieza de software. Hay dos tipos de plataformas, basadas en software y basadas en hardware. Java proporciona la plataforma basada en software.

9) ¿Cuáles son las principales diferencias entre la plataforma Java y otras plataformas?

Existen las siguientes diferencias entre la plataforma Java y otras plataformas.
  • Java es la plataforma basada en software, mientras que otras plataformas pueden ser plataformas de hardware o plataformas basadas en software.
  • Java se ejecuta en la parte superior de otras plataformas de hardware, mientras que otras plataformas solo pueden tener los componentes de hardware.

10) ¿Qué le da a Java su naturaleza de 'escribir una vez y correr en cualquier lugar'?

El bytecode. El compilador de Java convierte los programas de Java en el archivo de clase (Código de bytes), que es el lenguaje intermedio entre el código fuente y el código de máquina. Este código de bytes no es específico de la plataforma y puede ejecutarse en cualquier computadora.

11) ¿Qué es el cargador de clases?

Classloader es un subsistema de JVM que se utiliza para cargar archivos de clase. Cada vez que ejecutamos el programa java, el cargador de clases lo carga primero. Hay tres cargadores de clases integrados en Java.
  1. Bootstrap ClassLoader : este es el primer cargador de clases que es la superclase de Extension classloader. Carga el archivo rt.jar que contiene todos los archivos de clase de Java Standard Edition como clases de paquete java.lang, clases de paquete java.net, clases de paquete java.util, clases de paquete java.io, clases de paquete java.sql, etc.
  2. Extension ClassLoader : este es el cargador de clases hijo de Bootstrap y el cargador de clases padre del cargador de clases del sistema. Carga los archivos jar ubicados dentro del directorio $ JAVA_HOME / jre / lib / ext .
  3. System / Application ClassLoader : este es el cargador de clases hijo de Extension classloader. Carga los archivos de clase del classpath. Por defecto, el classpath se establece en el directorio actual. Puede cambiar el classpath usando el modificador "-cp" o "-classpath". También se conoce como Application classloader.

12) ¿El nombre de archivo .java vacío es un nombre de archivo fuente válido?

Sí, Java permite guardar nuestro archivo java solo con .java , necesitamos compilarlo con javac .java y ejecutarlo con java classname Tomemos un ejemplo simple:
  1. // guardar solo por .java  
  2. clase  A {  
  3. public static void  main (String args []) {    
  4. System.out.println ( "Hola Java" );  
  5. }  
  6. }  
  7. // compilado por javac .java  
  8. // dirigido por java A  
compilarlo por javac .java
ejecutarlo por java A

13) ¿Es la palabra clave delete, next, main, exit o null en java?

No.

14) Si no proporciono ningún argumento en la línea de comando, ¿cuál será el valor almacenado en la matriz String pasado al método main (), vacío o NULL?

Está vacío, pero no es nulo.

15) ¿Qué sucede si escribo vacío público estático en lugar de vacío público estático?

El programa se compila y se ejecuta correctamente porque el orden de los especificadores no importa en Java.

16) ¿Cuál es el valor predeterminado de las variables locales?

Las variables locales no se inicializan a ningún valor predeterminado, ni primitivas ni referencias a objetos.

17) ¿Cuáles son los diversos especificadores de acceso en Java?

En Java, los especificadores de acceso son las palabras clave que se utilizan para definir el alcance de acceso del método, clase o variable. En Java, hay cuatro especificadores de acceso a continuación.
  • Público Se puede acceder a las clases, métodos o variables que se definen como públicos mediante cualquier clase o método.
  • Protegido Se puede acceder a Protegido por la clase del mismo paquete, o por la subclase de esta clase, o dentro de la misma clase.
  • Predeterminado Solo se puede acceder a Predeterminado dentro del paquete. Por defecto, todas las clases, métodos y variables tienen un alcance predeterminado.
  • Privado La clase privada, los métodos o las variables definidas como privadas solo se pueden acceder dentro de la clase.

18) ¿Cuál es el propósito de los métodos y variables estáticos?

Los métodos o variables definidos como estáticos se comparten entre todos los objetos de la clase. La estática es parte de la clase y no del objeto. Las variables estáticas se almacenan en el área de clase, y no necesitamos crear el objeto para acceder a dichas variables. Por lo tanto, estático se usa en el caso, donde necesitamos definir variables o métodos que sean comunes a todos los objetos de la clase.
Por ejemplo, en la clase que simula la colección de estudiantes en una universidad, el nombre de la universidad es el atributo común para todos los estudiantes. Por lo tanto, el nombre de la universidad se definirá como estático .

19) ¿Cuáles son las ventajas de los paquetes en Java?

Hay varias ventajas de definir paquetes en Java.
  • Los paquetes evitan los conflictos de nombres.
  • El paquete proporciona un control de acceso más fácil.
  • También podemos tener las clases ocultas que no son visibles afuera y que el paquete usa.
  • Es más fácil localizar las clases relacionadas.

20) ¿Cuál es el resultado del siguiente programa Java?

  1.  prueba de    clase
  2. {  
  3.     público estático vacío  principal (String args [])     
  4.     {  
  5.         System.out.println ( 10  +  20  +  "Javatpoint" );   
  6.         System.out.println ( "Javatpoint"  +  10  +  20 );  
  7.     }  
  8. }  
La salida del código anterior será
30 Javatpoint
Javatpoint1020
Explicación
En el primer caso, 10 y 20 se tratan como números y se suman a 30. Ahora, su suma 30 se trata como la cadena y se concatena con la cadena Javatpoint . Por lo tanto, la salida será 30Javatpoint .
En el segundo caso, la cadena Javatpoint se concatena con 10 para ser la cadena Javatpoint10, que luego se concatenará con 20 para ser Javatpoint1020 .

21) ¿Cuál es el resultado del siguiente programa Java?

  1.  prueba de    clase
  2. {  
  3.     público estático vacío  principal (String args [])     
  4.     {  
  5.         System.out.println ( 10  *  20  +  "Javatpoint" );   
  6.         System.out.println ( "Javatpoint"  +  10  *  20 );  
  7.     }  
  8. }  
La salida del código anterior será
200 Javatpoint
Javatpoint200
Explicación
En el primer caso, los números 10 y 20 se multiplicarán primero y luego el resultado 200 se trata como la cadena y se concatena con la cadena Javatpoint para producir la salida 200Javatpoint .
En el segundo caso, los números 10 y 20 se multiplicarán primero para ser 200 porque la precedencia de la multiplicación es mayor que la suma. El resultado 200 se tratará como la cadena y se concatenará con la cadena Javatpoint para producir la salida como Javatpoint200 .

22) ¿Cuál es el resultado del siguiente programa Java?

  1.  prueba de    clase
  2. {  
  3.     público estático vacío  principal (String args [])     
  4.     {  
  5.         para int  i = ;  ; i ++)   
  6.         {  
  7.             System.out.println ( "Hola Javatpoint" );  
  8.         }  
  9.     }  
  10. }  
El código anterior dará el error en tiempo de compilación porque el bucle for exige un valor booleano en la segunda parte y estamos proporcionando un valor entero, es decir, 0.

Conceptos básicos de Java - OOP: preguntas iniciales de la entrevista de OOP

Se han realizado más de 50 preguntas de entrevista de OOP (Programación y Sistema Orientado a Objetos). Sin embargo, se han categorizado en muchas secciones, como preguntas de entrevista de constructor, preguntas de entrevista estática, preguntas de entrevista de herencia, pregunta de entrevista de abstracción, preguntas de entrevista de polimorfismo, etc. para una mejor comprensión.

23) ¿Qué es el paradigma orientado a objetos?

Es un paradigma de programación basado en objetos que tienen datos y métodos definidos en la clase a la que pertenece. El paradigma orientado a objetos tiene como objetivo incorporar las ventajas de la modularidad y la reutilización. Los objetos son instancias de clases que interactúan entre sí para diseñar aplicaciones y programas. Existen las siguientes características del paradigma orientado a objetos.
  • Sigue el enfoque ascendente en el diseño del programa.
  • Centrarse en los datos con métodos para operar sobre los datos del objeto.
  • Incluye el concepto como Encapsulación y abstracción que oculta las complejidades del usuario y muestra solo la funcionalidad.
  • Implementa el enfoque en tiempo real como herencia, abstracción, etc.
  • Los ejemplos del paradigma orientado a objetos son C ++, Simula, Smalltalk, Python, C #, etc.

24) ¿Qué es un objeto?

El objeto es la entidad en tiempo real que tiene algún estado y comportamiento. En Java, Object es una instancia de la clase que tiene las variables de instancia como el estado del objeto y los métodos como el comportamiento del objeto. El objeto de una clase se puede crear utilizando la nueva palabra clave.

25) ¿Cuál es la diferencia entre un lenguaje de programación orientado a objetos y un lenguaje de programación basado en objetos?

Existen las siguientes diferencias básicas entre el lenguaje orientado a objetos y el lenguaje basado en objetos.
  • Los lenguajes orientados a objetos siguen todos los conceptos de OOP, mientras que el lenguaje basado en objetos no sigue todos los conceptos de OOP como la herencia y el polimorfismo.
  • Los lenguajes orientados a objetos no tienen los objetos incorporados, mientras que los lenguajes basados ​​en objetos tienen los objetos incorporados, por ejemplo, JavaScript tiene un objeto de ventana.
  • Ejemplos de programación orientada a objetos son Java, C #, Smalltalk, etc., mientras que los ejemplos de lenguajes basados ​​en objetos son JavaScript, VBScript, etc.

26) ¿Cuál será el valor inicial de una referencia de objeto que se define como una variable de instancia?

Todas las referencias a objetos se inicializan como nulas en Java.

Conceptos básicos de Java - OOP: preguntas de la entrevista del constructor


27) ¿Qué es el constructor?

El constructor se puede definir como el tipo especial de método que se utiliza para inicializar el estado de un objeto. Se invoca cuando se instancia la clase y se asigna la memoria para el objeto. Cada vez que se crea un objeto utilizando la nueva palabra clave, se llama al constructor predeterminado de la clase. El nombre del constructor debe ser similar al nombre de la clase. El constructor no debe tener un tipo de retorno explícito.
Más detalles.

28) ¿Cuántos tipos de constructores se usan en Java?

Según los parámetros pasados ​​en los constructores, hay dos tipos de constructores en Java.
  • Constructor predeterminado : el constructor predeterminado es el que no acepta ningún valor. El constructor predeterminado se usa principalmente para inicializar la variable de instancia con los valores predeterminados. También se puede utilizar para realizar alguna tarea útil en la creación de objetos. El compilador invoca implícitamente un constructor predeterminado si no hay un constructor definido en la clase.
  • Constructor parametrizado: el constructor parametrizado es el que puede inicializar las variables de instancia con los valores dados. En otras palabras, podemos decir que los constructores que pueden aceptar los argumentos se denominan constructores parametrizados.
Constructores Java

29) ¿Cuál es el propósito de un constructor predeterminado?

El propósito del constructor predeterminado es asignar el valor predeterminado a los objetos. El compilador de Java crea un constructor predeterminado implícitamente si no hay un constructor en la clase.
  1. clase  Estudiante3 {  
  2. int  id;  
  3. Nombre de cadena;  
  4.   
  5.  pantalla vacía () {System.out.println (id + "" + nombre);}  
  6.   
  7. public static void  main (String args []) {    
  8. Student3 s1 = nuevo  Student3 ();  
  9. Student3 s2 = nuevo  Student3 ();  
  10. s1.display ();  
  11. s2.display ();  
  12. }  
  13. }  
Pruébalo ahora
Salida:
0 nulo
0 nulo
Explicación: en la clase anterior, no está creando ningún constructor, por lo que el compilador le proporciona un constructor predeterminado. Aquí los valores 0 y nulos son proporcionados por el constructor predeterminado.
Constructor predeterminado de Java
Más detalles.

30) ¿El constructor devuelve algún valor?

Respuesta: sí, el constructor devuelve implícitamente la instancia actual de la clase (no puede usar un tipo de retorno explícito con el constructor). Más detalles.

31) ¿Se hereda el constructor?

No, el constructor no se hereda.

32) ¿Puedes hacer un constructor final?

No, el constructor no puede ser definitivo.

33) ¿Podemos sobrecargar a los constructores?

Sí, los constructores pueden sobrecargarse cambiando el número de argumentos aceptados por el constructor o cambiando el tipo de datos de los parámetros. Considere el siguiente ejemplo.
  1.  prueba de    clase
  2. {  
  3.     int  i;   
  4.      Prueba pública int  k)  
  5.     {  
  6.         i = k;  
  7.     }  
  8.      Prueba pública int  k,  int  m)  
  9.     {  
  10.         System.out.println ( "Hola, estoy asignando el valor max (k, m) a i" );  
  11.         si (k> m)  
  12.         {  
  13.             i = k;   
  14.         }  
  15.         más   
  16.         {  
  17.             i = m;  
  18.         }  
  19.     }  
  20. }  
  21. clase pública  principal    
  22. {  
  23.     público estático vacío  principal (String args [])     
  24.     {  
  25.         Prueba test1 =   prueba nueva 10 );  
  26.         Test test2 =   prueba nueva 12 ,  15 );  
  27.         System.out.println (test1.i);  
  28.         System.out.println (test2.i);  
  29.     }  
  30. }  
  31.       
En el programa anterior, la prueba del constructor está sobrecargada con otro constructor. En la primera llamada al constructor, se llama al constructor con un argumento, y se inicializará con el valor 10. Sin embargo, en la segunda llamada al constructor, se llama al constructor con los 2 argumentos, y se inicializará con el valor 15.

34) ¿Qué entiendes por constructor de copia en Java?

No hay constructor de copia en java. Sin embargo, podemos copiar los valores de un objeto a otro como el constructor de copia en C ++.
Hay muchas formas de copiar los valores de un objeto en otro en java. Son:
  • Por constructor
  • Al asignar los valores de un objeto a otro
  • Por el método clone () de la clase Object
En este ejemplo, vamos a copiar los valores de un objeto en otro usando el constructor java.
  1. // Programa Java para inicializar los valores de un objeto a otro  
  2. clase  Estudiante6 {  
  3.     int  id;  
  4.     Nombre de cadena;  
  5.     // constructor para inicializar enteros y cadenas  
  6.     Student6 ( int  i, String n) {  
  7.     id = i;  
  8.     nombre = n;  
  9.     }  
  10.     // constructor para inicializar otro objeto  
  11.     Estudiante6 (Estudiante6 s) {  
  12.     id = s.id;  
  13.     nombre = s.name;  
  14.     }  
  15.      pantalla vacía () {System.out.println (id + "" + nombre);}  
  16.    
  17.     public static void  main (String args []) {    
  18.     Student6 s1 =  nuevo  Student6 ( 111 "Karan" );  
  19.     Student6 s2 =  nuevo  Student6 (s1);  
  20.     s1.display ();  
  21.     s2.display ();  
  22.    }  
  23. }  
Pruébalo ahora
Salida:
111 Karan
111 Karan

35) ¿Cuáles son las diferencias entre los constructores y los métodos?

Hay muchas diferencias entre constructores y métodos. Se dan a continuación.
Constructor JavaMétodo Java
Un constructor se usa para inicializar el estado de un objeto.Se utiliza un método para exponer el comportamiento de un objeto.
Un constructor no debe tener un tipo de retorno.Un método debe tener un tipo de retorno.
El constructor se invoca implícitamente.El método se invoca explícitamente.
El compilador de Java proporciona un constructor predeterminado si no tiene ningún constructor en una clase.El compilador no proporciona el método en ningún caso.
El nombre del constructor debe ser el mismo que el nombre de la clase.El nombre del método puede o no ser el mismo que el nombre de la clase.

Constructores Java vs Métodos

36) ¿Cuál es el resultado del siguiente programa Java?

  1.  Prueba de    clase pública 
  2. {  
  3.     Prueba ( int  a,  int  b)  
  4.     {  
  5.         System.out.println ( "a =" + a + "b =" + b);  
  6.     }  
  7.     Prueba ( int  a,  float  b)  
  8.     {  
  9.         System.out.println ( "a =" + a + "b =" + b);  
  10.     }  
  11.     público estático vacío  principal (String args [])    
  12.     {  
  13.         byte  a =  10 ;   
  14.         byte  b =  15 ;  
  15.         Prueba de prueba =  nueva  prueba (a, b);  
  16.     }  
  17. }  
La salida del siguiente programa es:
a = 10 b = 15
Aquí, el tipo de datos de las variables a y b, es decir, el byte se promueve a int, y se llama al primer constructor parametrizado con los dos parámetros enteros.

37) ¿Cuál es el resultado del siguiente programa Java?

  1.  prueba de    clase
  2. {  
  3.     int  i;   
  4. }  
  5. clase pública  principal    
  6. {  
  7.     público estático vacío  principal (String args [])     
  8.     {  
  9.         Prueba de prueba =  nueva  Prueba ();   
  10.         System.out.println (test.i);  
  11.     }  
  12. }  
La salida del programa es 0 porque la variable i se inicializa a 0 internamente. Como sabemos que un constructor predeterminado se invoca implícitamente si no hay un constructor en la clase, la variable i se inicializa a 0 ya que no hay un constructor en la clase.

38) ¿Cuál es el resultado del siguiente programa Java?

  1.  prueba de    clase
  2. {  
  3.     int  test_a, test_b;  
  4.     Prueba ( int  a,  int  b)   
  5.     {  
  6.     prueba_a = a;   
  7.     prueba_b = b;   
  8.     }  
  9.     público estático vacío  principal (String args [])     
  10.     {  
  11.         Prueba de prueba =  nueva  Prueba ();   
  12.         System.out.println (test.test_a + "" + test.test_b);  
  13.     }  
  14. }  
Hay un error de compilación en el programa porque hay una llamada al constructor predeterminado en el método principal que no está presente en la clase. Sin embargo, solo hay un constructor parametrizado en la clase Test. Por lo tanto, el constructor no invoca implícitamente ningún constructor predeterminado.

Conceptos básicos de Java - OOP: preguntas de entrevista de palabras clave estáticas


39) ¿Cuál es la variable estática?

La variable estática se usa para referirse a la propiedad común de todos los objetos (que no es única para cada objeto), por ejemplo, el nombre de la empresa de los empleados, el nombre de la universidad de los estudiantes, etc. La variable estática solo obtiene memoria una vez en el área de clase en El tiempo de carga de la clase. El uso de una variable estática hace que su programa sea más eficiente en la memoria (ahorra memoria). La variable estática pertenece a la clase más que al objeto.
  1. // Programa de variable estática  
  2.   
  3. clase  Student8 {  
  4.    int  rollno;  
  5.    Nombre de cadena;  
  6.    static  string String college = "SU" ;  
  7.      
  8.    Student8 ( int  r, String n) {  
  9.    rollno = r;  
  10.    nombre = n;  
  11.    }  
  12.   pantalla vacía () {System.out.println (rollno + "" + name + "" + college);}  
  13.   
  14.  public static void  main (String args []) {    
  15.  Student8 s1 =  nuevo  Student8 ( 111 "Karan" );  
  16.  Student8 s2 =  nuevo  Student8 ( 222 "Aryan" );  
  17.    
  18.  s1.display ();  
  19.  s2.display ();  
  20.  }  
  21. }  
Pruébalo ahora
Salida: 111 Karan ITS
       222 aria su
Variable estática
Más detalles.

40) ¿Cuál es el método estático?

  • Un método estático pertenece a la clase en lugar del objeto.
  • No es necesario crear el objeto para llamar a los métodos estáticos.
  • Un método estático puede acceder y cambiar el valor de la variable estática.
Más detalles.

41) ¿Cuáles son las restricciones que se aplican a los métodos estáticos de Java?

Se aplican dos restricciones principales a los métodos estáticos.
  • El método estático no puede usar un miembro de datos no estático o llamar al método no estático directamente.
  • this y super no se pueden usar en contexto estático ya que no son estáticos.

42) ¿Por qué el método principal es estático?

Porque no se requiere que el objeto llame al método estático. Si hacemos que el método principal no sea estático, JVM tendrá que crear primero su objeto y luego llamar al método main (), lo que conducirá a la asignación de memoria adicional. Más detalles.

43) ¿Podemos anular los métodos estáticos?

No, no podemos anular los métodos estáticos.

44) ¿Qué es el bloque estático?

El bloque estático se usa para inicializar el miembro de datos estáticos. Se ejecuta antes del método principal, en el momento de la carga de clases.
  1. clase  A2 {  
  2.   static {System.out.println ( "se invoca el bloque estático" );}  
  3.   public static void  main (String args []) {    
  4.    System.out.println ( "Hola principal" );  
  5.   }  
  6. }  
Pruébalo ahora
Salida: se invoca el bloque estático
       Hola principal

Más detalles.

45) ¿Podemos ejecutar un programa sin el método main ()?

Resp.) Sí, una de las formas de ejecutar el programa sin el método principal es usar el bloque estático. Más detalles.

46) ¿Qué sucede si el modificador estático se elimina de la firma del método principal?

Programa compila. Sin embargo, en tiempo de ejecución, arroja un error "NoSuchMethodError".

47) ¿Cuál es la diferencia entre el método estático (clase) y el método de instancia?

método estático o de clasemétodo de instancia
1) Un método que se declara como estático se conoce como método estático.Un método que no se declara como estático se conoce como método de instancia.
2) No necesitamos crear los objetos para llamar a los métodos estáticos.Se requiere el objeto para llamar a los métodos de instancia.
3) No se puede acceder a los miembros no estáticos (instancia) en el contexto estático (método estático, bloque estático y clase anidada estática) directamente.Se puede acceder a ambas variables estáticas y no estáticas en los métodos de instancia.
4) Por ejemplo: public static int cube (int n) {return n * n * n;}Por ejemplo: public void msg () {...}.

48) ¿Podemos hacer que los constructores sean estáticos?

Como sabemos, el contexto estático (método, bloque o variable) pertenece a la clase, no al objeto. Dado que los constructores se invocan solo cuando se crea el objeto, no tiene sentido hacer que los constructores sean estáticos. Sin embargo, si intenta hacerlo, el compilador mostrará el error del compilador.

49) ¿Podemos hacer que los métodos abstractos sean estáticos en Java?

En Java, si hacemos que los métodos abstractos sean estáticos, se convertirá en parte de la clase, y podemos llamarlo directamente, lo cual es innecesario. Llamar a un método indefinido es completamente inútil, por lo tanto, no está permitido.

50) ¿Podemos declarar las variables y métodos estáticos en una clase abstracta?

Sí, podemos declarar variables y métodos estáticos en un método abstracto. Como sabemos que no es necesario hacer que el objeto acceda al contexto estático, por lo tanto, podemos acceder al contexto estático declarado dentro de la clase abstracta utilizando el nombre de la clase abstracta. Considere el siguiente ejemplo.
  1.  Prueba de   clase abstracta 
  2. {  
  3.     estática int  i =  102 ;   
  4.      TestMethod vacío estático ()   
  5.     {  
  6.         System.out.println ( "¡Hola! ¡Estoy bien!" );  
  7.     }  
  8. }  
  9. clase pública  TestClass  extiende  prueba    
  10. {  
  11.     público estático vacío  principal (String args [])    
  12.     {  
  13.         Test.TestMethod ();  
  14.         System.out.println ( "i =" + Test.i);  
  15.     }  
  16. }  
Salida
Hola !! Soy bueno !!
i = 102

Conceptos básicos de Java - OOP: preguntas de la entrevista de herencia


51) ¿Cuál es esta palabra clave en Java?

La palabra clave this es una variable de referencia que se refiere al objeto actual. Existen varios usos de esta palabra clave en Java. Se puede usar para referirse a las propiedades de clase actuales, como métodos de instancia, variables, constructores, etc. También se puede pasar como argumento a los métodos o constructores. También se puede devolver del método como la instancia de clase actual.
Java esta palabra clave
Más detalles.

52) ¿Cuáles son los principales usos de esta palabra clave?

Existen los siguientes usos de esta palabra clave.
  • esto se puede usar para referirse a la variable de instancia de clase actual.
  • Esto se puede utilizar para invocar el método de clase actual (implícitamente)
  • this () se puede usar para invocar el constructor de clase actual.
  • esto se puede pasar como argumento en la llamada al método.
  • esto se puede pasar como argumento en la llamada al constructor.
  • Esto se puede utilizar para devolver la instancia de clase actual del método.

53) ¿Podemos asignar la referencia a esta variable?

No, esto no se puede asignar a ningún valor porque siempre apunta al objeto de clase actual y esta es la referencia final en Java. Sin embargo, si intentamos hacerlo, se mostrará el error del compilador. Considere el siguiente ejemplo.
  1.  Prueba de   clase pública 
  2. {  
  3.      Prueba pública ()  
  4.     {  
  5.         esto  =  nulo ;   
  6.         System.out.println ( "Constructor de clase de prueba llamado" );  
  7.     }  
  8.     público estático vacío  principal (String args [])    
  9.     {  
  10.         Prueba t =  nueva  Prueba ();  
  11.     }  
  12. }  
Salida
Test.java:5: error: no se puede asignar un valor a la variable final este
        esto = nulo; 
        ^
1 error

54) ¿Se puede usar esta palabra clave para referirse a miembros estáticos?

Sí, es posible usar esta palabra clave para referir miembros estáticos porque esta es solo una variable de referencia que se refiere al objeto de clase actual. Sin embargo, como sabemos, no es necesario acceder a variables estáticas a través de objetos, por lo tanto, no es la mejor práctica usar esto para referir miembros estáticos. Considere el siguiente ejemplo.
  1.  Prueba de    clase pública 
  2. {  
  3.     estático int  i =  10 ;    
  4.      Prueba pública ()  
  5.     {  
  6.         System.out.println ( este .i);      
  7.     }  
  8.     público estático vacío  principal (String args [])    
  9.     {  
  10.         Prueba t =  nueva  Prueba ();  
  11.     }  
  12. }  
Salida
10

55) ¿Cómo se puede hacer el encadenamiento del constructor usando esta palabra clave?

El encadenamiento de constructores nos permite llamar a un constructor desde otro constructor de la clase con respecto al objeto de clase actual. Podemos usar esta palabra clave para realizar el encadenamiento de constructores dentro de la misma clase. Considere el siguiente ejemplo que ilustra cómo podemos usar esta palabra clave para lograr el encadenamiento del constructor.
  1.  Empleado de   clase pública 
  2. {  
  3.     int  id, age;   
  4.     Nombre de cadena, dirección;  
  5.      Empleado público int  edad)  
  6.     {  
  7.         this .age = age;  
  8.     }  
  9.      Empleado público int  id,  int  age)  
  10.     {  
  11.         esto (edad);  
  12.         this .id = id;  
  13.     }  
  14.      Empleado público int  id,  int  age, String name, String address)  
  15.     {  
  16.         esto (id, edad);  
  17.         este .name = nombre;   
  18.         esta dirección = dirección;   
  19.     }  
  20.     público estático vacío  principal (String args [])    
  21.     {  
  22.         Empleado emp =  nuevo  empleado ( 105 ,  22 ,  "Vikas" ,  "Delhi" );  
  23.         System.out.println ( "ID:" + emp.id + "Nombre:" + emp.name + "edad:" + emp.age + "dirección:" + emp.address);  
  24.     }  
  25.       
  26. }  
Salida
ID: 105 Nombre: Vikas edad: 22 dirección: Delhi

56) ¿Cuáles son las ventajas de pasar esto a un método en lugar del objeto de clase actual en sí?

Como sabemos, esto se refiere al objeto de clase actual, por lo tanto, debe ser similar al objeto de clase actual. Sin embargo, puede haber dos ventajas principales de pasar esto a un método en lugar del objeto de clase actual.
  • Esta es una variable final. Por lo tanto, esto no se puede asignar a ningún valor nuevo, mientras que el objeto de clase actual podría no ser final y se puede cambiar.
  • Esto se puede utilizar en el bloque sincronizado.

57) ¿Qué es la herencia?

La herencia es un mecanismo por el cual un objeto adquiere todas las propiedades y el comportamiento de otro objeto de otra clase. Se utiliza para la reutilización de código y la anulación de métodos. La idea detrás de la herencia en Java es que puede crear nuevas clases basadas en las clases existentes. Cuando hereda de una clase existente, puede reutilizar métodos y campos de la clase principal. Además, también puede agregar nuevos métodos y campos en su clase actual. La herencia representa la relación IS-A, que también se conoce como relación padre-hijo.
Hay cinco tipos de herencia en Java.
  • Herencia de un solo nivel
  • Herencia multinivel
  • Herencia múltiple
  • Herencia jerárquica
  • Herencia Híbrida
La herencia múltiple no se admite en Java a través de la clase.
Más detalles.

58) ¿Por qué se usa la herencia en Java?

Hay varias ventajas de usar la herencia en Java que se detalla a continuación.
  • La herencia proporciona la reutilización del código. La clase derivada no necesita redefinir el método de la clase base a menos que necesite proporcionar la implementación específica del método.
  • El polimorfismo de tiempo de ejecución no se puede lograr sin usar la herencia.
  • Podemos simular la herencia de clases con los objetos en tiempo real, lo que hace que los OOP sean más realistas.
  • La herencia proporciona ocultación de datos. La clase base puede ocultar algunos datos de la clase derivada al hacerla privada.
  • La anulación del método no se puede lograr sin herencia. Al anular el método, podemos dar una implementación específica de algún método básico contenido por la clase base.

59) ¿Qué clase es la superclase para todas las clases?

La clase de objeto es la superclase de todas las demás clases en Java.

60) ¿Por qué no se admite la herencia múltiple en Java?

Para reducir la complejidad y simplificar el lenguaje, no se admite la herencia múltiple en Java. Considere un escenario donde A, B y C son tres clases. La clase C hereda las clases A y B. Si las clases A y B tienen el mismo método y lo llama desde un objeto de clase hijo, habrá ambigüedad para llamar al método de clase A o B.
Dado que los errores en tiempo de compilación son mejores que los errores en tiempo de ejecución, Java genera un error en tiempo de compilación si hereda 2 clases. Entonces, ya sea que tenga el mismo método o diferente, habrá un error de tiempo de compilación.
  1. clase  A {  
  2.  msg vacío () {System.out.println ( "Hola" );}  
  3. }  
  4. clase  B {  
  5.  msg vacío () {System.out.println ( "Bienvenido" );}  
  6. }  
  7. la clase  C se  extiende  A, B { // supongamos que fuera  
  8.    
  9.  Public Static  void  main (String args []) {  
  10.    C obj = nuevo  C ();  
  11.    obj.msg (); // ¿Ahora qué método msg () se invocaría?  
  12. }  
  13. }  
Pruébalo ahora
 Error de tiempo de compilación

61) ¿Qué es la agregación?

La agregación se puede definir como la relación entre dos clases donde la clase agregada contiene una referencia a la clase que posee. La agregación se describe mejor como una relación has-a . Por ejemplo, la clase agregada Empleado que tiene varios campos como edad, nombre y salario también contiene un objeto de clase de Dirección que tiene varios campos como Dirección-Línea 1, Ciudad, Estado y código PIN. En otras palabras, podemos decir que Employee (class) tiene un objeto de clase Address. Considere el siguiente ejemplo.
Address.java
  1.  Dirección de clase pública {   
  2. Cadena ciudad, estado, país;  
  3.   
  4.  Dirección pública (Ciudad de cadena, Estado de cadena, País de cadena) {  
  5.     this .city = city;  
  6.     this .state = state;  
  7.     this .country = country;  
  8. }  
  9.   
  10. }  
Employee.java
  1. clase pública  Emp {   
  2. int  id;  
  3. Nombre de cadena;  
  4. Dirección Dirección;  
  5.   
  6. public  Emp ( int  id, String name, Address address) {  
  7.     this .id = id;  
  8.     este .name = nombre;  
  9.     esta dirección = dirección;  
  10. }  
  11.   
  12.  pantalla vacía () {  
  13. System.out.println (id + "" + nombre);  
  14. System.out.println (address.city + "" + address.state + "" + address.country);  
  15. }  
  16.   
  17. public static void  main (String [] args) {    
  18. Dirección address1 = nueva  Dirección ( "gzb" "UP" "india" );  
  19. Dirección address2 = nueva  Dirección ( "gno" "UP" "india" );  
  20.   
  21. Emp e = nuevo  Emp ( 111 "varun" , dirección1);  
  22. Emp e2 = nuevo  Emp ( 112 "arun" , dirección2);  
  23.       
  24. e.display ();  
  25. e2.display ();  
  26.       
  27. }  
  28. }  
Salida
111 varun
gzb UP india
112 arun
gno UP india 

62) ¿Qué es la composición?

Mantener la referencia de una clase dentro de otra clase se conoce como composición. Cuando un objeto contiene el otro objeto, si el objeto contenido no puede existir sin la existencia del objeto contenedor, se llama composición. En otras palabras, podemos decir que la composición es el caso particular de la agregación que representa una relación más fuerte entre dos objetos. Ejemplo: una clase contiene estudiantes. Un estudiante no puede existir sin una clase. Existe composición entre clase y alumnos.

63) ¿Cuál es la diferencia entre agregación y composición?

La agregación representa la relación débil, mientras que la composición representa la relación fuerte. Por ejemplo, la bicicleta tiene un indicador (agregación), pero la bicicleta tiene un motor (composición).

64) ¿Por qué Java no admite punteros?

El puntero es una variable que se refiere a la dirección de memoria. No se usan en Java porque son inseguros (no seguros) y complejos de entender.

65) ¿Qué es super en java?

La palabra clave super en Java es una variable de referencia que se utiliza para referirse al objeto de clase primaria inmediata. Cada vez que crea la instancia de la subclase, se crea una instancia de la clase padre implícitamente, que se refiere por variable de superreferencia. El compilador llama implícitamente al super () en el constructor de la clase si no hay super o esto.
  1. clase  animal {  
  2. Animal () {System.out.println ( "animal is created" );}  
  3. }  
  4. clase  Perro  extiende  Animal {  
  5. Perro(){  
  6. System.out.println ( "se crea el perro" );  
  7. }  
  8. }  
  9. clase  TestSuper4 {  
  10. public static void  main (String args []) {    
  11. Perro d = nuevo  Perro ();  
  12. }  
  13. }  
Pruébalo ahora
Salida:
el animal es creado
el perro es creado
Más detalles.

66) ¿Cómo se puede hacer el encadenamiento del constructor usando la palabra clave super?

  1.  Persona de   clase
  2. {  
  3.     Nombre de cadena, dirección;   
  4.     int  edad;  
  5.      Persona pública int  edad, nombre de cadena, dirección de cadena)  
  6.     {  
  7.         this .age = age;  
  8.         este .name = nombre;  
  9.         esta dirección = dirección;  
  10.     }  
  11. }  
  12. clase  Empleado  extiende  Persona   
  13. {  
  14.      salario flotante ;  
  15.     pública  Empleado ( int  edad, String nombre, dirección de cuerdas,  flotador  salario)  
  16.     {  
  17.         super (edad, nombre, dirección);  
  18.         this .salary = salario;  
  19.     }  
  20. }  
  21.  Prueba de    clase pública 
  22. {  
  23.     público estático vacío  principal (String args [])    
  24.     {  
  25.         Empleado e =  nuevo  empleado ( 22 ,  "Mukesh" ,  "Delhi" ,  90000 );  
  26.         System.out.println ( "Nombre:" + e.name + "Salario:" + e.salary + "Edad:" + e.age + "Dirección:" + e.address);  
  27.     }  
  28. }  
Salida
Nombre: Mukesh Salario: 90000.0 Edad: 22 Dirección: Delhi

67) ¿Cuáles son los principales usos de la súper palabra clave?

Existen los siguientes usos de la palabra clave super.
  • super se puede usar para referirse a la variable de instancia de clase primaria inmediata.
  • super se puede utilizar para invocar el método de clase padre inmediato.
  • super () se puede usar para invocar el constructor de clase padre inmediato.

68) ¿Cuáles son las diferencias entre esta y super palabra clave?

Existen las siguientes diferencias entre esta y super palabra clave.
  • La palabra clave súper siempre apunta a los contextos de clase principal, mientras que esta palabra clave siempre apunta al contexto de clase actual.
  • La palabra clave super se usa principalmente para inicializar las variables de clase base dentro del constructor de clase derivado, mientras que esta palabra clave se usa principalmente para diferenciar entre variables locales y de instancia cuando se pasa en el constructor de clase.
  • El super y este debe ser la primera instrucción dentro del constructor, de lo contrario el compilador arrojará un error.

69) ¿Cuál es el resultado del siguiente programa Java?

  1.  Persona de    clase
  2. {  
  3.      Persona pública ()   
  4.     {  
  5.         System.out.println ( "Constructor de clase de persona llamado" );  
  6.     }  
  7. }  
  8. Clase pública  Empleado  extiende  Persona    
  9. {  
  10.      Empleado público ()   
  11.     {  
  12.         System.out.println ( "Constructor de clase de empleado llamado" );  
  13.     }  
  14.     público estático vacío  principal (String args [])    
  15.     {  
  16.         Empleado e =  nuevo  Empleado ();  
  17.     }  
  18. }  
Salida
Constructor de clase de persona llamado
Constructor de clase de empleado llamado
Explicación
Super () es invocado implícitamente por el compilador si no se incluye super () o this () explícitamente dentro del constructor de la clase derivada. Por lo tanto, en este caso, primero se llama al constructor de la clase Persona y luego se llama al constructor de la clase Empleado.

70) ¿Puedes usar this () y super () ambos en un constructor?

No, porque this () y super () deben ser la primera instrucción en el constructor de la clase.
Ejemplo:
  1.  Prueba de clase pública {   
  2.     Prueba()  
  3.      {  
  4.          super ();   
  5.          esto ();  
  6.          System.out.println ( "Se crea el objeto de clase de prueba" );  
  7.      }  
  8.      public static void  main (String [] args) {    
  9.      Prueba t =  nueva  Prueba ();  
  10.      }  
  11. }  
Salida:
Test.java:5: error: la llamada a esto debe ser la primera instrucción en el constructor

71) ¿Qué es la clonación de objetos?

La clonación de objetos se usa para crear la copia exacta de un objeto. El método clone () de la clase Object se usa para clonar un objeto. La interfaz java.lang.Cloneable debe ser implementada por la clase cuyo objeto clon que queremos crear. Si no implementamos la interfaz Cloneable, el método clone () genera CloneNotSupportedException.
  1.  Objeto protegido clone ()  lanza  CloneNotSupportedException    
  2.       
Más detalles.

Conceptos básicos de Java - OOP: preguntas sobre la entrevista de sobrecarga de métodos


72) ¿Qué es la sobrecarga de métodos?

La sobrecarga de métodos es la técnica de polimorfismo que nos permite crear múltiples métodos con el mismo nombre pero con una firma diferente. Podemos lograr la sobrecarga de métodos de dos maneras.
  • Cambiar el número de argumentos
  • Cambiar el tipo de retorno
La sobrecarga de métodos aumenta la legibilidad del programa. La sobrecarga del método se realiza para descubrir el programa rápidamente.
Más detalles.

73) ¿Por qué no es posible la sobrecarga de métodos al cambiar el tipo de retorno en java?

En Java, la sobrecarga de métodos no es posible cambiando el tipo de retorno del programa debido a evitar la ambigüedad.
  1.  Adder de clase {  
  2. static int  add ( int  a, int  b) { return  a + b;}   
  3.  suma doble estática int  a, int  b) { return  a + b;}   
  4. }  
  5. clase  TestOverloading3 {  
  6. public static void  main (String [] args) {    
  7. System.out.println (Adder.add ( 11 11 )); //ambigüedad  
  8. }}  
Pruébalo ahora
Salida:
Error de tiempo de compilación: el método add (int, int) ya está definido en la clase Adder
Más detalles.

74) ¿Podemos sobrecargar los métodos haciéndolos estáticos?

No, no podemos sobrecargar los métodos simplemente aplicándoles la palabra clave estática (el número de parámetros y tipos son los mismos). Considere el siguiente ejemplo.
  1. clase pública  animal   
  2. {  
  3.     vacío  consumir ( int  a)  
  4.     {  
  5.         System.out.println (a + "¡consumido!" );  
  6.     }  
  7.      consumo de vacío estático int  a)   
  8.     {  
  9.         System.out.println ( "estático consumido" + a);  
  10.     }  
  11.     público estático vacío  principal (String args [])    
  12.     {  
  13.         Animal a =  nuevo  Animal ();  
  14.         a.consumir ( 10 );  
  15.         Animal.consume ( 20 );  
  16.     }  
  17. }    
Salida
Animal.java:7: error: el método consume (int) ya está definido en la clase Animal
    consumo de vacío estático (int a)
                ^
Animal.java:15: error: el método no estático consume (int) no puede ser referenciado desde un contexto estático
        Animal.consume (20);
              ^
2 errores

75) ¿Podemos sobrecargar el método main ()?

Sí, podemos tener cualquier número de métodos principales en un programa Java mediante la sobrecarga de métodos.
Más detalles.

76) ¿Qué es la sobrecarga de métodos con la promoción de tipos?

Por promoción de tipo es sobrecarga de métodos, queremos decir que un tipo de datos puede promoverse a otro implícitamente si no se encuentra una coincidencia exacta.
Método Java sobrecarga con promoción de tipo
Como se muestra en el diagrama anterior, el byte puede promoverse a short, int, long, float o double. El tipo de datos corto puede promoverse a int, long, float o double. El tipo de datos char puede promoverse a int, long, float o double y así sucesivamente. Considere el siguiente ejemplo.
  1. clase  OverloadingCalculation1 {  
  2.    suma vacía int  a, long  b) {System.out.println (a + b);}  
  3.    suma vacía int  a, int  b, int  c) {System.out.println (a + b + c);}  
  4.   
  5.   public static void  main (String args []) {    
  6.   OverloadingCalculation1 obj = new  OverloadingCalculation1 ();  
  7.   obj.sum ( 20 20 ); // ahora el segundo literal int se promocionará a largo  
  8.   obj.sum ( 20 20 20 );  
  9.   }  
  10. }  
Pruébalo ahora
Salida
40
60 60

77) ¿Cuál es el resultado del siguiente programa Java?

  1. clase  OverloadingCalculation3 {    
  2.    suma vacía int  a, long  b) {System.out.println ( "un método invocado" );}    
  3.    suma nula long  a, int  b) {System.out.println ( "método b invocado" );}    
  4.     
  5.   public static void  main (String args []) {      
  6.   OverloadingCalculation3 obj = new  OverloadingCalculation3 ();    
  7.   obj.sum ( 20 20 ); // ahora ambigüedad    
  8.   }    
  9. }    
Salida
OverloadingCalculation3.java:7: error: la referencia a la suma es ambigua
obj.sum (20,20); // ahora ambigüedad  
     ^ 
      Ambos métodos sum (int, long) en OverloadingCalculation3 
      y método sum (long, int) en coincidencia OverloadingCalculation3
1 error
Explicación
Hay dos métodos definidos con el mismo nombre, es decir, suma. El primer método acepta el tipo entero y largo, mientras que el segundo método acepta el tipo largo y entero. Los parámetros pasados ​​que son a = 20, b = 20. No podemos decir qué método se llamará ya que no se menciona una diferenciación clara entre el entero literal y el literal largo. Este es el caso de la ambigüedad. Por lo tanto, el compilador arrojará un error.

Conceptos básicos de Java - OOP: preguntas de entrevista de reemplazo de método


78) ¿Qué es la anulación del método?

Si una subclase proporciona una implementación específica de un método que ya es proporcionado por su clase padre, se conoce como Invalidación de métodos. Se utiliza para el polimorfismo en tiempo de ejecución y para implementar los métodos de interfaz.
Reglas para anular métodos
  • El método debe tener el mismo nombre que en la clase padre.
  • El método debe tener la misma firma que en la clase principal.
  • Dos clases deben tener una relación IS-A entre ellas.
Más detalles.

79) ¿Podemos anular el método estático?

No, no puede anular el método estático porque son parte de la clase, no el objeto.

80) ¿Por qué no podemos anular el método estático?

Esto se debe a que el método estático es parte de la clase, y está vinculado con la clase, mientras que el método de instancia está vinculado con el objeto, y static obtiene memoria en el área de clase, y la instancia obtiene memoria en un montón.

81) ¿Podemos anular el método sobrecargado?

Si.

82) Diferencia entre método de sobrecarga y anulación.

Método de sobrecargaMétodo de anulación
1) La sobrecarga de métodos aumenta la legibilidad del programa.La anulación del método proporciona la implementación específica del método que ya proporciona su superclase.
2) La sobrecarga de métodos ocurre dentro de la clase.La anulación del método ocurre en dos clases que tienen una relación IS-A entre ellas.
3) En este caso, los parámetros deben ser diferentes.En este caso, los parámetros deben ser los mismos.

83) ¿Podemos anular los métodos privados?

No, no podemos anular los métodos privados porque el alcance de los métodos privados está limitado a la clase y no podemos acceder a ellos fuera de la clase.

84) ¿Podemos cambiar el alcance del método anulado en la subclase?

Sí, podemos cambiar el alcance del método anulado en la subclase. Sin embargo, debemos notar que no podemos disminuir la accesibilidad del método. Se debe tener en cuenta el siguiente punto al cambiar la accesibilidad del método.
  • Lo privado se puede cambiar a protegido, público o predeterminado.
  • Lo protegido se puede cambiar a público o predeterminado.
  • El valor predeterminado se puede cambiar a público.
  • El público siempre seguirá siendo público.

85) ¿Podemos modificar la cláusula throws del método de la superclase mientras la anulamos en la subclase?

Sí, podemos modificar la cláusula throws del método de la superclase al anularlo en la subclase. Sin embargo, hay algunas reglas que deben seguirse al anular en caso de manejo de excepciones.
  • Si el método de superclase no declara una excepción, el método anulado de subclase no puede declarar la excepción marcada, pero puede declarar la excepción no verificada.
  • Si el método de superclase declara una excepción, el método anulado de subclase puede declarar la misma, excepción de subclase o ninguna excepción, pero no puede declarar excepción principal.

86) ¿Cuál es el resultado del siguiente programa Java?

  1. clase  base  
  2. {  
  3.      método nulo int  a)  
  4.     {  
  5.         System.out.println ( "Método de clase base llamado con entero a =" + a);  
  6.     }  
  7.        
  8.      método nulo doble  d)  
  9.     {  
  10.         System.out.println ( "Método de clase base llamado con doble d =" + d);  
  11.     }  
  12. }  
  13.    
  14. clase  Derivada  extiende  Base  
  15. {  
  16.     @Anular  
  17.      método nulo doble  d)  
  18.     {  
  19.         System.out.println ( "Método de clase derivado llamado con doble d =" + d);  
  20.     }  
  21. }  
  22.    
  23. clase pública  principal   
  24. {      
  25.     public static void  main (String [] args)    
  26.     {  
  27.         nuevo  método Derived (). ( 10 );  
  28.     }  
  29. }  
Salida
Método de clase base llamado con entero a = 10
Explicación
El método () está sobrecargado en la clase Base, mientras que se deriva en la clase Derivado con el tipo doble como parámetro. En la llamada al método, se pasa el entero.

87) ¿Puedes tener funciones virtuales en Java?

Sí, todas las funciones en Java son virtuales por defecto.

88) ¿Qué es el tipo de retorno covariante?

Ahora, desde java5, es posible anular cualquier método cambiando el tipo de retorno si el tipo de retorno del método de anulación de subclase es el tipo de subclase. Se conoce como tipo de retorno covariante. El tipo de retorno covariante especifica que el tipo de retorno puede variar en la misma dirección que la subclase.
  1. clase  A {  
  2. A get () { devolver esto ;}   
  3. }  
  4.   
  5. la clase  B1  extiende  A {  
  6. B1 get () { devolver esto ;}   
  7.  mensaje vacío () {System.out.println ( "bienvenido al tipo de retorno covariante" );}  
  8.   
  9. public static void  main (String args []) {    
  10. nuevo  B1 (). get (). message ();  
  11. }  
  12. }  
Pruébalo ahora
Salida: bienvenido al tipo de retorno covariante
Más detalles.

89) ¿Cuál es el resultado del siguiente programa Java?

  1. clase  base   
  2. {  
  3.     public void  baseMethod ()   
  4.     {  
  5.         System.out.println ( "Método base llamado ..." );  
  6.     }  
  7. }  
  8. clase  Derivada  extiende  Base   
  9. {  
  10.     public void  baseMethod ()   
  11.     {  
  12.         System.out.println ( "Método derivado llamado ..." );  
  13.     }  
  14. }  
  15.  Prueba de    clase pública 
  16. {  
  17.     público estático vacío  principal (String args [])    
  18.     {  
  19.         Base b =  nuevo  derivado ();  
  20.         b.baseMethod ();  
  21.     }  
  22. }  

Salida
Método derivado llamado ...
Explicación
El método de la clase Base, es decir, baseMethod () se reemplaza en la clase Derivada. En la clase Prueba, la variable de referencia b (de tipo Clase base) se refiere a la instancia de la clase Derivada. Aquí, el polimorfismo de tiempo de ejecución se logra entre la clase Base y Derivada. En el momento de la compilación, la presencia del método baseMethod se verificó en la clase Base. Si está presente, el programa compiló, de lo contrario se mostrará el error del compilador. En este caso, baseMethod está presente en la clase Base; por lo tanto, se compila con éxito. Sin embargo, en tiempo de ejecución, comprueba si el método base ha sido anulado por la clase Derivada, de ser así, se llama al método de clase Derivado, de lo contrario se llama al método de clase Base. En este caso, la clase Derivada anula el método baseMethod; por lo tanto, se llama al método de clase Derivado.

Conceptos básicos de Java - OOP: preguntas finales de la entrevista de palabras clave


90) ¿Cuál es la variable final?

En Java, la variable final se usa para restringir que el usuario la actualice. Si inicializamos la variable final, no podemos cambiar su valor. En otras palabras, podemos decir que la variable final una vez asignada a un valor, nunca puede cambiarse después de eso. La variable final que no está asignada a ningún valor solo puede asignarse a través del constructor de la clase.
palabra clave final en java
  1. clase  Bike9 {  
  2.  final int  speedlimit = 90 // variable final   
  3.  vacío  ejecutar () {  
  4.   límite de velocidad = 400 ;  
  5.  }  
  6.  public static void  main (String args []) {    
  7.  Bike9 obj = nueva   Bike9 ();  
  8.  obj.run ();  
  9.  }  
  10. // fin de clase  
Pruébalo ahora
Salida: error de tiempo de compilación
Más detalles.

91) ¿Cuál es el método final?

Si cambiamos cualquier método a un método final, no podemos anularlo. Más detalles.
  1. clase de  bicicleta {  
  2.   final void  run () {System.out.println ( "running" );}   
  3. }  
  4.      
  5. la clase  Honda  extiende la  bicicleta {  
  6.    void  run () {System.out.println ( "corriendo de manera segura con 100kmph" );}  
  7.      
  8.    public static void  main (String args []) {    
  9.    Honda honda =  nuevo  Honda ();  
  10.    honda.run ();  
  11.    }  
  12. }  
Pruébalo ahora
Salida: error de tiempo de compilación

92) ¿Cuál es la clase final?

Si hacemos que cualquier clase sea final, no podemos heredarla en ninguna de las subclases.
  1.  bicicleta de clase final {}   
  2.   
  3. la clase  Honda1  extiende la  bicicleta {  
  4.   void  run () {System.out.println ( "corriendo de manera segura con 100kmph" );}  
  5.     
  6.   public static void  main (String args []) {    
  7.   Honda1 honda =  nuevo  Honda1 ();  
  8.   honda.run ();  
  9.   }  
  10. }  
Pruébalo ahora
Salida: error de tiempo de compilación
Más detalles.

93) ¿Cuál es la variable final en blanco?

Una variable final, no inicializada en el momento de la declaración, se conoce como la variable final en blanco. No podemos inicializar la variable en blanco final directamente. En cambio, tenemos que inicializarlo usando el constructor de la clase. Es útil en el caso cuando el usuario tiene algunos datos que no deben ser cambiados por otros, por ejemplo, el número PAN. Considere el siguiente ejemplo:
  1.  estudiante de clase {  
  2. int  id;  
  3. Nombre de cadena;  
  4.  Cadena final PAN_CARD_NUMBER;  
  5. ...  
  6. }  
Más detalles.

94) ¿Podemos inicializar la variable final en blanco?

Sí, si no es estático, podemos inicializarlo en el constructor. Si es una variable final estática en blanco, solo se puede inicializar en el bloque estático. Más detalles.

95) ¿Puedes declarar el método principal como final?

Sí, podemos declarar el método principal como public static final void main (String [] args) {}.

96) ¿Cuál es el resultado del siguiente programa Java?

  1. clase  principal {  
  2.  public static void  main (String args []) {    
  3.    final int  i;   
  4.    i =  20 ;  
  5.    System.out.println (i);  
  6.  }  
  7. }  
Salida
20
Explicación
Como i es la variable final en blanco. Se puede inicializar solo una vez. Lo hemos inicializado a 20. Por lo tanto, se imprimirán 20.

97) ¿Cuál es el resultado del siguiente programa Java?

  1. clase  base   
  2. {  
  3.     vacío final protegido  getInfo ()    
  4.     {  
  5.         System.out.println ( "método de la clase Base" );  
  6.     }  
  7. }  
  8.    
  9. Clase pública  Derivada  extiende  Base   
  10. {  
  11.     vacío final protegido  getInfo ()    
  12.     {  
  13.         System.out.println ( "método de la clase Derivada" );  
  14.     }  
  15.     public static void  main (String [] args)    
  16.     {  
  17.         Base obj =  nueva  Base ();  
  18.         obj.getInfo ();  
  19.     }  
  20. }  
Salida
 Derived.java:11: error: getInfo () en Derived no puede anular getInfo () en Base
    vacío final protegido getInfo ()
                         ^
  el método anulado es final
1 error
Explicación
El método getDetails () es final; por lo tanto, no se puede anular en la subclase.

98) ¿Podemos declarar un constructor como final?

El constructor nunca se puede declarar como final porque nunca se hereda. Los constructores no son métodos ordinarios; por lo tanto, no tiene sentido declarar constructores como finales. Sin embargo, si intenta hacerlo, el compilador arrojará un error.

99) ¿Podemos declarar una interfaz como final?

No, no podemos declarar una interfaz como final porque la interfaz debe ser implementada por alguna clase para proporcionar su definición. Por lo tanto, no tiene sentido hacer una interfaz final. Sin embargo, si intenta hacerlo, el compilador mostrará un error.

100) ¿Cuál es la diferencia entre el método final y el método abstracto?

La principal diferencia entre el método final y el método abstracto es que el método abstracto no puede ser final, ya que necesitamos anularlos en la subclase para dar su definición.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas