Preguntas frecuentes de la entrevista de programación Java | conjunto 2

En este artículo, se analizan algunas de las preguntas y respuestas más importantes de la entrevista de Java, para brindarle la vanguardia en sus entrevistas. Java es uno de los lenguajes y plataformas de programación más populares y ampliamente utilizados. Java es rápido, fiable y seguro. Desde el escritorio hasta las aplicaciones web, desde las supercomputadoras científicas hasta las consolas de juegos, desde los teléfonos móviles hasta Internet, Java se utiliza en todos los rincones y rincones. Es por eso que debes dominar estas preguntas si quieres sobresalir. 

Comencemos por echar un vistazo a algunas de las preguntas de entrevista de Java más frecuentes, 

Entonces, comencemos con el conjunto de preguntas de entrevista de Java. 

Q1. ¿Podemos sobrecargar o anular métodos estáticos en Java ? 

  • Anulación: la anulación está relacionada con el polimorfismo en tiempo de ejecución. Una subclase (o clase derivada) proporciona una implementación específica de un método en la superclase (o clase base) en tiempo de ejecución.
  • Sobrecarga: la sobrecarga está relacionada con el polimorfismo del tiempo de compilación (o estático). Esta característica permite que diferentes métodos tengan el mismo nombre, pero diferentes firmas, especialmente el número de parámetros de entrada y el tipo de parámetros de entrada.
  • ¿Podemos sobrecargar los métodos estáticos?   La respuesta es ‘Sí’ . Podemos tener dos o más métodos estáticos con el mismo nombre, pero diferencias en los parámetros de entrada
  • ¿Podemos anular los métodos estáticos en Java?  Podemos declarar métodos estáticos con la misma firma en la subclase, pero no se considera anulado ya que no habrá ningún polimorfismo en tiempo de ejecución. Por lo tanto, la respuesta es ‘No’ . Los métodos estáticos no se pueden anular porque la anulación de métodos solo ocurre en el contexto de la búsqueda dinámica (es decir, en tiempo de ejecución) de métodos. Los métodos estáticos (por su nombre) se buscan estáticamente (es decir, en tiempo de compilación).

Leer más 

Q2. ¿Por qué el método principal es estático en Java?  
El método es estático porque de lo contrario habría ambigüedad: ¿a qué constructor se debe llamar? Especialmente si tu clase se ve así: 

public class JavaClass
{
  protected JavaClass(int x)
  {   }
   public void main(String[] args) 
   {

    }
}

¿Debería la JVM llamar a la nueva JavaClass (int)? ¿Qué debería pasar por x? De lo contrario, ¿debería la JVM instanciar JavaClass sin ejecutar ningún método constructor? porque eso será un caso especial para toda su clase: a veces tiene una instancia que no se ha inicializado y debe verificarla en cada método que se pueda llamar. Hay demasiados casos extremos y ambigüedades para que tenga sentido que la JVM tenga que crear instancias de una clase antes de llamar al punto de entrada. Es por eso que main es estático. 

Q3. ¿Qué sucede si elimina el modificador estático del método principal?  
El programa se compila con éxito. Pero en tiempo de ejecución arroja un error «NoSuchMethodError». 

  
Q4. ¿Cuál es el alcance de las variables en Java en los siguientes casos?  

  • Variables miembro (ámbito de nivel de clase): las variables miembro deben declararse dentro de la clase (fuera de cualquier función). Se puede acceder directamente desde cualquier lugar de la clase.
  • Variables locales (ámbito de nivel de método): las variables declaradas dentro de un método tienen un ámbito de nivel de método y no se puede acceder a ellas fuera del método.
  • Variables de bucle (ámbito de bloque): una variable declarada dentro de un par de corchetes «{» y «}» en un método tiene alcance solo dentro de los corchetes.

Leer más 

 P5. ¿Qué es la palabra clave «esta» en Java ?  
Dentro de un método de instancia o un constructor, esta es una referencia al objeto actual, el objeto cuyo método o constructor se está llamando. Puede hacer referencia a cualquier miembro del objeto actual desde un método de instancia o un constructor usando this. 
Uso de esta palabra clave  

  • Se utiliza para hacer referencia a la variable de instancia de la clase actual.
  • Para invocar el constructor de la clase actual.
  • Se puede pasar como un argumento en la llamada al método.
  • Se puede pasar como argumento en la llamada al constructor.
  • Se utiliza para devolver la instancia de clase actual.
  • Se utiliza para invocar el método de clase actual (implícitamente)

P6. ¿Qué es una clase abstracta ? ¿En qué se parecen o se diferencian las clases abstractas en Java de C++?  
Las clases abstractas son clases que contienen uno o más métodos abstractos. Un método abstracto es un método que se declara pero no contiene implementación. Las clases abstractas no se pueden instanciar y requieren subclases para proporcionar implementaciones para los métodos abstractos. 

  • Al igual que C++, en Java, no se puede crear una instancia de una clase abstracta, aunque podemos tener referencias de tipo de clase abstracta.
  • Como C++, una clase abstracta puede contener constructores en Java. Y se llama a un constructor de clase abstracta cuando se crea una instancia de una clase heredada
  • En Java, podemos tener una clase abstracta sin ningún método abstracto. Esto nos permite crear clases que no se pueden instanciar, sino que solo se pueden heredar.
  • Las clases abstractas también pueden tener métodos finales (métodos que no se pueden anular). Por ejemplo, el siguiente programa compila y funciona bien.

Leer más 

P7. ¿Qué clase es la superclase para cada clase?  
clase de objeto 

P8. ¿Podemos sobrecargar el método main()?  
El método principal en Java no es un método extraterrestre. Aparte del hecho de que main() es como cualquier otro método y se puede sobrecargar de manera similar, JVM siempre busca la firma del método para iniciar el programa.  

  • El método principal normal actúa como un punto de entrada para que la JVM inicie la ejecución del programa.
  • Podemos sobrecargar el método principal en Java. Pero el programa no ejecuta el método principal sobrecargado cuando ejecutamos su programa, necesitamos llamar al método principal sobrecargado solo desde el método principal real.

Leer más 

P9. ¿Qué es la clonación de objetos ?  
La clonación de objetos significa crear una copia exacta del objeto original. Si una clase necesita admitir la clonación, debe implementar la interfaz java.lang.Cloneable y anular el método clone() de la clase Object. La sintaxis del método clone() es:  

protected Object clone() throws CloneNotSupportedException

Si la clase del objeto no implementa la interfaz Cloneable, arroja una excepción ‘CloneNotSupportedException’. 

Leer más 

P10. ¿En qué se diferencia la herencia en C++ de Java? 

  1. En Java, todas las clases heredan de la clase Object directa o indirectamente. Por lo tanto, siempre hay un único árbol de herencia de clases en Java, y la clase Object es la raíz del árbol.
  2. En Java, los miembros de la clase de los abuelos no son accesibles directamente. Vea este G-Fact para más detalles.
  3. El significado del especificador de acceso de miembros protegidos es algo diferente en Java. En Java, los miembros protegidos de una clase «A» son accesibles en otra clase «B» del mismo paquete, incluso si B no hereda de A (ambos deben estar en el mismo paquete).
  4. Java usa la palabra clave extends para la herencia. A diferencia de C++, Java no proporciona un especificador de herencia como público, protegido o privado. Por lo tanto, no podemos cambiar el nivel de protección de los miembros de la clase base en Java, si algún miembro de datos es público o está protegido en la clase base, entonces permanece público o protegido en la clase derivada. Al igual que C++, los miembros privados de la clase base no son accesibles en la clase derivada. 
    A diferencia de C++, en Java no tenemos que recordar esas reglas de herencia que son la combinación del especificador de acceso a la clase base y el especificador de herencia.
  5. En Java, los métodos son virtuales por defecto. En C++, usamos explícitamente la palabra clave virtual. Vea este G-Fact para más detalles.
  6. Java utiliza una interfaz de palabra clave separada para las interfaces y una palabra clave abstracta para clases abstractas y funciones abstractas.
  7. A diferencia de C++, Java no admite la herencia múltiple. Una clase no puede heredar de más de una clase. Sin embargo, una clase puede implementar múltiples interfaces.
  8. En C++, el constructor predeterminado de la clase principal se llama automáticamente, pero si queremos llamar al constructor parametrizado de una clase principal, debemos usar la lista de inicializadores . Al igual que C++, el constructor predeterminado de la clase principal se llama automáticamente en Java, pero si queremos llamar al constructor parametrizado, debemos usar super para llamar al constructor principal.

