Experiencia de entrevista de Microsoft SWE

Ronda 1 (preselección): tenía tres preguntas de codificación. El nivel de dificultad era fácil-moderado. La primera pregunta fue sobre mapas, la segunda sobre el problema del cambio de monedas pero con números primos en lugar de valores de monedas, y la tercera se repitió desde el año pasado. 

Ronda de entrevistas (diciembre de 2020): Tuve una sola entrevista. El entrevistador era de Redmond, con 22 años de experiencia. Me hizo una pregunta: 

  • Dada una array no ordenada, encuentre los elementos binarios que se pueden buscar en ella. La búsqueda binaria funciona para arreglos ordenados porque el elemento central siempre es mayor que todos los elementos a la izquierda y más pequeño que todos los elementos a la derecha (para arreglos que tienen elementos distintos). Por lo tanto, encontrar las arrays y los elementos leftmax y rightmin que están en posiciones en las que leftmax y rightmin coinciden con los elementos de la array daría elementos de búsqueda binarios. 

La experiencia y el proceso de pensamiento:Tuve la suerte de tener un entrevistador que estaba realmente tranquilo al explicar la pregunta. Me dio un enlace de codility, que es la plataforma en la que Microsoft suele hacer preguntas. Le pedí algunas aclaraciones sobre el rango de números, la cantidad de elementos en la array y si pueden ser negativos o no. Procedí a darle una solución trivial, diciéndole la complejidad de tiempo y espacio para ello. Luego me dijo que quería una solución O(n). Fue entonces cuando abrí una ventana de bloc de notas y la compartí en equipos (la entrevista fue virtual). Mientras pensaba en una solución, me aseguré de decir todo lo que estaba pensando. De esa forma me detendría si mi hilo de pensamiento se dirigía en la dirección equivocada. Empecé con cómo funciona la búsqueda binaria y como era la primera vez que me encontraba con esa pregunta, Traté de ser lo más básico posible en mi comienzo. Intenté decirle que se pueden buscar elementos cuando la partición (el elemento central) está en la posición correcta. Estaba escribiendo todo esto en mi bloc de notas mientras hablaba al respecto. Luego tomé un ejemplo y le mostré cómo funciona, creando filas separadas para la array dada, el máximo izquierdo y el mínimo derecho, y una array booleana que representa los elementos que se pueden buscar. En este punto, estaba realmente impresionado con mi proceso de pensamiento y la estructura con la que construí mi solución. Le dije que ahora lo codificaré en la plataforma. También quieren códigos limpios, así que comencé tomando la entrada, definiendo arreglos con buenos nombres de variables, no solo «A» o «arr». La asignación de nombres me ayudó a ignorar los comentarios ya que todo estaba claro en el código. Primero hice la array leftmax, luego la array rightmin, y finalmente contó el número de elementos. El entrevistador me dijo que amaba mi estilo de codificación. Le dije todo lo que se podía hacer en un solo bucle, pero hacer tres ayudó a que el código fuera claro para cualquiera que lo viera por primera vez. Después de esto, me dijo que no era necesario ejecutar el código porque sabía que se veía correcto. Lo ejecuté de todos modos y fue aceptado en el primer intento. 

Además, me preguntó si tenía alguna pregunta y le pregunté si estaba feliz en Microsoft y qué factores le permitieron trabajar durante 22 años en un solo lugar. Dio una respuesta muy larga. Trate de estar interesado cuando el entrevistador dice algo. Después de esto, me dijo que había terminado para la entrevista. 7 ansiosas horas después, recibí directamente mi oferta. En general, una experiencia muy positiva.

¿TLDR? Es esencial contarle al entrevistador sobre el proceso de pensamiento y su enfoque del problema con la mayor claridad posible. Resolver no es suficiente.

Preparación: No había hecho un solo problema de codificación antes de agosto de 2020. Había hecho un curso básico de estructura de datos en julio de 2018, y eso fue todo. Empecé a programar, primero en GeeksforGeeks , luego en leetcode y Interviewbit .. El primer mes fue un desastre. No pude hacer una sola pregunta en la primera semana. Comencé con las preguntas fáciles, luego con problemas de nivel medio y luego con problemas difíciles. Incluso después del primer mes, solo pude hacer algunas preguntas fáciles. Continué codificando, buscando soluciones para la mayoría de las preguntas al principio. Comencé con las principales preguntas «imprescindibles» en GFG, las completé todas, hice algunas más y luego cambié a leetcode. Pude resolver algunas preguntas fáciles, algunas medianas, pero las difíciles seguían siendo desafiantes, incluso después de 2 meses. En el tercer mes, lo di todo, codificando desde la mañana hasta la noche. Traté de pensar en la forma en que otros abordaron problemas similares, en la sección de discusión de leetcode y en los comentarios de GFG. Lentamente, pude verme mejorando en la resolución. Preferí C++. Mis amigos de CSE me ayudaron mucho. Solía ​​​​preguntar cada pequeña cosa que no podía entender, leía sobre estructuras de datos nuevamente y buscaba soluciones una y otra vez hasta que pude resolver problemas por mi cuenta. Finalmente, al final, de agosto a noviembre había resuelto un total de unas 800 preguntas, muchas de ellas más de dos veces.

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 *