¿Cuál sería el proceso paso a paso para un estudiante de CSE no IITiano para conseguir un trabajo en empresas basadas en productos como Google, Amazon y Microsoft, etc.?

Aquí hay una respuesta dada por nuestro súper senior Sr. Rahul Gulati:

Google, Facebook y algunas otras compañías me contactaron, principalmente debido a mis logros en competencias de programación. Estuve entre los primeros 500 en cada uno de Google CodeJam (Ronda II), TopCoder Open (Ronda II) y Facebook HackerCup (Ronda III) en el año en que estas compañías me contactaron. Estas compañías llegan a candidatos potenciales para oportunidades de trabajo si les va bien en las competencias de programación organizadas por ellas. Me preparé mucho para estas entrevistas y te daré mi consejo sobre cómo puedes hacer lo mismo.

Literatura de programación Debería desarrollar una buena cantidad de experiencia en el lenguaje de programación que elija. Los lenguajes más utilizados son C / C ++ y Java, por lo que recomendaré literatura solo para estos. Para C / C ++, recomendaría C ++ Primer Plus y C ++ Primer (este último es un poco más avanzado). Para Java, recomendaría Java: la referencia completa.

Algoritmos y estructuras de datos Literatura y cursos Para programar entrevistas y programas competitivos, necesitaría tener una sólida comprensión de los diversos algoritmos y estructuras de datos comunes, paradigmas de diseño de algoritmos y la capacidad de analizar algoritmos. recomendar Introducción a los algoritmos. Este es un gran libro para teoría, ejercicios y problemas, y cubre la mayoría de las cosas que necesitará. Para los cursos, recomendaría lo siguiente: Introducción a los algoritmos Algoritmos: Parte de diseño y análisis IA Parte de algoritmos: Diseño y análisis II Algoritmos Parte IA Algoritmos Parte I Esto debería servir como una lista bastante exhaustiva de algoritmos y estructuras de datos que se utilizan comúnmente para resolver problemas de programación competitivos. Debe leer sobre estos, el código y usarlo como biblioteca para resolver sus problemas.

Literatura sobre resolución de problemas Además de tener conocimiento sobre varios algoritmos y estructuras de datos, también necesitaría desarrollar una capacidad de resolución de problemas realmente fuerte. Problemas como los que aparecen en las Olimpiadas realmente ayudan con eso. Algunos de los textos que recomendaría para esto son: El arte y el oficio de la resolución de problemas Cómo resolverlo Estrategias de resolución de problemas Un camino hacia la combinatoria para estudiantes universitarios

Jueces y concursos en línea Aquí hay una lista de algunos concursos en los que puede participar. Aprenderá resolviendo problemas nuevos, mirando el código de otros participantes y leyendo editoriales para aprender múltiples soluciones a estos problemas.

Google CodeJam: la competencia se realiza anualmente. Hay varias rondas (Calificación, Ronda 1, Ronda 2, Ronda 3 y Finales Mundiales) y los 25 mejores concursantes para la Ronda de Finales Mundiales se presentan en el sitio, y el ganador recibe un premio en metálico de 15,000 $. Generalmente se llega a los mejores finalistas para una posible oportunidad de trabajo. Los problemas que han aparecido antes están disponibles en el sitio web con soluciones y archivos de entrada y salida.

Facebook HackerCup – Otra competencia anual de programación mundial con múltiples rondas. El ganador recibe un premio en efectivo de 10,000 $. Al igual que con CodeJam, se llega a los mejores finalistas para una posible oportunidad de trabajo. Debería poder encontrar los problemas que aparecieron anteriormente en el sitio web.

ACM ICPC (International Collegiate Programming Contest): un concurso anual de programación para estudiantes universitarios. La participación es en equipos de tres. Hay múltiples rondas (en línea, rondas regionales en el sitio y finales mundiales). Las universidades de todo el mundo organizan competiciones en línea y regionales en el sitio, y los ganadores de estas avanzan a las Finales Mundiales. Los problemas anteriores están disponibles en el sitio web y son la mejor fuente de práctica para prepararse para esta competencia.

Codeforces: las rondas de Codeforces se llevan a cabo casi todas las semanas, y también se llevan a cabo muchas más competiciones. Puedes practicar para resolver problemas que han aparecido en rondas anteriores de Codeforces y otras competiciones.

