Experiencia de entrevista de Microsoft | En el campus para prácticas

Entonces, recientemente, Microsoft había venido a nuestro campus para realizar pasantías y de alrededor de 150 personas, 10 fueron seleccionadas. Esta es mi experiencia de todo el proceso de la entrevista.

Ronda 1 (ronda de codificación en línea): 

La ronda de codificación se realizó en mettl y hubo tres preguntas que tuvimos que resolver en 90 minutos. Las preguntas se seleccionan de una gran base de datos, por lo que a todos se les asignó un conjunto diferente. Mis preguntas fueron –

1) Dada una ruta de directorio en Linux, encuentre qué tan lejos está del directorio principal después de recorrer la ruta completa.

https://www.geeksforgeeks.org/simplify-directory-path-unix-like/amp/

2) Encuentra la substring palindrómica más larga de la string dada.

https://www.geeksforgeeks.org/longest-palindrome-substring-set-1/

3) Hay n oficinas de correo seguidas. Se le da la distancia de cada oficina de correos desde su casa. Una oficina de correos puede enviar un correo a otra oficina de correos si la distancia entre los dos lugares es menor o igual a x. Te dan q consultas. Cada consulta contiene índices de dos oficinas postales. Tienes que averiguar si las oficinas de correos pueden entregar correo entre sí o no. (Complejidad del tiempo esperado – O(n+q))

Por ejemplo –

Entrada: n=3, publicación[n] = {2, 3, 5}, x=2, q=2

Consulta 1: {1, 2}. Salida: Sí (la oficina de correos 1 y 2 pueden entregar correos porque la distancia entre ellos es menor que 2).

Consulta 2: {1, 3}. Salida: Sí (Aunque 1 no puede entregar directamente a 3, 1 puede entregar correo a 2 y 2 puede entregar a 3. Entonces, 1 puede entregar correo indirectamente a 3).

Las preguntas no fueron difíciles, pero el compilador en línea fue un poco diferente. Por ejemplo, en lugar de strings y arrays como entrada en la función, se nos dieron punteros como entrada. En la tercera pregunta, la entrada de consultas se proporcionó como un puntero doble. Algunos estudiantes no estaban familiarizados con el manejo de punteros y, por lo tanto, no pudieron resolver los problemas por completo.

Después de esta ronda, 75 personas fueron preseleccionadas para la ronda de vuelo grupal.

Ronda 2 (Ronda de vuelo grupal): 

Hubo 2 preguntas que tuvimos que resolver en 60 minutos. Tuvimos que escribir el código en un papel y enviarlo.

Pregunta 1:

Encuentre el subarreglo continuo más largo que tenga como máximo k elementos distintos.

https://www.geeksforgeeks.org/longest-subarray-not-k-distinct-elements/

Pregunta 2:

Suponga una array de n elementos. Definimos una nueva clasificación en la que dividimos la array en dos partes iguales y verificamos si alguna de las partes está ordenada. Continuamos el proceso hasta que obtengamos un subarreglo ordenado. Encuentre la longitud máxima del subarreglo ordenado.

Ejemplo –

Entrada: n = 6, arreglo[] = {7, 10, 9, 8, 11, 3}

Salida: 2 {7, 10} o {8, 11}

Explicación: como la array no está ordenada, la dividimos en {7, 10, 9} y {8, 11, 3}. Dividimos nuevamente la primera array en {7, 10} y {9}. Por lo tanto, el subarreglo ordenado máximo es {7, 10} cuya longitud es 2.

Después de esta ronda, 18 personas fueron seleccionadas para entrevistas.

Ronda 3 (primera ronda de entrevistas):

Cada ronda de entrevistas duraba entre 30 y 40 minutos. El entrevistador primero me preguntó sobre mí, luego me preguntó sobre mis proyectos. Entonces, me hizo 2 preguntas. Para ambas preguntas, me preguntó la complejidad del tiempo y la complejidad del espacio y después de estar satisfecho con el enfoque, me pidió que escribiera el código en papel.

1) Dada una array, encuentre la longitud del subarreglo de seno más largo. (seno subarreglo significa que los elementos deben estar en una forma creciente-decreciente-creciente o viceversa).

Mi enfoque fue establecer una bandera para aumentar/disminuir y luego verificar si la condición del seno se cumple o no. Si es así, aumente el conteo y cambie el indicador; de lo contrario, establezca el conteo en 0 después de actualizar maxCount. Complejidad de tiempo – O(n), Complejidad de espacio – O(1)

2) Encuentra el número de componentes conectados de un gráfico. (Enfoque BFS/DFS estándar)

https://www.geeksforgeeks.org/connected-components-in-an-undirected-graph/

Ronda 4 (segunda ronda de entrevistas):

