1. then async siempre retornan una promesa son asíncronos por eso se debe utilizar el log dentro 2. Se llaman decoradores, todas las funciones son naturalmente closures excepto la sintaxis new Funtion que es otro tema, por ello acceden al entorno léxico exterior mediante la referencia de su método interno [[Enviorement]], por supuesto es mejor no subir el scope cuando se lo preguntas pero funcionaría sin problema, además utilizaría call/apply para vincular this si fuera probable que en un futuro se implementara, por cierto fue una excelente manera de crear memorización 3. Existen las mates, Método de Gauss 1000 * 999 / 2 = 49500 mucho mas óptimo se va jugando con el límite. 4. Utilizaría rest param …args o tal vez el simil-arr especial arguments junto a un new Map 5. Por último, es genial este tipo de contenido, una entrevista Senior Js gracias por tomarte el tempo de planificarla, Keyberth una maquina me pareció que lo hizo estupendo, tal vez al principio siempre vencen los nervios
he trabajado bastante con js puro que no se me hacen difíciles estas pruebas. igualmente noté que necesito más práctica, hubo partes donde me demoré en dar la solución
Excelente video Juan, me parece muy buen contenido para aquellas personas no tan allegadas a las entrevistas como yo (todavía sigo estudiando)... Muchas gracias a vos y a Keyberth por el video. Estaría bueno tener más ediciones!
Senior y no parece tener muy claro lo que hace async, await, el retorno de promesas o que JS ahora permite usar await en plano, eso me sonó raro pero en cuanto a la optimización en el segundo ejercicio creo que aprendí bastante.
Ser senior no implica saber eso. Es un detalle menor. Ser senior pasa por otro lado. A ver obviamente tenes que tener experiencia y mucha pero no tener TODO en claro lo que hace el async, await y etc no es importante.
tambien hay un problema que al tener numeros grandes, JS tiende a redondear lo cual generaria errores y variaciones pequeñas, yo lo hubiera resuelto así usando bignumber const sumNumbers = memorization((limit) => { const n = new BigNumber(limit); const sum = n.times(n.plus(1)).dividedBy(2); return sum.toString(); });
Qué baja está la vara para seniors. La solución del ejercicio 2 era cambiar ese for loop por un n*(n+1)/2 pero se enredó con esa función para memorizar el resultado. Ese razonamiento no es de un senior
Creo que lo que buscaba en el 2do ejercicio era advertir que sumNumbers es una funcion pura y por ende se puede optimizar su respuesta para no hacer el calculo si se llamada 2 veces con el mismo input.
Excelente video, hasta sentí la incomodidad de una entrevista jaja. Por otra parte si hubo errores o malas formas de expresarse que son graves que las diga un senior.
en el primer ejercicio me sentí estafado, yo como trainee ya me a pasado varias veces un ejercicio similar, eso me hace dudar que sea una entrevista Senior
Ni el nivel de la entrevista en cuanto a la prueba tecnica ni el entrevistado estan al nivel de un senior, o al menos no lo parece. El primer ejercicio es unicamente hacer un fetch sin tener que hacer nada con los datos ni siquiera, el segundo ejercicio se puede resolver con 1 unica llamada y operacion [(1/2)(inicio + fin)(inicio - fin + 1)]
arguments[n] sirve para argumentos n.... yo creo que no es de senior o mejor dicho, no estoy seguro, pero he visto de senior mas complejas. Creo que tu mismo hiciste una mas compleja de senior front
Muy buen video, personalmente el segundo ejercicio me pareció un nivel jr, ya que para un nivel senior se le aumente la dificultad con ejercicios más complejos para determinan que hace y cómo se comporta ante la frustración, cómo se comunica etc etc
No quiero parecer odioso, pero ninguno de los dos ni son midlevels ni esto es una entrevista para seniors. Lo siento chicos pero nada que ver con la realidad. Quizas en vuestras empresas sean seniors pero en el mundo real, desde el ejercicio #1 ya lo hubieran pillado y hubieran perdido la entrevista "senior" incluso una para junior. Te demuestro porque son traanie los dos: Una de las cosas que mas duelen y sacrifican recursos y tiempo en un proyecto, es justamente mentalidades como la que expusieron ustedes dos en el ejercicio #2. El tipico caso del junior que vio un tema y a toda costa lo quiere encajar en algun sitio en el proyecto, sacrificando asi tiempo, dinero a corto plazo, pero aun peor a mediano plaza cuando ya haya logrado minar todo el proyecto con overengineering como estas. Memoization suena cool, si suena cool, que sirve para optimizar, si tambien, es la solucion para cualquier problema, NOOO. Y aqui tambien se expone la falta de analisis del entrevistador en donde le solicita crear algo mas generico (como que ya no fuera poco la sobre ingeneria que el otra a duras penas esta creando) y aun le piede mas! Esos pensamientos demuestran como esos dos sin supervicion llevarian a la quiebra un proyecto real. No pasa nada ser junior, sin junior no hubieran experimentados. No pasa nada en tus inicios petar un proyecto, incluso es cuando deberias lanzarte y aprender de tus errores, pero decir que soy senior y que mi forma de razonar diga lo contrario, creo que es querer correr antes de andar chicos. He aqui la prueba a su sobre ingeneria y la prueba que no optimiza ni papa eso, mas bien aumenta al 100% mas el problema: - al cachear los valores tenemos un incremento en el time space y eso solo para ese caso (Dios me libre para todo el runtime) - La solucion es tan sencilla e incluso ni siquiera necesito N pasos para sumar, y aqui como algo de analisis te salva de hacer un mockey code: Solucion const sum = n => ( n * ( n + 1 ) ) / 2; xD Este mismo principio de pensamiento es esencial para no crear sobre ingeneria. - El chico habla de datos del usuario, de desbordamiento, de optimizacion y el entrevistador perdido. Pero nada de eso es verdad, mas bien al contrario, es malo y no todo es perfecto, hay algoritmos que para unos casos son buenos, pero para otros muy malos, y no solo porque me aprendi en un tuto a escribir bubble sort, voy a darle cana a todo lo que se mueva con el. Recomendaciones: Leer mucho, participar en proyectos con gente de nivel (open source) y aprender de ellos. En una entrevista de seniors no se pone a ver cositas de si una funcion devuelve una promesa o como sumar n enteros, al contrario se supone que eso ya se debe saber y se tocan temas mas avanzados. Seguir asi chicos, la practica hace al maestro, y no os preocupeis, con el tiempo llega todo, seguro que en unos par de anios ya sereis seniors los dos, todo con calma.
un poquito flojo el fetch , yo soy apenas junior, pause el video y hice esto en casi un 1 min lol ``` const fnx = async () => { const URL = "http blah blah"; try { const res = await fetch(URL); if (!res.ok) { throw new Error("ERROR FETCHING"); } return await res.json(); } catch (error) { console.log(error); } }; fnx().then(res => console.log(res)) ```
1. then async siempre retornan una promesa son asíncronos por eso se debe utilizar el log dentro
2. Se llaman decoradores, todas las funciones son naturalmente closures excepto la sintaxis new Funtion que es otro tema, por ello acceden al entorno léxico exterior mediante la referencia de su método interno [[Enviorement]], por supuesto es mejor no subir el scope cuando se lo preguntas pero funcionaría sin problema, además utilizaría call/apply para vincular this si fuera probable que en un futuro se implementara, por cierto fue una excelente manera de crear memorización
3. Existen las mates, Método de Gauss 1000 * 999 / 2 = 49500 mucho mas óptimo se va jugando con el límite.
4. Utilizaría rest param …args o tal vez el simil-arr especial arguments junto a un new Map
5. Por último, es genial este tipo de contenido, una entrevista Senior Js gracias por tomarte el tempo de planificarla, Keyberth una maquina me pareció que lo hizo estupendo, tal vez al principio siempre vencen los nervios
Gracias bro, muchas veces se nos olvidan algunos conceptos o mejores formas de resolver un problema por los nervios
Para el ejercicio de la sumatoria, ¿no tendría que ser 1000 + 1000 * 999 / 2? Debido que menciona Juan que el límite superior es incluyente.
No entendí tu segundo comentario, podrías explicarlo un poco más? Muchas gracias.
he trabajado bastante con js puro que no se me hacen difíciles estas pruebas. igualmente noté que necesito más práctica, hubo partes donde me demoré en dar la solución
Excelente video Juan, me parece muy buen contenido para aquellas personas no tan allegadas a las entrevistas como yo (todavía sigo estudiando)... Muchas gracias a vos y a Keyberth por el video. Estaría bueno tener más ediciones!
Senior y no parece tener muy claro lo que hace async, await, el retorno de promesas o que JS ahora permite usar await en plano, eso me sonó raro pero en cuanto a la optimización en el segundo ejercicio creo que aprendí bastante.
Ya puedes usar Await no necesariamente dentro de una funcion asincrona ,Saludos
Ser senior no implica saber eso. Es un detalle menor. Ser senior pasa por otro lado. A ver obviamente tenes que tener experiencia y mucha pero no tener TODO en claro lo que hace el async, await y etc no es importante.
@@nicooto9343 x2
La memorizacion esta super cool, otra forma seria:
const sumNumber = (limit) => {
return (limit * (limit + 1)) / 2;
};
Y si el valores menor que dos?
tambien hay un problema que al tener numeros grandes, JS tiende a redondear lo cual generaria errores y variaciones pequeñas, yo lo hubiera resuelto así usando bignumber
const sumNumbers = memorization((limit) => {
const n = new BigNumber(limit);
const sum = n.times(n.plus(1)).dividedBy(2);
return sum.toString();
});
Muy bueno, gracias
La suma hasta el 1000 no es 499500
Sos un genio! Muchas gracias por hacer esto :)
Siempre las empresas hacen la pregunta de las metodologías ágiles y ellos nunca las usan xD
Jajajajaaj suele pasar bro!. Siempre la hacen y algunas ni organizado tienen el trabajo.
Pero las que si, bien por ellas
@@JuanOrtizDev así es jajajajajaaja, excelente vídeo, saqué mucha información valiosa del mismo. Un abrazo.
@@crisepuyao7722 Como que no lo utilizan? no etniendo.
Qué baja está la vara para seniors.
La solución del ejercicio 2 era cambiar ese for loop por un n*(n+1)/2 pero se enredó con esa función para memorizar el resultado. Ese razonamiento no es de un senior
intente como dices sum = (limit*(limit+1))/2. pero no sale igual, o de que forma seria?
@@AventureroMexa es porque no hay que considerar el límite, sino el anterior. (limite-1)*(limite-1+1)/2) = (limite*(limite-1))/2
Creo que lo que buscaba en el 2do ejercicio era advertir que sumNumbers es una funcion pura y por ende se puede optimizar su respuesta para no hacer el calculo si se llamada 2 veces con el mismo input.
Excelente video, hasta sentí la incomodidad de una entrevista jaja. Por otra parte si hubo errores o malas formas de expresarse que son graves que las diga un senior.
en el primer ejercicio me sentí estafado, yo como trainee ya me a pasado varias veces un ejercicio similar, eso me hace dudar que sea una entrevista Senior
Que buen video, podrias hacer uno para puesto de React JS Semi Senior?
gran video, suscrito desde ya!!
THANKS ALOT MA MAN IT WORKED FOR ME SURE TOOK A WHILE BUT ITS GREAT
Ni el nivel de la entrevista en cuanto a la prueba tecnica ni el entrevistado estan al nivel de un senior, o al menos no lo parece.
El primer ejercicio es unicamente hacer un fetch sin tener que hacer nada con los datos ni siquiera, el segundo ejercicio se puede resolver con 1 unica llamada y operacion [(1/2)(inicio + fin)(inicio - fin + 1)]
No me pareciera que la entrevista fuera para un senior, sino para junior, opinión personal!
no te jode... un jr...?
No lo he terminado perl gracias crack
Sólo vine a darme cuenta que me falta mucho para llegar a ser Sr. Developer
Exelente
arguments[n] sirve para argumentos n.... yo creo que no es de senior o mejor dicho, no estoy seguro, pero he visto de senior mas complejas. Creo que tu mismo hiciste una mas compleja de senior front
Qué buen video joder
como odio el live coding en las entrevistas, nunca me fue bien en algun live coding a mi
Await depende de la version de node,
Me gustan esas pruebas. Lo que no me gusta que cuando te quieren contratar te quieren pagar como jr. Y que hagas el trabajo de un Sr.
Eso es lo molesto de algunas empresas, por eso no debemos dejarnos que nos malpaguen
Works well!! DANKEEE
Lo que no concuerda es el poco conocimiento de promises para aspirar a senior.
Se queda en Semi senior
ya, pero quedo en el puesto o no?
Era una simulacion matias, pero yo daria el si
👍
Muy buen video, personalmente el segundo ejercicio me pareció un nivel jr, ya que para un nivel senior se le aumente la dificultad con ejercicios más complejos para determinan que hace y cómo se comporta ante la frustración, cómo se comunica etc etc
Que perra edición, quien la hace?
Tu merongas 🤘🤘
Que nivel el de Keyberth! Todo un crack
Keyberth te amo
Fue una entrevista de verdad?
No hermano, fue una simulación, las preguntas que el me hizo hacia el proyecto no eran reales
Juan, agrandale un poco la pantalla :v
Vaya yo sabi muy bien lo que hacía
parece mas un junior xd
😂
baja calidad de video pero interesantisimo!
No quiero parecer odioso, pero ninguno de los dos ni son midlevels ni esto es una entrevista para seniors. Lo siento chicos pero nada que ver con la realidad. Quizas en vuestras empresas sean seniors pero en el mundo real, desde el ejercicio #1 ya lo hubieran pillado y hubieran perdido la entrevista "senior" incluso una para junior.
Te demuestro porque son traanie los dos:
Una de las cosas que mas duelen y sacrifican recursos y tiempo en un proyecto, es justamente mentalidades como la que expusieron ustedes dos en el ejercicio #2. El tipico caso del junior que vio un tema y a toda costa lo quiere encajar en algun sitio en el proyecto, sacrificando asi tiempo, dinero a corto plazo, pero aun peor a mediano plaza cuando ya haya logrado minar todo el proyecto con overengineering como estas.
Memoization suena cool, si suena cool, que sirve para optimizar, si tambien, es la solucion para cualquier problema, NOOO. Y aqui tambien se expone la falta de analisis del entrevistador en donde le solicita crear algo mas generico (como que ya no fuera poco la sobre ingeneria que el otra a duras penas esta creando) y aun le piede mas! Esos pensamientos demuestran como esos dos sin supervicion llevarian a la quiebra un proyecto real. No pasa nada ser junior, sin junior no hubieran experimentados. No pasa nada en tus inicios petar un proyecto, incluso es cuando deberias lanzarte y aprender de tus errores, pero decir que soy senior y que mi forma de razonar diga lo contrario, creo que es querer correr antes de andar chicos.
He aqui la prueba a su sobre ingeneria y la prueba que no optimiza ni papa eso, mas bien aumenta al 100% mas el problema:
- al cachear los valores tenemos un incremento en el time space y eso solo para ese caso (Dios me libre para todo el runtime)
- La solucion es tan sencilla e incluso ni siquiera necesito N pasos para sumar, y aqui como algo de analisis te salva de hacer un mockey code: Solucion const sum = n => ( n * ( n + 1 ) ) / 2; xD Este mismo principio de pensamiento es esencial para no crear sobre ingeneria.
- El chico habla de datos del usuario, de desbordamiento, de optimizacion y el entrevistador perdido. Pero nada de eso es verdad, mas bien al contrario, es malo y no todo es perfecto, hay algoritmos que para unos casos son buenos, pero para otros muy malos, y no solo porque me aprendi en un tuto a escribir bubble sort, voy a darle cana a todo lo que se mueva con el.
Recomendaciones: Leer mucho, participar en proyectos con gente de nivel (open source) y aprender de ellos.
En una entrevista de seniors no se pone a ver cositas de si una funcion devuelve una promesa o como sumar n enteros, al contrario se supone que eso ya se debe saber y se tocan temas mas avanzados.
Seguir asi chicos, la practica hace al maestro, y no os preocupeis, con el tiempo llega todo, seguro que en unos par de anios ya sereis seniors los dos, todo con calma.
Que odioso este hombre jajaja
un poquito flojo el fetch , yo soy apenas junior, pause el video y hice esto en casi un 1 min lol
``` const fnx = async () => {
const URL = "http blah blah";
try {
const res = await fetch(URL);
if (!res.ok) {
throw new Error("ERROR FETCHING");
}
return await res.json();
} catch (error) {
console.log(error);
}
};
fnx().then(res => console.log(res)) ```