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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

SACAViX Tech Blog