Respuesta corta: los siguientes sitios / cursos fueron muy útiles para mí:
- Grokking la entrevista de diseño del sistema.
- LeetCode
- Coderust 2.0
Respuesta larga: he dado más de 200 entrevistas técnicas y entrevisté a casi 100 ingenieros de software. He entrevistado a la mayoría de las empresas de tecnología más importantes como Microsoft, Google, Facebook, Amazon, etc. Hice mis preparativos durante 3 a 4 meses. Desde que tuve éxito en estas entrevistas, permítame compartir mi experiencia, ¡espero que esto también le ayude!
El mayor problema al que me enfrenté fue que no me sentía cómodo con la codificación de la pizarra, ya que esto no es lo que suele hacer en su trabajo diario. En segundo lugar, me entrevisté en Google y Facebook como candidato senior, lo que lo hizo un poco difícil, ya que tienes que mostrar habilidades de diseño sólidas. Mi entrevista de Microsoft fue para las posiciones junior hace unos años: en esa entrevista se esperaban excelentes habilidades de diseño.
- ¿Cómo fue tu experiencia de entrevista de BARC para el OCES / DGFS 2015?
- ¿Qué exámenes debo dar para conseguir un trabajo en los bancos?
- No soy de IIST y tampoco tengo un agregado de más del 65%. No soy elegible para el examen de reclutamiento ISRO. ¿Cómo me meto en ISRO?
- Soy estudiante de CSE 7th sem y no estoy interesado en TI. Me estoy preparando para el CAT. ¿Debo tomar colocación y tener alguna experiencia primero?
- Cómo prepararse para GATE durante los exámenes semestrales.
A menos que se sienta súper cómodo con la codificación de la pizarra, las estructuras de datos y las habilidades de diseño del sistema, tengo dos sugerencias para usted:
- Sigue practicando la codificación de la pizarra hasta que te sientas cómodo con ella.
- No te olvides de prepararte para las entrevistas de diseño del sistema. Las entrevistas de codificación se han convertido en un requisito previo en estos días, su posición real (y salario, etc.) se decide en función de las habilidades de diseño que tenga.
Dado todo esto, ahora permítame indicar el proceso de la entrevista y algunos recursos para prepararse para las diferentes partes del mismo.
Por lo general, hay una o dos pantallas de teléfono seguidas de un ciclo completo de entrevistas en el sitio. He visto a personas que cancelaron la pantalla de su teléfono con una buena referencia interna. En general, el ciclo de entrevistas de ingeniería de software consta de tres partes. Intente concentrarse en todas ellas para su preparación:
- Entrevista de codificación: en una pizarra o en una computadora real. Esto se ha convertido en un requisito previo para obtener una oferta. Si no puede codificar / resolver el problema (o tiene algunos errores graves en su código), es bastante difícil obtener una oferta. Buenos recursos para prepararse para este tipo de entrevista: Coderust 2.0 y LeetCode. Debería esperar al menos dos entrevistas de codificación en un bucle.
- Entrevista de diseño del sistema: esto prueba sus habilidades de diseño y su capacidad para trabajar con servicios complejos y escalables. Su desempeño en estas entrevistas determina qué posición y salario le ofrecerán. Si tiene habilidades de diseño encomiables, obtendrá una oferta más alta. Un buen recurso para prepararse para esta entrevista: Grokking the System Design Interview.
- Entrevista cultural en forma . Durante esta entrevista, las empresas ven si un candidato sería una buena opción para su cultura. El candidato no debe mostrar ninguna bandera roja.
Al igual que las entrevistas de codificación, los candidatos que no han dedicado suficiente tiempo a la preparación de las entrevistas de diseño de sistemas (SDI) tienen un desempeño deficiente. Esto se agrava cuando se entrevista a las principales compañías como Google o Facebook. En estas compañías, si un candidato no tiene un rendimiento superior al promedio, tiene una posibilidad limitada de obtener una oferta. Además, un buen desempeño en tales entrevistas siempre resulta en una mejor oferta (financieramente), ya que su desempeño se refleja en su capacidad para trabajar con sistemas complejos.
Además, a todas estas grandes empresas les gustan los candidatos que están familiarizados con conceptos de sistemas distribuidos como Hashing consistente, Partición de datos, Equilibrio de carga, Redundancia y replicación, Teorema de CAP, etc.
Algunos ejemplos de problemas de diseño son: diseño de un servicio de acortamiento de URL como TinyURL, diseño de Instagram, diseño de Twitter, diseño de Youtube, diseño de Facebook Messenger, diseño de Dropbox, diseño de sugerencias Typeahead, diseño de noticias de Facebook, diseño de Yelp, diseño de Uber
Puedo poner más detalles sobre las entrevistas de codificación, pero sentí que otras respuestas tienen algunas buenas referencias. Aquí hay algunos buenos artículos sobre entrevistas de codificación / diseño:
- Cómo NO tener éxito en tu entrevista de codificación de 45 minutos
- Anatomía de una entrevista de diseño de sistemas
- ¿Cómo NO diseñar Netflix en su entrevista de diseño de sistema de 45 minutos?
¡Feliz entrevista!