Preguntas para Entrevistas de Desarrollador Backend Junior (Node.js): Guía Completa

Milad Bonakdar
Autor
Domina el desarrollo backend con Node.js con 35 preguntas esenciales para entrevistas que cubren los fundamentos de JavaScript, la programación asíncrona, Express.js, bases de datos, APIs, seguridad y más. Preparación perfecta para entrevistas de desarrollador backend junior.
Introducción
Esta guía exhaustiva contiene 35 preguntas de entrevista cuidadosamente seleccionadas que cubren los fundamentos del desarrollo backend con Node.js. Estas son las preguntas que los desarrolladores backend junior realmente encuentran en las entrevistas. Cada pregunta incluye una respuesta completa, una evaluación de rareza y una calificación de dificultad basada en el análisis de cientos de entrevistas reales de las principales empresas tecnológicas y startups.
Ya sea que te estés preparando para tu primer rol de backend o haciendo la transición desde el desarrollo frontend, esta guía cubre todo, desde los fundamentos de JavaScript hasta el diseño de API, la gestión de bases de datos, las mejores prácticas de seguridad y las estrategias de implementación.
Fundamentos de JavaScript (8 preguntas)
1. Explica la diferencia entre var, let y const en JavaScript
Respuesta:
var: Ámbito de función, elevado e inicializado conundefined, se puede redeclarar en el mismo ámbito, en gran parte obsoleto en el código moderno.let: Ámbito de bloque, elevado pero permanece en la Zona Muerta Temporal (TDZ) hasta la declaración, no se puede redeclarar en el mismo ámbito, se puede reasignar.const: Ámbito de bloque, elevado pero en TDZ, debe inicializarse en la declaración, no se puede reasignar (pero el contenido de objetos/arrays se puede mutar).
Ejemplo:
Mejor práctica: Utiliza const de forma predeterminada, let cuando necesites reasignar, nunca uses var en JavaScript moderno.
Rareza: Común Dificultad: Fácil
2. ¿Qué son los closures y proporciona un ejemplo práctico en Node.js?
Respuesta: Un closure se produce cuando una función interna tiene acceso a las variables del ámbito de su función externa (envolvente), incluso después de que la función externa haya regresado. La función interna "se cierra sobre" estas variables.
Ejemplo práctico de Node.js:
Beneficios:
- Privacidad de datos (secretKey no se puede acceder directamente)
- Fábricas de funciones
- Implementación del patrón de módulo
- Mantener el estado en operaciones asíncronas
Rareza: Común Dificultad: Media
3. Explica la palabra clave this y cómo difiere en las funciones de flecha
Respuesta: this se refiere al contexto de ejecución. Su valor depende de CÓMO se llama a la función.
Funciones regulares:
Funciones de flecha:
Diferencia clave: Las funciones de flecha no tienen su propio this; lo heredan del ámbito envolvente.
Rareza: Común Dificultad: Media
4. ¿Qué son las Promesas y cómo difieren de los callbacks?
Respuesta: Una Promesa representa la eventual finalización (o fallo) de una operación asíncrona.
Patrón de callback (callback hell):
Patrón de Promesa:
Beneficios:
- Evita el callback hell
- Mejor manejo de errores con
.catch() - Operaciones encadenables
- Puede usar
Promise.all()para operaciones paralelas
Rareza: Común Dificultad: Fácil-Media
5. ¿Qué es async/await y cómo mejora la legibilidad del código?
Respuesta: async/await es azúcar sintáctico construido sobre Promesas que hace que el código asíncrono se vea y se comporte más como código síncrono.
Ejemplo:
Puntos clave:
- La función
asyncsiempre devuelve una Promesa awaitpausa la ejecución hasta que la Promesa se resuelva- Usa
try/catchpara el manejo de errores - Hace que las operaciones secuenciales sean más claras
Rareza: Común Dificultad: Media
6. Explica la desestructuración para objetos y arrays
Respuesta: La desestructuración extrae valores de arrays o propiedades de objetos en variables distintas.
Desestructuración de arrays:
Desestructuración de objetos:
Parámetros de función:
Rareza: Común Dificultad: Fácil-Media
7. ¿Qué es el operador spread y los parámetros rest?
Respuesta:
Operador spread (...) - Expande iterables:
Parámetros rest (...) - Recopila múltiples elementos:
Diferencia clave: Spread expande, rest recopila.
Rareza: Común Dificultad: Fácil-Media
8. Explica los métodos comunes de array: map, filter, reduce, forEach
Respuesta:
map - Transforma cada elemento, devuelve un nuevo array:
filter - Conserva los elementos que coinciden con la condición:
reduce - Reduce a un solo valor:
forEach - Itera sin devolver un nuevo array:
Rareza: Común Dificultad: Fácil
Fundamentos de Node.js (7 preguntas)
9. ¿Qué es Node.js y cómo difiere de los lenguajes tradicionales del lado del servidor?
Respuesta: Node.js es un entorno de ejecución de JavaScript construido sobre el motor V8 de Chrome que permite que JavaScript se ejecute en el lado del servidor.
Diferencias clave:
- Bucle de eventos de un solo hilo: Utiliza un modelo de E/S no bloqueante frente a E/S bloqueante de múltiples hilos
- Asíncrono de forma predeterminada: Las operaciones no bloquean el hilo principal
- JavaScript en todas partes: Mismo lenguaje para frontend y backend
- Ecosistema NPM: El registro de paquetes más grande del mundo
- Ejecución rápida: El motor V8 compila JavaScript en código máquina nativo
Cuándo usar Node.js:
- Aplicaciones en tiempo real (chat, juegos)
- Servidores API
- Microservicios
- Aplicaciones de transmisión de datos
- Aplicaciones con uso intensivo de E/S
Cuándo NO usar:
- Tareas intensivas en CPU (procesamiento de imágenes, codificación de video)
- Aplicaciones que requieren cálculos complejos
Rareza: Común Dificultad: Fácil-Media
10. Explica el bucle de eventos en Node.js
Respuesta: El bucle de eventos es el mecanismo que permite a Node.js realizar operaciones de E/S no bloqueantes a pesar de ser de un solo hilo.
Cómo funciona:
- Pila de llamadas: Ejecuta código síncrono (LIFO)
- API de Node: Maneja operaciones asíncronas (fs, http, timers)
- Cola de callbacks (Macrotareas): Contiene callbacks de las API de Node
- Cola de microtareas: Contiene callbacks de Promesas (mayor prioridad)
- Bucle de eventos: Mueve tareas de las colas a la pila de llamadas cuando la pila está vacía
Orden de ejecución:
Fases del bucle de eventos:
- Temporizadores (setTimeout, setInterval)
- Callbacks pendientes
- Inactivo, preparar
- Encuesta (obtener nuevos eventos de E/S)
- Comprobar (callbacks de setImmediate)
- Callbacks de cierre
Rareza: Común Dificultad: Difícil
11. ¿Cuál es la diferencia entre código bloqueante y no bloqueante?
Respuesta:
Código bloqueante - Detiene la ejecución hasta que la operación se completa:
Código no bloqueante - Continúa la ejecución, maneja el resultado a través de un callback:
Por qué es importante no bloquear:
- El servidor puede manejar múltiples solicitudes simultáneamente
- Mejor utilización de los recursos
- Rendimiento mejorado para operaciones de E/S
- Escalabilidad
Rareza: Común Dificultad: Fácil-Media
12. ¿Qué son los módulos de Node.js y cómo funciona el sistema de módulos?
Respuesta: Node.js utiliza el sistema de módulos CommonJS (aunque también se admiten los módulos ES).
CommonJS (require/module.exports):
Módulos ES (import/export):
Tipos de módulos:
- Módulos centrales: Integrados (fs, http, path)
- Módulos locales: Tus propios archivos
- Módulos de terceros: Instalados a través de npm
Caché de módulos: Los módulos se almacenan en caché después de la primera solicitud, por lo que las solicitudes posteriores devuelven la misma instancia.
Rareza: Común Dificultad: Fácil
13. Explica la diferencia entre process.nextTick() y setImmediate()
Respuesta:
process.nextTick() - Ejecuta el callback en la fase actual, antes que cualquier otra operación asíncrona:
setImmediate() - Ejecuta el callback en la siguiente iteración del bucle de eventos:
Orden de prioridad:
- Código síncrono
- Callbacks de
process.nextTick() - Callbacks de Promesa (microtareas)
setTimeout(0)/setImmediate()(macrotareas)
Casos de uso:
nextTick: Asegura que el callback se ejecute antes que otras operaciones asíncronassetImmediate: Aplaza la ejecución a la siguiente iteración del bucle de eventos
Rareza: Poco común Dificultad: Media-Difícil
14. ¿Qué es el Objeto Global en Node.js?
Respuesta: El objeto global en Node.js es similar al objeto window en los navegadores, pero se llama global.
Propiedades globales:
Globales comunes:
process- Información y control del procesoBuffer- Manejar datos binariossetTimeout,setInterval,clearTimeout,clearIntervalsetImmediate,clearImmediateconsole- Salida de la consola
Nota: En los módulos ES, __dirname y __filename no están disponibles de forma predeterminada. Utiliza import.meta.url en su lugar.
Rareza: Común Dificultad: Fácil
15. ¿Cómo manejas los errores en las aplicaciones de Node.js?
Respuesta: El manejo de errores en Node.js se puede gestionar a través de múltiples enfoques:
1. Try-catch para código síncrono:
2. Patrón de error de callback:
3. Manejo de errores de Promesa:
4. Async/await con try-catch:
5. Manejadores de errores globales:
6. Middleware de error de Express:
Rareza: Común Dificultad: Media
Express.js y frameworks web (6 preguntas)
16. ¿Qué es Express.js y cuáles son sus principales características?
Respuesta: Express.js es un framework de aplicaciones web Node.js mínimo y flexible que proporciona un conjunto robusto de características para construir aplicaciones web y móviles.
Principales características:
- Enrutamiento: Define endpoints y métodos HTTP
- Middleware: Funciones que se ejecutan durante el ciclo de solicitud-respuesta
- Motores de plantillas: Renderiza HTML dinámico (EJS, Pug, Handlebars)
- Manejo de errores: Middleware de manejo de errores centralizado
- Archivos estáticos: Sirve activos estáticos
- Análisis JSON: Análisis de cuerpo integrado para datos JSON y codificados en URL
Ejemplo básico:
Por qué Express:
- Mínimo y sin opiniones
- Gran ecosistema
- Fácil de aprender
- Sistema de middleware flexible
Rareza: Común Dificultad: Fácil
17. ¿Qué es el middleware en Express.js? Proporciona ejemplos.
Respuesta: Las funciones de middleware son funciones que tienen acceso al objeto de solicitud (req), al objeto de respuesta (res) y a la función next en el ciclo de solicitud-respuesta de la aplicación.
Tipos de middleware:
1. Middleware de nivel de aplicación:
2. Middleware de nivel de ruta:
3. Middleware de manejo de errores:
4. Middleware integrado:
5. Middleware de terceros:
Ejemplo de middleware de autenticación personalizado:
Rareza: Común Dificultad: Media
18. Explica el enrutamiento de Express y cómo organizar las rutas
Respuesta: El enrutamiento se refiere a cómo los endpoints (URI) de una aplicación responden a las solicitudes del cliente.
Enrutamiento básico:
Parámetros de ruta:
Parámetros de consulta:
Organizar rutas con Express Router:
Rareza: Común Dificultad: Fácil-Media
19. ¿Cómo manejas las cargas de archivos en Express?
Respuesta: Las cargas de archivos se pueden manejar utilizando middleware como multer.
Carga de archivos básica:
Múltiples archivos:
Configuración de almacenamiento personalizada:
Rareza: Común Dificultad: Media
20. ¿Qué es CORS y cómo lo manejas en Express?
Respuesta: CORS (Cross-Origin Resource Sharing) es una característica de seguridad que permite o restringe que las páginas web realicen solicitudes a un dominio diferente al que sirve la página web.
Problema: Los navegadores bloquean las solicitudes de http://localhost:3000 a http://localhost:4000 de forma predeterminada (diferentes orígenes).
Solución con middleware cors:
Encabezados CORS manuales:
Rareza: Común Dificultad: Fácil-Media
21. ¿Cómo estructuras una aplicación grande de Express.js?
Respuesta: Organiza el código en módulos y carpetas lógicas para facilitar el mantenimiento.
Estructura recomendada:
Ejemplo de separación de preocupaciones:
Controlador (maneja HTTP):
Servicio (lógica de negocio):
Rutas:
Configuración de la aplicación:
Rareza: Común Dificultad: Media
Conceptos de base de datos (5 preguntas)
22. ¿Cuál es la diferencia entre las bases de datos SQL y NoSQL?
Respuesta:
Bases de datos SQL (relacionales):
- Datos estructurados con tablas, filas, columnas
- El esquema debe definirse antes de su uso
- Cumplimiento de ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad)
- Ejemplos: PostgreSQL, MySQL, SQLite
- Mejor para: Consultas complejas, transacciones, datos estructurados
Bases de datos NoSQL:
- Esquema flexible o sin esquema
- Varios modelos de datos (documento, clave-valor, grafo, columna)
- Escalado horizontal
- Ejemplos: MongoDB, Redis, Cassandra
- Mejor para: Aplicaciones a gran escala, esquemas flexibles, desarrollo rápido
Comparación:
Cuándo usar SQL:
- Consultas y relaciones complejas
- Se requiere cumplimiento de ACID
- Datos estructurados
- Transacciones financieras
Cuándo usar NoSQL:
- Desarrollo rápido
- Datos a gran escala
- Necesidades de esquema flexible
- Consultas sencillas
Rareza: Común Dificultad: Fácil-Media
23. ¿Cómo te conectas a una base de datos en Node.js? (Ejemplo de MongoDB)
Respuesta: Usando MongoDB con Mongoose como ejemplo:
Conexión básica:
Con variables de entorno:
Eventos de conexión:
Definir un modelo:


