En estas empresas, la mayoría de los bucles de entrevistas constan de cuatro partes:
- Entrevista de codificación: Ya sea en una pizarra o en un ordenador real. Esto se ha convertido en un requisito previo para conseguir una oferta. Si no puedes codificar/resolver el problema (o tienes algunos errores graves en tu código), es bastante difícil conseguir una oferta. Buen recurso para preparar este tipo de entrevistas: Coderust 2.0
- Entrevista de diseño de sistemas: Aquí se ponen a prueba tus habilidades de diseño y tu capacidad para trabajar con servicios complejos y escalables. Tu rendimiento en estas entrevistas determina el puesto y el salario que te ofrecerán. Si tienes unas habilidades de diseño encomiables, obtendrás una oferta más alta. Un buen recurso para preparar esta entrevista: Grokking the System Design Interview
- Entrevista de ajuste cultural. Durante esta entrevista, las empresas ven si un candidato encaja bien en su cultura. El candidato no debe mostrar ninguna bandera roja.
- Entrevista de diseño de sistemas: Estas preguntas se hacen a veces, dependiendo del equipo. Ejemplos: Diseñar un aparcamiento, un sistema de reservas aéreas, etc.
Recientemente he realizado muchas entrevistas de diseño de sistemas (SDI) y, al igual que las entrevistas de codificación, los candidatos que no han dedicado suficiente tiempo a prepararse para las SDI suelen tener un mal rendimiento. Esto se agrava cuando se hacen entrevistas en las empresas más importantes como Google, Facebook, Uber o Dropbox. En estas empresas, si un candidato no rinde por encima de la media, tiene pocas posibilidades de conseguir una oferta. Además, un buen rendimiento en este tipo de entrevistas siempre se traduce en una mejor oferta (económicamente), ya que tu rendimiento se refleja en tu capacidad para trabajar con sistemas complejos.
Además, a todas estas empresas les gustan los candidatos que están familiarizados con conceptos de sistemas distribuidos como Hashing consistente, Particionamiento de datos, Equilibrio de carga, Redundancia y replicación, Teorema CAP, etc.
Algunos ejemplos de problemas de diseño son:
- Designing a URL Shortening service like TinyURL
- Designing Instagram
- Designing Twitter
- Designing Youtube
- Designing Facebook Messenger
- Designing Dropbox
- Designing Typeahead Suggestion
- Designing Facebook’s Newsfeed
- Designing Yelp
- Designing Uber
Hope this helped.