¿Dónde puedo encontrar algunos ejemplos de documentos de diseño de software o plantillas que empresas como Google, Facebook y Amazon usan internamente?

Si llegaste a un sitio, espero que tu reclutador te envíe alguna preparación; Ciertamente lo hago. De hecho, podría hacer toda la diferencia. Cuando comencé en Facebook, nuestro equipo no tenía un documento de preparación oficial y descubrimos que los candidatos simplemente no se sentían preparados. Estaban fallando a izquierda y derecha.

Así que creamos un documento de preparación que repasó las entrevistas que encontrarán, cómo prepararse y qué esperar. Queremos que te vaya bien y esto ayudó dramáticamente.

En el caso de que su reclutador no proporcione uno, aquí hay algunos consejos para 3 entrevistas técnicas comunes + las habilidades blandas que muchos a menudo pasan por alto pero que son igual de críticas. Muchos de estos consejos provienen de mis otras respuestas de Quora como esta.

  1. Sistemas: más específicamente, solución de problemas y depuración de Linux. Comprender cosas como memoria, io, cpu, shell, etc. sería bastante útil. Saber cómo escribir realmente un shell de Unix también sería una buena idea. ¿Qué herramientas podrías usar para depurar algo? En otra nota, esta entrevista probablemente superará sus límites de lo que sabe (y cómo implementarlo).
  2. Diseño / Arquitectura : esta entrevista se trata de tomar una pregunta ambigua sobre cómo podría construir un sistema y permitirle guiar el camino. Su entrevistador agregará restricciones cuando sea necesario y la idea es obtener una solución simple y viable en el tablero. Cosas como la carga y el monitoreo son cosas que podría considerar. Lo que consideras es tan importante como lo que no. Por lo tanto, haga preguntas aclaratorias y reúna los requisitos cuando sea apropiado (que es mucho más frecuente de lo que podría pensar). Un gran recurso para revisar aquí es Grokking the System Design Interview y enfocarse en las áreas de equilibrio de carga, almacenamiento en caché, índices y fragmentación. Incluso puedes practicar el diseño de un sistema como Instagram aquí. Si desea algunos consejos adicionales, hay una excelente publicación en Github aquí con recursos adicionales sobre este tema. Es importante tener en cuenta que su entrevistador no espera que usted sea increíblemente fluido en el diseño del sistema, pero comprender esto o tener una ventaja sobre otros candidatos ciertamente lo distinguirá de aquellos que solo son codificadores fuertes.
  3. Codificación : el objetivo final son los algoritmos, las estructuras de datos y el código limpio de producción. Los árboles binarios y las listas de enlaces pueden ser temas para revisar y puede usar el idioma que desee. Google tiende a ser un algoritmo muy pesado, por lo que probablemente dividiría mi tiempo 70/30 con ese algoritmo / estructuras de datos. Recuerde, es aún más crítico mostrar su proceso de pensamiento y cómo llegar a una solución y por qué. Tome consejos de su entrevistador si se los dan y corra con él. En la mayoría de los casos, no es un truco o cualquiera que intente confundirte. Por último, está bien no saber algo. Estas entrevistas están destinadas a impulsar su conocimiento más allá de sus zonas de confort y debe sentirse cómodo explorando lo desconocido.
  4. La entrevista Cultural Fit / Soft Skills – probablemente la mayor parte de la entrevista. Sí, lo leiste bien. Es posible que tenga toda la capacidad técnica del mundo, pero si no puede trabajar en un equipo, específicamente el equipo para el que está entrevistando, no tiene ninguna posibilidad. Sé agradable, sonríe y sé amable. No digas algo que no quieras escuchar al otro lado de la mesa. He visto candidatos pegarse un tiro en el pie y es alucinante. Es importante ser usted mismo, identificar nuestras fortalezas y debilidades y estar dispuesto a cambiar, adaptarse y aprender. Sé la persona con la que otros no pueden esperar para trabajar.

También es importante tener en cuenta que si no funciona la primera vez, no es el final de la línea. Muchas personas no reciben ofertas para su primera o segunda entrevista y le invitamos a continuar entrevistando para los mismos o diferentes roles, generalmente dentro de aproximadamente un año (aunque algunos roles / equipos podrían ser diferentes).

Más recursos

  • Cómo pasar por el proceso de entrevista en Facebook
  • Cómo su entrevista es diferente por nivel

Un buen punto de partida serían los proyectos de código abierto que tienen.

Google – Proyectos de código abierto lanzados por Google
Facebook – Nuestros proyectos
Nunca he escuchado ni visto ningún proyecto de código abierto de Amazon, buena suerte en encontrarlos.
LinkedIn – Código abierto | Ingeniería de LinkedIn
Netflix – Centro de software de código abierto de Netflix

Y hay muchos más que solo tiene que elegir para explorarlos y descubrir los patrones de diseño usted mismo. Lo que también es importante tener en cuenta es que la mayoría de estos son muy diferentes entre sí, cuando se trata de marcos de diseño, pero están construidos de esa manera para cumplir un determinado propósito.