Preguntas frecuentes en entrevista de Spring

¿Qué es Spring?

Es el framework más popular de Java, tiene una comunidad enorme, es usado por grandes compañías – como Netflix – y posee una estructura modular y flexible. Contiene actualmente cerca de treinta subproyectos; algunos de los más populares son:

  • Spring Framework: permite crear aplicaciones empresariales; es transversal ya que los demás proyectos de Spring también los usan.
  • Spring Boot: permite crear aplicaciones autoconfigurables y autocontenidas.
  • Spring Data: permite gestionar e integrar bases de datos con nuestras aplicaciones; tiene otros subproyectos como Spring Data Mongodb, Spring Data Cassandra, Spring Data JPA.
  • Spring Security: permite gestionar la autenticación y autorización.

¿Cuál es la diferencia entre arquitectura monolítica y arquitectura de microservicios?

En una arquitectura monolítica, una aplicación es entregada como un artefacto único de software para ser lanzado (deployable). Toda la interfaz gráfica (UI), capa del negocio, capa lógica y capa de acceso a la base de datos son empaquetadas como una sola aplicación para ser lanzada en un servidor de aplicación. Esto se muestra en la siguiente figura.

Figura 1. Aplicación monolítica, donde todos los tipos de usuarios trabajan sobre esta.

Un microservicio es pequeño, poco acoplado y es distribuido. Los microservicios permites tomar una gran aplicación y descomponerla en componentes fáciles de manejar con responsabilidades bien definidas. Los microservicios ayudan a descomponer y desagregar la funcionalidad de las aplicaciones así que ellas son independientes una de otra. Por ejemplo, la siguiente figura muestra la descomposición de la figura 1.

Figura 2. Descomposición en microservicios.

¿Qué gestores de dependencias se usan con Spring?

Maven o Gradle.

¿Que servidores embebidos usa?

Tomcat (por defecto), Jetty o Undertow.

¿Qué es una aplicación autocontenida?

Un servidor de aplicaciones contiene varias aplicaciones y su configuración, mientras una aplicación autocontenida tiene su propio servidor. Spring Initializr es el sitio oficial para generar una aplicación autocontenida en Spring.

Anotaciones comunes:

  • @SpringBootApplication: indica qué clase gestiona la aplicación (similar al método main)
  • @RestController: indica a una clase que sera controlador.
  • @RequestMapping(“/”): bajo que path va a responder una clase.
  • @GetMapping(“/”): bajo que path va a responder un método de una clase con @RequestMapping.

Archivos importantes:

  • application.properties, application.yml (o linea de comandos): se agregan las configuraciones (variables) para que se acomoden en nuestro entorno. Por ejemplo, modificar el puerto por el que se ejecuta, contextpath de la aplicación, etc. Además permite crear perfiles (con propiedades) para desarrollo, producción, etc.

¿Cómo se puede estructurar el proyecto de Spring?

Una arquitectura muy conocida es la arquitectura orientada al dominio.

¿Diferencia entre REST y API RESTful?

REST (acrónimo de Representational State Transfer o transferencia de estado representacional) es una arquitectura de software enfocado en el intercambio de recursos y basado en HTTP.

Una API RESTful es una API diseñada alrededor de los conceptos de REST:

  • Recurso: todo dentro de una API RESTful debe ser un recurso.
  • URI: los recursos en REST siempre se manipulan a partir de la URI, identificadores universales de recursos.
  • Acción: todas las peticiones a tu API RESTful deben estar asociadas a uno de los verbos de HTTP; GET para obtener un recurso, POST para escribir un recurso, PUT para modificar un recurso y DELETE para borrarlo.

¿Cuál es el flujo de rest?

  1. Un cliente realiza un petición al servidor.
  2. El servidor procesa la petición y genera la respuesta.
  3. Si el servidor no tiene el recurso solicitado, lo pide a otro servidor con el mismo protocolo (HTTP) y le enviá el recurso al servidor original.
  4. El servidor envía el recurso mediante un protocolo y lo recibe el cliente.

¿Qué es un bean?

En Spring, los objetos que forman parte esencial de la aplicación y que son administrados por el contenedor Spring IoC se denominan beans. Un bean es un objeto que es instanciado, ensamblado y administrado por un contenedor Spring IoC.

¿Cuál es la diferencia entre REST y SOAP?

Múltiples protocolos pueden ser usados para enviar y recibir datos basados en microservicios con HTTP. JSON ha emergido como estándar por varias razones.

JSON comparado con el protocolo SOAP (Simple Object Access) basado en XML. Primero, es extremadamente ligero para expresar datos sin tener mucho contexto. Segundo, es fácil de consumir por una persona; en otras palabras, un desarrollador puede fácilmente encontrar donde puede ocurrir un problema. Tercero, JSON es el protocolo de serialización predeterminado que se utiliza en JavaScript.

REST usa principalmente JSON pero admite otros formatos, mientras SOAP solo permite XML.

¿Qué es Spring Security?

Leer más…

¿Cómo construir una API con Spring?

Leer más…

¿Qué es Spring Data?

Leer más

Comentarios