Me gustaría compartir mi experiencia con las entrevistas de Microsoft en esta publicación para que pueda ser útil para los estudiantes que se preparan para las próximas entrevistas. En primer lugar, me gustaría mencionar que el proceso de selección fue agradable y que los entrevistadores de Microsoft fueron muy amables y amables durante todo el proceso.
Microsoft visitó nuestro campus IIT (ISM), Dhanbad en agosto de 2020. Todo el proceso de contratación fue virtual y, en pocas palabras, consistió en 4 rondas.
Ronda 1 (Ronda de codificación): En esta ronda, se debían resolver 3 preguntas de codificación en un período de 90 minutos. Se llevó a cabo en la plataforma Mettl. Esta ronda fue bastante fácil y la había completado en 20 minutos.
- Dado un número entero, encuentre el número total de bits establecidos, el primero y el último bit establecido.
- Dada una string, encuentre la subsecuencia palindrómica más larga.
- Dada una array de enteros, encuentre el número de inversiones en la array. La complejidad temporal esperada es O(n 2 ).
Después de la ronda de codificación, hubo 3 rondas de entrevistas.
Ronda 2 (entrevista técnica): esta ronda duró casi 50 minutos y fue bastante fluida. La primera pregunta que hizo el entrevistador se basó en mis proyectos, experiencias y mi trabajo actual en las pasantías en curso. Después de esto, se hizo una pregunta de codificación basada en una búsqueda binaria.
- Dado, una array ordenada girada (rotada por algún número) en algún punto, encuentre la posición de un elemento dado.
Inmediatamente di un enfoque O(n) de fuerza bruta y dejé en claro que estaba pensando en una solución optimizada. Más tarde, expliqué la solución O(log n) usando la búsqueda binaria y me pidieron que escribiera el código para la misma. Encontró algo peculiar en mi código y tuve que probarme a mí mismo a través de un caso de prueba. Las preguntas cruzadas sobre el código escrito fueron seguidas por una pregunta para ejecutar en seco el código en casos de prueba donde mi código podría fallar. Sugerí un caso de prueba y falló en eso. Finalmente hice las correcciones y el entrevistador quedó bastante satisfecho. Esta ronda fue bastante bien.
Ronda 3 (entrevista técnica): esta ronda duró casi 1 hora y 20 minutos. No fue tan sencillo como las 2 rondas anteriores y supongo que la mayor parte de la filtración de candidatos tuvo lugar en esta ronda. Fui evaluado en mis habilidades analíticas, de codificación y de resolución de problemas en esta ronda.
- ¿Por qué estaba interesado en el aprendizaje automático y el aprendizaje profundo (que es mi área de interés) y no en mis materias principales?
- Luego, se realizaron 3 preguntas de salida, una de ellas basada en punteros, otra basada en recursividad y clases de almacenamiento. No recuerdo el 3er.
- El siguiente conjunto de preguntas se basó en la memoria caché LRU. Defina la caché LRU y qué estructura de datos usaría para implementarla. Mi primer enfoque fue usar la cola, pero más tarde, sentí que la implementación vectorizada junto con el hash funcionaría. Me preguntaron sobre su complejidad espacial y temporal y también me pidieron que optimizara aún más la complejidad espacial. Di una solución con complejidad de espacio optimizada a costa de complejidad de tiempo. Parecía satisfecho con las soluciones. Luego, me preguntaron sobre un ejemplo de la vida real de caché LRU, no podía pensar en un ejemplo en ese momento.
- Preguntas basadas en transacciones bloqueadas en el sector bancario. ¿Qué sucederá si se realizan 2 transacciones desde la misma cuenta exactamente al mismo tiempo? ¿Cuáles son los diferentes controles que realiza el banco para controlar los fraudes? Sugerí algunos métodos basados en el pensamiento analítico y las observaciones de mi vida diaria.
- ¿Cómo se acorta una URL?
- Dada una array de enteros, ¿cuál será el valor OR máximo? ¿Encuentra el subconjunto más pequeño que da el valor OR máximo? Resolví esto usando programación dinámica.
- Dado un BST, encuentre la distancia entre 2 Nodes cuyos valores se dan. Expliqué el enfoque DFS para esto tomando un elemento como raíz.
Ronda 4 (entrevista técnica + de recursos humanos): esta ronda duró aproximadamente 45 minutos. Las preguntas de esta ronda se basaron en los siguientes temas:
- Sistemas operativos
- Estructuras de datos y algoritmos
- Machine Learning y Deep Learning (mi área de interés)
- Preguntas basadas en proyectos
- Redes
- Diseño de sistemas
- preguntas de recursos humanos
- ¿Cuáles fueron las preguntas que le resultaron difíciles en las rondas anteriores? Empezó a interrogarlos. ¿Cómo desarrollará un modelo de aprendizaje automático que detecte el fraude en el sector bancario? (como mencioné, el ejemplo de la vida real de la memoria caché de LRU y las preguntas del sector bancario fueron un desafío) Después de un breve período de tiempo, pude responder exactamente lo que quería.
- ¿Qué proyectos has hecho? Explicarlos.
- ¿Cuáles fueron los desafíos que enfrentó en la universidad en los últimos 2 años?
- ¿Cómo se las arregló para dedicarse a la codificación y el aprendizaje automático desde una rama de la ingeniería eléctrica?
- ¿Qué has hecho fuera de tu plan de estudios universitario? (Extracurriculares + Cursos cursados + Experiencia Técnica)
- El siguiente conjunto de preguntas se basó en la creación de redes. ¿Cómo vincula un banco una cuenta de un titular de cuenta cuando se ingresa un número de cuenta? ¿Qué protocolos se utilizan cuando se hace esto? ¿Qué son las secuencias de comandos cliente-servidor? Se hicieron algunas preguntas más sobre redes. No estaba al tanto de los conceptos de redes, pero seguí interactuando e intenté responder algo basado en mi conocimiento de los conceptos básicos de redes que había aprendido en la clase 12 de CBSE.
- ¿Cómo diseñará un sistema de ascensores? ¿Qué algoritmo de programación utilizará para ello? Estaba al tanto de los algoritmos de programación, ya que es un tema importante en el sistema operativo. Sugerí 2 métodos para ello, uno basado en prioridades (no preventivo) y el otro SJF (trabajo más corto primero). Pero pidió una solución que no use estos 2 algoritmos. Sugerí una tercera que se basó en seleccionar una llamada de ascensor que se encuentra en la ruta del destino actual. Me pidió que sugiriera otro enfoque más. Estaba prácticamente sin ideas, ya que había dado todas las opciones posibles que se me ocurrían. Le sugerí un enfoque basado en emergencias en caso de emergencia, pero sabía que no era práctico y también lo mencioné.
- ¿Cómo eliminará un Node en una lista doblemente enlazada? Podría explicarlo y codificarlo con la ayuda de mi conocimiento sobre la lista enlazada. Estaba bastante satisfecho con mi enfoque.
Finalmente, calmó la conversación y me pidió que me relajara después de un día agotador.
Mi consejo para todos los candidatos que vayan a presentarse a una entrevista en las próximas semanas o meses es que mantengan la calma y la confianza durante todo el proceso. Puede dar lo mejor de sí solo cuando está tranquilo y sereno. Según yo, las empresas no solo evalúan tus conocimientos técnicos, sino también cómo interactúas durante la entrevista y cómo manejas una situación difícil. Los estudiantes generalmente se enfocan en programación orientada a objetos, DS/Algo, pero creo que prepararse en temas como sistemas operativos, redes y diseño de sistemas será realmente útil en el proceso de la entrevista.
El consejo maestro para todos y cada uno de los aspirantes es seguir interactuando con el entrevistador, pensar en voz alta para que el entrevistador conozca su enfoque.
Gracias por leer la publicación. Espero que hayas adquirido algún conocimiento al leerlo. ¡Salud!
Publicación traducida automáticamente
Artículo escrito por yashbafna04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA