Solicité a Microsoft a través de un programa de referencia para el puesto de tiempo completo de ingeniero de desarrollo de software. Todos los candidatos que solicitaron a través de referencias fueron invitados a una prueba de codificación en línea en la plataforma co-cubes después de 2 a 3 semanas.
Ronda de codificación en línea (en co-cubos) : –
Se dieron tres preguntas en 75 minutos de tiempo para resolver. Por cierto, resolver en la plataforma co-cubes es una pesadilla, no se completa automáticamente, ni siquiera puede copiar, pegar o probar su código manualmente.
- Pregunta 1 (2 – Puntos) : Dada una lista unida, con algunos números positivos (números válidos) y ceros (números no válidos). Convierta la lista enlazada de tal manera que si el próximo número válido es el mismo que el número actual, duplique su valor y reemplace el siguiente número con 0. Después de la modificación, reorganice la lista enlazada de modo que todos los 0 se desplacen al final.
Por ejemplo, 2 -> 2 -> 0 -> 4 -> 0 -> 8
Respuesta: – 4 -> 4 -> 8 -> 0 -> 0 -> 0 - Pregunta 2 (3 – Puntos) : No recuerdo. Estaba basado en arreglos.
- Pregunta 3 (5 – Puntos) : escriba una función que acepte la raíz del árbol binario como argumento y devuelva la suma de todos los Nodes hoja a la profundidad máxima desde la raíz.
Ej.………………1
……………/ \
………….2/……3
………. / \
……….2……1
Respuesta :- 2 + 1 = 3
La prueba del sistema de soluciones se realizó después de que envió las 3 preguntas y no se le muestra el resultado (si las 3 fueron correctas o no). Sin embargo, le dieron un caso de prueba muy débil en co-cubos para verificar su solución, que mostró fácilmente un falso positivo.
Tienes que resolver las 3 preguntas para calificar esta ronda.
Todos los estudiantes que calificaron en la ronda de codificación fueron invitados a Microsoft Hyderabad para continuar con el proceso de entrevistas.
Ronda de vuelo en grupo : –
Alrededor de 150 estudiantes se presentaron para el grupo – ronda de vuelo. Fue una prueba de lápiz y papel. Se nos proporcionó una sola pregunta, para ser resuelta en 45 minutos.
- Pregunta : dada una string, dividirla en un número mínimo de substrings de modo que cada substring particionada sea un palíndromo. Da salida al número mínimo de particiones requeridas. Es una pregunta de programación dinámica estándar, https://www.geeksforgeeks.org/dynamic-programming-set-17-palindrome-partitioning/ .
Tenemos que escribir todo el programa desde la entrada hasta la salida, junto con algunos casos de prueba (querían probar sus habilidades de prueba de programas para casos de esquina). Se le permite utilizar cualquier idioma.
Nota : – Los criterios de evaluación fueron la corrección del código más que cualquier otra cosa. Trate de escribir un código lo más limpio posible y use nombres significativos de variables y funciones. Las personas que tenían un código de ejecución correcto (incluso en una complejidad de tiempo exponencial para DP) fueron seleccionadas en lugar de códigos más rápidos con errores.
Se seleccionaron entre 30 y 35 estudiantes para la siguiente ronda.
Ronda 1 (Técnica) : –
El entrevistador primero revisó minuciosamente mi currículum. Quedó impresionado con mi perfil de codificación competitivo y luego me pidió que le explicara uno de mis proyectos. Luego me hizo dos preguntas algorítmicas.
- Pregunta 1 : dado un árbol con raíz en un cierto Node, encuentre la altura máxima, también imprima todos los Nodes en el camino en la altura máxima. https://www.geeksforgeeks.org/write-ac-program-to-find-the-maximum- depth
-or-height-of-a-tree / Tuve que codificarlo completamente en papel desde la entrada hasta la salida, y luego explique detalladamente todo el código. - Pregunta 2 : dada una array NXN con elementos positivos, cero o negativos, encuentre la subarray con la suma más grande. https://www.geeksforgeeks.org/dynamic-programming-set-27-max-sum-rectangle-in-a-2d-matrix/
Incluso después de pensarlo mucho, no pude proporcionar el O(n^) óptimo 3) solución, y le ofrecí fuerza bruta + solución de preprocesamiento de O(n^4). No estaba ayudando con pistas. Después de un tiempo, me preguntó cuál era la solución de código que obtuve, me interrumpió y dijo que estaba bien porque estaba a la mitad de escribir el código.
La entrevista duró alrededor de una hora.
Ronda 2 (Técnica) :-
Esta fue la ronda de entrevistas más difícil. El entrevistador literalmente me preguntó todo bajo el sol.
La entrevistadora primero me pidió que me presentara, mientras revisaba mi currículum. Me preguntó sobre mi perfil de programación competitiva y mis pasatiempos. Me hicieron algunas preguntas del sistema operativo sobre subprocesos múltiples y sus implementaciones de la vida real. Posteriormente, me proporcionaron un problema de diseño,
- “Imagínese que es un gerente de proyectos de Microsoft, diseñe una aplicación de servicio de mensajería como WhatsApp”. Tienes que explicar todos los puntos y características en forma de diagrama, de modo que incluso una persona no técnica pueda entender.
Luego anotó cuatro sectores de mi currículum, a saber, estructura de datos y algoritmo, lenguaje de programación (C++), DBMS y secuencias de comandos del lado del cliente, y luego me pidió que me calificara en los cuatro.
En primer lugar, comenzó con preguntas básicas como «qué es un árbol» y progresó a BFS y DFS, su algoritmo, usos y dónde se prefiere uno sobre otro. Esto condujo a una discusión exhaustiva sobre el algoritmo de ruta más corta de Dikstra. Las razones subyacentes fueron para verificar su conocimiento profundo.
Después de DSA, la discusión pasó a C++, punteros, sus usos y la diferencia entre estructura, clase y manejo de punteros. La discusión se centró en conceptos de OOPS como polimorfismo, sobrecarga de funciones y anulación.
Luego procedió con las preguntas sobre redes. Esta discusión continuó como un DFS recursivo, ya que todo lo que discutimos llevó a otro tema. Algunos temas y preguntas que recuerdo fueron: «¿Qué es una IP?», «¿Por qué una máquina necesita una IP?», «¿Qué es una IP estática y dinámica, y cuándo se prefiere una sobre otra?», «Firewalls», «Métodos de cifrado / Criptografía”, “sobre el protocolo HTTP y HTTPS” y preguntas exhaustivas sobre “Scripting del lado del cliente y del lado del servidor”. La discusión también se desvió hacia preguntas fuera de tema como, tenemos que diseñar un robot / sistema que reconozca las emociones por voz, ¿cómo y qué parámetros usará para hacer lo mismo?
Finalmente, terminamos la discusión sobre la creación de redes y ella me hizo dos consultas DBMS SQL simples, una de las cuales era «imprimir el segundo número más grande en la tabla».
Esta entrevista duró más de una hora y media. El entrevistador fue muy servicial y amable, y me dio pistas cada vez que estaba atascado.
Nota : – No entre en pánico si está atascado o no puede responder. Sea honesto sobre qué hacer o no saber. Si la pregunta es objetiva, puede admitir que no sabe, en lugar de balbucear sin sentido. Sin embargo, para las preguntas de reflexión/lluvia de ideas, es mejor ser persistente y seguir intentándolo.
Ronda 3: –
Ahora, solo quedaban entre 10 y 12 estudiantes. Pocas personas tenían una ronda de recursos humanos para esto, pocas ni siquiera tenían esta ronda. El mío fue redondo técnico.
Mi entrevista fue tomada por una persona mayor. Me pidió que me presentara y luego procedió a preguntarme sobre todos mis proyectos. A lo largo de la entrevista, me escuchó sin cruces, interrogándome. Después de eso, me preguntó si tenía alguna pregunta para él. Hice algunas preguntas y se acabó.
El resultado final se declaró en media hora, y finalmente se seleccionaron 9 personas . Afortunadamente, yo era uno de ellos.
El proceso total de la entrevista tomó casi 11 horas.
CONSEJO : –
Es necesario un concepto claro de la estructura de datos y el algoritmo, junto con el conocimiento de los conceptos de OOPS, OS y DBMS. Los proyectos también son necesarios, y tener algunos proyectos interesantes seguramente atrae la curiosidad del entrevistador. Hay que tener en cuenta que buscan un candidato equilibrado con conocimientos en diferentes campos.
Durante la entrevista, siga comunicándose con el entrevistador, sea curioso y haga preguntas cruzadas.
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