Top 20 preguntas en entrevistas como desarrollador Spring Boot (+respuestas)

Cómo desarrollador he estado en múltiples entrevistas para el puesto de desarrollador de aplicaciones backend usando Spring o Spring Boot, además tengo otro grupo de amigos desarrolladores con los que comentado este tema y en base a ello he elaborado un top de las 20 preguntas comunes que hacen a la hora de una entrevista de este tipo. Hemos agregado las respuestas obviamente así te sirven de preparación. Al final puede llevarte una presentación para tu estudio offline.

Top de preguntas y respuestas que te realizarán en un entrevista para desarrollador Spring Boot

1 – ¿Cuál es la diferencia fundamental entre Spring & Spring Boot?

La respuesta a este pregunta se responde sola con el siguiente gráfico. En resumen Spring Boot es un proyecto de Spring con las características de la siguiente imagen.

Spring Boot y su relación con Spring

2 – ¿Qué es un bean?

  • Es una pieza de software que representa un objeto dentro de Spring.
  • Son manejados por el contenedor de Spring.
  • Tienen un ciclo de vida.
  • Son reusables.

3 – ¿Qué es el ámbito de un bean ?

  • Define el ciclo de vida y visibilidad del bean en el contexto.
  • Se define con la anotación @Scope.
  • Existen los siguientes Scope/ámbitos disponibles para un bean
  1. singleton (Por defecto y más usado)
  2. prototype
  3. request
  4. session
  5. application
  6. websocket

4- ¿Qué son los starters y cuál es su objetivo ?

  • Un starter es una utilidad que facilita la creación y configuración de aplicaciones.
  • Agregan dependencias necesarias para un objetivo y parámetros de configuración.

Ejemplos:

  • spring-boot-starter-web
  • spring-boot-starter-data-jpa

5- ¿Cuáles son los principales verbos HTTP y cómo se pueden implementan con Spring Boot ?

Un verbo HTTP se emplea para indicar una acción a la API, debajo se muestran los principales verbos y la anotación de Spring MVC que permite usarlos dentro de Spring Boot.

  • GET – @GetMapping
  • POST – @PostMapping
  • PUT – @PutMapping
  • DELETE – @DeteleMapping
  • PATCH – @PatchMapping

6- ¿ Qué diferencias existen entre JPA y Hibernate ?

  • Java Persistence API define una especificación o interfaces para manejo de persistencia.
  • Hibernate es una implementación particular de JPA (y es la usada por defecto en Spring Boot)

7- ¿ Qué es Spring Initializr ?

  • Es una plataforma online para generar un proyecto base se Spring Boot.
  • Se puede usar por la web directamente o desde los principales IDEs como STS o Intelij.

8- ¿ Qué diferencias existen entre @Repository, @Component, @Service & @Controller ?

  • No existen diferencias funcionales, solo semánticas.
  • Son anotaciones para marcar “clases” en Spring y que se crean beans a partir de ellas.

9- ¿ Explique la anotación @RestController ?

  • Facilita la creación de API REST usando Spring MVC.
  • Combina @Controller + @ResponseBody
  • Permita serializar cualquier respuesta de un controlador Spring MVC directamente a json o xml.

¿No te gusta leer? Hemos preparado esto en formato de vídeo si lo deseas ver. Aprovecha y suscríbete a nuestro canal 🙂

10- ¿ Cuál es la función de Spring AOP ?

  • AOP significa programación orientada a aspectos.
  • Permite crear “aspectos” en nuestras aplicaciones para ser usados de forma transversal.

Aprende más con este artículo: Spring AOP, conceptos y ejemplos en la capa transversal de las arquitecturas.

11- ¿ La anotación @Profile que función tiene y porque es importante ?

  • @Profile permite usar beans particular en dependencia del perfil activo en una aplicación Spring Boot.
  • Los perfiles permiten “instanciar” de forma particular una aplicación en dependencia de un escenario, por ejemplo: dev, qa, prod, etc.

12- ¿ Qué hace la anotación @SpringBootApplication internamente ?

  • Anotación principal de Spring Boot, ubicada por defecto en la clase principal de un proyecto Spring Boot.
  • Combina las anotaciones @Configuration, @EnableAutoConfiguration and @ComponentScan.

13- ¿ Qué patrones están presentes en Spring / Spring Boot, agregue algún ejemplo ?

Ejemplo:
Al crear un bean anotando una clase con @Service y scope por defecto usamos Singleton.

14- ¿ Para que se usa @Transactional ?

  • En BBDD una operación es “transactional” se mantiene el estado en un sistema consistente.
  • @Transactional permite ejecutar operaciones en Spring (métodos) en forma “todo o nada”.
  • Si algo sale mal durante la ejecución de una operación @Transaccional el sistema se *deja en su estado inicial.

15- ¿ Qué es la inyección de dependencias y como la implementa Spring ?

  • DI es un patrón para separar responsabilidades, evitando que una clase sea responsable de instanciar objetos de otra. Promueve el bajo acoplamiento.
  • Al arrancar Spring se crean los objetos (beans), y luego se “inyectan” donde son necesarios usando @Autowired.

16- Cuáles formas de inyección de dependencias que existen en Spring y cuál es la más adecuada ?

  • Inyección por atributo.
  • Inyección por setter.
  • Inyección por constructor (más adecuada, fomenta la fácil testeabilidad de las aplicaciones, es la recomendada).

17- ¿ Para que se usa @Value y que lenguaje usa la anotación para su función ?

Ejemplo:

@Value("${value.from.file}")
private String valueFromFile;

18- ¿ Cuál es el puerto por defecto de una aplicación Spring Boot y cómo podemos cambiarlo ?

  • Por defecto el puerto es 8080
  • Se cambia en la propiedad server.port del fichero de configuración.

19- ¿ Qué es Spring Actuator ?

  • Librería que proporciona herramientas de monitoreo y administración para un API REST.
  • Habilita varios endpoints para ser usados, ej: /beans, /health, /shutdown.
  • Permite ser extendida.

20- ¿Qué es Spring Cloud?

  • Spring Cloud es un proyecto basado en Spring Boot.
  • Implementa soluciones “production-ready” para el desarrollo de microservicios.

Algunos componentes son:

  • Spring Cloud Config.
  • Spring Cloud Gateway.

Esta influenciado por Netflix OSS.

¿Qué te pareció la lista?

Puedes descargar estas preguntas y respuestas en este formato de presentación para que te sea más fácil estudiar.

Espero te sea útil.