17 marzo 2013

Buscando Trabajo en EEUU: Amazon II

Esta entrada es la continuación de la primera parte de la serie relatando mi experiencia entrevistando con Amazon, te recomiendo que leas la primera antes aquí.

Había conseguido que me llamasen de Amazon para una entrevista telefónica, y fui capaz de responder las preguntas que me hicieron en la primera parte de la entrevista razonablemente bien pero, sin venir a cuento ni nada, el entrevistador me pidió que implementara una tabla hash en un área de texto que él podía ver mientras yo escribía de manera sincronizada. Cuando me preguntó si sabía lo que era una tabla hash, yo mentí como un bellaco y le dije que sí porque el concepto me sonaba bastante y no me imaginaba que me fuese a preguntar algo tan complicado. Mientras balbuceaba como un tonto, tecleaba a toda máquina intentando averiguar más detalles sobre la tabla hash y le contaba lo que descubría al tiempo que lo leía:

- Es... es... una estructura de datos... muy eficiente... tiene tiempo de búsqueda de orden constante... también tiene un tiempo de inserción de orden constante...

Si mi teclado tuviera un botón de pánico, lo habría pulsado con toda seguridad. Licencia CC Wikimedia Commons

Efectivamente, una tabla hash es una estructura de datos, es decir, una manera de almacenar datos (números, letras, apellidos, bits a pelo, etc.) que se ajusta a unos modelos específicos. Tiene una cota superior asintótica de orden constante para las operaciones de inserción y búsqueda, que normalmente se escribe como O(1) y en cristiano significa que cuando añades (insertas) datos a tu estructura, o lees (buscas) datos desde tu estructura, el tiempo que tarde la operación es teóricamente independiente del número de elementos existentes en la estructura. Si quieres aprender más detalles sobre las tablas hash, recomiendo el vídeo protagonizado por un profesor de la Universidad Politécnica de Valencia disponible aquí, si no te apetece leer la amenazante entrada en la wikipedia.

Gracias a mi interés por la criptografía, el concepto de una función hash me era bastante familiar. Eso, unido a la poca pero suficiente información que fui capaz de encontrar en unos segundos, me permitió hacer una educada suposición de cómo funciona una tabla hash. Además, tuve una suerte del copón porque fui capaz de inventarme una función hash basada en el algoritmo de Luhn y un método para evitar la colisión de hash al vuelo, algo que no creo que sea capaz de repetir. Al final, gracias a tal alineación de los planetas, fui capaz de sacarme de la manga una implementación más o menos sólida que satisfizo a mi entrevistador, el cual me dijo al terminar la entrevista que me contactarían los de recursos humanos en 6 ó 7 días.

No habían pasado ni 4 días, y me llegó un correo electrónico de Amazon pidiéndome fijar fecha y hora para una segunda entrevista telefónica. Esta vez, sabiendo lo lentos que fueron en darme cita para la primera entrevista, les dije que cualquier día a cualquier hora me valdría, puesto que tenía planeado un viaje con motivo de las vacaciones de Navidad próximamente. Sin embargo, mi completa disponibilidad no sirvió de mucho porque no me dieron cita hasta 2 semanas más tarde, apenas unos días antes de comenzar mis vacaciones. Mi intención era lograr una entrevista in situ antes de irme pero eso, por desgracia, no iba a ocurrir.

A partir de la tercera entrevista telefónica, todas parecen iguales. Licencia CC Wikimedia Commons

La segunda entrevista fue prácticamente calcada a la anterior pero con un interlocutor distinto, aunque ambos trabajaban en el mismo equipo dedicado al desarrollo de software especializado en almacenes. Me sorprendió la cantidad de preguntas que fueron idénticas teniendo en cuenta que, de acuerdo con mi segundo entrevistador, él se sentaba "a dos mesas de distancia" del primero. ¡Es como si no se hubieran hablado entre ellos para nada! Desgraciadamente, especialmente en las empresas grandes, cada entrevistador tiene sus métodos y preguntas favoritas, y a veces difieren tantos los unos de los otros que no se fían ni un pelo de las conclusiones de otros entrevistadores por lo que las entrevistas son, a efectos prácticos, completamente independientes. Esta vez la pregunta difícil fue, en realidad, mucho más sencilla que en la anterior entrevista: mi entrevistador me pidió escribir un método que comprobase si 2 palabras (interpretadas como secuencias de caracteres) eran palíndromos. Ya me habían hecho la misma pregunta en una anterior entrevista telefónica con Zappos y, como no tuve ninguna dificultad en responderla, me pidió entrar en más detalles sobre eficiencia y optimización (lo cual tampoco resultó ser excesivamente complejo).

Para mi sorpresa, al final de la entrevista, mi interlocutor me dijo que me contactarían los de recursos humanos para fijar una fecha para una entrevista in situ. Por lo que había leído sobre otros entrevistados, generalmente Amazon no suele ofrecer una entrevista in situ hasta después de 3 ó 4 entrevistas telefónicas (salvo que seas nativo de Seattle, que es donde están sus oficinas), ¡eso era buena señal! Desafortunadamente, no podría concertar tal entrevista hasta después de las Navidades, pero de eso hablaré en una próxima entrada.

No hay comentarios:

Publicar un comentario