Ver ejemplos aquí 

P11. ¿Por qué la sobrecarga de métodos no es posible cambiando el tipo de devolución en Java?  
En C++ y Java, las funciones no se pueden sobrecargar si difieren solo en el tipo de retorno. El tipo de retorno de las funciones no es parte del nombre alterado que genera el compilador para identificar de forma única cada función. El número de argumentos, el tipo de argumentos y la secuencia de argumentos son los parámetros que se utilizan para generar el nombre modificado único para cada función. Es sobre la base de estos nombres únicos alterados que el compilador puede entender qué función llamar incluso si los nombres son los mismos (sobrecarga). 

  
P12. ¿Podemos anular los métodos privados en Java?  
No, un método privado no se puede anular ya que no es visible desde ninguna otra clase. Leer más 

 
P13. ¿Qué es la variable final en blanco ?  
A una variable final en Java se le puede asignar un valor solo una vez, podemos asignar un valor ya sea en la declaración o más tarde.  

    final int i = 10;
    i = 30; // Error because i is final.

Una variable final en blanco en Java es una variable final que no se inicializa durante la declaración. A continuación se muestra un ejemplo simple de final en blanco.  

    // A simple blank final example 
    final int i;
    i = 30;

Leer más 

P14. ¿Qué es la palabra clave «super» en Java ?  
La palabra clave super en java es una variable de referencia que se utiliza para hacer referencia a objetos de clase principal. La palabra clave “super” entró en escena con el concepto de Herencia. Cada vez que crea la instancia de una subclase, se crea implícitamente una instancia de la clase principal, es decir, se refiere a una variable de superreferencia. 
Varios escenarios de uso de java super Keyword:  

  • super se usa para referirse a la variable de instancia principal inmediata
  • super se usa para llamar al método de la clase padre
  • super() se usa para llamar al constructor padre inmediato

Leer más 

P15. ¿Qué es la variable estática en Java ?  
La palabra clave estática en Java se utiliza principalmente para la gestión de la memoria. Podemos aplicar la palabra clave estática java con variables, métodos, bloques y clases anidadas. La palabra clave estática pertenece a la clase que la instancia de la clase. 

La estática puede ser:  

  • variable (también conocida como variable de clase)
  • método (también conocido como método de clase)
  • bloquear
  • clase anidada

 P16. Diferencias entre HashMap y HashTable en Java .  
1. HashMap no está sincronizado. No es seguro para subprocesos y no se puede compartir entre muchos subprocesos sin el código de sincronización adecuado, mientras que Hashtable está sincronizado. Es seguro para subprocesos y se puede compartir con muchos subprocesos. 
2. HashMap permite una clave nula y varios valores nulos, mientras que Hashtable no permite ninguna clave o valor nulo. 
3. Por lo general, se prefiere HashMap a HashTable si no se necesita la sincronización de subprocesos 
Leer más 

P17. ¿Cómo se almacenan los objetos Java en la memoria ?  
En Java, todos los objetos se asignan dinámicamente en Heap . Esto es diferente de C++, donde a los objetos se les puede asignar memoria en Stack o Heap. En C++, cuando asignamos un objeto usando new(), el objeto se asigna en Heap, de lo contrario, en Stack si no es global o estático. 
En Java, cuando solo declaramos una variable de un tipo de clase, solo se crea una referencia (no se asigna memoria para el objeto). Para asignar memoria a un objeto, debemos usar new(). Entonces, al objeto siempre se le asigna memoria en el montón. Leer más 

  
P18. ¿Qué funciones de C++ faltan en Java?  
Intenta responder esto por tu cuenta antes de ver la respuesta,  aquí

Ver también:  

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *