Cómo evaluar las habilidades de los desarrolladores de Java para encontrar lo mejor - guía para la contratación de personal de TI

Por 25 de febrero de 2016 #!31Mié, 21 Oct 2020 15:23:16 +0200p1631#31Mié, 21 Oct 2020 15:23:16 +0200p-3Europe/Warsaw3131Europe/Warsawx31 21pm31pm-31Mié, 21 Oct 2020 15:23:16 +0200p3Europe/Warsaw3131Europe/Warsawx312020Mié, 21 Oct 2020 15:23:16 +02002332310pmmiércoles=269#!31Mié, 21 Oct 2020 15:23:16 +0200pEurope/Warsaw10#octubre 21st, 2020#!31Mié, 21 Oct 2020 15:23:16 +0200p1631#/31Mié, 21 Oct 2020 15:23:16 +0200p-3Europe/Warsaw3131Europe/Warsawx31#!31Mié, 21 Oct 2020 15:23:16 +0200pEurope/Warsaw10# Reclutamiento de IT, Consejos de reclutamiento, Entrevista técnica
Java: preguntas de la entrevista a un ingeniero de software

Puede ser un problema serio si quieres contratar a un desarrollador de Java pero no tienes ni idea de qué buscar. Puedes buscar en el perfil de LinkedIn de un candidato o en un currículum todo lo que quieras. Si no puedes distinguir tu JPA de tu Gradel, no podrás saber si el candidato encaja bien en el puesto que quieres ocupar. Escribí este artículo para reunir toda la información que necesitas si eres un reclutador de IT que busca programadores con conocimientos de Java.

1. ¿Qué es Java?

Java es un lenguaje de programación compilado, orientado a objetos, similar en sintaxis a C++. Está pensado para que aplicación los desarrolladores "escribe una vez, corre en cualquier lugar", lo que significa que el código Java compilado puede correr en todas las plataformas que soportan Java sin necesidad de recompilarlo. Una aplicación escrita en Java tiene un muy buen rendimiento gracias al uso de un compilador Just-In-Time que analiza continuamente la velocidad del programa y optimiza los spots ejecutados con frecuencia. Otra ventaja clave de Java es la gestión automática de la memoria que permite a los desarrolladores escribir aplicaciones sin preocuparse explícitamente por la asignación de memoria y la distribución de la misma. A partir de 2020, fue el lenguaje de programación más popular probado por los empleadores. Java no se considera un lenguaje fácil de usar para los no programadores.

Java es a Javascript como el coche a la alfombra, así que no confundas estos dos lenguajes de programación.

2. ¿Qué es importante que el reclutador de IT sepa sobre Java?

Antes de entrar en detalles sobre cómo mostrar las habilidades de Java, permítanme compartir algunos conceptos básicos que les permitirán familiarizarse con esta tecnología.

Firstly, Java world changes often, so experience with framework gained 5 years ago is not valid anymore. Bear this in mind when you assess Java developer skills based on so far employment.

En segundo lugar, en el entorno de Java, el conocimiento de las herramientas y bibliotecas es más valioso que el conocimiento del propio lenguaje. Sin él, un programador ...escribirá todo por sí mismo desde cero y sólo perderá el tiempo. Si un desarrollador está familiarizado con las bibliotecas y marcos de Java, entonces puede utilizarlo como lego para hacer lo que necesitan y escribir código sólo donde sea necesario. Haciéndolo de esta manera su trabajo es mucho más eficiente.

Por último, pero no menos importante, sólo la experiencia comercial es importante. El conocimiento de Java de una universidad casi nunca es útil para la codificación de negocios. Así que a menos que reclutes para un nivel de entrada o junior posición que puede saltar la evaluación de las habilidades de Java basada únicamente en la educación y el grado universitario. En ese caso, lo más importante son los proyectos de codificación de la vida real del candidato, no tiene que ser uno comercial, puede ser un hobby o un proyecto de programación de código abierto.

Basic Java developer skills

  1.  Lenguaje Java
    - Colecciones
    - Corrientes y expresiones lambda
    - Concurrencia: piscinas de hilos
    - Cerraduras
    - Características del lenguaje moderno: registros, interruptor mejorado
  2. Marcos
    - Bota de Primavera 2
    - MVC/WebFlux de primavera para los APIs de REST
    - Hibernar y SQL
    - JUnit
    - Spock (requiere lenguaje Groovy))
  3. Herramientas
    - Maven y Gradle
    - IDE, por ejemplo, IntelliJ IDEA
    - Git
    - Docker
  4. Próximos pasos (seleccione algunos): (Kotlin, Groovy (para Spock), Programación reactiva (Reactor), Kubernetes, React o Angular 2+ para el front-end, desarrollo de Android)

3. ¿Cómo se verifican las habilidades de Java en la fase de selección?

La exploración es agotadora, ardua y toma mucho de su tiempo. Normalmente IT reclutadores recurrir a las siguientes técnicas de detección de la evaluación de las habilidades java basadas en el currículum mediante una entrevista o videollamadas a en línea pruebas de codificación.

A continuación encontrará algunos útiles y prácticos reclutamiento consejos sobre cómo verificar las habilidades de Java usando cada método.  

3.1. La selección técnica de las habilidades en Java basada en el currículum de los candidatos

La tecnología Java - un glosario básico de términos de Java para los reclutadores de IT

Seguro que toda la información que necesitas está en el currículum, sólo tienes que encontrar las correctas. Suena fácil, ¿verdad? Sin embargo, cuando empiezas a revisar el currículum, te encuentras con términos como Hibernate o JMX, y muy rápidamente te confundes si este es el candidato que estás buscando. Si eres un Tech Recruiter reclutando para un puesto en Java, entonces deberías al menos estar familiarizado con todos sus marcos de trabajo, herramientas de construcción, etc., para saber lo que estás buscando y ser capaz de hablar el mismo lenguaje con tus candidatos (o al menos entender los fundamentos de los que habla el candidato).

Por eso preparamos este glosario básico de Java, sólo echa un vistazo.

Glosario de Java para reclutadores técnicos
Componentes de Java EEJava Server Pages (JSP), Servlets, Enterprise Java Beans (EJB), JAX-RS, JAX-WS, Java Message Service (JMS)
Marcos Web JavaJava Server Faces (JSF), Spring MVC, Vaadin/GWT, Wicket, Play
ORMHibernar, Java Persistence API (JPA), EclipseLink, OpenJPA
Herramientas de construcción de JavaMaven, Gradle, Ant
Contenedores de aplicaciones JavaTomcat, JBoss/Wildfly, Undertow, Jetty, WebLogic, WebSphere
Herramientas de prueba de JavaJUnit, TestNG, Spock, Mockito, Pepino
Marcos de IOMarco de primavera, Guice, CDI

Ahora que sabes lo básico, podemos entrar en detalles. Si no eres una persona de tecnología, es fácil confundirse con los diferentes nombres y abreviaturas de la tecnología. Si el candidato declara que conoce el EJB, ¿significa que está familiarizado con Java EE? ¿O si el candidato conoce Maven 1 significa que también puede tratar con Maven 2? Mantén la calma, te ayudaremos. Continúe leyendo.

Los nombres más comunes de la tecnología Java que se usan indistintamente:

- JPA, Hibernación, Persistencia de Java, API de Persistencia de Java,

- Java EE, EJB, Enterprise Java Beans, Enterprise Java,

- JBoss, Wildfly.

Relaciones entre las respectivas versiones de la tecnología Java:   

- EJB 2.0 es totalmente diferente de EJB 3.0,

- Java EE 1.4 es totalmente diferente de Java EE 5,

- Java EE 7 es una versión mejorada de Java EE 6, que es una versión mejorada de Java EE 5,

- Primavera 2.0 o Primavera 3.0 similar a la Primavera 4.0,

- Acegi cambió su nombre a Spring Security,

- Maven 1 es totalmente diferente de Maven 2,

- Maven 2 es muy similar a Maven 3,

- Hibernación 4.x es muy similar a Hibernación 5.x,

- GWT 1.x es diferente de GWT 2.x,

- Struts 1 es totalmente diferente de Struts 2,

- JPA 2.x es una versión más rica de JPA 1.0.

También es valioso tener en cuenta las siguientes relaciones:

- Búsqueda de texto completo: Si alguien conoce a una de Lucene, Solr o ElasticSearch podrá ocuparse del resto.

- Mapeo de relación de objetos: Si alguien conoce a uno de Hibernate, EclipseLink, OpenJPA entonces podrá ocuparse del resto.

- Servicios de descanso: Si alguien conoce a uno de los MVC de primavera, JaxRS, Jersey, entonces podrá ocuparse del resto.

La importancia de un certificado de Java para evaluar las habilidades del desarrollador en Java

Los certificados de Java son generalmente apreciados por los empleadores. Sin embargo, la certificación rara vez es un requisito para un candidato. Sin embargo, como reclutador técnico, debe ser cauteloso al evaluar las habilidades de programación en Java basadas en los certificados, porque ninguno de ellos sirve como garantía de las capacidades del desarrollador.

Ocurre muy a menudo que un programador muy experimentado apenas aprueba el examen de certificación y el programador débil obtiene una buena puntuación en dicho examen. ¿Por qué es así? Estos certificados difícilmente verifican las habilidades prácticas. Normalmente requieren aprender de memoria cosas que un programador más experimentado encontraría rápidamente en la documentación o sería capaz de verificarlo. Con rápidamente me refiero a en varios segundos usando su IDE favorito (software que un programador usa para trabajar en las aplicaciones), que no está disponible durante el examen. Por cierto, no poder usar el IDE no tiene sentido porque a diario el programador utiliza muchas fuentes externas, como el IDE, para realizar su trabajo.

A continuación encontrará una lista de la certificación de Java dividida en 3 grupos

A. Los certificados prácticos de Java, que requieren experiencia práctica, garantizan un conocimiento profundo del tema

Certificados de primavera:

- Profesional de la primavera,

- Desarrollador de aplicaciones web de primavera,

- Especialista en integración de empresas.

B. Los certificados de Java útiles pueden servir como una prueba fiable de conocimiento

Oracle Maestro certificado, Java SE 6 - requiere un nivel bastante bueno de conocimientos de Java, pero sólo Java 1.6, que fue lanzado hace 10 años (2006),

- Experto certificado por Oracle, desarrollador de servicios web de Java EE 6 - requiere conocimientos sólidos pero no verifica la experiencia comercial, por lo que no puede servir como garantía de éxito del proyecto,

- Experto certificado por Oracle, desarrollador de la API de persistencia de Java EE 6 - requiere conocimientos sólidos pero no verifica la experiencia comercial, por lo que no puede servir como garantía de éxito del proyecto,

- Oracle Certified Master, Java EE 6 Enterprise Architect - un candidato entiende y puede aplicar Java a nivel de arquitectura,

- IBM WebSphere - requiere un sólido conocimiento del producto pero no verifica la experiencia comercial, por lo que no puede servir como garantía de éxito del proyecto.

C. Certificados de Java - conocimientos teóricos, poco utilizados desde una perspectiva empresarial

- Asociado certificado de Oracle, Java SE,

- Profesional certificado por Oracle, Java SE,

- Experto certificado por Oracle, Java EE 6 JavaServer Faces Developer,

- Experto certificado por Oracle, desarrollador de componentes web de Java EE 6,

- Experto certificado de Oracle, desarrollador de Java EE 6 Enterprise JavaBeans.

Otra información en un currículum que puede mostrar las habilidades en Java de un desarrollador

