Pregunta de entrevista para Desarrollador Java

¿Maven o Gradle para un servicio nuevo, y cómo mantienes builds reproducibles?

Qué evalúa el entrevistador, cómo estructurar tu respuesta y un ejemplo hablado que puedes adaptar.

Respuesta rápida

Cualquiera es defendible: Maven da un build declarativo y muy convencional, fácil de leer para cualquiera, mientras que Gradle ofrece builds incrementales y una caché de build que compensan en proyectos multimódulo grandes. Para la reproducibilidad, fija versiones exactas de dependencias, usa un bill of materials para librerías relacionadas, evita rangos de versión y snapshots en releases, y ejecuta el build en un contenedor con un toolchain fijo para que la versión del JDK no sea la que haya en la máquina.

Por qué lo preguntan los entrevistadores

Al entrevistador le interesa menos tu preferencia que si tienes opiniones sobre la higiene del build: gestión de dependencias, reproducibilidad y tiempos de build. Mencionar el fijado de versiones, un bill of materials y el escaneo de dependencias demuestra que tratas el build como infraestructura de producción. Los builds largos y la resolución de dependencias inestable son un coste real para el equipo, y esta pregunta descubre si te das cuenta.

Cómo estructurar tu respuesta

  • Da una comparación corta y una elección por defecto con su motivo.
  • Cubre la gestión de versiones de dependencias y un bill of materials.
  • Explica cómo haces builds reproducibles entre máquinas.
  • Menciona la velocidad del build y las comprobaciones de la cadena de suministro.

Ejemplo de respuesta

Ejemplo hablado, en primera persona

Para un solo servicio suelo tirar de Maven, porque el build acaba siendo algo que cualquiera puede leer sin aprender un lenguaje propio del proyecto, y el parent de Spring Boot se encarga de casi todo. Para un repositorio multimódulo grande donde el tiempo de build es un impuesto diario prefiero Gradle, ya que los builds incrementales y la caché de build cambian de verdad el ciclo de retroalimentación. Sobre la reproducibilidad, las reglas son las mismas en ambos casos: versiones exactas, sin rangos, sin dependencias snapshot en nada que se publique, y un bill of materials para grupos de librerías, así actualizo una familia entera en vez de mezclar versiones y llevarme un error raro en ejecución. Fijo el JDK con un toolchain para que el build no dependa de lo que haya instalado en el portátil de alguien, y CI construye en un contenedor. También quiero el árbol de dependencias revisado en CI, tanto por vulnerabilidades como por subidas transitivas accidentales, ya que el incidente clásico es un salto de versión menor llegando por una dependencia transitiva y cambiando un comportamiento que nadie eligió.

¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.

Mira cómo funciona

Preguntas de seguimiento que puedes esperar

  • ¿Cómo resuelves un conflicto entre dos versiones transitivas de una librería?
  • ¿Cómo recortarías un build de diez minutos?
  • ¿Cuál es tu política para actualizar dependencias con vulnerabilidades conocidas?

Más preguntas para Desarrollador Java

Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.

Predecir mis preguntas

Ensaya las preguntas difíciles antes de que te las hagan

Practica con un copiloto en vivo y entra preparado. Un Session Pass de $29 te lleva a través de la entrevista sin suscripción y sin ataduras.

Consigue GhostPilot