«Success is not final, failure is not fatal; it is the courage to continue that counts.» slidesha.re/18IDRZY
Hace unas semanas recibí un mensaje de LinkedIn. El remitente era una reclutadora de Facebook, donde me comentaba que tenian algunas vacantes en las que podría encajar. Como no tenía nada que perder accedí a hablar con ella.
Es conocido que los gigantes de internet tienen unos procesos de selección muy duros con infinidad de entrevistas. En mi caso únicamente fueron dos, ambas por teléfono. Voy a contar un poco mi experiencia por si le puede servir a alguien que esté interesado en un trabajo en este tipo de empresas.
Yo no me apunté a ninguna oferta en la web de Facebook ni nada parecido. Únicamente mantengo actualizado mi perfil de LinkedIn y parece ser que tras la útlima actualización, puse las palabras clave que buscan los reclutadores. La reclutadora de Facebook me encontro, sin yo buscarlo, con lo que me pareció interesante seguir con el proceso.
Una vez revisó mi curriculum me pidió si podríamos tener una entrevista telefónica. En un principio estuve dudando puesto que la entrevista sería en ingles y mi ingles es peor que el de Ana Botella. Finalmente quedamos un día y me llamó. La reclutadora fué muy amable en todo momento, y por suerte, al no ser irlandesa, le entendía lo suficiente para mantener la conversación.
La entrevista estaba dividida en dos partes, la primera mas orientada en la descripción del puesto, las tareas, como estaban organizados, etc. La segunda parte consistió en preguntas básicas de networking y linux, todas muy básicas aunque alguna muy rebuscada.
En la primera parte me explicó que el puesto que buscaban era un SRO (Site Reliability Operations) para el equipo de Dublín. El equipo de SRO es el que se encarga de mantener la infraestructura de Facebook, con lo que pensé que mi perfil se ajustaba perfectamente, puesto que es lo que hago actualmente pero a gran escala. También hizo especial énfasis en lenguajes de programación y scripting, especialmente python. En mi trabajo suelo programar algunos scripts, pero tampoco es mi principal tarea. Parece que eso no le acabó de gustar.
Al finalizar la primera parte empezó a hacerme un pequeño cuestionario sobre diferentes temas. A nivel de networking las preguntas fueron muy básicas: que puertos utilizan los servicios típicos (ssh, dns, http), que tipo de paquetes se envian para establecer una conexión TCP, que es la MTU o como detectar que se pierden paquetes en una red. Sobre linux me preguntó cosas como que significaban los números que aparecen en la salida del comando uptime, el significado de $*, $$, $?; como se chequean errores de disco y luego algunas preguntas sobre señales entre procesos. Esto último lo tenia bastante verde y creo que es lo único en lo que falle.
Cuando terminó el cuestionario me dijo que habíamos terminado y que si quería preguntarle algo. Me pilló algo desprevenido y no había preparado nada. Eso creo que tampoco le gustó, ya que deben pensar que no estas interesado en el puesto, con lo que recomiendo tener algunas preguntas preparadas para preguntarle al reclutador. Esta entrevista duró unos 20 minutos y la verdad es que tuve buenas sensaciones puesto que la mayoría de preguntas técnicas las había respondido con soltura.
A los dos días recibí un mail diciendo que lo sentian mucho pero que mi perfil no se ajustaba a lo que estaban buscando. Pensé que se habría acabado, pero al día siguiente me llamó de nuevo la reclutadora diciendome que un manager había visto mi curriculum y que le había interesado mi experiencia como sysadmin. Parece ser que lo que buscaban inicialmente era un experto en python y con mas experiencia en programación pero que tenían alguna otra vacante en la que si podría encajar.
Al dia siguiente me envió otro mail pidiendome cuando podría hacer una segunda entrevista con un SRO y ademas me dió algunas recomendaciones, sobre todo que preparase preguntas para demostrarle interes.
Finalmente me llamó el SRO y ya empezó mal la cosa. Entre mi mal ingles y que se le oia fatal, puesto que estaba en un sitio con bastante ruido y con un manos libres, era dificil entenderlo. Me explicó en que iba a consistir la entrevista, varias preguntas de networking, otras tantas de linux y solucionar algunos casos prácticos.
Para esta segunda entrevista me esperaba un tipo de preguntas y al final fueron diferentes, llegando a muy bajo nivel. Preguntas sobre cómo funciona el comando traceroute, que le puedes explicar que sirve para conocer la ruta que siguen los paquetes en la conexión entre dos hosts. Sin embargo, lo que quería era una descripción de que tipo de paquetes se enviaba, el TTL de cada paquete, porque pasaba por un router y no por otro, etc.
Las preguntas sobre linux estaban enfocadas a los procesos. Que estados puede tener un proceso, que señales se le pueden enviar, que implica que un proceso sea zombie. Fueron muchas preguntas sobre señales que en realidad, a la hora de administrar servidores, no las utilizo mucho y como en la primera entrevista dejé mucho que desear.
Los casos prácticos se basaron en como reiniciar un servidor remotamente desde una consola y como recuperar la password de root de un servidor. La verdad que creo que le respondí como debía pero parece que él lo hubiese hecho de otra manera, quizás porque el conoce su infraestructura y como lo tienen montado y yo estaba a ciegas y respondía de forma algo mas genérica.
Finalmente, para terminar la entrevista me preguntó si quería hacerle algunas preguntas. Las típicas preguntas que sabía que le iba a hacer las tenia bien preparadas y estudiadas y sabía hasta donde podía decirme. Luego le hice alguna pregunta mas técnica y me dijo que no podía responderme ni darme detalles.
Al dia siguiente de la entrevista con el SRO recibí otro mail de la reclutadora diciendome que no seguia. Despues de la entrevista con el SRO sabía que iba a ser ese el resultado así que no me sorprendió demasiado.
Como recomendaciones para alguien que esté interesado en participar en un proceso parecido me quedo con esto:
- Ten tu perfil de Linkedin actualizado, sobre todo el perfil en ingles
- Estudia/repasa los fundamentos de networking: Ethernet, TCP/IP, protocolos. Las preguntas son muy «académicas».
- Estudia el funcionamiento de los procesos y los tipos de señales en Linux
- Prepara preguntas para los reclutadores y los ingenieros con los que tengas entrevistas.
- Intenta hacer las entrevistas en un lugar tranquilo.
- Interesate por como funcionan en la empresa en cuestión, para Facebook hay algunos videos y un artículo muy interesante:
Algunos enlaces interesantes:
- http://linuxinterviewquetions.blogspot.com.es/
- http://wings2linux.blogspot.com.es/2011/03/interview-questions-2-1.html
- http://wings2linux.blogspot.com.es/2011/03/linux-interview-questions.html
- http://www.thegeekstuff.com/2011/02/linux-boot-process/
- http://www.unixarena.com/2013/08/lvm-linux-interview-questions.html
- http://www.unixarena.com/2013/08/linux-interview-questions-package.html
- http://www.sysadminshare.com/2012/09/linux-interview-questions-part-1.html
- http://rtg.in.ua/2013/04/23/how-i-failed-a-google-sre-interview/
- http://blog.foomatik.com/2012/09/28/sample-screening-test-html/
- http://www.catonmat.net/blog/my-job-interview-at-google/
- http://www.catonmat.net/blog/wp-content/uploads/2008/11/linuxworld-07-describesre.pdf
- http://www.catonmat.net/blog/wp-content/uploads/2008/11/thatcouldnthappentous.pdf
- www.catonmat.net/blog/wp-content/uploads/2008/11/pollmann_google_lightning_talk.ppt
- http://googleresearch.blogspot.com.es/2012/07/site-reliability-engineers-solving-most.html