CodeGym /Blog Java /Random-ES /Las 21 preguntas principales de la entrevista de Java
Autor
Milan Vucic
Programming Tutor at Codementor.io

Las 21 preguntas principales de la entrevista de Java

Publicado en el grupo Random-ES
Hay innumerables preguntas de entrevistas de Java y no podemos recopilarlas todas en un artículo. Sin embargo, aquí puede encontrar algunas preguntas de entrevista Java muy comunes, según los gerentes de recursos humanos de las empresas de TI. Las 21 preguntas principales de la entrevista de Java - 1
  1. “Desmontar” public static void main(String args[]).

    Una de las preguntas populares de la entrevista de Java para estudiantes de primer año, y muy fácil.

    • publices un modificador de acceso. Lo usamos para especificar el acceso a este método. Aquí el modificador es "público", por lo que cualquier clase tiene acceso a este método.

    • static. Esta palabra clave de Java significa que usamos este método sin crear un nuevo objeto de una clase.

    • Voides el tipo de retorno del método. Significa que el método no devuelve ningún valor.

    • maines el nombre del método. JVM lo "conoce" como un punto de entrada a una aplicación (debe tener una firma particular). Maines un método donde ocurre la ejecución principal.

    • String args[]. Este es el parámetro pasado al método principal. Aquí tenemos los argumentos de tipo String que tu aplicación Java acepta cuando la ejecutas. Puede escribirlos en la terminal.

  2. ¿ Cuál es la diferencia entre equals()y ==?

    Primero, “ ==” es un operador mientras que equals()es un método. Usamos ==el operador para la comparación de referencias (o comparación de direcciones) y equals()el método para la comparación de contenido. Significa que ==verifica si ambos objetos apuntan a la misma ubicación de memoria mientras equals()compara los valores en los objetos.

  3. ¿ Podemos ejecutar un programa sin main()método?

    Muchas preguntas de entrevista básicas de Java son realmente fáciles. Como éste. Así que la respuesta corta es: sí, podemos. Por ejemplo podemos hacerlo usando bloque estático.

    Puede usar el bloque estático para inicializar el miembro de datos estáticos. Se ejecuta antes que el mainmétodo, en el momento de cargar la clase.

    
    class Example{  
     Static{
    System.out.println("static block is invoked");
    }  
      public static void main(String args[]){  
       System.out.println("Now main method");  
      }  
    }
    

    La salida es:

    
    static block is invoked
    Now main method
    
  4. ¿Qué pasa con la ausencia total del método principal? Si intenta ejecutar una clase ordinaria sin el método principal, obtendrá el siguiente error: Método principal no encontrado en la clase Prueba, defina el método principal como: public static void main (String [] args) o una aplicación JavaFX la clase debe extender javafx.application.Application. El error en sí dice que si se trata de una aplicación JavaFX y la clase se hereda de javafx.application.Application, entonces es posible.
  5. ¿Qué es immutableobjeto? ¿ Puedes crear immutableun objeto?

    No puedes modificar objetos de una immutableclase después de su creación. Entonces, una vez que los crea, no puede cambiarlos. Si intenta modificar Immutableel objeto, obtiene un nuevo objeto (clon) y cambia este clon durante la creación.

    Un buen ejemplo es String, está immutableen Java. Eso significa que no puede cambiar el objeto en sí, pero puede cambiar la referencia al objeto.

  6. ¿Cuántos objetos se crean en el siguiente código?

    Una de las preguntas de la entrevista técnica de Java que sustituye al #4.

    
    String s1="Hello";  
    String s2="Hello";  
    String s3="Hello";  
    

    La respuesta es "solo uno" porque Java tiene un String Pool. Cuando creamos un objeto String usando el operador new(), crea un nuevo objeto en la memoria del montón. Si usamos la sintaxis literal de cadena, como en nuestro ejemplo, puede devolver un objeto existente del grupo de cadenas, si ya existe.

  7. ¿Cuántos objetos se crean en el siguiente código?

    
    String s = new String("Hello");
    

    Hay 2 objetos. Uno está en el grupo de cadenas constantes (si aún no está presente) y el otro está en el montón.

  8. ¿ Cuál es la diferencia entre Stringlas clases StringBuildery StringBufferen Java?

    Hay uno de los líderes en las principales preguntas de la entrevista de Java.

    En primer lugar, Stringes una clase inmutable. Eso significa que no puede modificar su contenido una vez creado. Mientras que StringBuffery StringBuilderson clases mutables, puede cambiarlas más adelante. Si cambiamos el contenido del Stringobjeto, crea una nueva cadena, por lo que no modifica la original. Por eso el rendimiento con StringBufferes mejor que con String.

    La principal diferencia entre StringBuffery StringBuilderque StringBufferlos métodos están sincronizados mientras que StringBuilderlos de no lo están.

  9. ¿Hay alguna diferencia en Stringque se creó usando literal y con new()operador?

    Hay. Si creamos una cadena con el new()operador, aparece en el montón y en el grupo de cadenas (si aún no está presente). Si crea un Stringusando un literal, se crea en el grupo de cadenas (si aún no está presente). Un grupo de cadenas es un área de almacenamiento dentro del montón, que almacena literales de cadenas.

  10. ¿ Se puede anular privateo staticmétodo en Java?

    Una de las preguntas de entrevista difíciles de Java para novatos. Realmente no puede anular privateo staticmétodo en Java.

    No puede anular los privatemétodos porque el alcance del especificador de acceso privado solo está dentro de la clase. Cuando va a anular algo, deberíamos tener clases de padres e hijos. Si el método de la superclase es private, la clase secundaria no puede usarlo y los métodos de la clase secundaria se tratarán como métodos nuevos (no anulados).

    Staticlos métodos tampoco se pueden anular, porque staticlos métodos son parte de la Clase en sí, y no parte de ningún objeto de la clase. Claro que puede declarar el mismo staticmétodo con la misma firma en las clases secundarias, pero nuevamente, serán tratados como nuevos métodos.

  11. Diferencia entre Abstract ClassyInterface

    Una de las preguntas populares de la entrevista para desarrolladores de Java que se relaciona con los principios de programación orientada a objetos. En primer lugar, en Java interfacedefine un comportamiento y abstract classcrea una jerarquía.

    Clase abstracta Interfaz
    Es posible tener un cuerpo de método (métodos no abstractos) en una clase abstracta La interfaz solo puede tener métodos abstractos. En Java 8 o posterior, fue posible definir métodos predeterminados e implementarlos directamente en la interfaz. Además, las interfaces en Java 8 podrían tener métodos estáticos.
    Las variables de instancia pueden estar en clase abstracta. Una interfaz no puede tener variables de instancia.
    Los constructores están permitidos La interfaz no puede tener ningún constructor.
    Se permiten métodos estáticos No se permiten métodos estáticos.
    La clase solo puede tener un padre abstracto Una interfaz puede implementar diferentes clases
    La clase abstracta puede proporcionar la implementación de la interfaz. La interfaz no puede proporcionar la implementación de la clase abstracta.
    Una clase abstracta puede extender la otra clase Java e implementar múltiples interfaces Java. Una interfaz solo puede extender la otra interfaz Java.
    Una clase abstracta de Java puede tener miembros de clase privados y protegidos Los miembros de una interfaz Java son públicos por defecto
  12. ¿Podemos declarar staticvariables y métodos en una abstractclase?

    Sí, es posible declarar staticvariables y métodos en abstractmétodo. No es necesario crear un objeto para acceder al contexto estático. Entonces podemos acceder al contexto estático declarado dentro de la abstractclase usando el nombre de la abstractclase.

  13. ¿Qué tipos de áreas de memoria asigna JVM?

    Class Area almacena estructuras por clase, por ejemplo, grupo de constantes de tiempo de ejecución, campos, datos de métodos y todo el código de los métodos.

    Heap es un área de datos de tiempo de ejecución donde la memoria se asigna a los objetos.

    Stack almacena marcos. Contiene variables locales y resultados parciales, y participa en la invocación y devolución de métodos. Cada subproceso tiene una pila JVM privada, creada al mismo tiempo que el subproceso. 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.

    El registro de contador de programa contiene una dirección de la instrucción de la máquina virtual Java que se está ejecutando actualmente.

    Native Method Stack contiene todos los métodos nativos que se utilizan en la aplicación.

  14. ¿Por qué la herencia múltiple no está permitida en Java?

    Sería realmente complicado. Imagine tres clases A, By Cy Chereda Ay B. Ahora, Alas Bclases tienen el mismo método y lo llamas desde un objeto de clase hijo... ¿Cuál? A's o B's? Aquí tenemos ambigüedad.

    si intenta heredar dos clases, Java genera un error de tiempo de compilación.

  15. ¿ Podemos sobrecargar el main()método?

    Claro, podemos tener muchos mainmétodos en un programa Java usando la sobrecarga de métodos. ¡Pruébalo!

  16. ¿ Podemos declarar un constructor como final?

    No. Un constructor no se puede declarar como finalporque no se puede heredar. Por lo tanto, no tiene sentido declarar constructores como final. Sin embargo, si intenta hacerlo, el compilador de Java arroja un error.

  17. ¿ Podemos declarar una interfaz como final?

    No, no podemos hacer esto. Una interfaz no puede ser finalporque la interfaz debe ser implementada por alguna clase de acuerdo con su definición. Por lo tanto, no tiene sentido hacer una interfaz final. Sin embargo, si intenta hacerlo, el compilador mostrará un error.

  18. ¿ Cuál es la diferencia entre static bindingy dynamic binding?

    El bindingque puede ser resuelto en tiempo de compilación por el compilador se llama statico enlace anticipado. Bindingde todos los staticmétodos privatey finalse realiza en tiempo de compilación.

    En Dynamic bindingel compilador no se puede elegir un método para llamar. Anular es un ejemplo perfecto de dynamic binding. Al anular, tanto las clases principales como las secundarias tienen el mismo método.

    
    Static Binding
    class Cat{  
     private void talk()
    {System.out.println("cat is mewing...");
    }  
      
     public static void main(String args[]){  
      Cat cat=new Cat();  
      cat.talk();  
     }  
    }  
    Dynamic Binding
    class Animal{  
     void talk(){
    System.out.println("animal is talking...");
    }  
    }  
      
    class Cat extends Animal{  
     void talk(){
    System.out.println("cat is talking...");
    }    
     public static void main(String args[]){  
      Animal animal=new Cat();  
      animal.talk();  
     }  
    }
    
  19. ¿Cómo crear una clase de solo lectura en Java?

    Puede hacerlo haciendo que todos los campos de la clase sean privados. La clase de solo lectura solo tiene métodos captadores que devuelven la propiedad privada de la clase al mainmétodo. No puede modificar esta propiedad, la razón es la falta de método setters.

    
    public class HockeyPlayer{    
    private String team ="Maple leaf";    
    public String getTeam(){    
    return team;    
    }    
    }
    
  20. ¿Cómo crear una clase de solo escritura en Java?

    Nuevamente, debe hacer que todos los campos de la clase sean private. Ahora, su clase de solo escritura debe tener solo métodos setter y no getters. Por lo tanto, no podemos leer las propiedades de la clase.

    
    public class HockeyPlayer{       
    private String team;    
    public void setTeam(String college){    
    this.team = team;    
    }    
    }    
    
  21. Cada trybloque debe ir seguido de un catchbloque, ¿no es así?

    No. No es una necesidad. Cada trybloque puede estar sin un catchbloque. Podría ser seguido por un bloque catch o un bloque finalmente o incluso sin ellos.

    
    public class Main{  
         public static void main(String []args){  
            try{  
                int variable = 1;   
                System.out.println(variable/0);  
            }  
            finally  
            {  
                System.out.println("the other part of the program...");  
            }  
         }  
    }
    

    Producción:

    
    Exception in thread main java.lang.ArithmeticException:/ by zero
    the other part of the program...
    

    Un ejemplo más:
    
    class Main {
            public static void main(String[] args) throws IOException {
                try(InputStreamReader inputStreamReader = new InputStreamReader(System.in);
                    BufferedReader reader = new BufferedReader(inputStreamReader)){
                    System.out.println("test");
                }
            }
        }
    

    Producción:

    
    test
    

    PD: Antes de Java 8, los métodos en las interfaces solo podían ser abstractos. En Java 8 o posterior, fue posible definir métodos predeterminados e implementarlos directamente en la interfaz.
  22. ¿ Cuál es la diferencia entre throwy las throwspalabras clave?

    Throwsse usa para declarar una excepción, por lo que funciona de manera similar al try-catchbloque. ThrowLa palabra clave se usa para lanzar una excepción explícitamente desde un método o cualquier otro bloque de código.

    Throwva seguido de una instancia de Exceptionclase y throws va seguido de nombres de clase de excepción.

    Throwse utiliza en el cuerpo del método para lanzar una excepción. Throwsse utiliza en la firma de un método para declarar las excepciones que pueden ocurrir en las sentencias presentes en el método.

    Se permite lanzar una excepción a la vez, pero puede manejar múltiples excepciones declarándolas usando throwuna palabra clave. Puede declarar múltiples excepciones, por ejemplo, public void method()throws IOException, SQLException.

Aquí solo teníamos algunas preguntas y respuestas de la entrevista de Java. Este artículo es el primero de una serie de entrevistas. El próximo (próximamente) es sobre preguntas de estructura de datos.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION