
30 Preguntas que deberías conocer sobre javascript desde junior a senior
Luego de ver algunos apuntes sobre JavaScript, la verdad es que algunos puntos ya no era capaz de recordar, para esto va este blog, para mis apuntes más relevantes, pienso que si leyeras esto también sería de utilidad el poder consultar estas preguntas sobre JS que te harán falta en una entrevista o para aumentar conocimientos.
Nivel Junior:
Is JavaScript single-threaded?
Esta pregunta es un sí, y solo se debe imaginar como se ejecutan los archivos de js, es como una caja registradora, cada orden se registra una tras otra, si creas console.log() podrás ver que se ejecutan en un orden, esto no quiere decir que se produzca un bloqueo, js tiene sistemas de eventos que se ejecutan una vez resueltos tal como es el async.
Explain the main components of the JavaScript Engine.
Es el componente encargado de transformar el código que escribes en instrucciones que la computadora puede entender y ejecutar rápidamente. Para profundizar en los elementos que intervienen en este cabe destacar:
El Parser: Toma el código y lo descompone en tokens y con estos construye la estructura de datos o Abstract syntaxt text (AST)
El Interprete: Utilizando el motor V8 toma los tokens y los convierte en Bytecode.
Compilador Just In Tyme (JIT): que es utilizado para mejorar el rendimiento
Memory Heap: Es la región de memoria destructurada donde el motor almacena los objetos.
Call Stack o Pila de Ejecución: Registra en que parte del programa se la ejecución.
Garbage Collector o Recolector de basura: Este proceso identifica datos que no se usan, es un performance para la memoria.
What is the Event Loop and how does it handle async tasks?
Se le llama así al monitoreo constante del código y las pilas de tareas que esperan ejecutarse, se explica fácilmente cuando ejecutamos un callback que ejecutará una acción luego de finalizar, o la respuesta devuelta cuando ejecutamos un async.
Difference between var, let, and const
En este punto se puede explicar una pregunta cliché en donde const es una dato que no es modificable, (var) queda ya como desfasada, entonces lo común es usar let y const en la actualidad.
Rest vs Spread operator
Resumo esto como el operador (...) en donde puedes combinar dos arrays u objetos, en donde rest agrupa y spread expande.
What is a higher-order function?
Esta se describe como una función la cual recibe como parámetro otra función .map , .filter, .reduce son las más conocidas y te dan una idea del sentido de las (hof)
Nivel Mid:
What is a Closure? Common use cases?
Definir esto es tan simple como indicar que un clousure recuerda el valor de una función que ya ha sido ejecutada, lo cual queda guardada en memoria. Ej: si ejecutas una función que invoca un incremento, esta accede y continua la ejecución manteniendo vivo las variables:
function crearMensaje() {
let contador = 0;
return function() {
contador++;
console.log("Veces llamado: " + contador);
};
}
// Aquí ejecutas la función externa y guardas la interna en 'miVariable'
const miVariable = crearMensaje();
miVariable(); // "Veces llamado: 1"
miVariable(); // "Veces llamado: 2"
Algunas explicaciones son difícil de definir sin un ejemplo.
What is Hoisting in JavaScript?
Es la capacidad de acceder o invocar una función o variable antes de esta ser declarada, esto porque js lee todas las variables y funciones y las eleva al inicio y es entonces donde lee las llamadas de estas.
Lo que hace es que coloca en una lista las funciones y la palabra clave var en donde a var le coloca temporalmente undefined y al llegar al código donde es llamada entonces le coloca el valor dado por el usuario.
What is the Temporal Dead Zone (TDZ)?
Tanto let como const son elevados a través del hoisting pero hasta no ser llamada caen en un punto muerto, lo que evita que estas sean accesibles. Esto ha sido creado así para que se evite por error acceder a variables que aún no han sido declaradas, aunque js sepa que sí existe debajo, ya que la ha colocado en su lista pero en el TDZ.
Explain the Prototype Chain and Object.create()
El js la herencia no funciona como elementos que heredan propiedades de padre a hijo, en cambio tiene un elemento llamado prototipe lo cual funciona como una cadena de enlace hacia propiedades internas del elemento, en cambio object create es usado para insertar un objeto dentro de otro sin necesidad de usar clases.
Difference between call(), apply(), and bind()