Articles

15 Preguntas de entrevistas Java de Núcleo técnico Respuestas para Desarrolladores experimentados

Cuando la experiencia de un programador Java crece con los años, por ejemplo, cuando pasa de los años de principiante ( 2 a 4) a más experiencia o un nivel superior ( 5 a 7 años), las Preguntas de entrevistas Java de núcleo también cambian un poco. Por supuesto, los conceptos básicos como la estructura de datos, los algoritmos y la programación orientada a objetos siguen siendo los mismos, pero los tipos de preguntas se volverán más avanzados y sus respuestas definitivamente tendrán que ser más detalladas y precisas. A menudo recibo consultas sobre las preguntas principales de Java hechas a un desarrollador senior de 5 a 6 años de experiencia, o, a veces, voy a una entrevista con un desarrollador senior de Java, qué tipo de preguntas debo esperar. Esto a veces me desconcierta, que una vez convertido en adulto mayor, automáticamente comienza a tomar parte en la entrevista, y usted debe tener una idea de qué esperar en las Entrevistas, pero al mismo tiempo, puedo entender que tener una idea de las preguntas antes de ir a la Entrevista, ayuda a la preparación. Por supuesto, no va a obtener una pregunta como la que ha enfrentado en Entrevistas Java de nivel de 2 a 3 años, pero también depende de diferentes rondas de Entrevistas. No he visto muchos cambios en las preguntas hechas en la ronda telefónica, que casi sigue siendo la misma. Encontrará algunas preguntas basadas en hechos, algunas preguntas de codificación y algunas preguntas complicadas. Por otro lado, las entrevistas cara a cara se han vuelto más detalladas y difíciles, especialmente con seguimientos desagradables.
En este artículo, voy a compartir unas 15 Preguntas de entrevistas de núcleo técnico de Java, que he visto hacer a desarrolladores experimentados y experimentados de 4 a 6 años de experiencia en diferentes entrevistas, principalmente en rondas telefónicas. No estoy publicando respuestas por ahora, pero puedes encontrar respuestas a la mayoría de las preguntas aquí o en el blog Javarevisited.
Si tiene prisa y busca activamente un trabajo de Desarrollador de Java, también puede obtener ayuda de algunos buenos libros escritos para prepararlo para las entrevistas de Java J2EE. Libros como, Java Programming Interview Exposed cubre todos los temas importantes para las entrevistas Java Core y Java EE, que incluyen preguntas básicas de Java, estructura de datos y algoritmos, internos de JVM y afinación GC, Preguntas de entrevistas de Hibernación y Primavera, preguntas de pruebas unitarias JUnit ant y algunas cosas de Java 8.También cubre el conocimiento de otros lenguajes JVM como Scala, Groovy y otras plataformas como Android. Un compañero perfecto para hacer bien las entrevistas en Java.
Si quieres prepararte más en el lado de la codificación, también puedes revisar Cracking the Coding Interview, que contiene casi 150 preguntas de programación y soluciones de entrevistas técnicas de grandes compañías tecnológicas como Amazon, Facebook, Google, Twitter y Microsoft.

15 Preguntas básicas de Java De 5 a 6 Años de Experiencia

Todas estas preguntas se han recopilado de desarrolladores bastante experimentados, que tienen al menos 5 años de experiencia. Han visto estas preguntas en diferentes rondas de sus entrevistas principales en Java, incluidas rondas telefónicas y cara a cara en diferentes compañías, principalmente en bancos de inversión como Barclays, Morgan, RBS y otros.

¿Qué es Busy Spinning? ¿Por Qué Debería Usarlo en Java?

Una de las preguntas de varios hilos interesantes para los programadores Java sénior, busy spinning es una estrategia de espera, en la que un hilo simplemente espera en bucle, sin soltar la CPU para irse a dormir. Esta es una estrategia de espera muy avanzada y especializada utilizada en la aplicación de comercio de alta frecuencia cuando el tiempo de espera entre dos mensajes es muy mínimo.Al no liberar la CPU o suspender el subproceso, el subproceso conserva todos los datos e instrucciones almacenados en caché, que pueden perderse si el subproceso se suspendió y se reanudó en un núcleo diferente de la CPU.
Esta pregunta es bastante popular en el dominio de programación de baja latencia de alta frecuencia, donde los programadores intentan una latencia extremadamente baja en el rango de micro a milisegundos. Vea aquí más de 50 preguntas avanzadas de entrevistas en hilo para programadores experimentados.

preguntas de entrevistas java básicas para desarrolladores sénior

¿Qué es el bloqueo de lectura y escritura? ¿ConcurrentHashMap en Java Utiliza El Bloqueo De Escritura de Lectura?

ReadWrite Lock es una implementación de una técnica de eliminación de bloqueos, donde se utilizan dos bloqueos separados para la operación de lectura y escritura. Dado que la operación de lectura no modifica el estado del objeto, es seguro permitir el acceso de varios subprocesos a un objeto compartido para leer sin bloqueo, y al dividir un bloqueo en el bloqueo de lectura y escritura, puede hacerlo fácilmente.
Java proporciona una implementación de un bloqueo de lectura y escritura en forma de la clase ReentrantReadWritLock en java.útil.concurrente.paquete cerrado. Vale la pena mirar esto antes de decidir escribir su propia implementación de bloqueo de lectura-escritura.
También, la implementación actual de java.útil.ConcurrentHashMap no usa ReadWriteLock, sino que divide el mapa en varios segmentos y los bloquea por separado utilizando diferentes bloqueos. Esto significa que en un momento dado, solo una parte del mapa simultáneo está bloqueada, en lugar de todo el mapa. Vea cómo funciona internamente ConcurrentHashMap en Java para obtener más detalles.

Esta pregunta principal de Java también es muy popular en entrevistas de Java de nivel senior y más experimentado, por ejemplo, de 4 a 6 años, donde se espera que el entrevistador entre en más detalles, como pedirle que proporcione una implementación del bloqueo de lectura y escritura con diferentes políticas. Si es un programador con experiencia en Java, considere la posibilidad de leer la concurrencia de Java en la práctica para ganar más confianza sobre el multihilo y la concurrencia en Java.

¿Cómo hacer un objeto Inmutable en Java? ¿Por Qué Hacer un Objeto Inmutable?

Bueno, la inmutabilidad ofrece varias ventajas, incluida la seguridad de subprocesos, la capacidad de almacenar en caché y el resultado en un código multiproceso más legible. Vea aquí para aprender a hacer objetos inmutables. Una vez más, esta pregunta también puede entrar en más detalles y, dependiendo de su respuesta, puede traer varias otras preguntas, por ej. cuando mencione que Spring es Inmutable, prepárese con algunas razones de por qué String es Inmutable en Java.

¿Qué Patrones de Diseño ha Utilizado en su Proyecto Java?

Siempre espere algunas preguntas relacionadas con patrones de diseño para la entrevista de Java Principal del puesto de desarrollador senior. Es una mejor estrategia mencionar cualquier patrón de diseño GOF en lugar de Singleton o MVC, que casi todos los demás desarrolladores de Java lo usan. Su mejor opción puede ser un patrón de Decorador o tal vez un Patrón de Inyección de Dependencia, que es bastante popular en el Marco de Primavera. También es bueno mencionar solo los patrones de diseño que realmente ha utilizado en su proyecto y sabe que son compensaciones. Es común que una vez que mencionas un patrón de diseño en particular, digamos Fábrica o Fábrica abstracta, la siguiente pregunta del entrevistador sería, ¿has utilizado este patrón en tu proyecto? Así que prepárate con ejemplos adecuados y por qué eliges un patrón en particular. También puedes ver este artículo para preguntas de patrones de diseño más avanzadas de entrevistas en Java.

¿Conoce el Principio de Diseño Abierto Cerrado o el Principio de Sustitución de Liskov?

Los patrones de diseño se basan en principios de diseño orientados a objetos, que sentí firmemente que todo desarrollador orientado a objetos y el programador deberían saber, o, al menos, tener una idea básica de cuáles son estos principios y cómo lo ayudan a escribir mejor código orientado a objetos. Si no sabes la respuesta a esta pregunta, puedes decir amablemente que No, ya que no se espera que sepas la respuesta a todas las preguntas, pero al responder a esta pregunta, puedes hacer tu afirmación más fuerte, ya que muchos desarrolladores experimentados no responden preguntas básicas como esta. Consulte Código limpio obtenga más información sobre principios de diseño sólidos y orientados a objetos.

¿Qué Patrón de Diseño Utilizará para Proteger Su Código De una biblioteca de Terceros Que Probablemente será Reemplazada por Otra en un Par de Meses?

Este es solo un ejemplo de la pregunta de entrevista de patrón de diseño basado en escenarios. Para probar la experiencia práctica de desarrolladores Java con más de 5 años de experiencia, las empresas hacen este tipo de preguntas. Puede esperar más problemas de diseño del mundo real en diferentes formatos, algunos con una explicación más detallada con contexto,o algunos con solo intención.
Una forma de proteger su código de una biblioteca de terceros es codificar contra una interfaz en lugar de una implementación y luego usar inyección de dependencias para proporcionar una implementación en particular. Este tipo de preguntas también se hacen con bastante frecuencia a desarrolladores de Java experimentados y senior con 5 a 7 años de experiencia.

Pregunta 7) ¿Cómo se evita la inyección SQL en código Java?

Esta pregunta se hace más a los desarrolladores de J2EE y Java EE que a los desarrolladores de Java principales, pero sigue siendo una buena pregunta comprobar la habilidad de JDBC y Seguridad de los programadores experimentados de Java.Puede usar PreparedStatement para evitar la inyección SQL en código Java. El uso de PreparedStatement para ejecutar consultas SQL no solo proporciona un mejor rendimiento, sino que también protege su aplicación Java y J2EE de ataques de inyección SQL.
En una nota similar, Si está trabajando más en Java EE o J2EE side, también debe estar familiarizado con otros problemas de seguridad, incluidos los ataques de fijación de sesión o los ataques de scripting entre sitios y cómo resolverlos. Estos son algunos campos y preguntas en los que una buena respuesta puede marcar una gran diferencia en su selección.

Pregunta 8) Cuéntame sobre los diferentes tipos de referencia disponibles en Java, por ejemplo, ¿Referencia débil, referencia suave o referencia fantasma? ¿y por qué deberías usarlos?

Bueno, son tipos de referencia diferentes que vienen de java.lang.paquete ref y proporcionado para ayudar al recolector de basura de Java en caso de problemas de memoria baja. Si envuelve un objeto con referencia débil, será elegible para la basura recolectada si hay referencias fuertes. Más tarde, el recolector de basura puede recuperarlos si JVM se está quedando sin memoria.El java.útil.WeakHashMap es una implementación de mapa especial, cuyas claves son el objeto de referencia débil, por lo que si solo Map contiene la referencia de cualquier objeto y ningún otro, esos objetos pueden ser recolectados como basura si GC necesita memoria. Consulte Rendimiento de Java La Guía Definitiva obtenga más información sobre cómo tratar los problemas de rendimiento en Java.

preguntas y respuestas de entrevistas técnicas core java para experimentados

Pregunta 9) ¿Cómo funciona el método get de HashMap en Java?

Sí, esta sigue siendo una de las preguntas principales de Java más populares para entrevistas a desarrolladores senior. También puedes esperar esta pregunta en la ronda telefónica, seguida de muchas preguntas de seguimiento como se discutió en mi post cómo funciona el HashMap en Java. La respuesta corta a esta pregunta es que HashMap se basa en la estructura de datos de la tabla hash y utiliza el método hashCode() para calcular el código hash para encontrar la ubicación del cubo en la matriz subyacente y el método equals() para buscar el objeto en el mismo cubo en caso de colisión. Vea aquí para obtener más información sobre cómo funciona el método get () de HashMap en Java.

Pregunta 10) ¿Qué Dos Métodos Debe Implementar El Objeto de clave de Mapa de Hash?

Esta es una de las preguntas de seguimiento que mencioné en preguntas anteriores. Dado que el trabajo de HashMap se basa en la estructura de datos de la tabla hash, cualquier objeto que desee usar como clave para HashMap o cualquier otra colección basada en hash, por ejemplo, Hashtable o ConcurrentHashMap, debe implementar los métodos equals() y hashCode ().
El hashCode() se usa para encontrar la ubicación del bucket, es decir, el índice de la matriz subyacente y el método equals () se usa para encontrar el objeto correcto en una lista vinculada almacenada en el bucket en caso de colisión. Por cierto, desde Java 8, HashMap también comenzó a usar una estructura de datos de árbol para almacenar el objeto en caso de colisión para reducir el peor rendimiento de HashMap de O(n) a O(logN). Consulte el artículo para obtener más información sobre cómo hacer colisiones handless de HashMap en Java.

Pregunta 11) ¿Por qué un Objeto Utilizado Como Clave debe ser Inmutable?

Esta es otra continuación de las preguntas de entrevistas básicas anteriores de Java. Es bueno probar la profundidad del conocimiento técnico de los candidatos haciendo más y más preguntas sobre el mismo tema. Si sabes de Inmutabilidad, puedes responder a esta pregunta por ti mismo. La respuesta corta a esta pregunta es clave debe ser inmutable para que el método hashCode () siempre devuelva el mismo valor.

Dado que el código hash devuelto por el método hashCode() depende del contenido del objeto, es decir, de los valores de las variables miembro. Si un objeto es mutable, entonces esos valores pueden cambiar y también lo es el código hash. Si el mismo objeto devuelve un código hash diferente una vez insertado el valor en HashMap, terminará buscando en diferentes ubicaciones de bucket y no podrá recuperar el objeto. Es por eso que un objeto clave debe ser inmutable. No es una regla impuesta por el compilador, pero debe cuidarla como un programador experimentado. Consulte el artículo para obtener preguntas más avanzadas sobre la entrevista de la colección Java.

Pregunta 12) ¿Cómo logra ConcurrentHashMap su escalabilidad?

A veces, esta pregunta de entrevista de colección + multiproceso también se hace como, la diferencia entre ConcurrentHashMap y Hashtable en Java. El problema con HashMap sincronizado o Hashtable era que todo el mapa está bloqueado cuando un subproceso realiza cualquier operación con Map. El java.útil.La clase ConcurrentHashMap resuelve este problema mediante una técnica de eliminación de bloqueos, en la que todo el mapa se bloquea en diferentes segmentos y solo un segmento en particular se bloquea durante la operación de escritura, no todo el mapa. ConcurrentHashMap también logra su escalabilidad al permitir lecturas sin bloqueos, ya que la lectura es una operación segura para subprocesos. Consulte aquí para obtener preguntas más avanzadas de multihilo y concurrencia en Java.

Pregunta 13) ¿Cómo se comparte un objeto entre hilos? o Cómo pasar un objeto de un hilo a otro?

Hay varias formas de hacerlo, p. ej. Colas, Intercambiadores, etc., pero bloquear la cola usando el patrón Productor-Consumidor es la forma más fácil de pasar un objeto de un hilo a otro.

Pregunta 14) ¿Cómo encontrar si su programa tiene un punto muerto?

Tomando el volcado de hilos usando kill -3, usando JConsole o VisualVM), sugiero preparar esta pregunta de entrevista de java principal con más detalle, ya que al entrevistador definitivamente le gusta ir con más detalle, por ejemplo, presionarán con preguntas como, ¿realmente lo ha hecho en su proyecto o no?

Pregunta 15) ¿Cómo se evita el bloqueo mientras se codifica?

Al asegurarse de que los bloqueos se adquieren y liberan de manera ordenada, consulte aquí una respuesta detallada a esta pregunta.
Eso es todo en esta lista de Preguntas Principales de entrevistas de Java para desarrolladores sénior y programadores experimentados. No he incluido muchas preguntas de otros temas importantes como el manejo de excepciones, el ajuste de Recolección de basura y el funcionamiento interno de JVM, que también es muy popular entre los programadores Java con 5 a 6 años de experiencia, tal vez las incluya en la siguiente parte. Por cierto, si no encuentras la respuesta a ninguna de estas preguntas básicas de Java, házmelo saber. Puedo actualizar la publicación con una opción más detallada, basada en la solicitud de mi lector.
Aprendizaje adicional
La Clase Magistral Completa de Java
Fundamentos de Java: El Lenguaje Java
Preguntas relacionadas de Entrevistas Java sobre otros temas

  • Preguntas Java para Entrevistas en pantalla Telefónica (lista)
  • Preguntas de hilo y Concurrencia de Entrevistas Java (lista)
  • Preguntas y Respuestas de Entrevistas Java Enum (lista)
  • Preguntas de entrevistas Java OOP con respuestas (lista)
  • Preguntas y respuestas de Entrevistas Spring MVC (lista)
  • Preguntas de Entrevista Hibernadas con Respuestas (lista)
  • Preguntas y Respuestas de Entrevista JDBC (lista)
  • Preguntas de entrevista de concepto de matriz en Java (lista)
  • Preguntas y Respuestas de Entrevistas de Servicio Web Restful (lista)
  • Preguntas y Respuestas de Entrevistas de Servlet y JSP (lista)
  • Preguntas y Respuestas de Entrevistas de Servicio Web Java (lista)