Para los que preguntan por libros adjunto una respuesta que di: Si apenas vas a darle el mejor es Introduction to Algorithms (Third Edition), cubre lo necesario para introducirse a la algoritmia y estructura de datos, otro que recomiendo es: Data Structures and Algorithms in Java (Robert Lafore), también el de Grokking Algorithms es muy bueno, ya que tengas muy sólidos los conceptos presentados te recomendaría el de Cracking the coding interview, ahí ya realizas más ejercicios orientados a pruebas técnicas, te aseguro que no te arrepentirás con ninguno, empieza por el primero que mencioné.
Excelente vídeo. Para los que andén buscando bibliografía, yo usé las siguientes para mí curso de estructuras de datos: - Algoritmos y estructuras de datos una perspectiva en c por Luis Joyanes - Data Structures and Algorithms - Narasimha Karumanchi Llevé mí curso en C
Gracias por compartir!! En lo personal prefiero hacer esos tipos de ejercicios de programación sin la "presión" de tener que resolverlo en un tiempo determinado.. cada persona tiene su tiempo de análisis... mi tiempo es mas lento pero lo disfruto haciendo... 😁 en eso es en lo que no estoy de acuerdo con las entrevistas de trabajo.. yo contrataría por recomendaciones y no por pasar una prueba de algoritmos! un saludo 😁👋🏼
Tampoco me parece el enfoque, pero es respetable... Pero las recomendaciones son una especie de rosca que aísla a quienes tienen capacidad, y también la gente sin experiencia pero con la capacidad, creo que además de solo algoritmos también estaría bien que tengan en cuenta portafolios y trabajos independientes que señalan la capacidad técnica o de construcción de software
Solamente el primero pude resolver, el segundo tenía una noción pero no tenía idea de como implementar la solución, el tercero si ni idea. Aún falta camino por recorrer.
El tercer problema creo que es más sencillo de lo que parece. Mi solución sería modelar las relaciones mediante un grafo dirigido y para saber cuales se puede eliminar bastaria con un algoritmo simple de caminos, es decir si no existe un camino desde el nodo x a alguno de los nodos privados (clases privadas), entonces se puede eliminar. El problema es entonces, la complejidad computacional o sea, elegir bien el algoritmo para buscar los caminos. El segundo problema se me hizo más complicado (quiza porque hace mucho que no trabajo con arboles) y el primero, como bien dices, de rutina e incluso creo que se puede resolver con una función recursiva (puede que imprecione más, pero el costo computacional puede ser mayor).
Luego de representar las relaciones la idea seria quedarnos con el grafo de las componentes fuertementes conexas, este grafo es un DAG por lo que tiene un orden topologico de sus vertices, bastaria entonces con recorre ese orden topologico utilizando programacion dinamica y eliminar aquellos en los cuales no pertenezcan clases privadas(nodos con una propiedad para indicar esto) nos quedaria un grafo con solamente las componentes fuertemente conexas en las cuales alguno de sus nodos sea una clase privada
El primero hubiera creado un array nuevo y despues un join. El problema seria si el entrevistador me pidiese space complexity 1 y no N. Porque para time complexity seria o(n) ambos.
Si apenas vas a darle el mejor es Introduction to Algorithms (Third Edition), cubre lo necesario para introducirse a la algoritmia y estructura de datos, otro que recomiendo es: Data Structures and Algorithms in Java (Robert Lafore), también el de Grokking Algorithms es muy bueno, ya que tengas muy sólidos los conceptos presentados te recomendaría el de Cracking the coding interview, ahí ya realizas más ejercicios orientados a pruebas técnicas, te aseguro que no te arrepentirás con ninguno, empieza por el primero que mencioné.
esto es en el caso de que uno quiera trabajar para microsoft, pero hay que leerse todo una vida para postular, se lo basico pero con el trabajo que uno tiene, en que cuerpo mas, como habra echo el amigo la verdad, te rompes el alma para hacer tu trabajo y prepararte , estructura de datos es todo un tema porque lo lleve en la u..
Hola que tal! te tengo una pregunta, cuando son entrevistas de coding, te las hacen de forma libre usando algun editor o usan alguna plataforma parecida a LeetCode donde al correr el código tmb te preocupas porque pasen los tests ?
Algoritmos y Estructura de Datos es lo que básicamente le están midiendo a uno. No les interesa el lenguaje sobre el cual se resuelvan estos ejercicios(Fanboys de Tecnologías), el algoritmo es el mismo sin importar el lenguaje, el que debe saberlos implementar es el ingeniero postulante a Microsoft. Mi calificación de los ejercicios en escala del 1-10 = 7
Para nada, en el caso del árbol, en un lenguaje backend serio (C++ o Java) no puedes retornar cualquier tipo de dato en el mismo método, él tiene una ventaja al usar javascript, puede retornar un número o un nodo en el mismo método, lo cual no se puede hacer en otras tecnologías como las que ya mencioné y cuyo rendimiento está por encima. Ese simple hecho, hace que alguien que usa Java o C++ tiene que dar con una solución más seria. La mostrada acá no es la mejor implementación pero vale
Marcos, algo un poco fuera de la programación pero que ayuda, como se llama el plugin que usas en el VSCode para que te aparezca al lado de un console.log() la respuesta sin ejecutarlo? Gracias de antemano.
Estás seguro que explicas bien el último punto? estás diciendo que "C es público y Z no se puede eliminar porque tiene a A que es privado" pero en ese caso entonces tampoco deberías eliminar el método Public X: {z}, porque su camino de llamadas sería X->Z->C->A y A es privado. Y en la respuesta pusiste que se podía eliminar "Public X" además pones "Private C:..." cuando C es público... O no lo hiciste y te dejaron pasar así, o nos estás enredando
Marcos, yo no hubiese hecho ni "el más fácil" 🙄
Excelente vídeo. Gracias.
Para los que preguntan por libros adjunto una respuesta que di: Si apenas vas a darle el mejor es Introduction to Algorithms (Third Edition), cubre lo necesario para introducirse a la algoritmia y estructura de datos, otro que recomiendo es: Data Structures and Algorithms in Java (Robert Lafore), también el de Grokking Algorithms es muy bueno, ya que tengas muy sólidos los conceptos presentados te recomendaría el de Cracking the coding interview, ahí ya realizas más ejercicios orientados a pruebas técnicas, te aseguro que no te arrepentirás con ninguno, empieza por el primero que mencioné.
gracias
Excelente vídeo.
Para los que andén buscando bibliografía, yo usé las siguientes para mí curso de estructuras de datos:
- Algoritmos y estructuras de datos una perspectiva en c por Luis Joyanes
- Data Structures and Algorithms - Narasimha Karumanchi
Llevé mí curso en C
Jajajajaj
@@JardanySvidrigailov disculpa que conocimientos en matematicas se necesita para entender esos ejercicios?
de lo libros que comentas.
Gracias por compartir tu experiencia.
Yo tambien tengo una prueba para Microsoft, pero sinceramente creo que necesitaré estudiar un poco más .
Mucho éxito en tu entrevista! Trata de estudiar lo más que puedas pero sin sobre estudiar demasiado
Gracias por compartir!! En lo personal prefiero hacer esos tipos de ejercicios de programación sin la "presión" de tener que resolverlo en un tiempo determinado.. cada persona tiene su tiempo de análisis... mi tiempo es mas lento pero lo disfruto haciendo... 😁 en eso es en lo que no estoy de acuerdo con las entrevistas de trabajo.. yo contrataría por recomendaciones y no por pasar una prueba de algoritmos! un saludo 😁👋🏼
Totalmente de acuerdo 👏
Tampoco me parece el enfoque, pero es respetable... Pero las recomendaciones son una especie de rosca que aísla a quienes tienen capacidad, y también la gente sin experiencia pero con la capacidad, creo que además de solo algoritmos también estaría bien que tengan en cuenta portafolios y trabajos independientes que señalan la capacidad técnica o de construcción de software
Felicitaciones y muchas gracias por tus enseñanzas
Solamente el primero pude resolver, el segundo tenía una noción pero no tenía idea de como implementar la solución, el tercero si ni idea. Aún falta camino por recorrer.
El tercer problema creo que es más sencillo de lo que parece. Mi solución sería modelar las relaciones mediante un grafo dirigido y para saber cuales se puede eliminar bastaria con un algoritmo simple de caminos, es decir si no existe un camino desde el nodo x a alguno de los nodos privados (clases privadas), entonces se puede eliminar. El problema es entonces, la complejidad computacional o sea, elegir bien el algoritmo para buscar los caminos. El segundo problema se me hizo más complicado (quiza porque hace mucho que no trabajo con arboles) y el primero, como bien dices, de rutina e incluso creo que se puede resolver con una función recursiva (puede que imprecione más, pero el costo computacional puede ser mayor).
Luego de representar las relaciones la idea seria quedarnos con el grafo de las componentes fuertementes conexas, este grafo es un DAG por lo que tiene un orden topologico de sus vertices, bastaria entonces con recorre ese orden topologico utilizando programacion dinamica y eliminar aquellos en los cuales no pertenezcan clases privadas(nodos con una propiedad para indicar esto) nos quedaria un grafo con solamente las componentes fuertemente conexas en las cuales alguno de sus nodos sea una clase privada
Marcos Gracias por estos Tips! Quiero llevarlos a MI COMUNIDAD para ayudarles a Aprender EXCELcon BUENOS datos FINANCIEROS! Un abrazo! 😎👍😎👍
me interesa!
El primero hubiera creado un array nuevo y despues un join. El problema seria si el entrevistador me pidiese space complexity 1 y no N. Porque para time complexity seria o(n) ambos.
Aun no sale pero ya empecé a estudiar estructuras de datos :,v
¿que libro recomendarías para estudiar estructura de datos?
Si apenas vas a darle el mejor es Introduction to Algorithms (Third Edition), cubre lo necesario para introducirse a la algoritmia y estructura de datos, otro que recomiendo es: Data Structures and Algorithms in Java (Robert Lafore), también el de Grokking Algorithms es muy bueno, ya que tengas muy sólidos los conceptos presentados te recomendaría el de Cracking the coding interview, ahí ya realizas más ejercicios orientados a pruebas técnicas, te aseguro que no te arrepentirás con ninguno, empieza por el primero que mencioné.
esto es en el caso de que uno quiera trabajar para microsoft, pero hay que leerse todo una vida para postular, se lo basico pero con el trabajo que uno tiene, en que cuerpo mas, como habra echo el amigo la verdad, te rompes el alma para hacer tu trabajo y prepararte , estructura de datos es todo un tema porque lo lleve en la u..
Hola que tal! te tengo una pregunta, cuando son entrevistas de coding, te las hacen de forma libre usando algun editor o usan alguna plataforma parecida a LeetCode donde al correr el código tmb te preocupas porque pasen los tests ?
Es una plataforma parecida a leetcode donde se puede correr el código, no tienen como tal tests pero si puedes ejecutarlo y ver el resultado
en que lenguaje resolvió el ejercicio 1. (poco los manejo) gracias
Grande amigo, y que tal la paga?
Un aproximado 7u7
Marcos podrías decir cual es el rango salarial que te ofrecieron, si no es mucha indiscreción, saludos y felicidades
Era más sencillo y práctico usar un do ... while para el primer problema 😅. Buen video, gracias por compartir!
Hubiera sido igual porque el do ... while funciona de forma diferente solo en la primera iteración.
que buen vídeo gracias!
Disculpa como se llama la extensión para que te aparezca los resultados del console.log en el código?
Quokajs
@@jussmor Gracias, veo que es de paga
Hola Marcos, que función te han dado, harás cosas del frontend o trabajarás con el back.
Eres un genio..:c yo estudio mucho y siento que aún no estoy a ese nivel ah:(
Algoritmos y Estructura de Datos es lo que básicamente le están midiendo a uno.
No les interesa el lenguaje sobre el cual se resuelvan estos ejercicios(Fanboys de Tecnologías), el algoritmo es el mismo sin importar el lenguaje, el que debe saberlos implementar es el ingeniero postulante a Microsoft.
Mi calificación de los ejercicios en escala del 1-10 = 7
Para nada, en el caso del árbol, en un lenguaje backend serio (C++ o Java) no puedes retornar cualquier tipo de dato en el mismo método, él tiene una ventaja al usar javascript, puede retornar un número o un nodo en el mismo método, lo cual no se puede hacer en otras tecnologías como las que ya mencioné y cuyo rendimiento está por encima. Ese simple hecho, hace que alguien que usa Java o C++ tiene que dar con una solución más seria. La mostrada acá no es la mejor implementación pero vale
@@programming2347 asi es , C++ es un lenguaje 100% tipado fuerte y necesita mas estructuracion en el algoritmo.
Java igual
cuanto tiempo te dieron por problem a?
Marcos, algo un poco fuera de la programación pero que ayuda, como se llama el plugin que usas en el VSCode para que te aparezca al lado de un console.log() la respuesta sin ejecutarlo? Gracias de antemano.
ya la encontré en un comentario mas abajo, se llama Quokka.js la extensión
Muy buen video amigo yo recién me estoy formando
Mi cabeza solo dio para resolver el primer problema 😔 Desafortunadamente, me tomó más de 30 minutos... aunque lo hice un poco distinto que Marcos.
Al momento de desarrollarlos, te dijieron el lenguaje o si o si,fue en c#?
Pero lo hizo con JS no?
¿De que universidad de México eres?
Hola, cómo estás? Todavía sigues trabando en Microsoft? O ya no? Si tienes un vídeo hablando de eso porfa déjame el link 😅....!
th-cam.com/video/IDxzh7KVx40/w-d-xo.html
Voy a publica otro en los próximos días
Estás seguro que explicas bien el último punto? estás diciendo que "C es público y Z no se puede eliminar porque tiene a A que es privado" pero en ese caso entonces tampoco deberías eliminar el método Public X: {z}, porque su camino de llamadas sería X->Z->C->A y A es privado.
Y en la respuesta pusiste que se podía eliminar "Public X"
además pones "Private C:..." cuando C es público...
O no lo hiciste y te dejaron pasar así, o nos estás enredando
Se parece a mi examen parcial de programación, lo malo que no sé inglés :(
Esos ejercicios son muy sencillos
Tienes que tomarte la pastilla viejo y ya irte a dormir
Casi ni pude entendr el primer :V y eso que estaba super facil . :(
una locura!
Para el tercero yo usaría arreglos y objetos 🤔
En que app estas programando en el video?
Visual Studio.
Yo creo que a los hirers de MS no les gusta esto xD
Talent is on demand. Its a win-win deal