20 puntos por xguru 2020-07-17 | 3 comentarios | Compartir por WhatsApp

A menudo se dice que las preguntas de algoritmos que suelen hacer en entrevistas no se usan en el trabajo real,

así que el autor recopiló, con ejemplos, las que de verdad usó con frecuencia trabajando en Skype/Uber y otras empresas, junto con recomendaciones de lecturas introductorias

Grafos y recorrido de grafos: Skype & Uber

Grafos ponderados y distancia más corta: SkyScanner

Ordenamiento: Skype

Tablas hash y hashing: en todas partes

Pilas y colas: a veces

Criptografía (Crypto), teoría de la probabilidad y estimación, Hexagonal Grid e índices jerárquicos: Uber

  • Sobre los algoritmos y las estructuras de datos en entrevistas

No es importante conocer algoritmos populares o estructuras de datos poco comunes.

Lo importante es saber qué es un algoritmo y ser capaz de idear algoritmos simples, como un algoritmo greedy.

Hay que conocer estructuras de datos básicas como tablas hash, colas y pilas, pero no hace falta memorizar algoritmos especiales como Dijkstra o A*.

La mayor parte del trabajo que he hecho con algoritmos más allá del ordenamiento ha sido buscar información e intentar comprenderla.

Lo mismo aplica para estructuras de datos peculiares como los árboles Red-Black o AVL.

De hecho, nunca tuve que usar estas estructuras de datos, y si las necesitara, volvería a buscarlas para aprender sobre ellas.

En Silicon Valley se está volviendo cada vez más común hacer preguntas sobre programación dinámica o estructuras de datos poco comunes.

Puede que este tipo de preguntas ayude a contratar ingenieros sobresalientes, pero también hace que se pierda a personas que hacen muy bien trabajos donde en realidad no se necesitan conocimientos avanzados de algoritmos.

Lo que de verdad hace falta es reconocer las estructuras de datos más comunes y tener la capacidad de usar el algoritmo más simple como herramienta para resolver un problema.

Las estructuras de datos y los algoritmos no son más que un conjunto de herramientas.

Son herramientas que hay que usar con confianza al desarrollar software.

Si conoces bien estas herramientas, te sentirás más cómodo leyendo código que las utiliza.

También tendrás más confianza al implementar soluciones para problemas difíciles.

Para aprender lo básico, recomienda lo siguiente. (los enlaces están en los comentarios)

  • Data Structures Overview de GeekforGeeks (colección de artículos en línea)

  • DataStructure Collection de HackerRank (aprender resolviendo problemas)

  • Grokking Algorithms: algoritmos para entender los conceptos con ilustraciones (libro traducido)

  • The Algorithm Design Manual y Algorithms: Fourth Edition son demasiado áridos y no son adecuados para usar en la práctica todos los días.

3 comentarios

 
xguru 2020-07-17
  • Data Structures Overview de GeekforGeeks

https://geeksforgeeks.org/overview-of-data-structures-set-1-linear-dat…

  • DataStructure Collection de HackerRank

https://www.hackerrank.com/domains/data-structures

  • Grokking Algorithms: algoritmos para entender conceptos con ilustraciones

En inglés: https://www.amazon.com/gp/product/1617292230/?tag=amzneu-20

Edición en coreano (Hanbit Media): https://www.hanbit.co.kr/store/books/look.php?p_code=B5896248244

The Algorithm Design Manual https://www.amazon.com/gp/product/1848000693?tag=amzneu-20

Algorithms: 4th Edition https://www.amazon.com/gp/product/032157351X/?tag=amzneu-20

 
xguru 2020-07-17

La anécdota de Max Howell, desarrollador de Homebrew, que aparece al inicio del texto y cuenta que no pasó una entrevista en Google por no poder escribir en el pizarrón cómo invertir un árbol binario, es muy conocida.

La ironía es que, aunque el 90% de los desarrolladores de Google usan Homebrew, al propio desarrollador lo rechazaron.

 
lazinism 2020-07-19

Ese 90% fue una cifra sacada de la nada por un desarrollador de Homebrew, y según recuerdo un desarrollador de Google respondió en ese tuit que de ninguna manera era 90%.

De todos modos, en Google usan Ubuntu en desktop y máquinas shell en laptop, así que en realidad tampoco habría mucho motivo para usarlo.