Las 20 preguntas de entrevista JavaScript que más caen
Si tu objetivo es conseguir un puesto remoto en dólares usando JavaScript, prepararte para entrevistas técnicas es esencial. En LATAM, los recruiters suelen repetir las mismas preguntas una y otra vez, buscando ver tanto tu conocimiento técnico como tu capacidad de explicar conceptos. Aquí te dejo una guía realista: las 20 preguntas que más caen, con consejos y ejemplos concretos para destacar.
1. ¿Qué es el hoisting en JavaScript?
Explica que las declaraciones de variables y funciones se “elevan” al inicio del scope. Un error común es pensar que las inicializaciones también lo hacen.
- `var` permite acceso con `undefined`,
- `let` y `const` bloquean hasta que se declaran.
2. Diferencias entre `let`, `const` y `var`
Describe el alcance (scope) y la mutabilidad. Resalta que `let` y `const` son block-scoped, mientras que `var` es function-scoped.
- `const` no permite reasignación.
- Evitá usar `var` en proyectos modernos.
3. ¿Cómo funciona el sistema de tipos en JavaScript?
JavaScript es débilmente tipado y dinámico. Señala hilos como conversión implícita y `typeof`.
4. Explicá qué es una closure y para qué se usan
Una closure ocurre cuando una función accede a variables de su contexto padre, incluso después de que ese contexto terminó. Ejemplo:
```js
function contador() {
let num = 0;
return function() { num++; return num; }
}
const c = contador();
```
5. Diferencia entre `==` y `===`
Volvé a aclarar que `==` compara valores tras conversión de tipos, y `===` exige tipo y valor iguales. Siempre preferí `===`.
6. ¿Qué es el event loop?
Describí la cola de mensajes y la pila de llamadas. Impresioná explicando cómo `setTimeout`, promesas y callbacks son gestionados.
7. Explicá el concepto de “callback hell” y cómo evitarlo
Cuando se anidan muchos callbacks, el código se vuelve inmanejable. Soluciones óptimas:
- Promesas (`.then()`)
- Async/await
- Modularizar
8. ¿Qué es una promesa? Ejemplo básico
Una promesa representa un valor que estará disponible en el futuro.
```js
const fetchData = () => new Promise((resolve, reject) => { resolve('data'); });
```
9. Cómo manejar errores en JavaScript
Sirve mencionar `try/catch`, promesas con `.catch()`, y el uso de `throw` para lanzar errores custom.
10. ¿Qué hace `map`, `filter`, `reduce`? Ejemplo de uso
Explicá que son métodos de arrays para transformar y filtrar datos.
- `map`: crea un nuevo array
- `filter`: selecciona elementos
- `reduce`: acumula valores
Ejemplo:
```js
const nums = [1,2,3];
const doble = nums.map(n => n*2);
```
11. ¿Qué es `this` en JavaScript?
Depende del contexto:
- En funciones normales, depende de cómo se invoca
- En arrow functions, es léxico (heredado del padre)
- En métodos, hace referencia al objeto
12. ¿Cómo funciona la delegación de eventos en el DOM?
Explica cómo un event listener colocado en un elemento “padre” maneja eventos de hijos, optimizando performance.
13. ¿Qué es el destructuring?
Permite extraer propiedades de objetos o arrays fácilmente:
```js
const {nombre, edad} = persona;
const [x, y] = coords;
```
14. Explicá el concepto de “spread operator”
Permite copiar o combinar arrays y objetos:
```js
const arr = [...otrosArr, 1, 2];
const obj = {...user, activo: true};
```
15. Explique cómo funcionan las funciones async/await
Sintaxis para trabajar con promesas de forma más limpia:
```js
async function getData() {
const data = await fetch('/api');
}
```
16. Palabra clave `prototype` y herencia en JS
Explica cómo los objetos acceden a métodos y propiedades vía su `prototype`. Ejemplo:
```js
function Animal() {}
Animal.prototype.hablar = () => console.log('Hola');
```
17. ¿Qué es la diferencia entre “undefined” y “null”?
- `undefined`: una variable no definida
- `null`: ausencia intencional de valor (lo asignas)
18. ¿Qué es “debouncing” y “throttling”?
Técnicas para optimizar eventos. A veces caen en entrevistas técnicas front-end:
- Debounce: espera a que termine el evento
- Throttle: ejecuta cada cierto tiempo
19. Manejo de módulos en JS: CommonJS vs ES Modules
Actualmente, debe explicarse la diferencia entre `require` (CommonJS) y `import/export` (ES Modules).
- Multiplataforma: preferir ES Modules en nuevos proyectos
20. ¿Cómo harías unit testing en JavaScript?
Menciona Jest, Mocha o Vitest. Explica la estructura: describe/it, assertions, mocks.
Ejemplo real: Cómo explicar “closure” en una entrevista
> “Una closure permite guardar el estado interno de una función. Por ejemplo, si quiero crear un contador, puedo definir una función interna que acceda a una variable `num` y retorne una función que la incremente. Así, cada vez que llamo a la función, el estado se mantiene. Yo lo usé para crear un cache memoizado en una API que consultaba datos desde un endpoint y evitaba hacer llamadas repetidas.”
Tips para destacar en entrevistas remotas
- Practicá tus explicaciones en voz alta
- Usá ejemplos que hayas implementado en proyectos
- Si no sabés algo, admitílo y proponé cómo lo investigarías
- Tené preparados snippets breves para compartir
Recursos para preparar entrevistas JavaScript
- FreeCodeCamp JS Interview Guide
- Eloquent JavaScript (capítulos avanzados)
- Prácticas en LeetCode o Hackerrank