-
“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.
-
-
¿ 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
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 ¿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
immutableobjeto? ¿ Puedes crearimmutableun 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 modificarImmutableel 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. -
¿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
Stringlas clasesStringBuilderyStringBufferen 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 queStringBufferyStringBuilderson clases mutables, puede cambiarlas más adelante. Si cambiamos el contenido delStringobjeto, crea una nueva cadena, por lo que no modifica la original. Por eso el rendimiento conStringBufferes mejor que conString.La principal diferencia entre
StringBufferyStringBuilderqueStringBufferlos métodos están sincronizados mientras queStringBuilderlos de no lo están. -
¿Hay alguna diferencia en
Stringque 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 unStringusando 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
privateostaticmétodo en Java?Una de las preguntas de entrevista difíciles de Java para novatos. Realmente no puede anular
privateostaticmé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 esprivate, 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, porquestaticlos métodos son parte de la Clase en sí, y no parte de ningún objeto de la clase. Claro que puede declarar el mismostaticmétodo con la misma firma en las clases secundarias, pero nuevamente, serán tratados como nuevos métodos. -
Diferencia entre
Abstract ClassyInterfaceUna 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 yabstract 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 -
¿Podemos declarar
staticvariables y métodos en unaabstractclase?Sí, es posible declarar
staticvariables y métodos enabstractmétodo. No es necesario crear un objeto para acceder al contexto estático. Entonces podemos acceder al contexto estático declarado dentro de laabstractclase usando el nombre de laabstractclase. -
¿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,ByCyCheredaAyB. Ahora,AlasBclases 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
mainmé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
finalporque 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
finalporque 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 bindingydynamic binding?El
bindingque puede ser resuelto en tiempo de compilación por el compilador se llamastatico enlace anticipado.Bindingde todos losstaticmétodosprivateyfinalse realiza en tiempo de compilación.En
Dynamic bindingel 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
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; } } -
¿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
trybloque debe ir seguido de uncatchbloque, ¿no es así?No. No es una necesidad. Cada
trybloque puede estar sin uncatchbloque. 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
throwy lasthrowspalabras clave?Throwsse usa para declarar una excepción, por lo que funciona de manera similar altry-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 deExceptionclase 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.
GO TO FULL VERSION