Nodos conectados entre si, sin un inicio o fin.

Me preguntaron de Grafos en una entrevista…!

En un último proceso de selección del que participé, llevaba poco tiempo aprendiendo React, Redux, Componentes, Props, State, entre otros, que NO consideré un tema también fundamental: algoritmos.

Al momento que estaba en la entrevista se me hizo preguntas como: “¿Cuál es la diferencia entre ‘state’ y ‘props’? ¿Cómo funciona el virtualDOM? Explícame cómo funciona React, y que APIs utiliza.”, que pude responder de forma adecuada — a lo que al menos entiendo de adecuado — pero llego el momento en que se me dijo: ¿qué sabes de grafos, o algoritmo de grafos?

En ese momento me quedé frío. En mi mente trataba de buscar el recuerdo más escondido sobre estructura de datos! — como no tenia conmigo NZT para que mi cerebro acceda a esa información — Lo único que pude pensar fue: en ‘single linked list’ o árboles binarios, nodos, dijkstra — ¿dijkstra eres tu?. Algo por ahí tenía que ver… (al menos eso me repetía para no entrar en nervios!)

Exagerando mi cerebro debía hacer conexiones entre sí, pero creo que más estaba en llamas.

Seguido a ello procedí a responder con honestidad, pero como bien he ido aprendiendo en el camino, a no dar solo una respuesta sino también proponer otra solución: ‘en este momento no recuerdo sobre algoritmo de grafos pero sé que mantiene relación con single linked-list, double linked list o arboles binarios’!

Entrevistador: Mmm… bueno, puede que tenga cierta relación pero pasemos a lo que dices. Explícalo y apóyate con algún gráfico.

En ese momento, con muchos nervios, balbuceando, pensando que hacer, procedí a hacer una gráfica de ‘listas simples’. Empece a explicar como en una lista tienes el HEAD que es asignado a un nodo principal, y que a dicho nodo le puede agregar un ‘valor’ y tiene otra propiedad ‘next’ para acceder a dicho valor.

Entrevistador: De acuerdo, entonces, ¿cómo harías para buscar un valor en dicha lista?

A explicar que usaría un loop para iterar consultando el valor del valor del valor del nodo. Pero a medida que fui explicando eso, propuse cambiar la solución por double linked list por razón que así puedo tomar un camino y volver de ser necesario o seguir por un camino y no tener que efectuar el loop sobre nodos por los que ya hice la comparación.

Entrevistador: Muy bien, arma un pseudocódigo que muestre lo que has explicado.

En ese momento, solo pensé en terminar todo ese momento. Pero viendo en retrospectiva, entiendo mejor la importancia de los algoritmos y en que deberíamos repasarlo más seguido. — Listo! Termine el pseudocódigo —

Entrevistador: De acuerdo, y por qué no lo hiciste con recursividad?

Fin de la transmisión…

Hay un abanico de posibles respuestas para problemas que se presentan en el día a día. En esta entrevista, planteé a lo que pude acceder de memoria, pero también me enseño y me sirvió para repasar y replantear aquellos temas que busco aprender y dar seguimiento.

Para concluir esta historia, hice un nuevo repaso a teoría de grafos y algunos ejemplos y aplicaciones, pero lo dejaré para otro post. Por el momento puedo decir, si eres de los que recién inicia en cursos o carreras relacionadas a programación, por más que no te guste, METE A TU CEREBRO estructura de datos. Entiende el concepto y como se puede aplicar, y una vez que lo entiendas, repasa constantemente. Esa es la lógica que siempre estará presente, y como dato extra, teoría de grafos. No por algo los motores de búsqueda se basan en grafos!

Imagen final sin relación alguna :D

)

Carlos Rodriguez Quispe

Written by

Peruvian Software Developer | Beginner drawer | Food fanatic — Currently working with Java tech, but in love with Python and React.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade