Preguntas de entrevista para profesionales de Java

Q1. ¿ Explicar JVM, JRE y JDK ?  
JVM (Java Virtual Machine):  JVM (Java Virtual Machine) actúa como un motor de tiempo de ejecución para ejecutar aplicaciones Java. JVM es el que realmente llama al método principal presente en un código Java. JVM es parte de JRE (Java Runtime Environment).
JRE (Java Runtime Environment):  JRE se refiere a un entorno de tiempo de ejecución en el que se puede ejecutar el código de bytes de Java. Implementa JVM (Java Virtual Machine) y proporciona todas las bibliotecas de clases y otros archivos de soporte que utiliza JVM en tiempo de ejecución. Entonces JRE es un paquete de software que contiene lo que se requiere para ejecutar un programa Java. Básicamente, es una implementación de la JVM que existe físicamente. 
JDK (Kit de desarrollo de Java): Es la herramienta necesaria para compilar, documentar y empaquetar programas Java. El JDK incluye completamente JRE que contiene herramientas para programadores de Java. El kit de desarrollo de Java se proporciona de forma gratuita. Junto con JRE, incluye un intérprete/cargador, un compilador (javac), un archivador (jar), un generador de documentación (javadoc) y otras herramientas necesarias en el desarrollo de Java. En resumen, contiene herramientas de desarrollo JRE+.
Q2. Explique public static void main(String args[]).  
Público: Público es un modificador de acceso. Público significa que este Método será accesible para cualquier Clase. 
estático:Es una palabra clave en Java que identifica que está basada en clases, es decir, se puede acceder a ella sin crear la instancia de una Clase. Como queremos que el método principal también se ejecute sin ninguna instancia, usamos static. 
Void:  Es el tipo de retorno del método. Void define el método que no devolverá ningún valor. 
main: Este es el primer método ejecutado por JVM. La firma del método debe ser la misma.
Q3. ¿Por qué Java es independiente de la plataforma?  
Plataforma independiente prácticamente significa «escribir una vez ejecutar en cualquier lugar». Java se llama así por sus códigos de bytes que pueden ejecutarse en cualquier sistema independientemente de su sistema operativo subyacente.
Q4. ¿Por qué Java no está orientado a objetos puro? 
Java no se considera puramente orientado a objetos porque admite tipos de datos primitivos como boolean, byte, char, int, float, double, long, short.
P5. Definir clase y objeto. Explícalos con un ejemplo usando java.  
Clase: una clase es un proyecto o prototipo definido por el usuario a partir del cual se crean objetos. Representa el conjunto de propiedades o métodos que son comunes a todos los objetos de un tipo. En general, las declaraciones de clase pueden incluir estos componentes, en orden:
Superclase (si existe):  el nombre del padre de la clase (superclase), si existe, precedido por la palabra clave extends. Una clase solo puede extender (subclase) un padre.
Interfaces: Una lista separada por comas de las interfaces implementadas por la clase, si las hay, precedida por la palabra clave implements. Una clase puede implementar más de una interfaz.
Objeto: Es una unidad básica de la Programación Orientada a Objetos y representa las entidades de la vida real. Un programa típico de Java crea muchos objetos que, como sabe, interactúan invocando métodos. Un objeto consta de:
Estado: Está representado por los atributos de un objeto. También refleja las propiedades de un objeto.
Comportamiento: Está representado por métodos de un objeto. También refleja la respuesta de un objeto con otros objetos.
Identidad: Da un nombre único a un objeto y permite que un objeto interactúe con otros objetos. 
Por ejemplo: El empleado es un ejemplo de una clase 
. Un empleado específico con identificación única es un ejemplo de un objeto. 
 

class Employee
{
   // instance variables declaration
   // Methods definition
}

Un objeto de empleado es un empleado específico.

Employee empObj = new Employee();

Uno de los objetos de Employee se refiere a ‘empObj’ 
Q6.¿Qué es un método? Proporcione varias firmas de los métodos 
Un método Java es un conjunto de declaraciones para realizar una tarea. Un método se coloca en una clase. 
Firmas de métodos: el nombre del método, el tipo de retorno y el número de parámetros componen la firma del método. 
Un método puede tener los siguientes elementos en su firma: 
– Especificador de acceso: público, privado, protegido, etc. (no obligatorio) 
– Modificador de acceso: estático, sincronizado, etc. (no obligatorio) 
– Tipo de retorno: void, int, String , etc. (Obligatorio) 
– Nombre del método – show() (Obligatorio) 
– Con o sin parámetros – (int number, String name); (los paréntesis son obligatorios) 
Ejemplo:

Java

