Experiencia de entrevista de Microsoft IDC
Ronda en línea
Plataforma: CoCubes
Formato: 3 preguntas de codificación
Tiempo: 75 minutos
Tenían un grupo de preguntas y se dieron tres preguntas (2 + 3 + 5 puntos) a cada estudiante al azar.
- Dado un número entero N y un número entero M, genera el número más cercano a N que es divisible por M .
Input: N = 15, M = 7 Output: 14 Input : N = 17, M = 3 Output : 18
Solución esperada en O(1)
- Dada una string de O y 1, genera la longitud máxima de una substring de todos los 1.
Input: 1011010111101 Output: 4 Input : 0110111110111101 Output : 5
GeeksforGeeks Link
Solución esperada en O(n). - Longitud de la progresión aritmética más larga
Solución esperada en O(n^3)
RONDA DE VUELO EN GRUPO:
- 40 candidatos fueron preseleccionados para la ronda de vuelo grupal.
- Pregunta 1:
Encuentra una palabra en una cuadrícula de caracteres
El problema era una modificación del problema anterior. Podíamos movernos en las 8 direcciones y también era posible el recorrido en zig-zag. Tuvimos que devolver una lista de coordenadas (i, j) del recorrido encontrado. Si es posible más de un recorrido, devuelva cualquiera.Input: Grid: a b c d b d e e f g r k s g s s String: geeks Output: (2,1), (1,2), (1,3), (2,3), (3,2)
Lo resolví usando DFS.
- Pregunta 2:
Imagina un plano euclidiano y N puntos (x,y) en ese plano. Se le da una lista de tales puntos. Luego recibirá consultas sobre si un punto en particular está presente en el plano o no. Muestra VERDADERO o FALSO según corresponda.
0 < N < 10^6
-10^6 <= x,y <= 10^6Input: Points: (2,1), (1,2), (1,3), (2,3), (3,3) Query1: (2,3) Output1: TRUE Query2: (2,2) Output2: FALSE
Nº de Preguntas: 2
Tiempo: 75 min.
Esperaban que optimizáramos las consultas. Usé unordered_map para almacenar puntos y generar consultas en O(1).
ENTREVISTA PERSONAL El
50% de los candidatos fueron seleccionados después de la ronda de vuelo grupal, es decir, 20 estudiantes.
LA RONDA 1:
- El entrevistador tomó mi CV y lo miró durante un máximo de 2 segundos y lo mantuvo alejado. Luego hizo una pregunta de acertijo.
- Tiene los siguientes operadores disponibles: + – * / ( )
Inserte algunos de estos operadores para hacer que la línea dada sea una expresión matemática válida
1 2 3 4 5 6 7 8 9 = 100.Nota: Si no insertamos nada entre 1 y 2, se convierte en 12. El orden del 1 al 9 debe permanecer como está.
Solution: (1 + 2 + 3 + 4) * (-5 + 6) * (-7 + 8 + 9) = 100 I gave the above solution within 2-3 min. He immediately told me to give one more solution. I again took 2-3 mins to come up with one more solution. Alternate Solution: 123 - (4 + 5 + 6 + 7) - (-8 + 9) = 100
-
- Diseñar un Sistema de Ascensor. Discutimos esta pregunta durante unos 45 min.
- ¿Cuántos ascensores?
Respuesta: N ascensores. N es más de uno. - ¿Cuantos pisos?
Respuesta: M pisos. - ¿Tenemos un botón para cada ascensor o solo un botón para todos los ascensores de cada piso?
Respuesta: Un solo botón controla todos los ascensores. - ¿Necesitamos considerar cosas como el número máximo permitido en el ascensor, etc.?
Respuesta: No - ¿Qué tipo de algoritmo debemos utilizar para controlar el movimiento de los ascensores?
- Estructuras de datos a utilizar
- Optimización del algoritmo. Un algoritmo viable no es suficiente. Tenía que ser optimizado para un uso eficiente, tiempo y ahorro de energía.
- ¿Cómo manejaré las requests simultáneas?
- Cuando no estén en uso, ¿en qué piso descansarán los ascensores? ¿Por qué?
- ¿Será igual durante todas las horas del día? ¿Por qué?
- ¿Usaré el mismo algoritmo durante el día y la noche?
- ¿Cómo planeo ahorrar energía operativa del ascensor?
- ¿Funcionará mi algoritmo si uno de los ascensores falla?
- Si se presiona un botón dos veces en cualquier piso, ¿está manejando eso mi estructura de datos?
- Me han dado datos de un año sobre el uso del ascensor. ¿Cómo usaría estos datos para optimizar mi algoritmo para aumentar la eficiencia?
¿Usarías algo de ML/AI para optimizar este problema? ¿Cómo?
Hubo muchas más preguntas que no recuerdo exactamente. Tenía que dar una razón para cada decisión de diseño. Luego me pidió que escribiera el código orientado a objetos.
Solución: Tenía una clase de administrador central para administrar todos los ascensores, cada ascensor funcionaba como un subproceso. Todos los datos se almacenaron con el Central-Manager. Guardé las requests entrantes en el árbol de búsqueda binaria equilibrada. Tenía una prioridad asignada a cada solicitud si viene del interior del ascensor o del exterior del ascensor, etc.
Le hice algunas preguntas aclaratorias que respondió amablemente. El entrevistador fue profesional y servicial.
.
Hice algunas otras preguntas en el proceso de diseño del sistema.
Cosas que quería que respondiera:
.
Preguntas de seguimiento:
- ¿Cuántos ascensores?
Era muy profesional y experimentado. Quedó muy impresionado con mis respuestas. Completó mis comentarios en su computadora portátil mientras escribía el código. Antes de que terminara de escribir el código, dijo que había terminado. No se requiere escribir el código.
Me enviaron directamente al gerente de contratación después de esta ronda. Se realizaron una o dos entrevistas técnicas más para unos pocos.
RONDA 2 (gerente de contratación):
- Era un tipo senior que trabajó más de 13 años en Microsoft. Él era muy fresco y amistoso.
Comenzó preguntándome si tenía alguna pregunta sobre Microsoft, etc. Le dije que no tenía ninguna pregunta específica, pero que tenía curiosidad sobre qué tipo de trabajo se realiza en Microsoft IDC, cuál es el proyecto más interesante que se está realizando. , etc. Me dijo que todo es interesante en este momento. Me habló de las diversas divisiones de IDC y del tipo de proyectos que están realizando. Luego me preguntó sobre la empresa de mis sueños. Le dije a Google. 😛 Luego tuvimos una discusión sobre los pros y los contras de Google y Microsoft. Hizo algunas otras preguntas como cuál es mi tema favorito, etc. Algunas preguntas de seguimiento sobre ellas. Dijo bien, ahora resuelve una pregunta técnica.
Pregunta: Fue un enunciado largo del problema y la solución se redujo a Toposort . Le di la solución y me dijo que escribiera el código.
Se convenció con el código. Sin embargo, me dijo una cosa muy pequeña sobre mi código que podría haberse escrito de manera más elegante. Estuve de acuerdo con él.
Luego discutimos mis proyectos. Me dijo que le contara sobre el proyecto que hice durante mi pasantía en Samsung Research Institute Bangalore. También preguntó sobre mis proyectos personales y preguntas de seguimiento sobre ellos. Luego me preguntó si tenía alguna pregunta para él. Dije que no.
Me sorprendió que tuviera que dar solo 2 rondas, así que le pregunté si habría más rondas después de esta. Dijo que estoy muy bien. Relax.
El número de entrevistas personales varió de 2 a 4 para los candidatos.
Resultado: Seleccionado.
GeeksForGeeks fue de gran ayuda durante mi preparación. Gracias a otros estudiantes por compartir su experiencia de entrevista. 🙂
Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo electrónico a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Problemas de práctica relacionados
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