El año pasado, cuando Covid-19 llegó a India, Microsoft lanzó el Programa de tutoría Engage para contratar pasantes. Habíamos recibido un correo a través de nuestro departamento de recursos humanos con respecto al programa. Los criterios de selección dados fueron:
- Año de Graduación -2022
- CGPA >= 7
- Sin retrasos
- Perseguir B.Tech/M.Tech/MS en sucursales CS/Circuit
Era un programa de tutoría para aquellos que estaban al final del cuarto semestre de su licenciatura o el primer semestre de maestría.
EM participar
Proceso de selección: Para la primera ronda, tenía que llenar un formulario (este año tenía que aplicar en el portal de carreras de MS), si cumple con los criterios, recibirá un enlace para una prueba de selección.
El Test de selección constó de 10 preguntas MCQ a ser resueltas en 30 minutos.
Hay varios conjuntos de preguntas y las puntuaciones se normalizan en consecuencia. El tema de las preguntas era-
- DSA básico: pila, cola, gráfico (principalmente algoritmos transversales), clasificación, búsqueda binaria
- Algunas cuestiones teóricas sobre la IA
No hay marca negativa. Mis consejos para esta prueba serían:
- Resuelve todas las preguntas de forma positiva, no dejes ninguna fuera.
- Trate de enviar temprano (antes de la marca del punto medio si es posible), según mi observación, usan el tiempo como un desempate ya que muchas personas obtienen una puntuación casi completa.
Tutoría: El correo de selección se envió en una semana más o menos. Después de eso, hubo una sesión introductoria después de la cual las personas seleccionadas se dividieron en grupos de alrededor de 12 personas, intentaron agruparse según la universidad. A cada uno de esos grupos se le asignó un mentor, que es un desarrollador de software que trabaja en Microsoft.
Nos dieron dos proyectos de muestra:
- Tic-Tac-Toe: repositorio de muestra (https://github.com/alialaa/js-tic-tac-toe)
- Visualizador de algoritmos de búsqueda de rutas: repositorio de muestra (https://github.com/qiao/PathFinding.js)
Nuestro objetivo era elegir uno de los proyectos e innovarlo en función de una nueva pila técnica, AI, ML o algo así para hacerlo más fácil de usar, accesible y profesional. Había emprendido el segundo proyecto con uno de mis amigos de la universidad que estaba en el mismo grupo.
Podríamos trabajar solos o formar un equipo con un máximo de 4 miembros dentro del grupo seleccionado para este propósito.
El mentor realizó dos tipos de sesiones semanales para interactuar con nosotros
- Discusión de grupo
- 1:1
Un tipo de discusión se llevó a cabo cada semana y cambió alternativamente.
El GD se centró principalmente en la discusión sobre el proyecto y el progreso, problemas que una persona podría haber enfrentado, mientras que la sesión 1: 1 fue más cercana a una entrevista. En la sesión 1:1, algunas de las preguntas que me hicieron fueron:
- Preguntas sobre el Plan del Proyecto.
- Discusión detallada sobre el algoritmo de Dijkstra.
- Discusión detallada sobre la implementación, tecnicismos del proyecto.
- Definición de árbol y árbol binario. ¿Puede un solo Node formar un árbol binario?
- ¿Qué es el árbol binario balanceado? ¿Por qué se requiere?
- Dados algunos números, construya un árbol binario balanceado y muestre cómo diferiría de una opción no balanceada.
- ¿Conoces algún BST balanceado? Explicar el proceso de inserción en los árboles AVL.
- Demuestre que en BST balanceado, la operación de búsqueda tiene una complejidad de tiempo O (logn).
- ¿Cómo funciona la búsqueda binaria? Explique su Complejidad Temporal.
- ¿Qué es el montón? Explique el algoritmo para minheapify junto con la complejidad del tiempo. ¿Puedes probarlo?
Junto con las interacciones y el proyecto del mentor, se llevaron a cabo sesiones semanales sobre diferentes temas como git, IA, entrevistas de cracking, cultura en Microsoft, etc. Se dio una tarea semanal. Algunos de ellos eran-
- Proponga un método o analice cómo se pueden eliminar los prejuicios raciales y de otro tipo de los sistemas de IA.
- Hay n monedas en una línea, cara y cruz en orden aleatorio. En cada movimiento, uno puede voltear cualquier cantidad de monedas colocadas en sucesión. Diseñe un algoritmo para convertir todas las monedas cara arriba en un número mínimo de movimientos. ¿Cuántos movimientos se requieren en el peor de los casos?
- Una prueba MCQ cronometrada en Git.
La selección para la pasantía del próximo verano se basó en 3 criterios:
- Comentarios del mentor: alta prioridad
- Proyecto
- asignaciones
Según estos 3 criterios, es posible que reciba una oferta de pasantía directa o que se le solicite una para pasar por más rondas de entrevistas. En mi caso, tuve que presentarme a otra ronda de entrevistas con un gerente principal de ingeniería, del mismo nivel que el gerente con el que realizará la pasantía.
Entrevista final: Recibí un correo electrónico sobre la entrevista aproximadamente un mes después del compromiso. Se llevó a cabo durante 30 minutos en MS Teams. Las preguntas que se hicieron-
- Háblame de ti.
- ¿Cuál fue tu proyecto en Engage? ¿Qué aprendiste de eso?
- Luego discutimos sobre mis otros proyectos y mi rol, los tecnicismos en él, los algoritmos utilizados.
- Cuál es tu área de interés? Respondí IoT y luego pasó a hacer preguntas como:
- ¿En qué rango se transfieren los datos a través de dispositivos IoT? ¿Cómo se puede proceder a hackear un dispositivo IoT? ¿Cómo lo protegería si se encuentra una vulnerabilidad?
- En un supermercado, existe una lista anual de recibos de venta, que contiene Id, Cantidad, Precio y otros detalles. Te han contratado para improvisar sus ventas generales. diseñar un sistema para tal fin.
- Dadas dos arrays no ordenadas y un valor X, encuentre todos los pares que suman X. Uno de la primera array, otro de la segunda en cada par.
Para el último, me pidieron que escribiera el código y lo ejecutara en el IDE local, luego discutimos diferentes enfoques posibles, casos de esquina, etc. y el tiempo se acabó para entonces.
Aproximadamente una semana después enviaron una lista de 10 estudiantes seleccionados para la pasantía y yo era uno de ellos.
Puntas
- Para el proyecto de tutoría, forme un plan adecuado y establezca plazos estrictos para cada uno de los objetivos más pequeños.
- Mantenga a su mentor actualizado sobre los objetivos. No llegues tarde a las reuniones.
- Mantenga los conceptos básicos de DSA claros. Practique problemas en Strings, Arrays, DP y stack, queue, recursion en Leetcode.
- Para la introducción, tenga a mano proyectos y algo de experiencia. Tenga una idea detallada de sus proyectos.
- No confíe demasiado en las sesiones, ya que la mayoría de las veces se le pedirá que realice un autoaprendizaje.
¡Te deseo buena suerte!