class Test {
    void fun1() {}
    public double fun2(double x) {}
    public static void fun3() {}
    public static void fun4(String x) {}
}

Q7.Explique la diferencia entre una variable de instancia y una variable de clase.  
Una variable de instancia es una variable que tiene una copia por objeto/instancia. Eso significa que cada objeto tendrá una copia del mismo. 
Una variable de clase es una variable que tiene una copia por clase. Las variables de clase no tendrán una copia en el objeto. 
Ejemplo :

Java

class Employee {
    int empNo;
    String empName, department;
    double salary;
    static int officePhone;
}

Un objeto referido por empObj1 se crea usando lo siguiente: 
Employee empObj1 = new Employee();
Los objetos a los que se refieren las variables de instancia empObj1 y empObj2 tienen copias separadas empNo, empName, departamento y salario. Sin embargo, officePhone pertenece a la clase (Variable de clase) y se puede acceder a él como Employee.officePhone. 
P8. ¿Qué clase es la superclase de todas las clases? 
java.lang.Object  es la clase raíz para todas las clases de Java y no necesitamos extenderla.
Q9.¿Qué son los constructores en Java?  
En Java, el constructor se refiere a un bloque de código que se utiliza para inicializar un objeto. Debe tener el mismo nombre que el de la clase. Además, no tiene tipo de devolución y se llama automáticamente cuando se crea un objeto. 
Si una clase no declara explícitamente ninguna, el compilador de Java proporciona automáticamente un constructor sin argumentos, también llamado constructor predeterminado. 
Este constructor predeterminado llama al constructor sin argumentos del padre de la clase (ya que contiene solo una declaración, es decir, super();), o al constructor de la clase Object si la clase no tiene otro padre (ya que la clase Object es un padre de todas las clases, ya sea directamente o indirectamente). 
Hay dos tipos de constructores:

  1. Constructor predeterminado
  2. Constructor parametrizado

P10. ¿Cuáles son las diferentes formas de crear objetos en Java?  
Hay muchas formas diferentes de crear objetos en Java. Consulte 5 formas diferentes de crear objetos en Java
Q11. ¿Cuál es el propósito de los métodos estáticos y las variables estáticas?  
Cuando existe el requisito de compartir un método o una variable entre varios objetos de una clase en lugar de crear copias separadas para cada objeto, usamos la palabra clave estática para compartir un método o una variable para todos los objetos. 
Variable estática: las variables estáticas también se conocen como variables de clase. 
Estas variables se declaran de manera similar a las variables de instancia, la diferencia es que las variables estáticas se declaran usando la palabra clave static dentro de una clase fuera de cualquier bloque o constructor de métodos. 
A diferencia de las variables de instancia, solo podemos tener una copia de una variable estática por clase, independientemente de cuántos objetos creemos. 
Las variables estáticas se crean al comienzo de la ejecución del programa y se destruyen automáticamente cuando finaliza la ejecución. 
Para acceder a variables estáticas, no necesitamos crear un objeto de esa clase. 
Métodos estáticos: se puede acceder a un método estático sin crear objetos. Simplemente usando el nombre de la clase se puede acceder al método. El método estático solo puede acceder a variables estáticas y no a variables no estáticas locales o globales.
Por ejemplo:

Java

public class StaticMethod {
    public static void printMe()
    {
        System.out.println("Static Method access directly by class name!");
    }
}
public class MainClass {
    public static void main(String args[])
    {
        StaticMethod.printMe();
    }
}

P12. ¿Por qué los métodos estáticos no pueden acceder a variables o métodos no estáticos?  
Respuesta) Un método estático no puede acceder a variables o métodos no estáticos porque se puede acceder a métodos estáticos sin instanciar la clase, por lo que si la clase no se instancia, las variables no se inicializan y, por lo tanto, no se puede acceder desde un método estático.
Q13.¿Qué es una clase estática?  
Se puede decir que una clase es estática si todas las variables y métodos de la clase son estáticos y el constructor es privado. Hacer que el constructor sea privado evitará que se cree una instancia de la clase. Entonces, la única posibilidad de acceder es usar solo el nombre de la clase.
P14. ¿Cuántos tipos de Variable? Explique. 
Hay tres tipos de variables en Java:

  1. Variables locales
  2. Variables de instancia
  3. Variables estáticas

Variables locales: una variable definida dentro de un bloque, método o constructor se denomina variable local. 
Estas variables se crean cuando se ingresa al bloque o se llama a la función y se destruye después de salir del bloque o cuando la llamada regresa de la función. 
El alcance de estas variables existe solo dentro del bloque en el que se declara la variable. es decir, podemos acceder a estas variables solo dentro de ese bloque. 
 

Java

