Un breve resumen del proceso de preparación:
- Aprenda los fundamentos de CS importantes para la ingeniería de software
- Resolver muchos problemas de práctica para algoritmos y estructuras de datos.
- Haz algunas preguntas de diseño del sistema
- Practica entrevistas reales
- Que alguien experimentado te dé retroalimentación
Y solo entonces: - Comience a solicitar trabajo
Como estamos hablando de ingeniería de software, estas compañías no solo le darán problemas algorítmicos, sino que también recibirá preguntas sobre el diseño del sistema.
Tenga en cuenta que el conocimiento de algoritmos y otros fundamentos de CS no solo es necesario para la entrevista, sino también para su trabajo diario, especialmente en las empresas que mencionó. Así que no solo se prepare para la entrevista, prepárese para el trabajo.
- ¿Cómo debería responder si un entrevistador me pregunta "cuál prefiere, investigación o desarrollo de software"?
- Como entrevistador, ¿hablas demasiado en tus entrevistas? ¿Qué tan importante es para usted dejar que el entrevistado diga lo que piensa?
- ¿Cómo una mala entrevista, una gran entrevista y tres buenas entrevistas afectarán mis posibilidades en Google?
- Cómo hacer que mi currículum sea preseleccionado para una entrevista de Amazon SDE
- ¿Por qué no recibo entrevistas para los trabajos más simples?
¿Cómo haces eso?
(parte de lo que sigue es lo que escribí en respuesta a las entrevistas de programación: ¿Cuáles son los principales sitios para la preparación de entrevistas de ingenieros de software?)
- Aprenda los fundamentos de CS para la ingeniería de software: cuando se trata de trabajar como ingeniero de software en los “cuatro grandes” y otras grandes compañías tecnológicas, es fundamental comprender los fundamentos de la informática.
Estas empresas crean productos que son utilizados por miles de millones de personas. No basta con que su software “simplemente funcione”, debe estar bien diseñado. Tiene que ser escalable, tanto horizontal como verticalmente. Debe estar escrito en un código limpio, fácil de mantener y documentado.
Esto no es algo que pueda lograr al mirar un par de tutoriales en YouTube. Toda persona que trabaje en esos productos debe comprender cómo funciona bajo el capó y cómo todo se combina en un todo.
Si no comprende algunos de los conceptos clave de ingeniería de software, será una señal de alerta. Dijiste en los detalles que de alguna manera olvidaste todos esos árboles y mapas hash … bueno, eso es un problema si quieres trabajar en las compañías mencionadas. Pero no se preocupe, puede tomar cursos gratuitos sobre temas importantes de ingeniería de software. El curso abierto del MIT es un buen lugar para comenzar. Algunos de sus cursos que pueden ser útiles:
- Introducción a la informática y programación
- Estructura e interpretación de programas de computadora
- Introducción a los algoritmos
- Diseño y Análisis de Algoritmos
- Ingeniería de sistemas informáticos
Teach Yourself Computer Science tiene una gran lista de recursos para cualquier ingeniero de software que busque profundizar su conocimiento sobre temas relevantes de informática.
- Practique problemas de algoritmos y estructuras de datos: las empresas usan estos problemas para evaluar sus habilidades de resolución de problemas, ver cómo piensa y evaluar su conocimiento de algoritmos (duh). Una vez que comprenda los fundamentos (paso 1), todo se reduce a mucha práctica.
Hay muchos sitios web excelentes donde puedes practicar, como Codechef, SPOJ y Project Euler. Asegúrese de aprender las técnicas para resolver estos problemas: la comunidad de programación competitiva puede ayudarlo con eso.
Aprenda cómo a) Identificar el tipo de problema con el que está lidiando b) construir rápidamente una solución de fuerza bruta c) optimizarla yd) analizar la complejidad de su solución (Guía para principiantes de notación Big-O). Además, aprenda a hacer preguntas significativas y piense en voz alta mientras resuelve problemas, ya que puede necesitarlo en algunas entrevistas.
Puede comenzar practicando algunos problemas generales, pero con el tiempo debe cambiar a problemas específicos de la empresa que está solicitando. Puede encontrar problemas específicos de la empresa para practicar en Geeks For Geeks. Las compañías que mencionó en su pregunta también se enumeran allí:
– Preguntas de la entrevista de Google
– Preguntas de la entrevista de Facebook
– Preguntas de la entrevista de Amazon - Practique problemas de diseño del sistema: esto es lo que distingue a los ingenieros experimentados y a los no tan experimentados. La clave aquí es comprender los conceptos y las ideas principales del diseño del sistema, y luego podrá abordar casi cualquier problema que un entrevistador pueda darle. Tenga en cuenta que estas preguntas rara vez tienen una respuesta correcta u óptima. Sitio web superior para aprender y practicar:
- Grokking la entrevista de diseño del sistema
- Sistema de cebado de diseño
- Practique entrevistas y obtenga retroalimentación: una vez que tenga lo básico, es hora de practicar la entrevista real. Siempre puede pedirle a su madre o un amigo que actúe como entrevistador mientras practica, pero es mucho mejor si puede encontrar un ingeniero experimentado que pueda evaluarlo.
Deje que su “compañero” haga algunas preguntas y actúe como entrevistador. Trate de mantenerlo realista con limitaciones de tiempo e intente usar los mismos medios o medios similares a los que usará en la entrevista real (pizarra, papel, IDE, depende de la compañía).
Para tener una idea de cómo son las entrevistas en compañías específicas, puede consultar Glassdoor donde las personas comparten sus experiencias de entrevistas. Las grandes compañías tecnológicas incluyen:
– Experiencias de entrevistas en Google
– Experiencias de entrevistas en Facebook
– Experiencias de entrevistas en AmazonDespués de cada entrevista de práctica, pídale a su compañero que le brinde comentarios sobre cómo lo hizo. Esto será fácil si él o ella es un ingeniero experimentado, pero a menudo no tendrás acceso a ellos mientras practicas.
Por eso hemos construido Refdash – una plataforma donde puede hacer entrevistas gratuitas con ingenieros superiores de compañías como Google, Palantir y Facebook, solo por nombrar algunas. Le proporcionarán comentarios verbales y escritos detallados que puede utilizar para trabajar en sus habilidades y aumentar sus posibilidades de ser contratado. Si lo haces bien, incluso pueden ayudarte a saltarte algunas rondas de entrevistas en algunas grandes compañías tecnológicas.
Para recapitular, una vez que actualice su memoria sobre los fundamentos (o los aprenda por primera vez), comience a hacer muchos problemas de práctica. Una vez que empiece a sentirse cómodo con ellos, practique entrevistas y haga que alguien le dé su opinión.
Dependiendo de los comentarios, aprenda / practique un poco más o, si se siente listo, comience a solicitar trabajo. ¡Buena suerte con la búsqueda de empleo!