Experiencia de entrevista de Microsoft | Set 154 (para 1,5 años de experiencia)

Solicité el puesto de ingeniero de software en Microsoft IDC, Hyderabad, con 1,5 años de mi experiencia. Mis rondas eran de nivel intermedio, supongo.

Ronda 1: prueba Hackerrank
Hubo 1 preguntas en esta ronda.
1.) La primera pregunta se basó en strings. Dada una string de caracteres, se le otorgará una función de tirada. La función de rodar especificará el subarreglo [s, e] en la string y este subarreglo se rodará cuántas veces. Ejemplo: si s =”abcd” y roll() especifica que el subarreglo [0, 2] sea rodado por 2 (rodar la posición 0 2 veces), incrementará la posición 0 por 2, por lo tanto s[0] = c. La función Roll se puede llamar tantas veces, luego habrá algunas consultas para mostrar el carácter en cualquier posición en particular.
Solución: Hice esto llevando la cuenta de la cantidad de veces que se lanza un personaje. Para mantener el conteo, utilicé el tipo de método de frecuencia acumulativa en el que incrementamos el conteo en la posición ‘s’ en n, luego disminuimos el conteo en la posición ‘e+1’ en n. Esto pasó todos los casos de prueba.
2.) https://www.geeksforgeeks.org/count-ways-express-number-sum-consecutive-numbers/

Después de esta ronda escrita, me llamaron para entrevistas en el sitio.
Ronda 1:
esta ronda se basó en estructuras de datos. Me hicieron dos preguntas en esta ronda. Con dos preguntas técnicas, me preguntaron sobre 2 proyectos de mi currículum.
1.) La primera pregunta fue invertir una lista enlazada n grupos de k.
2.) El segundo fue el recorrido en zig-zag del árbol binario de abajo hacia arriba. Ej: si el recorrido del orden de nivel del árbol es [1], [2, 3], [4, 5, 8], [6, 8, 9, 7], entonces la salida requerida fue: [7, 9, 8, 6
] , [4, 5, 8], [3, 2], [1].
Quería que optimizara tanto como pudiera. Primero hablé sobre el enfoque de fuerza bruta, usando recursividad, luego le hablé sobre el enfoque de 2 pilas. Ella quería que usara solo stack y hiciera eso. Además, al ser una persona experimentada, esperan que escriba un código muy ordenado con la cobertura adecuada de casos de prueba. Puede que no lo vean en ese momento, pero lo miran después de la entrevista.
Después de cada entrevista, me daban retroalimentación.

Ronda 2:
Esta ronda se centró en DP.
1.) La primera pregunta de esta ronda fue Programación ponderada de trabajos. Le conté el enfoque de DP, luego pasó a cómo encontrar los estados de DP. ¿Cómo aborda generalmente el problema de DP? Hablé sobre la subestructura óptima y la superposición. Luego me pidió que escribiera el código recursivo para la pregunta dada. Luego tuvimos mucha discusión sobre su complejidad.
2.) El segundo fue LIS.
En general, esta ronda fue fácil. Luego pasó a algunos problemas de diseño y conceptos generales de sistemas operativos y redes. Me pidió que diseñara caché, cuidando la escalabilidad y confiabilidad. Hablé sobre cómo los sistemas distribuidos pueden ser útiles, división horizontal y vertical, conceptos de fragmentación, réplicas, etc.
3.) Esta pregunta era qué sucede cuando escribes una URL en el navegador web. Continuó con varias políticas de enrutamiento, como el enrutamiento ponderado, etc.
Tenía AWS CSA en mi currículum, por lo que pasó a conceptos como CDN y distribuciones en la nube.
Tenía blogs en los que colaboro, el entrevistador me pidió que abriera alguno. Recientemente comencé a escribir un blog sobre computación en la nube y lo abrí. Hizo algunas 2-3 preguntas sobre eso.
Esta ronda fue la más larga, de alrededor de 1,5 horas más o menos. Me sentí muy interactivo. Disfruté más en esta ronda.

Ronda 3:
Esta ronda fue principalmente para la discusión del problema de diseño.
1.) La primera pregunta que discutimos sobre cómo diseñar la API malloc(). Cómo se realiza la asignación de memoria. Si recibe una gran variedad de bytes gratuitos y las requests siguen llegando por cierto tamaño, ¿cómo asignará eso? Después de la asignación, ¿cómo desasignará? Tenga en cuenta que deslocalizamos usando free, que solo toma el puntero para eliminar la memoria a la que apunta. Aquí no proporcionamos el tamaño, por lo que debemos mantener el tamaño para cada solicitud de asignación en nuestra implementación.
2.) La segunda pregunta fue diseñar strtok(). Luego me pidió que comprobara si había algún problema con la función de biblioteca strtok(). No pude adivinarlo. Luego me dio una pista para pensar en varias requests al mismo tiempo. Básicamente, la API no es segura para subprocesos. Estaba en mi código creando un vector para su implementación. Luego, el problema se reduce a escribir un código que garantice que solo se crea un vector, incluso cuando varios procesos intentan llamar a la función al mismo tiempo. Le dije cómo podemos hacer eso usando un patrón de diseño singleton. Luego escribí su código y discutimos sobre la creación de instancias perezosas y tempranas en eso.

Ronda 4:
esta fue la última ronda con la cabeza de Azure y se hicieron algunas preguntas de comportamiento.
Principalmente en este mi currículum se discutieron los proyectos.
El problema de diseño que discutimos fue diseñar la API de autocompletado del motor de búsqueda, di la solución de prueba según los datos y el escenario que me dio. Me pidieron que escribiera su código de trabajo completo. Luego pasó a los conceptos y cosas a tener en cuenta al diseñar el motor de búsqueda.
Además, me hicieron la pregunta principal, por qué estoy buscando un cambio.

Después de unos 10-15 minutos, me informaron que mis entrevistas fueron bien y que me extenderían la oferta. Hoy lo tengo 🙂

Mi consejo: cuando nos presentamos a entrevistas con algo de experiencia, las empresas esperan que escribamos un código de trabajo completo que cubra todos los casos de prueba. Debería haber una diferencia en la forma en que nosotros, que tenemos experiencia, escribimos el código y uno más nuevo escribe la misma pieza. Además, tener conocimiento de los problemas de diseño es imprescindible. Nos prueban la escalabilidad, la tolerancia a fallas, la confiabilidad, la experiencia del usuario, el manejo de la carga, etc. Mantenga la mente abierta y trate de pensar en todas las perspectivas cuando se le haga una pregunta de diseño.

Me gustaría agradecer a GeeksforGeeks por su increíble sitio web, contribuir y aprender del cual me ha brindado un inmenso conocimiento y confianza.

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 *