Experiencia de entrevista de Microsoft | Conjunto 124 (en el campus para IDC)

Experiencia de entrevista de Microsoft IDC

EVALUACIÓN EN LÍNEA

Plataforma: CoCubes
Formato: 3 preguntas de codificación
Tiempo: 90 minutos

Q1) completa la siguiente función:

  int findMax(Treenode arr[], int size_of_array){
    // code goes here
  }

Donde Treenode es una estructura definida como:

struct Treenode{
   int feet;
   int inches;
}; 

La función debe calcular (12*pies+pulgadas) para todos los elementos de la array y devolver el valor máximo.

Q2) completa la siguiente función:

    Treenode* findInorderSuccessor( Treenode * root ,Treenode* node){
        // code goes here
    }

Where Treenode is a structure defined as:

struct Treenode{
    Treenode* left;
    Treenode* right;
    Int data;
    Treenode*parent;
};

La función debe devolver el puntero al sucesor en orden del ‘Node’ provisto en la función. Si no existe, devuelve NULL.

Q3) completa la siguiente función:

Node * findIntersection( Node* head1, Node*head2){
   // code goes here
}

Where node is the structure of a linked list node
defined as:

struct Node{
  int data;
  Node *next;
}; 

Regrese el puntero principal a la intersección de las dos listas vinculadas. Se mencionó que no se debe usar espacio adicional y que la implementación debe ser recursiva.


RONDA DE VUELO EN GRUPO:

40 candidatos fueron preseleccionados para la ronda de vuelo grupal.

Los candidatos se dividieron aproximadamente en un grupo de 4-5 y un mentor estuvo a cargo de cada grupo. Se nos hizo una pregunta y se nos pidió que escribiéramos una solución de función en cualquier lenguaje de alto nivel (no se permitían lenguajes de secuencias de comandos como Ruby, php, python). Nos asignaron un máximo de 45 minutos.

Pregunta: dadas dos arrays de caracteres (no strings) de la misma longitud, y su longitud como parámetro de la función. Tenemos que encontrar si la primera cuerda es una rotación de la otra. No debemos usar ningún espacio extra. La complejidad del tiempo puede ser cuadrática.

El mentor seguía viniendo a todos. Primero me preguntó qué estaba pensando. Le dije el enfoque con un ejemplo. Luego escribí el código, ejemplos de casos de prueba y una sección de enfoque básico en viñetas. Sin embargo, solo exigieron el código.

LA RONDA 1:

Alrededor del 50% de los candidatos fueron seleccionados después de la ronda de vuelo grupal.

Me dieron dos preguntas de codificación:

Ques 1) dado un árbol, imprima todos los bordes del árbol de modo que se cumplan las dos condiciones siguientes:
solo imprima el Node cuyo hijo derecho es NULL,
el Node es un Node hoja.

Le di un enfoque recursivo. Más tarde me di cuenta mientras explicaba que fallaba en ciertas condiciones. Pedí algo de tiempo para rectificarlo. Finalmente le di un código y parecía estar bien al respecto.

Pregunta 2) Dada una array, recorre la array en forma de zig-zag:

    Ex:  
        1 2 3 4
        5 6 7 8
        9 1 1 2

Traversal: 1 2 5 9 6 3 4 7 1 1 8 2

Di un enfoque de complejidad temporal O(NXM). Me preguntó si puedo hacerlo en menor complejidad de tiempo. Puedo usar espacio adicional. No se me ocurrió nada muy concreto. Mi ronda estaba hecha.

RONDA 2:
El entrevistador preguntó cómo estaba mi grupo volando. Luego me explicó una situación en la que tengo un espacio 2-D fijo de NXM. Me han dado un conjunto de números aleatorios (no en ejecución). Tengo que encontrar una manera eficiente de almacenarlos y que pueda recuperar cada elemento en el menor tiempo posible.

Con aciertos y pruebas, llegamos a un enfoque en el que puedo almacenar los números de tal manera que cada fila se ordena y el orden en las filas también aumenta. Ahora podemos aplicar la búsqueda binaria en la primera columna para encontrar la fila adecuada y luego buscar el número en la fila obtenida. Complejidad temporal: logM+logN. Me pidió que lo codificara. Eso fue todo para la segunda ronda.

El entrevistador fue muy servicial y alegre.


RONDA 3: (FINAL)

Me llamaron para la ronda 3 después de 15 minutos. Se suponía que iba a ser de recursos humanos, pero era predominantemente técnico. Me preguntaron sobre todos mis proyectos y mi papel en ellos.

Luego me hizo una pregunta y dijo que discutiríamos solo el enfoque y que no había necesidad de codificarlo.

El problema era similar al siguiente problema de geeksforgeeks: https://www.geeksforgeeks.org/divide-and-conquer-set-7-the-skyline-problem/

Luché un poco pero él me ayudó. Luego discutimos la solución final y el enfoque.
Como eran las 8:30 p. m., terminé el día. Después de que terminó la ronda, me dijeron que había terminado con todas las rondas y que no necesitaba venir el otro día.

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 a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

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 *