Soy desarrollador de software (supongo que tú también eres desarrollador). Tuve una entrevista con Google. Respondieron inesperadamente a mi solicitud y les pedí que me dieran un mes para los preparativos.
Fallé esa entrevista miserablemente. Me di cuenta de las siguientes cosas:
A) Google requiere una resolución de problemas muy sólida (en su mayoría problemas algorítmicos + matemáticas a veces) y habilidades de codificación (para implementar algoritmos rápidamente y sin errores). Entonces, si no eres muy bueno para resolver problemas algorítmicos, tus posibilidades de obtener un trabajo son del 0% . Llamemos a esto “Firewall de Google” .
B) Google también requiere otras habilidades fuertes además de algoritmos / codificación / matemáticas. Por ejemplo (la lista está incompleta):
- Tengo 34 años. Si tuviera que dedicar los próximos 3-5 años de vida a entrenarme y practicar un deporte en particular (cricket o tenis, por ejemplo), ¿sería posible que me convirtiera en una clase internacional?
- Quiero follar a tantas mujeres como pueda en mi vida. ¿Cómo puedo lograrlo?
- Quiero aprender codificación para ser un programador de Java. ¡No tengo a nadie que me guíe! ¿Cómo procedo mientras aprendo a codificar?
- Soy un indio del sur que se quedará en mi estado toda la vida. ¿Me das razones válidas para aprender hindi?
- Necesito un consejo. ¿Cómo debo decirles a mis padres que soy un teísta agnóstico?
* Pensando en voz alta. Es decir, la capacidad de explicar claramente lo que está pensando en este momento;
* Diseño de software;
* Profundo conocimiento del sistema operativo y el hardware;
* Habilidades blandas: liderazgo / resistencia al estrés / responsabilidad, etc.
Puede entrenar sus habilidades de resolución de problemas en casa (es decir, solo lo que menciono en A ).
¡Puede probar sus habilidades de resolución de problemas en casa con alta precisión!
¡No puedes probar tu conjunto de habilidades que menciono en B en casa con alta precisión!
Lo primero que le recomendaría (suponiendo que sea un desarrollador de software) es verificar que puede pasar el Firewall de Google antes de entrevistar a Google .
Si puede resolver los problemas A, B, C de la División 2 en cualquier ronda de Codeforces en 1 hora y 20 minutos, entonces tiene algunas posibilidades con Google. Al menos para avanzar a la entrevista en el sitio y no fallar tan miserablemente (como yo en 2014).
Tienes que resolver los problemas A, B, C de varias rondas Div2 elegidas al azar (digamos 10 rondas). Todos sus envíos deben ser correctos con la primera vez.
Puede pensar que se trata de requisitos estrictos, pero en realidad no lo es.
Bueno, los problemas A y B no requieren ningún conocimiento de algoritmos específicos. Son triviales y podrían usarse solo como calentamiento rápido durante la entrevista de selección.
El problema C es el problema más fácil en el que se podría utilizar cualquier conocimiento de programación dinámica, gráficos, etc. Entonces el problema C es en realidad el nivel de entrevista.
Aquí hay algunas rondas de Codeforces elegidas al azar. Intenta resolver A, B, C:
Panel de control – Codeforces Round # 285 (Div. 2) – Codeforces
Panel de control – Codeforces Round # 288 (Div. 2) – Codeforces
Panel de instrumentos – Codeforces Round # 291 (Div. 2) – Codeforces
Panel de control – Codeforces Round # 293 (Div. 2) – Codeforces
Así que mencioné 1 hora y 20 minutos para 3 problemas solo para calentar. En concursos reales, tienes 2 horas para 5 problemas.
En la entrevista de Google, puede tener menos de 1 hora para uno o dos problemas tipo C.
Si no puede resolver estos problemas todo el tiempo (o al menos la mayor parte del tiempo), cancele la entrevista en curso.
Es mejor mantenerlos intrigados por ti en lugar de fallar tanto en la entrevista que no quieran hablar contigo la próxima vez.
Puede decirles que decidió prepararse más en serio porque siente que dos meses no son suficientes para usted.
Google lo esperará durante varios meses siempre que se mantenga en contacto con su RRHH en Google . Asegúrese de tener un correo electrónico de RRHH.
Una cosa más sobre algoritmos, resolución de problemas, programación competitiva y libros:
No es suficiente revisar el libro o Glassdoor o Geeksforgeeks y memorizar los problemas típicos de las entrevistas. Si no puede resolver los problemas que describí anteriormente, la memorización no lo ayudará . Tienes que aprender a resolver problemas por ti mismo sin saber la respuesta de antemano.
Otra cosa sobre programación competitiva y Codeforces. Hay algún problema con la cobertura de diferentes temas. Quiero decir que los problemas de Codeforces no son exactamente problemas de estilo de entrevista.
Para obtener una mejor cobertura de los temas, también debe consultar HackerRank y LeetCode Online Judge.
Hay un problema con las habilidades de prueba que mencioné en B. Es difícil probar estas habilidades y entender exactamente qué hay que mejorar.
Recomendaría realizar tantas entrevistas como sea posible con diferentes compañías.
También puede realizar entrevistas simuladas con los empleados de Google. Encuentra a Jake Cook en quora para obtener más información sobre entrevistas simuladas.
Y, por supuesto, lea libros sobre todos los temas relevantes (SO, diseño de sistemas, sistemas distribuidos, etc., etc.).
¡Buena suerte!