¿Con qué recursos debo prepararme y referirme para una entrevista de ingeniería de software en Facebook?

Cuando me estaba preparando para el mío, los libros más útiles que revisé fueron:

  • Introducción a los algoritmos , por Cormen, et al. (http://en.wikipedia.org/wiki/Int…). Este es el libro de texto de algoritmos de pregrado estándar; Vale la pena leerlo.
  • Algoritmos en C , Partes 1-4 y Parte 5, por Robert Sedgewick. Este fue el texto que utilicé en mis dos primeros cursos de CS; Lo revisé porque me era familiar. Puede sustituir el equivalente de sus cursos de introducción a CS aquí, suponiendo que cubran material similar.
  • Programming Pearls , de Jon Bentley. Esto es más corto y menos pedagógico que el anterior, pero tiene muchos ejemplos inteligentes e inspiradores.
  • Java efectivo , por Joshua Bloch. Facebook no escribe mucho Java (estoy en uno de los pocos equipos que usa Java), pero este es realmente un libro sobre ingeniería de software y será útil si le hacen una pregunta de ingeniería de software (que es completamente probable). Si también está entrevistando en algún lugar que escribe mucho Java (por ejemplo, Google), definitivamente querrá leer esto.

Tenga en cuenta que no necesita memorizar el material en los libros de texto. Es muy poco probable que un entrevistador de FB le pida que implemente un montón de Fibonacci o un árbol 2-3-4 en una entrevista. Sin embargo, saber cuáles son y tener una idea general de su complejidad sería de gran utilidad.

Mi colega Carlos Bueno tiene una buena publicación sobre la preparación de la entrevista:

https://www.facebook.com/notes/f…

Steve Yegge tiene una buena publicación de blog sobre entrevistas en Google; Gran parte del material se aplica a Facebook.

http://steve-yegge.blogspot.com/…

Recomiendo encarecidamente hacer muchas preguntas de codificación por adelantado. Durante mi preparación, hice muchas de las preguntas que encontré en http://Glassdoor.com. Recomiendo encarecidamente hacer al menos parte de su preparación en circunstancias que imiten una entrevista en vivo: en una pizarra, bajo presión de tiempo, e idealmente con un confederado para hacer la pregunta. Para prepararse en el modo difícil, pídale que se ría suavemente, juegue juegos mentales con usted “¿Está seguro de que es correcto? ¿Respuesta final?”, Mire aburrido y mire fijamente un teléfono celular, etc. Idealmente, el entrevistador es alguien a quien respeta, así que en realidad estarás nervioso por hacerlo mal, así que estarás preparado para eso en la entrevista en vivo.

Finalmente, no te entrevistes con tu compañía favorita primero. Recomiendo encarecidamente que no se entreviste con lugares donde no tendría intención de trabajar (es una pérdida de tiempo para todos), pero definitivamente pondría sus favoritos más tarde, aunque solo sea para que tenga más tiempo para prepararse. Mejorará en las entrevistas técnicas si hace más de ellas.

¡Buena suerte!

En primer lugar, no creas muchos de los artículos promocionados, incluso (¿especialmente?) Los que ves en Business Insider y Wall Street Journal. Están perpetuando los mismos mitos tontos para obtener globos oculares, pero todo es BS.

Ahora para algunos consejos:

  • Prepárese con las preguntas de la entrevista real que le hayan hecho a los candidatos (es decir, no lea las “10 listas principales” o los artículos de noticias sobre las preguntas de la entrevista, generalmente están sobrevaloradas y, a veces, mentiras descaradas). CareerCup.com tiene miles de preguntas de ingeniería de software en las principales empresas.
  • Practique escribiendo código en papel (NO en una computadora). Haga que su código sea perfecto: hasta el último punto y coma debe estar allí. Prueba tu código a mano también. Solo una vez que haya hecho todo lo posible para perfeccionar su código, escríbalo en un compilador y vea cómo lo hizo.
  • No se preocupe demasiado por algoritmos sofisticados como el de Dijkstra. Los algoritmos complejos rara vez aparecen porque, francamente, sus entrevistadores probablemente no los recuerden demasiado bien. Nuevamente, mire las preguntas reales de la entrevista y vea con qué frecuencia surgen estas cosas. Si descubre que le falta algún conocimiento necesario para resolver las preguntas de la entrevista, léalo. La mayoría de las personas con una sólida formación en CS no necesitarán volver a aprender muchas cosas.
  • En su entrevista, escriba lo más cerca posible para completar, corregir. Sin pseudocódigo (nota: está bien comenzar con pseudocódigo, si eso te ayuda, pero no solo puedes escribir pseudocódigo). Una vez más, hasta el último punto y coma (aunque su entrevistador probablemente pasará por alto la falta de algunos punto y coma :)).
  • Una vez que haya terminado de escribir el código en su entrevista, pruébelo. No enviarías el código en el trabajo sin probarlo, entonces ¿por qué hacerlo en tu entrevista?
  • Piensa en voz alta. Muéstrale a tu entrevistador cómo estás pensando en el problema.
  • No tenga miedo de tirar una solución de fuerza bruta al principio, pero también debe intentar mejorar su solución. Piense en la complejidad del tiempo y el espacio y vea si puede mejorarlos.

También debe consultar mi libro, Cracking the Coding Interview: 150 Programming Questions and Answers ( http://www.amazon.com/dp/098478280X ). Se centró en las estrategias para dominar el proceso de entrevistas en las principales empresas de tecnología.