Preparación para Entrevistas

Preguntas de Entrevista de JavaScript con Respuestas

20 preguntas que se le hacen con más frecuencia a un desarrollador frontend junior. Respuestas en lenguaje simple, sin frases de manual memorizadas.

❓ 20 preguntas 🎯 Nivel: junior 🔄 Actualizado: 2026

📘 Bases del Lenguaje

1. ¿Cuál es la diferencia entre var, let y const?
var tiene function scope y puede "escaparse" de un bloque; let y const tienen block scope, visibles solo dentro de su propio bloque { }. let se puede reasignar, const no. Hoy en día var casi no se usa.
2. ¿Cuál es la diferencia entre == y ===?
== compara valores con conversión de tipos ("5" == 5 → true), === compara sin conversión, incluido el tipo ("5" === 5 → false). En la práctica, casi siempre se usa ===.
3. ¿Cuál es la diferencia entre null y undefined?
undefined es el valor por defecto cuando no se le ha asignado nada a una variable. null es un valor que un desarrollador asigna deliberadamente, para decir explícitamente "esto está vacío".
4. ¿Qué tipos de datos existen en JavaScript?
Primitivos: string, number, boolean, undefined, null, symbol, bigint. Y un tipo no primitivo — object (que incluye arrays y funciones).
5. ¿Qué es el hoisting?
Un mecanismo por el cual las declaraciones de variables (var) y funciones se mueven al inicio de su ámbito antes de que se ejecute el código. let y const también se elevan, pero caen en la "temporal dead zone" — no se puede acceder a ellas antes de su declaración.
6. ¿Qué es un closure?
Una función que "recuerda" variables de una función externa, incluso después de que esta ya terminó de ejecutarse. Un ejemplo clásico es una función contador que guarda su estado entre llamadas.

🗂️ Arrays y Objetos

7. ¿En qué se diferencia map de forEach?
forEach simplemente recorre un array y no devuelve nada. map también recorre un array, pero devuelve un nuevo array con el resultado de la función para cada elemento.
8. ¿Cómo verificas si una variable es un array?
Con Array.isArray(valor). El operador typeof devuelve "object" para un array, así que no sirve para esto.
9. ¿Cómo copias un objeto o un array?
Para una copia superficial: el operador spread {...obj} o [...arr]. Para una copia profunda de objetos anidados, se suele usar structuredClone(obj) o JSON.parse(JSON.stringify(obj)).
10. ¿Cómo eliminas un elemento de un array?
Con splice(index, 1) — muta el array original. O con filter, si necesitas un nuevo array sin mutar el original: arr.filter(item => item !== valor).
11. ¿Qué hace el método reduce?
Reduce un array a un solo valor, recorriendo cada elemento y acumulando un resultado. Se usa a menudo para sumar valores: arr.reduce((sum, n) => sum + n, 0).

🖥️ El DOM y los Eventos

12. ¿Cómo seleccionas un elemento en la página?
Lo más común es document.querySelector(".clase") para un elemento y document.querySelectorAll(".clase") para varios. También existe getElementById.
13. ¿Cuál es la diferencia entre addEventListener y onclick?
onclick solo permite asignar un manejador — uno nuevo reemplaza al anterior. addEventListener permite añadir cuantos manejadores se quiera al mismo evento, y removerlos de forma más flexible.
14. ¿Qué es el burbujeo de eventos (event bubbling)?
Cuando un evento ocurre en un elemento anidado, después "burbujea" hacia arriba a través de todos sus elementos padre. Esto permite usar delegación de eventos: asignar un solo manejador al padre en vez de muchos a sus hijos.
15. ¿Cómo detienes el comportamiento por defecto de un evento?
Llamando a event.preventDefault() dentro del manejador — por ejemplo, para que un formulario no recargue la página al enviarse.

⏳ Código Asíncrono

16. ¿Qué es un Promise?
Un objeto que representa el resultado de una operación asíncrona — puede estar en uno de tres estados: pending (pendiente), fulfilled (cumplido) o rejected (rechazado).
17. ¿Cómo funcionan async/await?
Es "azúcar sintáctico" sobre los promises: una función se marca como async, y dentro de ella await "espera" el resultado de un promise sin bloquear el resto del código de la página. El código se ve y se lee como código síncrono.
18. ¿Cuál es la diferencia entre setTimeout y setInterval?
setTimeout ejecuta código una vez después de un retraso definido. setInterval repite la ejecución con un intervalo especificado hasta que se detiene con clearInterval.

💬 Preguntas Generales

19. ¿Qué es this en JavaScript?
Una referencia al objeto en cuyo contexto se ejecuta una función. El valor de this depende de cómo se llamó a la función. Las funciones flecha no tienen su propio this — lo toman del código que las rodea.
20. ¿Cómo sueles encontrar la causa de un bug en tu código?
Una buena respuesta: leo el mensaje de error en la consola, coloco console.log en puntos sospechosos o uso breakpoints en las DevTools, reduzco el problema a una línea específica, reviso los valores de las variables en cada paso.

Qué sigue

¿Te estás preparando para tu primera entrevista?

El curso de JavaScript cubre no solo estos temas, sino problemas prácticos reales — después de él, responder este tipo de preguntas se vuelve natural, no memorizado.