Cómo conseguir trabajo en una de las cinco principales compañías tecnológicas

“Estructuras de datos y algoritmos” es el tema favorito de las empresas entrevistadas. Puede comenzar con la resolución de problemas en estructuras de datos y libros de algoritmos.

“Resolución de problemas en estructuras de datos y algoritmos” es una serie de libros sobre el uso de estructuras de datos y algoritmos en la programación de computadoras. El libro es fácil de seguir y está escrito para el punto de vista de preparación de la entrevista . En varios libros, los ejemplos se resuelven en varios lenguajes como C, C ++, Java, C #, Python, VB, JavaScript y PHP.

Composición del libro
Este libro está diseñado para entrevistas, por lo que en el Capítulo 0 se proponen varios planes de preparación . Luego, en los capítulos 1, se explica una breve introducción del lenguaje de programación y el concepto de recursión. Se explican varios problemas basados ​​en recursividad y matriz.

Luego, en el próximo capítulo, analizaremos el análisis de complejidad. Luego analizaremos las técnicas de clasificación y búsqueda.

Luego estudiará las diversas estructuras de datos y sus algoritmos. Buscaremos en una lista vinculada, pila, cola, árboles, montón, tabla hash y gráficos.

Luego, analizaremos el análisis de algoritmos, analizaremos los algoritmos de fuerza bruta, los algoritmos codiciosos, los algoritmos de división y conquista, la programación dinámica y el retroceso.

Al final, analizaremos el diseño del sistema , que proporcionará un enfoque sistemático para resolver los problemas de diseño en una entrevista.

Los enlaces de los libros en Amazon están abajo:

1. Resolución de problemas en estructuras de datos y algoritmos utilizando C

2. Resolución de problemas en estructuras de datos y algoritmos usando C ++

3. Resolución de problemas en estructuras de datos y algoritmos utilizando Java

4. Resolución de problemas en estructuras de datos y algoritmos con C #

5. Resolución de problemas en estructuras de datos y algoritmos usando Python

Tabla de contenido
Capítulo 0: Cómo usar este libro.
Capítulo 1: Introducción – Descripción general de la programación
Capítulo 2: Análisis de Algoritmos
Capítulo 3: Enfoque para resolver problemas de diseño de algoritmos
Capítulo 4: Tipo de datos abstractos
Capítulo 5: Búsqueda
Capítulo 6: Clasificación
Capítulo 7: Lista vinculada
Capítulo 8: Pila
Capítulo 9: Cola
Capítulo 10: Árbol
Capítulo 11: Cola prioritaria
Capítulo 12: Hash-Table
Capítulo 13: Gráficos
Capítulo 14: Algoritmos de cadena
Capítulo 15: Técnicas de diseño de algoritmos
Capítulo 16: Algoritmo de fuerza bruta
Capítulo 17: Algoritmo codicioso
Capítulo 18: Divide y vencerás
Capítulo 19: Programación dinámica
Capítulo 20: Retroceso
Capítulo 21: Teoría de la complejidad
Capítulo 22: Estrategia de entrevista
Capítulo 23: Diseño del sistema

Supongo que está preguntando porque desea prepararse para una entrevista en las principales empresas. Hay cuatro partes en una entrevista de ingeniería de software en estas compañías, trate de concentrarse en todas ellas para su preparación:

  1. Entrevista de codificación: ya sea ​​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. Debe esperar al menos dos entrevistas de codificación en un bucle.
  2. Entrevista de diseño del sistema: prueba sus habilidades de diseño y su capacidad para trabajar con servicios complejos y escalables. Su desempeño en estas entrevistas determina qué puesto y salario se le ofrecerá. 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.
  3. Entrevista cultural en forma . Durante esta entrevista, las empresas ven si un candidato sería un buen candidato para su cultura. El candidato no debe mostrar ninguna bandera roja.
  4. Entrevista de diseño de OO: a veces se hacen estas preguntas, según el equipo. Ejemplos: diseño de un estacionamiento, sistema de reserva de vuelos, etc.

Recientemente he realizado muchas entrevistas de diseño de sistemas (SDI) y me gusta codificar entrevistas a candidatos que no han pasado suficiente tiempo preparándose para SDI, en su mayoría tienen un mal desempeño. Esto se agrava cuando entrevista a las principales empresas como Google, Facebook, Uber o Dropbox. En estas empresas, si un candidato no se desempeña por encima del promedio, tiene una probabilidad 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 los conceptos de sistemas distribuidos como Hashing consistente, Particionamiento de datos, Equilibrio de carga, Redundancia y Replicación, Teorema CAP, etc.

Algunos problemas de diseño de muestra son:

  • Diseño de un servicio de acortamiento de URL como TinyURL
  • Diseñando Instagram
  • Diseñando Twitter
  • Diseñando Youtube
  • Diseñando Facebook Messenger
  • Diseñando Dropbox
  • Diseño de sugerencia Typeahead
  • Diseño de noticias de Facebook
  • Diseñando Yelp
  • Diseñando Uber

¡Espero que esto ayude!

Como está diciendo aparte de los acad y proyectos regulares, le sugiero que eche un vistazo a los concursos de codificación y programas de certificación. Los concursos internacionales de codificación como ICPC pueden darle un gran impulso a su carrera y a su currículum. Además, si llega a la final, hay una gran oportunidad para que las principales compañías noten su trabajo y talento. Luego está el GSoC. Intenta descifrar eso. En cuanto a las certificaciones, hay muchos cursos de capacitación profesional y programas de certificación que puede seguir. Six Sigma, Agile, ITIL, TOGAF, Hadoop, etc.son los más populares en este momento. Echa un vistazo a Henry Harvin Education.

Espero que esto haya ayudado 🙂

Solo hay dos cosas que debes hacer.

  1. Haz notar tu currículum. Sea breve y ponga todo el énfasis en sus logros más notables. Tener un amigo o ex compañero de trabajo que trabaje en Google para recomendar su currículum aumentará sus posibilidades.
  2. Hazlo bien en cada entrevista. Se requiere algo de preparación (podría haber hecho hasta 20 horas para mi entrevista con Amazon, menos para Google y SpaceX). La preparación no llenará huecos en su fondo de CS. Pero puede ayudar cuando se trata de codificar en una pizarra o abordar tecnologías específicas.

Hay muchos caminos para prepararse para un trabajo en Google. Algunos ingenieros ni siquiera tienen un título. Sin embargo, hay cosas que puede hacer para aumentar sus probabilidades de obtener el trabajo. Esto es lo que creo que sería el curso más directo.

  • Comienza a codificar joven. La exposición temprana (secundaria o preparatoria) te dará una ventaja cuando llegues a la universidad. También facilitará el aterrizaje de una pasantía.
  • Competir. Las competencias de matemáticas, ciencias y CS abundan en los niveles de secundaria y universidad. La mera participación no es particularmente significativa. La clasificación a nivel estatal o nacional es buena. El nivel internacional es aún mejor.
  • Obtenga experiencia laboral o de investigación desde el principio. Es posible (aunque no común) obtener pasantías de ingeniería de software en la escuela secundaria. La universidad es más común y también es un buen momento para comenzar a investigar. Ambos le darán una ventaja en pasantías y solicitudes de empleo. Además, tendrá una buena fuente de referencias. Los proyectos paralelos pueden ser una alternativa a una pasantía. Las desventajas de esto son que es posible que no obtenga el beneficio de trabajar con desarrolladores más experimentados y que las referencias sean más difíciles de encontrar.
  • Obtenga una pasantía en la empresa para la que finalmente desea trabajar . En Google, la tasa de conversión para pasantes es sustancialmente más alta que la de aquellos que solicitan directamente de la universidad sin una pasantía. Además, cuando te gradúes ya estarás familiarizado con la empresa y las herramientas que te darán una ventaja sobre otros graduados. Los puestos de pasantía son competitivos, por eso es importante tener una pasantía previa o experiencia en investigación.
  • Obtenga una oferta Una vez que haya obtenido la pasantía, es importante que cumpla con las expectativas de su gerente. No tiene que reinventar la búsqueda / redes sociales / etc. pero intenta mover la aguja un poco.

En el mejor de los casos, es una guía para enfocar sus esfuerzos hacia su objetivo. No se preocupe si el camino no coincide con su experiencia. La mayoría de los ingenieros que trabajan en Google no siguieron este curso preciso. Trabajé para varias compañías antes de conseguir el trabajo en Google. Otros han tomado rutas aún más tortuosas. Lo que en última instancia es importante para conseguir el trabajo es poder as de la entrevista. Todos nos hemos preparado para eso a nuestra manera.