// Java program to demonstrate local variables
public class LocalVariable
{
    public void getLocalVarValue()
    {  
        // local variable age
        int localVar = 0;
        localVar = localVar + 11;
        System.out.println("value of local variable" +
                                 " is: " + localVar);
    }
    public static void main(String args[])
    {
        LocalVariable obj = new LocalVariable();
        obj.getLocalVarValue();
    }
}

Producción: 
 

value of local variable is: 11

En el programa anterior, la variable localVar es una variable local para la función getLocalVarValue(). Si usamos la variable localVar fuera de la función getLocalVarValue(), el compilador producirá un error como 
«No se puede encontrar el símbolo localVar».
Variables de instancia: las variables de instancia son variables no estáticas y se declaran en una clase fuera de cualquier método, constructor o bloque. 
Como las variables de instancia se declaran en una clase, estas variables se crean cuando se crea un objeto de la clase y se destruyen cuando se destruye el objeto. 
A diferencia de las variables locales, podemos usar especificadores de acceso para variables de instancia. Si no especificamos ningún especificador de acceso, se utilizará el especificador de acceso predeterminado. 
 

Java

// Java program to demonstrate instance variables
public class InstanceVariable {
    int instanceVarId;
    String instanceVarName;
    public static void main(String args[])
    {
        InstanceVariable obj = new InstanceVariable();
        obj.instanceVarId = 0001;
        obj.instanceVarName = "InstanceVariable1";
        System.out.println("Displaying first Object:");
        System.out.println("instanceVarId==" + obj.instanceVarId);
        System.out.println("instanceVarName==" + obj.instanceVarName);
 
        InstanceVariable obj1 = new InstanceVariable();
        obj1.instanceVarId = 0002;
        obj1.instanceVarName = "InstanceVariable2";
        System.out.println("Displaying Second Object:");
        System.out.println("instanceVarId==" + obj1.instanceVarId);
        System.out.println("instanceVarName==" + obj1.instanceVarName);
    }
}
Producción: 

Displaying first Object:
instanceVarId==1
instanceVarName==InstanceVariable1
Displaying Second Object:
instanceVarId==2
instanceVarName==InstanceVariable2

 

En el programa anterior, las variables, es decir, instanceVarId, instanceVarName son variables de instancia. En caso de que tengamos varios objetos como en el programa anterior, cada objeto tendrá sus propias copias de las variables de instancia. Está claro a partir del resultado anterior que cada objeto tendrá su propia copia de la variable de instancia.
Variable estática: las variables estáticas también se conocen como variables de clase. 
 

  • Estas variables se declaran de manera similar a las variables de instancia, la diferencia es que las variables estáticas se declaran utilizando la palabra clave estática dentro de una clase fuera de cualquier bloque o constructor de métodos.
  • A diferencia de las variables de instancia, solo podemos tener una copia de una variable estática por clase, independientemente de cuántos objetos creemos.
  • Las variables estáticas se crean al inicio de la ejecución del programa y se destruyen automáticamente cuando finaliza la ejecución.

Para acceder a variables estáticas, no necesitamos crear un objeto de esa clase, simplemente podemos acceder a la variable como: 
 

Java

// Java program to demonstrate static variables
public class StaticVar {
    private static int count = 0;
    private int nonStaticCount = 0;
 
    public void incrementCounter()
    {
        count++;
        nonStaticCount++;
    }
    public static int getStaticCount()
    {
        return count;
    }
    public int getNonStaticCount()
    {
        return nonStaticCount;
    }
    public static void main(String args[])
    {
        StaticVar stVarObj1 = new StaticVar();
        StaticVar stVarObj2 = new StaticVar();
        stVarObj1.incrementCounter();
        stVarObj2.incrementCounter();
        System.out.println("Static count for stVarObj1: " +
                               stVarObj1.getStaticCount());
        System.out.println("NonStatic count for stVarObj1: " +
                                 stVarObj1.getNonStaticCount());
        System.out.println("Static count for stVarObj2: " +
                                 stVarObj2.getStaticCount());
        System.out.println("NonStatic count for stVarObj2: " +
                                 stVarObj2.getNonStaticCount());
    }
}
Producción: 

Static count for stVarObj1: 2
NonStatic count for stVarObj1: 1
Static count for stVarObj2: 2
NonStatic count for stVarObj2: 1

 

En el programa anterior, stVarObj1 y stVarObj2 comparten la misma instancia de conteo de variables estáticas, por lo tanto, si el valor se incrementa en un objeto, el valor incrementado se reflejará para stVarObj1 y stVarObj2.
 

Publicación traducida automáticamente

Artículo escrito por jHarsh 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 *