Volver a la página principal
lunes 16 septiembre 2024
19

Preguntas de JavaScript para Entrevista de Trabajo

JavaScript es uno de los lenguajes de programación más populares en el desarrollo web, tanto del lado del cliente como del servidor. Debido a su amplia adopción y evolución, los entrevistadores suelen hacer preguntas que evalúan tanto los conocimientos básicos como las habilidades avanzadas de los candidatos. A continuación, te presentamos una lista de preguntas comunes de JavaScript para entrevistas, con respuestas detalladas, que te ayudarán a prepararte de manera efectiva.

1. ¿Qué es JavaScript?

Respuesta:

JavaScript es un lenguaje de programación dinámico y de alto nivel que se utiliza principalmente en el desarrollo web para crear interactividad en los sitios. Es ligero, interpretado y sigue el modelo de programación basado en eventos. JavaScript puede ejecutarse tanto en el navegador como en el servidor (por ejemplo, con Node.js).

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

Respuesta:

  • var: Define una variable con ámbito de función. Puede ser redeclarada y su valor puede cambiar.
  • let: Introducido en ES6, define una variable con ámbito de bloque. No puede ser redeclarada en el mismo bloque y su valor puede cambiar.
  • const: También introducido en ES6, define una constante con ámbito de bloque. No puede ser redeclarada y su valor no puede cambiar una vez asignado, aunque los objetos y arreglos asignados a const pueden modificarse internamente.

Ejemplo:

var x = 10;
let y = 20;
const z = 30;

3. ¿Qué es el hoisting en JavaScript?

Respuesta:

El hoisting es un comportamiento de JavaScript en el que las declaraciones de variables y funciones son "elevadas" al principio de su contexto de ejecución. Solo las declaraciones se elevan, no las asignaciones.

Ejemplo:

console.log(x); // undefined
var x = 5;

// Internamente se trata como:
var x;
console.log(x); // undefined
x = 5;

4. ¿Qué es una clausura en JavaScript?

Respuesta:

Una clausura es una función que recuerda y tiene acceso a las variables del entorno en el que fue creada, incluso después de que ese entorno haya finalizado. Las clausuras permiten la creación de funciones con "estado" privado.

Ejemplo:

function contador() {
    let cuenta = 0;
    return function() {
        cuenta++;
        return cuenta;
    }
}

const miContador = contador();
console.log(miContador()); // 1
console.log(miContador()); // 2

5. ¿Qué es el event loop en JavaScript?

Respuesta:

El event loop es un mecanismo que permite a JavaScript manejar operaciones asíncronas. JavaScript es de un solo hilo, lo que significa que solo puede ejecutar una tarea a la vez. Sin embargo, mediante el uso del event loop, JavaScript puede procesar eventos, callbacks y promesas de manera eficiente sin bloquear el hilo principal.

Explicación:

1. Las tareas que requieren mucho tiempo, como solicitudes a un servidor, se manejan de manera asíncrona.

2. Mientras se espera la respuesta, el event loop sigue ejecutando otras tareas.

3. Una vez que la tarea asíncrona está lista, el callback se coloca en la cola de tareas para ser ejecutado.

6. Explica la diferencia entre call, apply y bind.

Respuesta:

  • call(): Invoca una función y permite pasarle argumentos individualmente.
  • apply(): Similar a call(), pero los argumentos se pasan en forma de array.
  • bind(): Devuelve una nueva función con un valor específico de this, pero no la ejecuta inmediatamente.

Ejemplo:

const persona = {
    nombre: 'Juan',
    saludar: function(saludo) {
        console.log(`${saludo}, soy ${this.nombre}`);
    }
};

const otraPersona = { nombre: 'Carlos' };

persona.saludar.call(otraPersona, 'Hola');  // Hola, soy Carlos
persona.saludar.apply(otraPersona, ['Hola']);  // Hola, soy Carlos
const saludarCarlos = persona.saludar.bind(otraPersona);
saludarCarlos('Hola');  // Hola, soy Carlos

7. ¿Qué es el scope en JavaScript?

Respuesta:

El scope (ámbito o alcance) determina la accesibilidad de las variables, objetos y funciones en diferentes partes del código. JavaScript tiene dos tipos principales de scope:

  • Scope global: Variables declaradas fuera de cualquier función o bloque de código, accesibles desde cualquier parte.
  • Scope local: Variables declaradas dentro de una función o bloque, accesibles solo dentro de ese contexto.

Ejemplo:

let global = "soy global";

function mostrar() {
    let local = "soy local";
    console.log(global);  // soy global
    console.log(local);   // soy local
}

mostrar();
console.log(local);  // Error: local is not defined

8. ¿Qué es el contexto de ejecución?

Respuesta:

El contexto de ejecución en JavaScript es el entorno en el que se evalúa y ejecuta el código. Se crea un nuevo contexto de ejecución cada vez que se llama una función o se entra en un bloque de código.

El contexto de ejecución incluye:

  • Objeto global: En navegadores, es window.
  • Objeto this: Hace referencia al objeto actual.
  • Entorno léxico: Incluye variables, objetos y funciones.

9. ¿Qué son las promesas en JavaScript?

Respuesta:

Las promesas son una forma de manejar operaciones asíncronas de manera más limpia y estructurada. Una promesa representa un valor que puede estar disponible ahora, en el futuro o nunca. Tiene tres estados posibles:

  • Pendiente (pending): La promesa aún no ha sido resuelta.
  • Resuelta (fulfilled): La operación se completó con éxito.
  • Rechazada (rejected): La operación falló.

Ejemplo:

const miPromesa = new Promise((resolve, reject) => {
    let exito = true;
    if (exito) {
        resolve("¡Éxito!");
    } else {
        reject("Error");
    }
});

miPromesa.then(respuesta => {
    console.log(respuesta);  // ¡Éxito!
}).catch(error => {
    console.log(error);
});

10. ¿Qué es async/await?

Respuesta:

async/await es una sintaxis moderna para trabajar con promesas en JavaScript. Facilita la lectura y el manejo de código asíncrono, haciéndolo parecer más sincrónico.

Ejemplo:

async function obtenerDatos() {
    try {
        let respuesta = await fetch('https://api.example.com/datos');
        let datos = await respuesta.json();
        console.log(datos);
    } catch (error) {
        console.log("Error:", error);
    }
}

obtenerDatos();

Conclusión

Prepararse para una entrevista de JavaScript puede ser un desafío, dado el extenso ecosistema del lenguaje. Sin embargo, familiarizarse con estos conceptos clave te permitirá abordar preguntas técnicas con mayor confianza y demostrar tu comprensión profunda del lenguaje.

Etiquetas:
javascript
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer