WorksheetsRepaso NestJS
Total questions: 16
Worksheet time: 13mins
¿Qué beneficios trae un ORM a una aplicación?
Convierte automáticamente cualquier DTO en entidad sin configuración.
Elimina la necesidad de tener un motor de base de datos.
Hace que la aplicación nunca tenga errores en base de datos.
Permite trabajar con la DB sin necesidad de acoplar tú código.
¿Cuál de estas combinaciones es CORRECTA?
Entidad y DTO son lo mismo, la Interface es opcional
Entidad = persistencia y ciclo de vida | DTO = transferencia de datos | Interface = contrato de tipos en tiempo de compilación
Entidad = transporte de datos | DTO = base de datos | Interface = validación automática
Entidad = objeto en memoria | DTO = tabla real en la BD | Interface = esquema global
¿Cuál es la relación entre un Controlador y un Servicio en NestJS?
El Controlador delega la lógica de negocio al Servicio.
El Servicio depende siempre del Controlador.
Son equivalentes y se usan de la misma forma.
El Controlador contiene la lógica de negocio y el Servicio maneja las rutas
¿Qué hace un Queue en BullMQ dentro de una aplicación NestJS?
Sirve como registro de logs de la app.
Encola trabajos para que un worker los ejecute de forma asíncrona.
Se usa para enviar eventos de WebSocket.
Procesa los trabajos directamente dentro del controlador.
¿Cuál es un caso ideal para implementar caché en el servidor usando Redis?
Endpoints que usan WebSockets.
Endpoints con alta concurrencia y datos sensibles por usuario.
Endpoints que escriben datos en base de datos.
Endpoints con datos poco cambiantes y muchas lecturas, como listados o catálogos.
¿Cuál es la principal diferencia entre realizar un deploy manual y uno usando Docker?
Con Docker el código se sube directamente al servidor sin necesidad de archivos adicionales.
Con Docker la aplicación se ejecuta dentro de un contenedor aislado y reproducible, mientras que en un deploy manual depende del entorno del servidor.
El deploy manual siempre es más seguro y estable que con Docker.
Docker solo sirve para correr bases de datos, no para hacer deploys de aplicaciones.
¿Cuál es la diferencia principal entre codificar y encriptar datos?
Codificar garantiza que solo el destinatario pueda leer el mensaje
Encriptar es más rápido pero menos seguro que codificar.
Codificar transforma los datos a otro formato para compatibilidad o transmisión, mientras que encriptar busca proteger la información.
Ambas significan exactamente lo mismo
¿Cuándo usarías bcrypt y cuándo AES?
Bcrypt para cifrar datos temporales y AES para contraseñas.
AES solo se usa en APIs públicas.
Ambos sirven para hacer hashing reversible.
Bcrypt para hash de contraseñas, AES para encriptar datos que luego deban recuperarse.
¿Qué hace realmente un hash al guardar una contraseña en una base de datos?
Genera un hash irreversible con una sal (salt) para evitar ataques por diccionario o rainbow tables.
Encripta la contraseña para que pueda ser desencriptada al iniciar sesión.
Codifica la contraseña en Base64.
La guarda en texto plano dentro del archivo .env.
¿Cuál es el objetivo principal de las pruebas unitarias?
Medir el rendimiento en base de datos.
Verificar que una parte pequeña e independiente del código funcione correctamente.
Validar el despliegue de la app en producción.
Probar la interacción entre múltiples módulos de la aplicación.
¿Cuál es la función adecuada de cada tipo de documentación dentro de un proyecto NestJS?
Swagger documenta la arquitectura interna, Compodoc genera ejemplos de uso y el README describe los endpoints.
Swagger se usa solo para probar controladores, Compodoc para validar DTOs y README para documentar el código fuente.
Swagger documenta la API, Compodoc documenta el código y las dependencias, y el README describe el propósito, instalación y uso general del proyecto.
Los tres cumplen la misma función, pero en diferentes formatos (Markdown, JSON y HTML).
¿Cuál de las siguientes opciones representa correctamente la estructura modular de NestJS?
Controladores, routers y entidades.
Módulos, controladores y proveedores (services).
Stores, reducers y actions
Repositorios, listeners y observables
¿Qué decorador se usa para recibir parámetros en una ruta como /users/:id?
@Param()
@Body()
@Query()
@Headers()
¿Cuál es la función principal de un Guard?
Transformar la respuesta antes de enviarla.
Validar los DTOs.
Interceptar errores.
Determinar si una petición puede continuar o debe ser rechazada (autorización).
¿Qué hace el decorador @UseGuards(AuthGuard('jwt'))?
Cifra los datos del cuerpo de la petición.
Genera un token JWT.
Protege una ruta usando un guard basado en JWT.
Define el tiempo de expiración del token.
¿Qué función cumple ConfigModule en NestJS?
Reemplaza al módulo HttpModule.
Permite manejar variables de entorno y configuraciones globales del proyecto.
Sirve como ORM para conectar bases de datos.
Genera logs automáticos de cada petición.
