Preguntas y respuestas de la entrevista de Java en 2022
Publicado: 2022-08-03¿Eres un programador? ¿Y ha elegido el lenguaje de programación Java como su nicho preferido para construir una carrera? ¡Felicidades! Has elegido bien. Según las estadísticas, un programador estadounidense gana un promedio de $105,801 al año. Eso es un promedio de $50.87 por hora, $2,035 por semana y $8,817 por mes. ¿No es eso impresionante?
Pero tener la oportunidad de conseguir el trabajo de tus sueños como programador de Java está más allá de las ilusiones. De los 8 millones de programadores de Java en todo el mundo, solo alrededor de 56 585 tienen un empleo remunerado en los EE. UU., lo que hace que la búsqueda de empleo como programador de Java sea bastante competitiva. Si debe conseguir el trabajo de sus sueños, debe estar bien equipado en los aspectos básicos y complejos del lenguaje de programación Java.
Ahora sabe lo competitivo que es conseguir un trabajo como programador de Java y el requisito para ser elegible para estar entre los pocos que consiguen un trabajo como programador de Java. Recuerde, el éxito es una función de la preparación para la reunión de oportunidades. A medida que avanzamos, hemos diseñado una guía de preguntas y respuestas para ayudarlo a escalar a través de la fase de entrevista y posiblemente conseguir el trabajo de sus sueños. Esta lista se compiló con la ayuda del artículo: preparación para una entrevista de Java con preguntas y respuestas en Apollotechnical. Sigamos con eso.
Preguntas básicas de la entrevista de Java para estudiantes de primer año
¿Qué entiendes por Java?
Java es un lenguaje de programación versátil, orientado a objetos y multiplataforma, utilizado en 3 mil millones de dispositivos en todo el mundo para diversas tareas, como aplicaciones de redes sociales, programas de audio y video, juegos, procesamiento masivo de datos, dispositivos integrados, etc.
Comparar entre Java y Python
En su simplicidad, Java es un lenguaje de programación centrado en objetos de propósito general basado en clases pero con menos especificaciones requeridas. Debido a su reputación de ser rápido, confiable y orientado a los resultados, es el lenguaje de programación de referencia para desarrollar aplicaciones en teléfonos móviles, consolas de juegos, computadoras portátiles, computadoras científicas de alta gama, etc. Por otro lado, Python es un lenguaje de programación estructurado dinámicamente elevado, centrado en objetos y traducido. Python facilita la flexibilidad del programa y la reutilización del código al habilitar módulos y paquetes.
Resuma las principales características de Java
- Java está centrado en objetos
- Java es independiente de la plataforma
- Tiene una excelente implementación de subprocesos múltiples
- Utiliza un lenguaje sencillo
- Y es Arquitectura neutral
¿Qué quieres decir con un objeto en Java?
En Java, un objeto es un componente (también conocido como "una instancia") de otra agrupación de Java llamada 'clase'. Cada objeto tiene un estado, comportamiento/acciones e identidad únicos. Los campos (variables) almacenan el estado de un objeto, mientras que las metodologías (operaciones) muestran las acciones del objeto. En tiempo de ejecución, los objetos se crean a partir de marcos identificados como clases.
Un objeto también podría ser un elemento fundamental de la programación basada en objetos que representa entidades del mundo real.
Distinguir entre Stringbuffer y Stringbuilder en programación Java
StringBuffer y StringBuilder se diferencian principalmente en cuatro parámetros: rendimiento/velocidad, seguridad de subprocesos, disponibilidad y sincronización. StringBuilder es una variante no sincronizada de la clase StringBuffer.
Otra distinción entre StringBuffer y StringBuilder es que el primero es seguro para subprocesos, mientras que el segundo no lo es.
Diferenciar entre JDK, JRE y JVM
El kit de desarrollo de Java (JDK) incluye escribir, solucionar problemas y analizar herramientas de programación de Java. JRE es un conjunto de clases y objetos y otros archivos adjuntos que JVM necesita para ejecutar una aplicación. JVM no proporciona ninguna herramienta de desarrollo de software.
El Java Development Kit (JDK) es un producto de software para crear aplicaciones Java. JRE es un paquete de software que contiene las bibliotecas de clases de Java y otros componentes necesarios para ejecutar la programación de Java. La máquina virtual de Java (JVM) interpreta el lenguaje de bytes de Java y crea una atmósfera adecuada para la ejecución. JDK es específico de la plataforma, JRE depende de la plataforma y JVM depende de la plataforma en una escala mayor.
Definir herencia
En Java, la herencia es un principio que transfiere características de una clase a otra; Es el marco en Java por el cual una clase obtiene propiedad de otra o permite que una clase posea las características (métodos y atributos) de otra.
¿Qué es una clase en Java?
Una clase es un elemento fundamental en la programación orientada a objetos. Es un formato que define el estado y las funciones atribuidas a la creación de instancias de clase. Una clase también es una plantilla lógica porque se utiliza para construir modelos que comparten atributos y métodos similares.
Compare la sobrecarga y la anulación en Java
La sobrecarga se refiere a tener métodos de la misma clase con el mismo nombre, pero cada uno tiene varios criterios o los mismos criterios con varios tipos y órdenes. Mientras que Anular significa tener una subclase con las mismas técnicas bajo el mismo título que una superclase y el mismo tipo de criterio y valor de retorno.
Además, la sobrecarga es un polimorfismo de línea de comandos con un enlace estático y sobrecarga el método estático. Mientras que la anulación es un polimorfismo de ejecución del programa con un enlace flexible y la incapacidad de anular el método estático.
Explicar la creación de un singleton seguro para subprocesos en Java mediante el bloqueo de verificación doble
El patrón Singleton es un patrón de diseño bien conocido en el que una clase se limita a una sola instancia a lo largo de su vida y varios clientes comparten esa instancia. El patrón Singleton se incorpora con dos responsabilidades principales: la primera es garantizar que solo se genere una instancia de clase. El segundo es proporcionar un método en el que todos tengan acceso mundial a esa instancia específica.
Uno de los desafíos que enfrenta el diseño Singleton en un programa multiproceso es garantizar que solo se genere una instancia de la clase, aunque varios usuarios llamen a la técnica getInstance() al mismo tiempo. El sistema de bloqueo verificado corrige este dilema al garantizar que la sincronización se utilice solo cuando se crea un caso individual de Singleton cada vez que se invoca la función getInstance() por primera vez y que la misma instancia se recupera sin sincronización anterior. todas esas otras instancias.
Preguntas de la entrevista de Java intermedio
¿Qué es JDK? ¿Menciona las variantes de JDK?
JDK significa Kit de desarrollo de Java. Java Development Kit (JDK) es el software de referencia durante el desarrollo de cualquier aplicación Java. Java Development Kit (JDK) incluye herramientas de escritura, solución de problemas y análisis de programación Java.
Fundamentalmente, JDK es una implementación de Java Standard Edition o Java Enterprise Edition. Java pasó a llamarse Java 2 (abreviado como Java 2 SDK o J2SDK) en 1998 debido a una importante actualización de la plataforma. Desarrolló tres versiones separadas de Java para admitir varias aplicaciones.
- J2SE significa Java 2 Platform, Basic and Usual Edition, y está diseñado para contextos de escritorio y servidor.
- J2EE significa Java 2 Platform, Corporate Edition, diseñado para aplicaciones comerciales e incluye capacidades como almacenamiento basado en la nube y soporte de servicios en línea.
- J2ME (Java 2 Platform, Micro Edition) está destinado a dispositivos o plataformas instaladas y móviles.
Sin embargo, en 2004, las etiquetas de las variantes se modificaron a Java ME (Edición Micro de la Plataforma Java), Java EE (Edición Empresarial de la Plataforma Java) y Java SE (Edición Estándar de la Plataforma Java), respectivamente. El nombre del kit de desarrollo también se cambió de "Java 2 SDK" a "JDK". Además, el contexto operativo pasó a llamarse "JRE" en lugar de "J2RE". Las variantes con sus versiones, Java SE 6 y Java EE 5 siguen en uso.
¿Puede un constructor devolver un valor?
Entendiendo que un constructor no es como una técnica convencional utilizada durante la programación en Java, de alguna manera no devuelve o trae ningún resultado específico, lo que podría causar un gran efecto o impacto en el código. El Constructor puede incluir instrucciones ilimitadas, pero no puede recuperar o devolver los valores o el resultado de las declaraciones.

Explique la palabra clave 'ESTA' en Java
'Esto' es un término específico en Java que especifica la entidad que el programador está ejecutando ahora. La palabra clave simplemente se antepone al parámetro diferente relacionado con el uso del operador - punto (.), que se puede usar desde el interior de un método o un constructor. La palabra clave 'Esto' no se usa con mucha frecuencia ya que la mayoría de las aplicaciones están destinadas a evitar situaciones en las que hubiera sido necesario. El acceso a las variables de instancia se proporciona a través del término 'esto'.
Explicar la palabra clave 'SUPER' en Java
En Java, el lema 'super' es un parámetro relativo asociado con el concepto de herencia que se refiere a las instancias de la clase principal, suponiendo que la clase derivada tiene un parámetro en el grupo o método con el mismo nombre que la clase principal. El término se utiliza principalmente cuando la subclase necesita acceder a un parámetro, función o constructor en la clase base.
Explicar la sobrecarga de métodos en Java
En Java, la sobrecarga se refiere a métodos que tienen el mismo nombre y clase pero con varios criterios y viceversa. Dos o más técnicas tienen nombres y clases uniformes pero firmas diferentes en la sobrecarga. La sobrecarga es un polimorfismo de la línea de comandos que estira el comportamiento de un método, lo que provoca una sobrecarga.
¿Podemos sobrecargar un método estático en Java?
En Java, el método estático se comporta de manera similar a las metodologías regulares de sobrecarga y, como tal, podría sobrecargarse. Sin embargo, debe ofrecer un método estático adicional con el mismo nombre pero con una firma de metodología variable si el objetivo es sobrecargar el método estático.
Definir enlace tardío
El enlace tardío es un formato que indica que el compilador no debe realizar comprobaciones de tipos en las llamadas a métodos, ni comprobaciones de argumentos, y debe dejar todo en tiempo de ejecución (una instancia está en la programación COM).
Definir envío de método dinámico
El envío de métodos dinámicos se refiere a resolver o corregir una llamada a un método anulado en tiempo de ejecución en lugar de en tiempo de compilación.
¿Por qué la función de eliminación es más rápida en la lista vinculada que en una matriz?
La operación de eliminación LinkedList devuelve O(1). Pero la operación de eliminación de ArrayList devuelve O(n) en el peor de los casos, es decir, al eliminar la primera entrada y O(1) en el mejor de los casos al eliminar el último elemento. En comparación con ArrayList, la eliminación de elementos de LinkedList es más rápida. La razón de esto es que cada elemento LinkedList tiene dos punteros (direcciones) que apuntan a los dos miembros vecinos de la lista. Como resultado, eliminar un nodo implica modificar la posición de referencia en los dos componentes adyacentes del nodo.
Preguntas avanzadas de la entrevista de Java para experimentados
Aunque la herencia es un concepto muy popular, es menos ventajoso que la composición. ¡Explique!
Las clases de Java solo pueden tener una superclase, ya que el lenguaje no admite herencias múltiples. En diversas funcionalidades, como leer y escribir en un archivo, es preferible la estructura de compilación. Puede compararlo con las capacidades de escritura y lectura de un miembro privado. Con la ayuda de la composición, es posible evitar la ruptura de la encapsulación mientras se logra una flexibilidad significativa. La prueba unitaria, que es imposible debido a la herencia, se puede lograr con la ayuda de la composición.
¿En qué se diferencia la creación de una cadena usando new() de la de un literal?
Cuando usamos new() para generar una cadena, se crea un nuevo objeto en la memoria del montón. Se tarda más en ejecutarse y, por lo tanto, se queda atrás en comparación con el literal de cadena. Sin embargo, cuando ya hay datos establecidos en la cadena para una cadena creada con el literal de cadena, existe un vínculo de esos mismos datos con la variable de cadena en el conjunto de cadenas. Y esto se logra sin tener que construir una Cadena completamente nueva con los mismos datos establecidos.
¿Es posible exceder el límite de memoria en un programa a pesar de tener un recolector de basura?
Sí. La presencia de un recolector de basura no detiene ni impide de ninguna manera que un programa se quede sin memoria.
¿Por qué es necesaria la sincronización? Explique con la ayuda de un ejemplo relevante
La sincronización es un mecanismo que garantiza que todos los subprocesos coincidentes se ejecuten simultáneamente. La sincronización evita los problemas de consistencia de la memoria producidos por una vista de memoria sinérgica que es inconsistente. En un método sincronizado, el subproceso supervisa y mantiene el objeto en su lugar. Si otro subproceso está ejecutando el método sincronizado, el subproceso actual se detendrá hasta que el subproceso anterior libere el monitor.
Digamos, en una situación en la que se requiere encontrar la cantidad de solicitudes realizadas a una URL en particular, tener más de una solicitud en ejecución seguramente generará un recuento errático. Digamos que el subproceso 1 ve el recuento como 12; se aumentará a 13 añadiendo uno. Al mismo tiempo, otro subproceso 2 también ve la cuenta como 12 y, en la misma línea, aumenta a 13 al agregar 1. Esta imprevisibilidad en el valor de la cuenta ocurre porque en lugar del valor final anticipado de 14, lo que se obtendría como el valor final el valor será 13. Aquí es donde entra en juego la sincronización a medida que la función aumenta (), por lo que se impide el acceso simultáneo a la cuenta.
¿Puede explicar el ciclo de vida del subproceso de Java?
En Java, el ciclo de vida de un subproceso se define como las transformaciones de estado de un subproceso desde el nacimiento hasta la muerte. Cuando se genera una instancia de subproceso y se llama a la función start() de la clase Thread, el subproceso entra en el estado ejecutable. Cuando la clase Thread llama a los métodos sleep() o wait(), el hilo deja de ser ejecutable.
¿Cuál podría ser el equilibrio entre el uso de una matriz desordenada frente al uso de una matriz ordenada?
Una ventaja importante de una matriz ordenada es que tiene una complejidad de tiempo de búsqueda de O (log n). La operación de inserción en un arreglo ordenado tiene una complejidad temporal de O(n) porque los miembros con puntajes más altos deben cambiarse para hacer una nueva variante. Por otro lado, la operación de inserción de una matriz desordenada requiere un tiempo constante de O(1).
¿Es posible importar la misma clase o paquete dos veces en Java y qué sucede durante el tiempo de ejecución?
Sí. Independientemente de la frecuencia con la que se importe la clase o el paquete, la JVM lo cargará internamente una vez durante el tiempo de ejecución.
¿Se ejecutará el bloque "Finally" si el código system.Exit(o) está escrito al final del bloque try?
No, el bloque 'finally' no se ejecutará en este escenario porque cuando se activa System.exit (0), el control abandona el programa instantáneamente y, por lo tanto, "finally" nunca se ejecuta. Si Sistema. exit(0) se invoca sin excepción; el programa no se ejecutará.
¿Qué entiendes por interfaces de marcador en Java?
Una interfaz sin constantes ni métodos se conoce como interfaz de marcador o interfaz de etiquetado, ya que proporciona al compilador y a la JVM información sobre el tipo de tiempo de ejecución de los objetos. Las interfaces remotas, serializables y clonables son ejemplos de interfaces de marcador, y todas estas interfaces están vacías.
Explicar el término "inicialización de doble llave" en Java
En Java, la inicialización de doble llave es una mezcla de 2 procesos separados. Dos llaves ({) están involucradas en esta situación. La inicialización de doble llave se produce cuando se muestran dos llaves consecutivas en el código Java.
La construcción de una clase interna sin nombre es la primera llave, mientras que un bloque de inicialización es la segunda llave. La inicialización de Java Double Brace ocurre cuando una clase interna sin nombre usa el bloque de inicialización.
Conclusión
Como programador novato o incluso como programador experimentado, estas preguntas de la entrevista pueden parecer un poco complicadas. Pero si te comprometes a practicar estas preguntas, seguramente aprovecharás la próxima oportunidad que tengas.