InterviewHack.ai
Start free
Blog/Preguntas de entrevista de JavaScript — 50 con código y respuestas

Preguntas de entrevista de JavaScript — 50 con código y respuestas

16 de septiembre de 2026

javascriptfrontend

Artículo completo: 50 preguntas de entrevista de JavaScript con código y respuestas

Preguntas de entrevista de JavaScript — 50 con código y respuestas

Si estás preparando una entrevista técnica de JavaScript, este es el recurso que necesitás. No vas a encontrar definiciones de diccionario acá. Cada pregunta viene con una explicación real y código que podés ejecutar ahora mismo.

Las preguntas están ordenadas de menor a mayor dificultad. Empezamos con los fundamentos que sí o sí te van a preguntar, y terminamos con los temas que separan a un candidato bueno de uno excelente.


Fundamentos del lenguaje

1. ¿Cuál es la diferencia entre `var`, `let` y `const`?

Las tres sirven para declarar variables, pero se comportan diferente en cuanto a scope, hoisting y reasignación.

FAQ

¿Por qué `typeof null === 'object'` en JavaScript?+

Es un bug histórico del lenguaje que nunca se corrigió por retrocompatibilidad. En la implementación original de JavaScript (1995), los valores se representaban con un tag de tipo en los primeros bits. El tag para objetos era 000, y null era representado como un puntero nulo (todos ceros), por lo que el tipo se leía como 'object'. Para detectar null correctamente usá `val === null`.

¿Cuál es la diferencia entre `call`, `apply` y `bind`?+

`call` invoca la función de inmediato con `this` y argumentos separados por coma: `fn.call(ctx, arg1, arg2)`. `apply` hace lo mismo pero los argumentos van en un array: `fn.apply(ctx, [arg1, arg2])`. `bind` no invoca la función — devuelve una nueva función con `this` fijado: `const fn2 = fn.bind(ctx)`. Usá `bind` cuando necesitás pasar una función como callback manteniendo el contexto.

¿Cuándo se usa `Promise.all` vs `Promise.allSettled`?+

`Promise.all` rechaza tan pronto como cualquiera de las promesas falla (fail-fast). Usalo cuando necesitás todos los resultados y una falla invalida todo. `Promise.allSettled` espera que todas terminen (éxito o error) y devuelve un array con el status de cada una. Usalo cuando necesitás procesar cada resultado por separado sin que una falla cancele las demás.

¿Qué es el temporal dead zone (TDZ)?+

Es el período entre el inicio del scope y la línea de declaración de una variable `let` o `const`. Durante ese período, la variable existe en el scope (fue izada) pero no se puede acceder — cualquier acceso tira `ReferenceError`. Esto es distinto a `var`, que se inicializa como `undefined` durante el hoisting. El TDZ existe para detectar errores de uso antes de declaración.

¿Cuándo uso `async/await` vs Promesas encadenadas?+

`async/await` es más legible para flujos secuenciales con manejo de errores con try/catch. Promesas encadenadas con `.then()` son más idiomáticas cuando estás transformando datos en pipeline o cuando necesitás fan-out (Promise.all, Promise.race). En la práctica: usá `async/await` para la mayoría de los casos y `Promise.all` dentro de funciones async cuando necesitás paralelismo.

¿Por qué `[] + []` devuelve `""` y `[] + {}` devuelve `"[object Object]"`?+

El operador `+` con objetos los convierte a primitivos usando `toString()`. `[].toString()` devuelve `""` (array vacío a string es string vacío), por eso `[] + []` es `"" + ""` = `""`. `{}.toString()` devuelve `"[object Object]"`, por eso `[] + {}` es `"" + "[object Object]"` = `"[object Object]"`. El caso `{} + []` es especial: si `{}` está al inicio de una línea, JavaScript lo parsea como un bloque vacío, no un objeto, y el resultado es `+[]` = `0`.

¿Cuál es la diferencia entre shallow copy y deep copy?+

Una copia superficial (shallow) duplica el primer nivel del objeto, pero los valores anidados siguen siendo referencias compartidas. Si modificás un objeto anidado en la copia, se modifica en el original también. El spread `{...obj}` y `Object.assign` hacen copias superficiales. Una copia profunda (deep) duplica todos los niveles. Usá `structuredClone(obj)` para deep copy nativa y moderna, o `JSON.parse(JSON.stringify(obj))` para objetos simples sin funciones, dates o undefined.

¿Por qué las arrow functions no se pueden usar como constructores?+

Las arrow functions no tienen su propio `this` — lo heredan del scope léxico donde se definen. El operador `new` necesita crear un objeto nuevo y asignárselo a `this` de la función constructora. Como las arrows no tienen `this` propio, `new ArrowFn()` tira `TypeError: ArrowFn is not a constructor`. Además, las arrows no tienen `prototype`, que es el objeto del que heredarían las instancias creadas con `new`.

Related articles

Cómo usar el método STAR en entrevistas (con ejemplos reales)

Aprende a responder preguntas difíciles usando el método STAR en entrevistas. Consejos y ejemplos concretos para roles remotos tech de LATAM.

Cómo conseguir trabajo remoto en dólares desde LATAM: guía real

Descubre consejos concretos para conseguir trabajo remoto en dólares desde LATAM: estrategias de búsqueda, preparación y entrevista para roles tecnológicos.

Las mejores preguntas para hacerle al entrevistador al final

Descubre las mejores preguntas para hacerle al entrevistador al final, útiles para entrevistas tech remotas, diferenciándote y logrando roles en dólares.

Cómo preparar entrevistas de desarrollo sin experiencia previa

Consejos prácticos para enfrentar entrevistas de tu primer trabajo como desarrollador, incluso sin experiencia. Técnicas para destacar y convencer en cada etapa.

Prepare for your real interview

Paste your job link: we research who's interviewing you and rehearse you live.

Start free →

Have an interview coming up? Install the live copilot →

InterviewHack.ai

Prepare for the exact interview: who's interviewing you, a tailored CV, and a real coach.

Product

JobsFree ATS checkerInterview-English checkSalary checkLATAM salary reportFree coursesBlogTailored CVSpoken practiceIt's free

Remote jobs

ReactPythonFull-StackLATAMArgentinaMexicoSee all →

Prepare

Spoken practiceFrontendBackendAI EngineerBy companySell with your CV

Company

For employersAboutContactPrivacyTerms

© 2026 InterviewHack.ai · Your CV is yours. Never used to train anything. · A product of IA-PTY