1) Dada una array, seleccione k elementos de la array que tenga la suma máxima. Discutimos muchos enfoques para esta pregunta que tienen diferentes complejidades de tiempo. Algunos enfoques fueron ordenar (O (nlogn)), montón máximo (O (nlogn)), dp (O (nk)), recursividad (O (2 ^ n)), encontrar k elementos máximos (O (nk)).

2) Dada una pirámide de números, encuentre el valor de ruta más pequeño para ir desde la raíz hasta el último nivel.

Por ejemplo-

1

2 3

5 4 6

Camino más pequeño – 7 (1-2-4)

Discutimos un enfoque dp para esto.

dp[i][j] = max (dp[i-1][j], dp[i-1][j-1]) + arr[i][j] donde i es el índice de nivel y j es el índice del elemento de ese nivel. (Recuerde escribir los casos base y los casos de esquina para todas las preguntas de dp).

Ronda 5 (3ra ronda de entrevistas):

1) Dada una array de números enteros, seleccione dos números que tengan la menor diferencia. Primero, le di una solución de clasificación en la que ordenas la array y encuentras la menor diferencia entre los elementos adyacentes. Luego, me pidió que lo hiciera sin clasificar. Primero le di una solución de fuerza bruta de O(n^2) pero cuando me pidió que la optimizara aún más, no pude hacerlo.

2) Un comerciante vende artículos de Rs. 5. Hay una línea infinita de clientes que quieren comprar los artículos. Los clientes tienen notas de Rs. 5 rupias 10 o Rs. 20. Tenemos que encontrar las condiciones bajo las cuales el comerciante no podrá vender más artículos y encontrar la ganancia que obtiene bajo cada condición.

Por ejemplo, clientes[] = {5, 10, 10, ….}. En este caso, después del segundo cliente, el comerciante no podrá devolver el cambio de Rs. 5 al tercer cliente ya que solo tiene Rs. 10 nota con él. Entonces, el negocio se detiene y la ganancia es de Rs. 10

Después de esta pregunta, me pidió que generalizara el problema para incluir Rs. 1 rupias 2 rupias 50 rupias 100 etc notas también. Me preguntó cómo se implementará este sistema en la vida real donde hay tantos tipos de denominaciones y tantos tipos de productos que tienen varios precios.

Después de esto, también me hizo algunas preguntas básicas de programación orientada a objetos, como cuáles son los 4 pilares de la programación orientada a objetos y describe cada uno de ellos.

Ronda 6 (ronda de recursos humanos);

Esta ronda fue la más fácil de todas y solo duró unos 10 minutos para mí. El entrevistador me hizo las mismas preguntas básicas y por qué quería unirme a Microsoft. Luego, me hizo dos preguntas básicas de DSA:

1) Dada una oración que contiene muchas palabras, invierta las palabras en la string.

https://www.geeksforgeeks.org/palabras-inversas-en-una-string-dada/

2) Encuentre el LCA de dos Nodes en un BST.

https://www.geeksforgeeks.org/lowest-common-ancestor-in-a-binary-search-tree/

Después de cada ronda de entrevistas, el entrevistador me preguntaba si tenía alguna pregunta para él. Les pregunté qué habilidades necesitaba desarrollar antes de venir si obtenía una pasantía.

La experiencia en general fue un poco agotadora porque las entrevistas que comenzaron a las 9 de la mañana continuaron hasta las 9 de la noche. Pero fue una gran experiencia ya que los entrevistadores fueron muy amables y me dieron suficiente tiempo para pensar en la solución. Lo importante que debe recordar es que, incluso si no conoce la solución completa, debe seguir comunicándose con el entrevistador porque generalmente lo ayuda a tomar el camino correcto y lo guía hacia la solución.

Los resultados llegaron en la noche y yo fui una de las 10 personas seleccionadas. De las 10 personas, también había algunas chicas que habían dado el programa Codess organizado por Microsoft, por lo que entraron directamente a las entrevistas sin dar la prueba de codificación o el grupo fly round.

Sugeriría practicar con geeksforgeeks y entrevistabit (solo después de cubrir los conceptos básicos de geeksforgeeks) porque tienen una gran cantidad de preguntas que cubren casi todos los subtemas de todos los temas. Además, antes de cualquier entrevista, revise las experiencias de pasantías que las personas publican aquí para que tenga una idea de qué tipo de preguntas se hacen en la entrevista por parte de la empresa.

Además, aunque no me preguntaron mucho sobre esos temas, recomendaría revisar los conceptos de OOP y DBMS porque muchas empresas hacen preguntas sobre esos temas en las entrevistas.

¡Gracias!

Publicación traducida automáticamente

Artículo escrito por amolpai 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 *