Siempre sueño con trabajar en grandes empresas tecnológicas como Google o Facebook, pero mi habilidad con los algoritmos es muy débil. Intento resolver problemas en Google Code Jam y CodeChef, pero solo puedo resolver los fáciles. ¿Qué tengo que hacer?

Fui empleado de Google durante 6 años y serví en un comité de contratación durante la mayor parte de ese tiempo. Tengo una idea de lo que están buscando.

El proceso de entrevistas en Google incluye un día de entrevistas (generalmente 6), y luego los comentarios (altamente detallados, incluidas las transcripciones de todos los códigos) de todos ellos van al comité de contratación.

Los algoritmos son una parte importante de lo que buscan los entrevistadores, pero solo una de muchas partes. OO El diseño, la resolución de problemas, la inteligencia general, la arquitectura del sistema, el enfoque de las pruebas son factores importantes que varios entrevistadores individuales valoran más o menos que otros. Al prepararse para su entrevista, trátela como una serie de exámenes importantes y asegúrese de revisar y practicar a fondo en todas estas áreas.

Una decisión de contratación de Google es el resultado de las decisiones de muchas personas (entrevistadores y miembros del comité de contratación). Si le va mal en una entrevista, puede no arruinar sus posibilidades si le va bien en otras. Si lo haces mal en dos entrevistas … bueno, eso no es tan bueno.

Cada entrevistador es un ser humano y estará fuertemente influenciado por el “factor humano” de la entrevista. Realmente, lo que se pregunta cada entrevistador durante la entrevista y mientras escriben sus comentarios es: “¿ Es este el tipo de persona que me gustaría tener en mi equipo? ¿Serán agradables trabajar con él y ayudar a nuestro equipo a lograrlo? ¿nuestros objetivos? “Si cada entrevistador tiene una respuesta positiva a esa pregunta, aparecerá en sus comentarios y tendrá una muy buena oportunidad de entrar.

Google está en la posición de ensueño de tener un gran número de excelentes candidatos tocando a su puerta tratando de entrar. En consecuencia, el proceso de contratación se ajusta para rechazar en lugar de contratar. Preferirían rechazar a alguien en base a una duda en lugar de arriesgarse con alguien que podría ser genial. Solo ingresa un pequeño porcentaje de candidatos.

Sin embargo, si mantienes tus esperanzas realistas, si tomas el proceso en serio y te preparas a fondo, una debilidad en los algoritmos no va a matar tus posibilidades. Google es una compañía fantástica para trabajar, te recomiendo que te arriesgues y lo hagas. Si no ingresa, y recuerde, probablemente no lo hará, habrá aprendido mucho en el proceso, experimentado un día de entrevistas desafiante, estresante, pero completamente agradable, y quedará muy bien preparado para cualquier entrevista. en otra parte.

Si no te apasionan los concursos de algoritmos, pasa a otras pistas. Desde mi experiencia, muy pocos de los ingenieros de Google o Facebook eran concursantes de programación. De hecho, desaliento hacer concursos de programación para conseguir un trabajo en grandes empresas, ya que hay algunas pistas mejores y más fáciles disponibles para este propósito. Convertirse en un muy buen concursante de programación para conseguir un trabajo en grandes empresas es una especie de exageración en mi humilde opinión y si no te gusta el concurso en sí, entonces supongo que este intento será en vano.

Ahora, si quieres mejorar en cualquier tema (concurso de programación, legibilidad, música, lo que sea), la regla general es hacer mucha práctica. Mírate, puedes resolver problemas fáciles 🙂 Mucha gente no puede resolver esos problemas fáciles . El término “fácil” difiere de persona a persona. Por lo tanto, algunos tipos de problemas de algoritmos están bien bajo su control. Intenta expandir tu reino y aprender un poco más y aún así dirías: “Solo puedo resolver problemas fáciles “. Después de bastante tiempo descubrirá que, “¡woh! ¡Las preguntas de entrevista para compañías como Facebook, Google también son fáciles !” Y luego viene.

Pero una vez más, si su único propósito y objetivo es conseguir un trabajo en grandes empresas, conviértase muy bien en algo más práctico como redes, OOP, sistema distribuido. Estos son mejores cebos que el concurso de algoritmos para conseguir un buen trabajo en mi humilde opinión.

https://igorox.com/taman

Todos los problemas suelen compartir su “ADN” con otro tipo de problema. Debes tratar de resolver tantos problemas diferentes como puedas para aprovechar este hecho. Luego, desarrollará un reflejo y una fuerza subconsciente para encontrar lo que es similar en su problema actual a sus problemas anteriores.
Otro paso lógico es tomar un problema difícil y seguir dividiéndolo en secciones en las que pueda trabajar.
Incluso cuando parezca trivial, progresarás.
Para un libro que hace esto bien, recomiendo “Think Like A Programmer” de Anton Spraul. Él pasa por varios rompecabezas y acertijos , rompiéndolos. El libro está completamente basado en c ++, pero puedes seguirlo fácilmente con un mínimo conocimiento de sintaxis.

Encuentre un grupo de codificadores con los que pueda reunirse y comparta sus soluciones y estrategias de resolución de problemas para mejorar las capacidades de todos en el grupo.

