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
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
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.
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é.
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.
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
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..
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!! 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
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
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
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.
Felicitaciones y muchas gracias por tus enseñanzas
Marcos Gracias por estos Tips! Quiero llevarlos a MI COMUNIDAD para ayudarles a Aprender EXCELcon BUENOS datos FINANCIEROS! Un abrazo! 😎👍😎👍
me interesa!
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é.
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.
en que lenguaje resolvió el ejercicio 1. (poco los manejo) gracias
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
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
Grande amigo, y que tal la paga?
Un aproximado 7u7
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..
Eres un genio..:c yo estudio mucho y siento que aún no estoy a ese nivel ah:(
Hola Marcos, que función te han dado, harás cosas del frontend o trabajarás con el back.
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.
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.
cuanto tiempo te dieron por problem a?
Muy buen video amigo yo recién me estoy formando
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, 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 😅....!
ua-cam.com/video/IDxzh7KVx40/v-deo.html
Voy a publica otro en los próximos días
¿De que universidad de México eres?
Al momento de desarrollarlos, te dijieron el lenguaje o si o si,fue en c#?
Pero lo hizo con JS no?
que buen vídeo gracias!
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
Esos ejercicios son muy sencillos
Tienes que tomarte la pastilla viejo y ya irte a dormir
Se parece a mi examen parcial de programación, lo malo que no sé inglés :(
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
Para el tercero yo usaría arreglos y objetos 🤔
Casi ni pude entendr el primer :V y eso que estaba super facil . :(
En que app estas programando en el video?
Visual Studio.
una locura!
Yo creo que a los hirers de MS no les gusta esto xD
Talent is on demand. Its a win-win deal