Experiencia de entrevista de Microsoft para pasante de ingeniería de software 2022

¡Hola! Recientemente pasé por el proceso de pasantía en Microsoft para el puesto de pasante de SDE. A través de este blog, me gustaría compartir mi experiencia de todo el proceso de la entrevista. Esta fue una oportunidad en el campus, para la cual solicité a través del portal de Microsoft Careers para el puesto de trabajo respectivo (https://careers.microsoft.com/us/en/job/1081612/Software-Engineering-Intern).

Ser rechazado de Oracle después de una entrevista casi perfecta fue definitivamente una experiencia devastadora. La entrevista de Oracle fue importante para mí, ya que dediqué bastante tiempo a prepararla. El primer rechazo siempre es difícil de sobrellevar. A medida que avanza la temporada de pasantías/colocación, eventualmente nos acostumbramos. Pero el primer rechazo destruye la armonía mental, especialmente cuando se espera un resultado positivo. La guinda del pastel fue la lista de finalistas de Microsoft, que se publicó el mismo día. Mi nombre no estaba allí. Fue desgarrador. Me fue bien en la prueba de Microsoft y completé ambas preguntas en menos de 15 minutos. Bueno, resultó que las preguntas eran demasiado fáciles y casi todos los demás habían completado la prueba con bastante rapidez.

Soy parte del equipo central del Comité de Colocación. Para distraer mi mente de pensar demasiado, tomé el deber de la mañana para el proceso de entrevista de Microsoft Intern.

Me desperté a la mañana siguiente para atender a mi deber. Mi amigo Dev me informó que el comité de colocación de Microsoft Intern nos había enviado una nueva lista y, afortunadamente, mi nombre estaba allí. Tenía cero expectativas de esta entrevista, ya que todavía no podía digerir que Oracle me había rechazado. Bueno, esta actitud en realidad me ayudó a calmarme. Hoy, no tenía nada de miedo al rechazo. Sentí que tenía raras posibilidades de lograrlo. Aun así, me prometí a mí mismo dar lo mejor de mí.

Ronda 1 (Entrevista técnica): Mi primera entrevista comenzó a tiempo. Como se trataba de una entrevista en línea, tuve que unirme a un enlace de reunión de Microsoft Teams. 

  • El entrevistador me pidió que me presentara. El entrevistador se aseguró de que me sintiera cómodo haciéndome un par de preguntas para establecer una buena relación. Ya había pasado por varias entrevistas el día anterior, así que estaba bastante cómodo. Después de esto, el entrevistador me hizo una pregunta de codificación.
  • Pregunta 1: Convierta un número dado en palabras (Rango 999 millones de rupias)
  • La pregunta era bastante sencilla. Nunca he hecho este problema antes, pero me pareció bastante simple. Le di un enfoque rápido para resolver este problema. Tenía bastante confianza en mi enfoque y vi un rayo de esperanza para lograrlo.
  • Consejo: Bueno, no importa cuán simple sea la pregunta, nunca se confíe demasiado. Dedique algún tiempo a pensar en cómo lo implementará antes de comenzar a codificar la solución.
  • Bueno, esta pregunta parece bastante simple. Pero desafortunadamente, resulta que la implementación no es tan sencilla. Tienes que encargarte de muchos casos especiales. Me confié demasiado y no pensé en los casos especiales. Debido a que no le había dado suficiente tiempo para pensar en la implementación, estaba teniendo dificultades para codificarlo sobre la marcha. Sin embargo, completé mi código con bastante rapidez.
  • Ahora llegó el momento de ejecutar el código. Estaba dando una salida incorrecta. Sabía que estaba cerca, pero estaba realmente avergonzado de no poder resolver esta simple pregunta. Un montón de pensamientos vinieron a mi mente, y entré en pánico. Aquí, realmente apreciaría los esfuerzos de mi entrevistador. Estaba convencido de que mi enfoque y código eran correctos y, de hecho, comenzó a ayudarme a depurar el código. Después de pasar un tiempo, señaló que me había perdido «diecisiete» en una de las arrays de strings, que se estaba utilizando para generar la respuesta final. Por lo tanto, estaba dando una salida inesperada. Fue un error tonto pero difícil de depurar en el entorno con un millón de pensamientos corriendo por mi mente.
  • Mi código finalmente funcionó perfectamente. El entrevistador me dijo que había sobrepasado los límites de tiempo por 10 minutos. Me disculpé por eso. Apreció mis esfuerzos. Cuando le pedí comentarios, dijo que pensara en la implementación antes de comenzar a codificar. Se ahorraría mucho tiempo. Me di cuenta de mi error y le agradecí sus comentarios antes de irme.

Ronda 2 (Entrevista técnica): No esperaba para nada una llamada para la segunda ronda. Sin embargo, resultó que estaban llamando a todos para la segunda vuelta. Probablemente estaba viendo una transmisión de ajedrez cuando recibí una llamada para la segunda ronda. Fue una oportunidad perfecta para encubrir mis errores de la Ronda 1. Sentí que tenía una segunda oportunidad.

  • La segunda entrevista se retrasó bastante. La brecha entre dos entrevistas sucesivas está llena de muchas emociones. Es fácil perder el enfoque durante este tiempo.
  • Consejo: en el intervalo entre dos entrevistas sucesivas, tómese un tiempo libre. Haz algo que te guste y trata de distraerte de las entrevistas.
  • Si se siente seguro de sí mismo, mira algunas notas o practica preguntas antes de la próxima entrevista. De lo contrario, trate de dejar de pensar en las entrevistas.
  • El segundo entrevistador se unió a la reunión después de bastante tiempo y se disculpó por la demora. Esta vez no tuvimos tiempo para construir una relación. Se presentó y procedió con la primera pregunta.
  • Pregunta 1: Establecer Matrix Zeroes (https://www.geeksforgeeks.org/a-boolean-matrix-question/)
  • La pregunta era bastante sencilla. Estaba familiarizado con la pregunta. Estaba seguro de que sería capaz de resolver esta pregunta. Esta vez no perdí la calma. Empecé con el enfoque ingenuo y luego le dije el problema. Luego procedí a una solución correcta, que no era el enfoque óptimo. Estaba convencido de la corrección de mi enfoque. A continuación, me pidió que lo resolviera en el espacio constante. Me tomé un tiempo para pensarlo. Dio una pista para reutilizar el espacio. Inmediatamente tuve la idea, ya que estaba cerca de ella. Sin embargo, todavía me faltaba un caso de esquina. El entrevistador me pidió que revisara mi enfoque una vez. Inmediatamente me di cuenta de mi error y propuse una solución para corregirlo. Quedó convencido con mi idea.
  • Como ya tenía confianza en mi enfoque, me tomé el tiempo y escribí un código ordenado con nombres de variables adecuados.
  • Sugerencia: use nombres de variables adecuados. Siga estrictamente la sangría. Haz que tu código sea lo más legible posible.
  • Microsoft se centró mucho en la calidad del código. Me aseguré de seguir todas las buenas prácticas de escritura de código. Pude codificarlo muy rápidamente.
  • Como quedaba suficiente tiempo, el entrevistador me hizo otra pregunta de codificación. Me pidió que explicara solo el enfoque y que no codificara esta vez.
  • Pregunta 2: Implemente la memoria caché LRU utilizando estructuras de datos adecuadas (https://www.geeksforgeeks.org/lru-cache-implementation/)
  • Estaba bastante seguro de la teoría sobre el funcionamiento de la memoria caché LRU. Le expliqué la idea detrás del caché LRU. Pude llegar a una solución bastante rápido. Sin embargo, debido a una idea errónea, asumí que no podía usar ninguna memoria dinámica. Entonces, sugerí usar una implementación de cola basada en arrays y un hashmap. La idea era correcta, pero aquí estaba arreglando el tamaño máximo del caché. A todos los efectos prácticos, el tamaño de la memoria caché es fijo. Pero él quería una solución más flexible. Sugirió usar una implementación basada en listas enlazadas. Mejoré mi solución y le expliqué el funcionamiento completo de mi modelo de solución. El entrevistador quedó bastante impresionado. En conclusión, me preguntó si tenía alguna duda. Aproveché esta oportunidad para preguntarle cómo se asignarían los equipos a los pasantes. Respondió que se nos asignaría a equipos aleatorios según los requisitos de los equipos. Al final, le di las gracias y salí de la habitación.

Ronda 3 (Discusión de proyectos + Entrevista técnica): Me llamaron para la ronda AA (según corresponda). Esta es la ronda donde se decide si extender una oferta al candidato o no. Mi primera entrevista fue a las 10 a.m. y la última comenzó alrededor de las 5 p.m. Estaba completamente exhausto.

  • El entrevistador se presentó como el ‘Líder del equipo del visor de PDF de Edge’. La entrevista comenzó con una presentación formal. Me preguntó sobre mis hobbies. Le conté sobre mi viaje deportivo. A continuación, me preguntó sobre mis cursos favoritos. Le conté sobre todos los cursos desafiantes que he hecho. Después de esto comenzó la discusión del proyecto. Tenía mucha confianza en mis proyectos. Le expliqué mi proyecto GSoC, Independent Project with MIDAS y Color Switch Game. Quedó impresionado y no hizo más preguntas sobre mis proyectos.
  • Pregunta 1: Dado el calendario para N personas, organice una reunión de duración d entre las horas de trabajo, diga s – t
  • El problema en el enlace de arriba es un problema similar que encontré en línea. Le expliqué un enfoque que inmediatamente me vino a la mente. Por supuesto, quería una mejor manera de hacerlo. Dio algunas pistas y se me ocurrió una solución muy optimizada para este problema. Señaló un error en mi enfoque, que debe manejarse por separado. No pude conseguirlo, así que le pedí que lo repitiera. Explicó el problema nuevamente, pero no pude entenderlo. Después de unos momentos de silencio, le dije que no podía entender lo que decía.
  • El entrevistador concluyó la entrevista y me preguntó si tenía alguna pregunta. Le di las gracias y salí de la habitación.
  • No estaba seguro de mi elección. Pero, más tarde, me di cuenta de que me dio solo 10 a 15 minutos para resolver este problema. En otras entrevistas, tuve mucho más tiempo para resolver los problemas de codificación. Tal vez tenía la intención de obtener el código completo para este problema.
  • Los resultados no se anunciaron hasta la mañana siguiente. No pude dormir. Le pregunté a mis otros amigos, que se presentaron a la entrevista ese día. Todos ellos tuvieron una reacción similar.
  • A la mañana siguiente, tenía programada una entrevista para un pasante de Qualcomm. Esperaba no tener que sentarme para esto. Le envié un mensaje de texto a mi coordinador de colocación diciéndole que tengo que presentarme para una entrevista ahora mismo. Si me puede decir el resultado de Microsoft, sería beneficioso para mí. ¡Ella respondió con un mensaje de felicitación! ¡No podía creer lo que veía! Después de unos minutos, recibí un correo electrónico del comité de colocación. Acepté la oferta por correo y empezó la fiesta.

¡Gracias por leer!

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *