Entrevista de Trabajo de Java: las 10 Preguntas Más Frecuentes y Cómo Contestarlas

html interview questions and answersLa típica empresa que busca contratar a un programador de Java busca a alguien que pueda programar bien más allá del nivel de una clase introductoria de Java. Los entrevistadores formulan preguntas que no son necesariamente rebuscadas pero que están destinadas a resolver si el candidato posee un conocimiento profundo de la materia.

¿Tiene una entrevista de Java dentro de poco? ¡Repase con este curso!

Las preguntas siguientes son ejemplos de lo que un programador java puede esperar de una entrevista técnica.

1. ¿Qué significa la palabra clave static, y dónde puede ser usada?

static puede ser usada de 4 formas:

  • las variables static son compartidas por la clase, no por una instancia concreta (no como las variables miembro normales)

  • los métodos static también son compartidos a nivel de clase

  • las clases static son clases internas que no están atadas a su clase contenedora

  • static también puede usarse en un bloque de código de una clase para especificar código que se ejecutará cuando la máquina virtual se inicia por primera vez, antes de que se creen instancias de la clase.

2. ¿Cómo trataría con problemas de dependencia?

Esta pregunta es ambigua a propósito. Puede referirse a resolver problemas de inyección de dependencias (Guice es una herramienta estándar que ayuda con esto). También puede referirse a proyectar dependencias – usando librerias externas, de terceras personas. Herramientas como Maven y Gradle ayudan a administrarlas. Debería considerar aprender más sobre Maven para preparar esta pregunta.

3. Quiere crear una clase simple que sólo tenga tres variables miembro. Dígame cómo haría esto.

Este problema parece fácil a simple vista, y crear una clase sencilla se explica en clases como Programación Orientada a Objetos.

Pero un programador experimentado reconocerá que es necesario saber cómo sobrescribir correctamente los métodos hashCode() y equals() (usando, por ejemplo, EqualsBuilder y HashCodeBuilder, en la libería Apache Commons). Puede encontrar temas más avanzados como estos en el curso Programación Orientada a Objetos II (Spring MVC).

4. ¿Qué hace la palabra clave synchronized? Dígame cómo usarla para establecer una única variable sin condiciones.

synchronized le dice a un método que tiene que mantener el bloqueo del objeto al ejecutar. Si se usa alrededor de un bloque, como synchronized (obj) { … }, bloqueará el objeto obj antes de ejecutar ese bloque.

5. ¿Qué es el borrado de tipos?

El borrado de tipos es un fenómeno JVM que significa que en tiempo de ejecución no se tiene conocimiento de los tipos de objetos genéricos, como List<Integer> (el compilador ve a todos los objetos Lista teniendo el mismo tipo, List<Object>).

6. ¿Cuándo y por qué son los getters y setters importantes?

Mientras que una clase avanzada Java puede tratar el tema, el concepto principal que hay que saber para las entrevistas es que los setters y getters pueden formar parte de interfaces y pueden esconder detalles de la implementación, de forma que no hay que hacer a las variables miembro públicas (lo que haría a tu clase peligrosamente frágil).

7. ¿Qué diferencias hay entre Map, Hashtable, HashMap, TreeMap, ConocurrentHashMap, LinkedHashMap?

  • Map es una interfaz con una correspondencia clave-valor

  • HashMap es un Map que utiliza una  hash table para su implementación

  • Hashtable es una versión sincronizada de HashMap

  • TreeMap usa un árbol para implementar un Map.

  • ConcurrentHashMap permite a varios hilos que lo accedan al mismo tiempo y de forma segura

  • LinkedHashMap conserva el orden de iteración de los objetos que fueron insertados (otros no proporcionan un orden de iteración fijo)

8. ¿Cuáles son las diferencias entre interfaces, clases abstractas, clases e instancias?

  • Las interfaces son básicamente una lista de métodos sin código ni variables miembro que deben ser implementados

  • Las clases abstractas no pueden ser instanciadas, pero pueden contener variables, métodos implementados o sin implementar..

  • Las clases contienen variables y sólo métodos implementados, y pueden ser instanciadas.

  • Las instancias (u objetos) son ejemplos específicos de una clase en particular.

9. Si necesitara proporcionar una GUI para su programa Java, ¿qué utilizaría?

Hay muchas opciones, desde aplicaciones web a aplicaciones locales. Normalmente, los entrevistadores se refieren a Swing ú otras herramientas de interfaz gráfica como esta.

10. ¿Cómo prueba usted su código?

Deberá hablar de su experiencia usando liberías como JUnit, Mockito, y Selenium. Aunque no tenga un gran conocimiento sobre pruebas, ser capaza de hablar sobre estas librerías es un buen primer paso.

El Desarrollo Orientado a Pruebas (TDD) es muy popular en este momento, y sería muy bueno que hablara de cualquier experiencia que tenga relacionada con ello.

Otros cursos que podrían interesarle:

Pero tenemos muchos más, ¡consulte nuestros cursos de Tecnología en Español!