-
“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.
-
public
es 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. -
Void
es el tipo de retorno del método. Significa que el método no devuelve ningún valor. -
main
es el nombre del método. JVM lo "conoce" como un punto de entrada a una aplicación (debe tener una firma particular).Main
es 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.
-
-
¿ Cuál es la diferencia entre
equals()
y==
?Primero, “
==
” es un operador mientras queequals()
es un método. Usamos==
el operador para la comparación de referencias (o comparación de direcciones) yequals()
el método para la comparación de contenido. Significa que==
verifica si ambos objetos apuntan a la misma ubicación de memoria mientrasequals()
compara los valores en los objetos. -
¿ 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
main
mé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
¿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.
-
¿Qué es
immutable
objeto? ¿ Puedes crearimmutable
un objeto?No puedes modificar objetos de una
immutable
clase después de su creación. Entonces, una vez que los crea, no puede cambiarlos. Si intenta modificarImmutable
el objeto, obtiene un nuevo objeto (clon) y cambia este clon durante la creación.Un buen ejemplo es
String
, estáimmutable
en Java. Eso significa que no puede cambiar el objeto en sí, pero puede cambiar la referencia al objeto. -
¿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.
-
¿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.
-
¿ Cuál es la diferencia entre
String
las clasesStringBuilder
yStringBuffer
en Java?Hay uno de los líderes en las principales preguntas de la entrevista de Java.
En primer lugar,
String
es una clase inmutable. Eso significa que no puede modificar su contenido una vez creado. Mientras queStringBuffer
yStringBuilder
son clases mutables, puede cambiarlas más adelante. Si cambiamos el contenido delString
objeto, crea una nueva cadena, por lo que no modifica la original. Por eso el rendimiento conStringBuffer
es mejor que conString
.La principal diferencia entre
StringBuffer
yStringBuilder
queStringBuffer
los métodos están sincronizados mientras queStringBuilder
los de no lo están. -
¿Hay alguna diferencia en
String
que se creó usando literal y connew()
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 unString
usando 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. -
¿ Se puede anular
private
ostatic
método en Java?Una de las preguntas de entrevista difíciles de Java para novatos. Realmente no puede anular
private
ostatic
método en Java.No puede anular los
private
mé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 esprivate
, la clase secundaria no puede usarlo y los métodos de la clase secundaria se tratarán como métodos nuevos (no anulados).Static
los métodos tampoco se pueden anular, porquestatic
los métodos son parte de la Clase en sí, y no parte de ningún objeto de la clase. Claro que puede declarar el mismostatic
método con la misma firma en las clases secundarias, pero nuevamente, serán tratados como nuevos métodos. -
Diferencia entre
Abstract Class
yInterface
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
interface
define un comportamiento yabstract class
crea 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 -
¿Podemos declarar
static
variables y métodos en unaabstract
clase?Sí, es posible declarar
static
variables y métodos enabstract
método. No es necesario crear un objeto para acceder al contexto estático. Entonces podemos acceder al contexto estático declarado dentro de laabstract
clase usando el nombre de laabstract
clase. -
¿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.
-
¿Por qué la herencia múltiple no está permitida en Java?
Sería realmente complicado. Imagine tres clases
A
,B
yC
yC
heredaA
yB
. Ahora,A
lasB
clases tienen el mismo método y lo llamas desde un objeto de clase hijo... ¿Cuál?A
's oB
's? Aquí tenemos ambigüedad.si intenta heredar dos clases, Java genera un error de tiempo de compilación.
-
¿ Podemos sobrecargar el
main()
método?Claro, podemos tener muchos
main
métodos en un programa Java usando la sobrecarga de métodos. ¡Pruébalo! -
¿ Podemos declarar un constructor como
final
?No. Un constructor no se puede declarar como
final
porque no se puede heredar. Por lo tanto, no tiene sentido declarar constructores comofinal
. Sin embargo, si intenta hacerlo, el compilador de Java arroja un error. -
¿ Podemos declarar una interfaz como
final
?No, no podemos hacer esto. Una interfaz no puede ser
final
porque la interfaz debe ser implementada por alguna clase de acuerdo con su definición. Por lo tanto, no tiene sentido hacer una interfazfinal
. Sin embargo, si intenta hacerlo, el compilador mostrará un error. -
¿ Cuál es la diferencia entre
static binding
ydynamic binding
?El
binding
que puede ser resuelto en tiempo de compilación por el compilador se llamastatic
o enlace anticipado.Binding
de todos losstatic
métodosprivate
yfinal
se realiza en tiempo de compilación.En
Dynamic binding
el compilador no se puede elegir un método para llamar. Anular es un ejemplo perfecto dedynamic 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(); } }
-
¿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
main
mé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; } }
-
¿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; } }
-
Cada
try
bloque debe ir seguido de uncatch
bloque, ¿no es así?No. No es una necesidad. Cada
try
bloque puede estar sin uncatch
bloque. 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. -
¿ Cuál es la diferencia entre
throw
y lasthrows
palabras clave?Throws
se usa para declarar una excepción, por lo que funciona de manera similar altry-catch
bloque.Throw
La palabra clave se usa para lanzar una excepción explícitamente desde un método o cualquier otro bloque de código.Throw
va seguido de una instancia deException
clase y throws va seguido de nombres de clase de excepción.Throw
se utiliza en el cuerpo del método para lanzar una excepción.Throws
se 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
throw
una palabra clave. Puede declarar múltiples excepciones, por ejemplo,public void method()throws IOException
,SQLException
.
Las 21 preguntas principales de la entrevista de Java
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.
GO TO FULL VERSION