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.
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
- singleton (Por defecto y más usado)
- prototype
- request
- session
- application
- 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 ?
- Creacional: Singleton
- Estructural: Proxy (Aprende más sobre este patrón acá: Patrón Proxy, como lo hace Spring framework )
- Comportamiento: Cache, Template.
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 ?
- @Value permite leer configuraciones y colocarlas en la propiedad anotada.
- Usa el lenguaje SpEL. Puedes aprender más sobre SpEL acá: SpEL, lenguaje de expresiones de Spring Framework
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?
Espero te sea útil.