TopCoder: los SRM de TopCoder se llevan a cabo casi todas las semanas. Y TopCoder Open se celebra una vez al año. También puedes practicar para resolver problemas anteriores en TopCoder Arena. En los SRM, hay dos divisiones; División I y División II. Empiezas compitiendo en la División II y, si lo haces bien, asciendes a la División I. Hay 3 problemas, cada uno en la División I y II, y así es como los clasificaría en orden de dificultad: Div. II Nivel I <Div II Nivel II ~ Div I Nivel I <Div II Nivel III ~ Div I Nivel II <Div I Nivel III. También hay una sección para tutoriales de programación competitiva que recomiendo encarecidamente. Los mejores finalistas generalmente son contactados por patrocinadores (Google, Facebook, etc.) para posibles oportunidades de trabajo. Incluso puedes usar sus foros para discutir los problemas que tienes atascados, o para conocer las competencias de programación que están sucediendo, y mucho más.

CodeChef: hay una competencia realmente desafiante de 10 días que ocurre una vez al mes. También hay dos concursos más cortos (de 2.5 a 3 horas de duración) que tienen lugar cada mes. También hay muchas otras competiciones que tienen lugar en esta plataforma que generalmente están organizadas por diferentes entidades.

Proyecto Euler: como dice el sitio web, una serie de problemas matemáticos / informáticos desafiantes. Los amantes de las matemáticas realmente disfrutarían resolviendo problemas en este sitio web.

HackerRank: hay muchas competencias y problemas de programación disponibles en este sitio web. Y hay muchos más dominios además de los algoritmos.

Concurso de resolución de problemas de Internet: esta es otra competencia anual de programación de equipos. Solo hay una ronda. Los problemas varían de muy fáciles a muy difíciles y no todos requieren las habilidades que generalmente se usan en las competencias de programación.

Textos y fuentes de la entrevista Para prepararse específicamente para la parte de la entrevista, recomendaría lo siguiente:

Descifrando la entrevista de codificación y los elementos de las entrevistas de programación: creo que estos son libros increíbles que contienen muchos problemas para codificar entrevistas, consejos sobre entrevistas culturales, cómo debería ser su currículum, resolución de problemas de pizarra y mucho más.

InterviewBit: un sitio web increíble cofundado por mi amigo Anshuman Singh (había seguido su consejo para prepararme para las competiciones de programación mientras estaba en la universidad, lo conocí en las competiciones ACM ICPC y también trabajamos en Facebook al mismo tiempo). Contiene una variedad de problemas que serían excelentes para su preparación. También han lanzado recientemente un curso de diseño de sistemas. Si lo hace realmente bien, lo contactarán y lo referirán a algunas de las principales empresas que existen y también lo ayudarán a prepararse para las entrevistas realizando simulacros.

Fuente: Rahul Gulati

He escrito una publicación de blog detallada al respecto. ¿Cómo prepararse para las principales empresas multinacionales?

Los puntos de nivel superior a continuación:

Temas que son importantes

  • Un lenguaje de programación (C / C ++ / Java)
  • Conocimiento sólido de estructuras de datos y algoritmos.
  • Conocimiento profundo del sistema operativo. Conozca Thread vs Process, Semaphore Mutex, Livelock, Deadlock, memoria y gestión de recursos
  • Conocimientos básicos de DBMS, Redes y Arquitectura de Computadores

Habilidades requeridas

  • Resolución de problemas: debe ser capaz de encontrar una solución cuando se le presente un problema. Esto requiere buenas prácticas. Debe saber cuándo usar un algoritmo particular y qué ajustes se necesitan para resolver el problema.
  • Comunicación: debes poder comunicar tus pensamientos. No se trata solo de resolver problemas, sino de explicar cómo llegó a la solución
  • Capacidad para trabajar en equipo: en una empresa tan grande, la base de código es enorme y simplemente no es posible mantener la calidad del código y abordar la creciente demanda del mercado con una sola mano. Debes poder trabajar en equipo
  • Diseño y prueba: como ingeniero de software, usted es responsable de una característica de principio a fin. Debe pensar en enfoques, escribir el código y probarlo si funciona para todos los casos de prueba. Practica el diseño y prueba problemas

Ser advertido

Si no eres de una buena universidad, es probable que las mejores compañías no visiten tu campus. Puede solicitar referencias fuera del campus. Pero reciben miles de hojas de vida cada semana. Su currículum debe destacarse para recibir una llamada de entrevista. Aquí hay algunas cosas que puede hacer:

  • Construye un proyecto increíble. Si es una aplicación de Android / iOS, póngala en el mercado. Puedes mostrar una buena base de usuarios
  • Participe en la programación competitiva. Sería mejor si pudieras mostrar tu habilidad mencionando “X ‘clasificado de N candidatos”
  • Contribuir a la comunidad tecnológica. Escriba artículos sobre GeeksforGeeks o haga algo en un proyecto de código abierto

Te pueden gustar mis otras publicaciones:

  • Viaje de un niño de un pueblo pequeño a Microsoft: una historia no contada Parte 1
  • La vida de un ingeniero de Microsoft
  • Friki en la cima – Aashish Barnwal | Acostúmbrese a escribir código limpio, legible, flexible y robusto – GeeksforGeeks

Escribo sobre programación y experiencias de la vida. Si me sigues, no te decepcionaré. Aashish Barnwal

Déjame darte una visión diferente para pensar.

Aquí hay una pregunta para usted: ¿por qué desea trabajar en empresas como Google, Amazon, Microsoft, etc.?

Respuestas posibles –

  1. Ellos son los gigantes tecnológicos y por eso quieres el nombre.
  2. Impresionante trabajo, gran aprendizaje y futuro brillante.
  3. Mejor salario e incluso mejores beneficios.

Si crees que alguno de los puntos anteriores es tu factor de motivación, déjame dar otros puntos para no unirte a esas compañías y crear una vida igual, si no mejor.

Dado que usted proviene de antecedentes no italianos, supongo que sus 4 años de licenciatura probablemente no lo motivaron lo suficiente como para trabajar duro para dominar las Estructuras de datos, los Patrones de diseño y todas las demás cosas que todos los demás han pasado y las empresas mencionadas también serían no viene a su campus para entrevistas en el campus, por lo tanto, es aún más difícil para usted empacar entrevistas.

Ahora, digamos que trabajas duro y obtienes ofertas de otras compañías de productos que también están haciendo un trabajo innovador. Usted obtiene –

  1. Mejor salario y mejores ventajas
  2. Toneladas de aprendizaje y a un ritmo mucho más rápido
  3. No es una marca tan grande de la que alardear, pero es probable que estés trabajando en algo que el mundo usará muy pronto, ¿no es emocionante?
  4. Más importante aún, tienes la oportunidad de descubrir lo que realmente quieres.

Lo anterior también podría ser cierto para las empresas basadas en servicios, pero definitivamente es cierto para las empresas basadas en productos.

Una vez más, todavía tiene que pasar por el ejercicio de ser bueno en algoritmos, estructuras de datos, etc.

Entonces, para responder a su pregunta, el proceso es el mismo, común y la gente ha publicado esos pasos. Lo que quieres averiguar es si vale la pena seguir esos pasos ahora o trabajar duro, desarrollar tu carrera y descubrir lentamente el mejor momento para hacer un cambio en esas empresas.

¡¡Todo lo mejor!!

  • Comience resolviendo problemas en el libro Entrevista de descifrado. Tienen un nivel de dificultad fácil a medio y cubrirán las estructuras de datos básicas (matrices, cadenas, listas, pilas, colas, árboles y gráficos) y algoritmos (manipulación de bits, programación de recursión y dinámica, clasificación y búsqueda, escalabilidad y límites de memoria) que necesitas saber
  • Después de eso, puedes practicar en LeetCode. Otros sitios en línea donde puede practicar o encontrar preguntas de entrevistas: GeeksForGeeks, HackerRank, CareerCup, Glassdoor.
  • Cuando te sientas listo, te recomendaría hacer algunas entrevistas simuladas. Hacer problemas por su cuenta es muy diferente de enfrentar una entrevista real en una situación de presión.

¡¡Todo lo mejor!!

mientras que (1)

{

comer;

aprender;

código;

dormir;

}

aplique estos códigos a su rutina diaria. google / amazon / facebook vendrá a tu puerta.