La participación en proyectos de código abierto es la información que vale la pena tener en cuenta. Si el candidato contribuye a proyectos conocidos y de gran envergadura, puede ser de gran valor. También es importante si un programador tiene experiencia en proyectos de TI similares a los que estamos buscando un empleado. Crear cosas nuevas requiere un conjunto diferente de habilidades y atributos que mantenerlas.

3.2. Proyección técnica de los conocimientos de Java durante una entrevista técnica telefónica/video

Como es bastante difícil sacar conclusiones fiables sobre los conocimientos de programación de un candidato a partir del propio currículum, los reclutadores de TI suelen realizar una entrevista telefónica o en vídeo. Este tipo de entrevistas ofrecen la oportunidad de hacer preguntas sobre sus habilidades en Java. En muchas empresas, este tipo de entrevista técnica por teléfono o vídeo es la base para tomar la decisión de invitar a alguien a una entrevista técnica in situ con un equipo de TI o no, por lo que vale la pena hacer las preguntas técnicas adecuadas.

Como las preguntas en sí mismas pueden variar según el puesto para el que se esté reclutando y las habilidades específicas que se quieran verificar, en base a mi experiencia recomendaría lo siguiente general preguntas para saber más sobre las habilidades del candidato en Java:

A. Pregunta de la entrevista de Java sobre la experiencia del desarrollador

  • Q1: ¿Con qué tecnologías enumeradas en su currículum, tuvo usted experiencia comercial en los últimos 2 años? ¿Cuáles eran sus responsabilidades? ¿Cuál fue su mayor logro?
  • Por qué preguntarle a Q1: Haciendo esta pregunta, puede averiguar más sobre la experiencia actualizada en Java del candidato, sus responsabilidades y logros. De esta forma, conocerá mejor a su candidato.

B. Pregunta de la entrevista de Java sobre los conocimientos y opiniones del desarrollador

  • Q2: ¿Qué bibliotecas de código abierto de Java considera que son valiosas y por qué?
  • Por qué preguntarle a Q2: Esta pregunta permite al candidato demostrar su conocimiento del ecosistema de Java. Además, el candidato puede señalar lo que tiene en cuenta al elegir una determinada tecnología. Como preguntas de seguimiento también puede preguntar qué ventajas, en su opinión, tienen las soluciones comerciales sobre el código abierto y viceversa. Esto muestra cómo piensa el candidato.
  • Q3: Me he dado cuenta de que has incluido el marco X en tu currículum. ¿Qué opina al respecto? ¿Es una buena elección?
  • Por qué preguntarle a Q3: Una pregunta tan abierta permite a un candidato demostrar sus conocimientos si los tiene. También puede jugar al abogado del diablo basado en sus respuestas "Pero ¿por qué no usar el marco Y para eso?". Así puedes ver cómo los candidatos eligen una tecnología, justifican sus elecciones y si sus opiniones coinciden con las de tus equipos informáticos.

C. Pregunta de la entrevista de Java sobre la toma de decisiones del desarrollador en relación con la tecnología Java

  • Q4: ¿En qué etapa se unió a los proyectos recientes? ¿Participó en la elección de la tecnología o en la configuración del proyecto? En caso afirmativo, ¿qué tecnología eligió o recomendó para el proyecto y por qué?
  • Por qué preguntarle a Q4: Estas preguntas muestran no sólo cómo un candidato toma decisiones en relación con la tecnología, sino también si fueron incluidas en la toma de decisiones. Especialmente importante si estás buscando a alguien con experiencia.

D. Pregunta de comportamiento para el desarrollador de Java

  • Q5: Piensa en la decisión del proyecto de programación que tomaste y que fue un fracaso. ¿Por qué crees que fue un error? ¿Por qué sucedió? ¿Podría hacerse algo diferente para convertirlo en un éxito? ¿Qué medidas tomaste para mejorar la situación? ¿Qué aprendiste de esta experiencia?
  • Por qué preguntarle a Q5: Este tipo de preguntas le ayudará a averiguar cómo percibe el candidato sus decisiones, saca conclusiones y cuánto aprende de su experiencia anterior.

3.3. Technical screening of Java developer skills with online coding tests

Online coding tests can be a great way to screen Java developer skills. Below you will find informati abouton how you can use programming tests and which ones to choose.

Pruebas de codificación de Java en línea - el método principal o adicional para la selección

En algunas empresas se utilizan pruebas de programación como método adicional para seleccionar a los candidatos, después de que se analiza el currículum y se realiza una entrevista por teléfono o vídeo. Sin embargo, cada vez más empresas recurren a las pruebas de programación como primer método de selección de los conocimientos de programación. Lo que quiero decir es que la compañía invita a todos los candidatos que solicitan un determinado puesto a hacer una prueba. De esta manera, por un lado, el reclutador de TI dedica tiempo sólo a los candidatos que aprobaron el examen para demostrar que tienen conocimientos de programación en Java y, por otro lado, dicho candidato muestra más compromiso, ya que ya ha dedicado su tiempo al proceso de reclutamiento y, por lo tanto, es más probable que participe en todas sus etapas.

Prueba de codificación en línea de Java, ¿cuál elegir?

Pero para que la pantalla sea precisa, las pruebas de codificación tienen que ser las correctas.

Hay muchas pruebas de codificación en línea de Java en el mercado, pero normalmente, verifican los conocimientos del candidato en lugar de las habilidades de programación y las capacidades para resolver problemas de codificación de la vida real. Por eso a muchos programadores experimentados no les gusta ese tipo de evaluación y, lo que es más, no son capaces de obtener una buena puntuación ya que no pueden mostrar su experiencia y habilidades en la resolución de problemas de programación de la vida real.

Entonces, ¿qué características deberían tener tales pruebas de codificación? Abajo encontrarás mis 5 características más importantes que deberías buscar:

  1. Java programming tests should verify not only Java developer skills as far as technology in general is concerned but also frameworks and libraries
  2. Las pruebas de codificación de Java deberían consistir en un par de tareas, no sólo pruebas de elección múltiple, pero sobre todo, tareas de programación cuya dificultad debe corresponder a las responsabilidades que tendrán los candidatos si consiguen el trabajo (las pruebas no deben basarse en tareas algorítmicas ya que así no se puede verificar si un candidato puede resolver los desafíos de codificación de la vida real).
  3. Preferiblemente, la tarea de programación en Java debe ser preparada en base al código de la compañía, ya que es la mejor manera de imitar los desafíos que el candidato tendrá una vez que consiga el trabajo.
  4. No tiene sentido prohibir al programador el uso de fuentes externas, la mejor manera es crearles un entorno como el que tienen en el trabajo, por lo que el examen de libro abierto es mucho más apropiado. Además, el candidato debe ser capaz de usar su IDE preferido, tal como lo hace a diario.
  5. La prueba de codificación también puede incluir una tarea con desafíos de revisión de código para probar las habilidades de Java. Da información muy precisa sobre la experiencia del candidato, su enfoque de la calidad del código y la eficiencia de la depuración y la búsqueda de trampas. Tal evaluación debería ser obligatoria al reclutar a Java senior desarrolladores.

4. Pruebas de evaluación de la codificación Java en línea de DevSkiller listo para usar

En DevSkiller damos a las empresas una infraestructura que les permite utilizar su propia base de código, proyectos informáticos completos utilizando marcos y bibliotecas, para probar a los programadores en línea. Sin embargo, también tenemos algunas pruebas de codificación de Java listas para usar, que puede utilizar en su campaña de reclutamiento.

Java
JUNIOR
Habilidades probadas
Duración
35 minutos como máximo.
Evaluación
Automático
Resumen de la prueba

Preguntas de elección

evaluando el conocimiento de Java, Primavera

Tarea de programación - Nivel: Fácil

Java | Kafka | Flight tickets reservations - Implement the service for validating data quality which is received from the travel agencies.

Bota de Primavera
JUNIOR
Habilidades probadas
Duración
54 minutos como máximo.
Evaluación
Automático
Resumen de la prueba

Preguntas de elección

evaluando el conocimiento de Java, Bota de Primavera

Lagunas en el código

evaluando el conocimiento de Java

Tarea de programación - Nivel: Fácil

Java | Spring Boot | Estación de Bicicletas HATEOAS - Termina la implementación de HATEOAS al REST API.

Java
JUNIOR
Habilidades probadas
Duración
120 minutos como máximo.
Evaluación
Automático
Resumen de la prueba

Tarea de programación de Front End - Nivel: Fácil

JavaScript | TypeScript | Aplicación de facturas - frontend - Implementa la parte del frontend para fusionar y agregar los datos de la factura con los tipos de cambio de la moneda.

Tarea de programación del Back End - Nivel: Fácil

Java | Aplicación de facturación - backend - Implementa la parte del backend para buscar y agregar los datos de la factura con el servicio y los métodos DAO.

Java
JUNIOR
Habilidades probadas
Duración
29 minutos como máximo.
Evaluación
Automático
Resumen de la prueba

Preguntas de elección

evaluando el conocimiento de Java

Lagunas en el código

evaluando el conocimiento de Java

Tarea de programación - Nivel: Fácil

Java | GetWordFromText and Reverse - Implement two methods which will be returning the words from the text and reversing them.

Java
JUNIOR
Habilidades probadas
Duración
35 minutos como máximo.
Evaluación
Automático
Resumen de la prueba

Preguntas de elección

evaluando el conocimiento de Java

Tarea de programación - Nivel: Fácil

Java | CRUD simple usando HttpClient - Implementa еasу operaciones básicas de CRUD, usando Java 11 HttpClient.

QA
SENIOR
Habilidades probadas
Duración
49 minutos como máximo.
Evaluación
Automático
Resumen de la prueba

Preguntas de elección

evaluando el conocimiento de QA, Pruebas de la unidad, Prueba manual, Prueba

Tarea de programación - Nivel: Duro

QA | Java, Selenium | Automatización de la prueba de autenticación multifactorial - Automatizar el mecanismo de autenticación en Selenium.

Selenio
MIDDLE
Habilidades probadas
Duración
40 minutos como máximo.
Evaluación
Automático
Resumen de la prueba

Lagunas en el código

evaluando el conocimiento de Java, QA, Selenio

Tarea de programación - Nivel: Medio

QA | Java, Selenio | Extracción de texto y enlaces - El objetivo de esta tarea es probar las habilidades del candidato para recuperar el texto de la página. Las tareas incluyen esperar a que un elemento con texto sea visible, así como elementos invisibles.

Java
JUNIOR
Habilidades probadas
Duración
34 minutos como máximo.
Evaluación
Automático
Resumen de la prueba

Preguntas de elección

evaluando el conocimiento de Java, Bota de Primavera

Tarea de programación - Nivel: Fácil

Java | Spring Boot, Kotlin | Ordena el microservicio - Implementa una columna vertebral del miscroservicio RESTful.

Selenio
JUNIOR
Habilidades probadas
Duración
35 minutos como máximo.
Evaluación
Automático
Resumen de la prueba

Lagunas en el código

evaluando el conocimiento de Java, QA, Selenio

Tarea de programación - Nivel: Fácil

Java | Selenio | Descargas y colecciones - Implementar dos métodos en la clase SeleniumExecutor, que debería utilizar el Selenium WebDriver para realizar las siguientes tareas en la página de la src/test/resources/__files/index.html.

Selenio
JUNIOR
Habilidades probadas
Duración
43 minutos como máximo.
Evaluación
Automático
Resumen de la prueba

Lagunas en el código

evaluando el conocimiento de Java, Selenio

Tarea de programación - Nivel: Fácil

Java | Selenium | Autenticación en el servicio web - Implementar cuatro métodos en la clase LoginPage marcados con la implementación //TODO. Todos ellos deben usar el Selenium WebDriver para interactuar con la página.