Las personas tienden a tener ciertas estrategias en las que habitualmente se apoyan. Cuando el problema requiere un enfoque diferente, a menudo no pueden resolverlo.

Debido a que diferentes personas tienen diferentes estrategias habituales, estar en un grupo que se orienta entre sí ayudará a todos a adquirir experiencia con todo tipo de estrategias. Con la práctica y la orientación de los demás, todos en el equipo aprenden a resolver más problemas por su cuenta.

Esto no se limita a resolver problemas de codificación, es cierto para problemas de ingeniería, problemas de marketing, problemas financieros y problemas de recursos humanos.

En mi experiencia, he conocido personas que simplemente no estaban preparadas para ser programadores de computadoras. Tenían otros talentos y habilidades, pero la codificación no era uno de ellos. Ese puedes ser tú.

Si realmente desea unirse a una de estas empresas y realmente no está preparado para ser un programador, puede hacer una de dos cosas:
1. Descubra en qué se destaca realmente y hágase bueno en eso. Si se trata de una habilidad como ventas, factores humanos, arte o cualquier otra habilidad que sea bienvenida en estas empresas, solicite esos puestos. No todos en una gran empresa tecnológica son codificadores.
2. Aunque puede sonar difícil ahora, siempre puedes decir que no estás hecho para estar en una gran empresa de tecnología. En ese caso, descubra en qué se destaca realmente y hágase bueno en eso (¿se da cuenta de que me estoy repitiendo?). Luego, puede unirse a una empresa que quiere ese talento en el que sobresale, o puede comenzar su propia empresa.

Personalmente, era un estudiante universitario en física porque quería ser científico. Estaba crónicamente deprimido en la universidad. Un psicoterapeuta me dijo que parte de la razón por la que estaba deprimido era que simplemente no estaba interesado en la física. La prueba vocacional fuerte lo demostró. También mostró que salí de la escala en interés en la codificación. No escuché al principio. Obtuve mi título de física y trabajé en una planta de energía nuclear hasta que descubrí que la única vez que estaba feliz era cuando estaba codificando. Me llevó años, pero finalmente escuché sus consejos y dejé lo que pensé que debería estar haciendo, pero odié, y cambié al trabajo que amo. En general, este es un buen consejo.

Google y Facebook no solo necesitan ingenieros con las mejores habilidades en algoritmos. Si lo que realmente quiere es trabajar en una de esas compañías, no necesariamente tiene que trabajar allí como programador . Si eres malo en algoritmos y / o codificación, conviértete realmente bien en eso o hazte realmente bueno en otra habilidad que Google / Facebook / etc.necesita.

Un buen amigo mío estudió derecho y ciencias políticas. Él es experto en tecnología, pero apenas conoce ninguna programación. Trabaja en el departamento de comunicación y disfruta mucho de su trabajo.

Si observa las preguntas de programación formuladas por las empresas (por ejemplo, consulte CareerCup), generalmente hacen preguntas relacionadas con paradigmas algorítmicos importantes (como programación dinámica, retroceso, división y conquista, etc.). Se espera que cualquier buen ingeniero en estas empresas líderes conozca bien estos conceptos. Las preguntas son generalmente menos matemáticas a diferencia de los concursos de programación (por ejemplo, codechef tiene muchas preguntas matemáticas).
Otra gran fuente para preguntas de la entrevista es geeksforgeeks.org.

Además, este es solo un punto de partida. Puede especializarse en un determinado dominio de su elección, como compiladores, sistemas operativos, bases de datos, sistemas distribuidos, aprendizaje automático, etc.

Mis algoritmos tampoco son tan buenos. Pero he memorizado la mayor parte de la implementación de algoritmos hasta el punto de que puedo resolver la mayoría de las preguntas fácilmente regurgitando lo que he memorizado.

Debería poder resolver la mayoría de las preguntas de la entrevista utilizando este método. De hecho, la mayoría de las preguntas más bajas de DIV2 en TopCoder también podrían resolverse utilizando este método.

Suena crudo, pero hay muchas maneras de desollar al gato 🙂

No debes creer en todos los anuncios. No estoy muy seguro sobre FB, pero Google no se compone exactamente de las estrellas más brillantes. Bueno, en su imaginación, sí, pero …

Pero en serio, si quieres ser bueno con los algoritmos … hay muchos libros. Sugeriría el fundamental, DEK tomos 1-3. Pasará algún tiempo leyéndolos, y puede que los lea más de una vez, pero una vez que haya terminado, sabrá mucho más que probablemente el 95% de los Googlers … no estoy muy seguro de las personas con FB, parecen ser inteligentes, pero no muy educado, en masa. Por supuesto, en ambas compañías puedes encontrar a las personas más brillantes que puedas encontrar … pero en su mayoría se esconden.

No sé cuándo comenzó en la programación competitiva, pero los que están resueltos con un problema difícil, la mayoría de ellos están programando durante 10 años o más de 10 años. Conocí a uno de mi hermano recientemente que consiguió trabajo en Google, le pregunté cuándo empezaste programación? me respondió que a los 15 años primero escribía el código en básico.
La programación competitiva se basa en la práctica de algo, estructuras de datos, matemáticas, … Son habilidades más importantes en el campo.
espero que entiendas.