Cómo aprobar una entrevista de JavaScript: mejores preguntas y respuestas

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Cómo superar una entrevista de JavaScript: Preguntas principales



Una entrevista para desarrollador de JavaScript no solo consiste en comprobar la sintaxis, sino también en comprender profundamente cómo funciona el lenguaje. Esto es especialmente cierto para Node.js, donde la asincronía y el manejo de errores pasan a primer plano. En este artículo, hemos analizado las 10 preguntas principales que se hacen con más frecuencia en entrevistas para desarrolladores Junior y Middle. Cada pregunta va acompañada de un ejemplo de código y una explicación.



1. ¿Qué es un closure y dónde se utiliza?



Un closure es una función que "recuerda" su ámbito léxico incluso después de que la función externa haya terminado de ejecutarse. Este es uno de los conceptos clave de JavaScript.



Ejemplo:

function createCounter() {  let count = 0;  return function() {    count++;    return count;  };}

const counter = createCounter();console.log(counter()); // 1console.log(counter()); // 2


¿Dónde se utiliza? En módulos, fábricas de funciones, memoización, manejadores de eventos y al trabajar con closures en bucles (por ejemplo, en setTimeout).



2. ¿Cómo funciona el Event Loop en Node.js?



El Event Loop es un mecanismo que permite a Node.js realizar operaciones no bloqueantes a pesar de ser monohilo. Consta de varias fases: timers, poll, check y close callbacks.



Ejemplo con microtareas:

console.log('1');

setTimeout(() => console.log('2'), 0);

Promise.resolve().then(() => console.log('3'));

console.log('4');

// Salida: 1, 4, 3, 2


¿Por qué es así? Las microtareas (Promise) se ejecutan inmediatamente después de la pila actual y antes de la siguiente fase del Event Loop.



3. Diferencia entre == y ===



El operador == compara valores con coerción de tipos, mientras que === compara sin coerción (igualdad estricta).



console.log(5 == '5');   // true (cadena convertida a número)console.log(5 === '5');  // false (tipos diferentes)console.log(null == undefined); // trueconsole.log(null === undefined); // false


En las entrevistas, a menudo te piden que expliques por qué [] == false da true (debido a la comparación abstracta con un primitivo).



4. ¿Qué es la herencia prototípica?



En JavaScript, los objetos pueden heredar propiedades de otros objetos a través de la cadena de prototipos. Cada objeto tiene una propiedad interna [[Prototype]], a la que se puede acceder mediante __proto__ o Object.getPrototypeOf().



Ejemplo:

const animal = { eats: true };const rabbit = { jumps: true };

rabbit.__proto__ = animal;

console.log(rabbit.eats); // true (heredado)console.log(rabbit.jumps); // true


La forma moderna es usar Object.create() o clases (azúcar sintáctico sobre prototipos).



5. ¿Cómo funciona this en JavaScript?



El valor de this se determina por el contexto de la llamada a la función. Las reglas principales son:

  • En el contexto global (en el navegador) — window, en Node.js — global.
  • En un método de objeto — el propio objeto.
  • En una función flecha — el this léxico (de la función externa).
  • Al llamar mediante call/apply/bind — el contexto pasado explícitamente.


Ejemplo:

const obj = {  name: 'Alice',  greet: function() {    console.log(this.name);  }};

obj.greet(); // Alice

const greet = obj.greet;greet(); // undefined (contexto perdido)

const boundGreet = obj.greet.bind({ name: 'Bob' });boundGreet(); // Bob


6. Promesas: cadenas y manejo de errores

Blogs

Book Recommendations