¿Cuál debería ser mi respuesta a esta pregunta de la entrevista de Java?

Primero comprendamos cómo se invoca el método principal. java.exe, cuando se invoca, analiza la línea de comando, crea una nueva matriz de cadenas en la JVM para contener esos argumentos, analiza el nombre de la clase (ya sea explícitamente mencionado o mencionado en el archivo de manifiesto del jar) que se supone que contiene el método principal , utiliza llamadas y clases JNI dentro de rt.jar para encontrar el método main () en sí mismo, luego invoca el método main (), pasando la matriz de cadenas recién creada como parámetro.

1. público:
Este método es accesible desde cualquier lugar: desde clases que no están en el mismo paquete, desde clases que no están en jerarquía … básicamente desde cualquier lugar. A menos que el método se declare público, las clases de tiempo de ejecución de Java (dentro de rt.jar) no podrán invocar el método principal dando como resultado NoSuchMethodError: main en tiempo de ejecución

Nota: es perfectamente legal tener un método privado / protegido / predeterminado estático vacío principal (String [] args) en una clase, pero JVM no podrá invocarlo. En resumen, no se puede usar como punto de entrada para la ejecución del programa

estática:

Si el método principal no fuera estático, JVM tendría que instanciar primero la clase principal antes de crear el método principal. Eso sería complicado porque JVM tendrá que cargar primero todas las clases dependientes y también la clase principal tendrá que tener un constructor público sin argumentos y tampoco puede ser abstracto: hay demasiadas lagunas y ambigüedades para que esto tenga sentido

nulo:

A diferencia de C / C ++, se supone que Java es neutral para la plataforma y, por lo tanto, no puede devolver un valor al sistema operativo y esperar coherencia en todos los sistemas operativos. Por lo tanto, tiene sentido tener el tipo de retorno como vacío

principal :

Este es solo un nombre de método. La razón por la que lo mantuvieron como “principal” en lugar de “foo” o “bar” o lo que sea es probablemente porque esa ha sido la convención en C / C ++

1. Explique cada término de la línea: “public static void main (String args [])”
public : es un modificador de acceso. public significa que el método puede usarse fuera de la clase y el paquete, para ser precisos, JVM llama al método main ().
static : Al usar la palabra clave static, se puede acceder a main () sin crear la instancia de Class.
nulo : su tipo de retorno del método. main () no devuelve nada, por lo tanto nulo;
principal : su nombre de método. JVM busca este nombre de método como punto de partida para una aplicación.
String args []: parámetro al método principal.

Tenemos que incluir la misma firma de método. Podemos alterar la posición de público y estático.
es decir, podemos escribir: static public void main (String args [])

2. ¿Qué sucede si uso “ Main ” en lugar de “ main “, ¿se compilará? Si no, entonces ¿por qué?
Como ya mencioné, debe usar la misma firma de método. En JVM, se declara como la sintaxis dada, JVM solo conoce main () y ninguna otra función.
Por lo tanto, escribir Main en lugar de main provocará un error de compilación. Pero puedes escribir Main y main en ambos. JVM llamará a main y Main será llamado por usted.

3. ¿Es “ principal ” una palabra clave? ¿Si no, entonces qué es?
No, main no es una palabra clave en Java. Es un nombre de método que ya está declarado. Puede anular el método principal según su elección.

Leer más: Java – Preguntas y respuestas de la entrevista – One Liners

Ver Java es un lenguaje fuertemente tipado, es decir, distingue entre mayúsculas y minúsculas, por lo que el método Main es diferente del método main. Al escribir Main, el compilador tratará esto como cualquier otro método y, si lo ejecuta, se informará un error de que falta el método principal.

Para saber más sobre las preguntas y respuestas de la entrevista Java, descifrar las entrevistas y los exámenes por

Preguntas y respuestas de la entrevista Java | Preguntas Java 2015

More Interesting

¿Qué tipo de preguntas de codificación se hacen en las entrevistas para Docker, Inc.?

¿El archivo objeto producido por C está escrito en lenguaje máquina?

¿Cuál es la forma más rápida de encontrar la mediana de una matriz no ordenada de n enteros? ¿Hay una forma más rápida que ordenarlos y luego usar el valor medio?

Instituto Nacional de Tecnología Motilal Nehru, Allahabad: ¿Por qué las empresas repiten preguntas sobre pruebas y entrevistas? ¿No es injusto y significa que cuanto más aprendas las preguntas del año anterior, más posibilidades tendrás de ser seleccionado?

¿Es posible que un ingeniero sin experiencia en CS obtenga un trabajo en Google, Facebook, Microsoft o Amazon en 6 meses?

Escriba una función recursiva para llenar una matriz MXN con valores de 1 a M * N en el patrón ESPIRAL (debería funcionar para cualquier M> = 0 y cualquier N> = 0).

Cómo escribir un programa para los siguientes criterios

¿Cómo perciben los empleadores a un ingeniero / programador con tatuajes durante la entrevista?

Siento que el trabajo de proyectos paralelos y las preguntas de entrevistas técnicas no tienen ninguna relación. ¿Hay algún método para casar estos dos juntos?

Si dice que es competente en un lenguaje de programación al salir de la universidad, ¿qué grado de comprensión profunda necesita en dicho idioma para tener éxito en una entrevista técnica?

¿En qué sitios web de programación competitiva debería comenzar si termino el curso del algoritmo MIT?

En entrevistas tecnológicas, ¿cómo podemos escribir un código que sea limpio, conciso, optimizado en tiempo y espacio y que cubra todos los casos básicos y de borde de una vez?

Cómo aprender a programar y desarrollar un interés en escribir códigos

¿Cuáles son las preguntas formuladas en las entrevistas relacionadas con la creación de redes?

¿Se está preparando una sexta edición de Cracking the Coding Interview? Si es así, ¿qué podemos esperar de él?