Hola a todos, recientemente di una entrevista en Microsoft para un equipo en particular. Obtuve esta oportunidad a través de una referencia.
Hubo alrededor de 30 personas que vinieron para el proceso de entrevista, algunos tenían experiencia y otros eran nuevos como yo. Como había alrededor de 30 personas, no se tomó ninguna ronda escrita o vuelo grupal.
Ahora, llegando al proceso de la entrevista, pasé por 4 rondas donde cada una era una ronda de eliminación.
Ronda 1 (50 minutos):
- Encuentre el ancho máximo de un árbol binario.
Supongamos que cualquier Node está en el nivel k (el nivel de la raíz es 0), entonces el nivel del hijo derecho es k+1 y el nivel del hijo izquierdo es k-1. Entonces, el ancho máximo se calcula como maxLevel – minLevel.
Ex –1 / \ 2 3 / \ \ 4 5 8 / \ 6 7
Aquí maxLevel es 3 (Node 7) y minLevel es -2 (Node 4). Entonces, el ancho máximo es 3-(-2) = 5.
Inicialmente, lo hice usando algunos parámetros en la llamada a la función. Luego, el entrevistador me dijo que lo hiciera sin usar ningún parámetro adicional que no sea root y currentLevel del Node. Y lo hice así. Y luego me dijo que hay un campo maxWidth en cada Node y para cada Node, como raíz, necesito almacenar el ancho máximo del subárbol en el campo maxWidth. - Después de eso, me dio un código en Java y me hizo algunas preguntas sobre ese código relacionadas con los conceptos de OOPS.
Ronda 2 (75 minutos):
- Encuentre la suma de los Nodes que ocurren en el camino más largo en un árbol binario.
Lo hice usando parámetros para rastrear la longitud de ruta máxima actual encontrada y su suma. Siempre que encontré una longitud de ruta mayor que la longitud de ruta máxima actual, actualicé la longitud de ruta máxima y la suma. Después de esto, modificó el problema y me dijo que manejara el código para múltiples operaciones como el producto, XOR, etc. Como estaba usando parámetros de función para realizar un seguimiento de la suma, no sería factible tomar un parámetro para cada operación. Así que creé una clase con campos para cada operación y estaba usando el objeto como parámetro. - Ordene la array que contiene 0, 1 y 2.
Ronda 3 (60 minutos):
- El entrevistador me preguntó sobre las cosas que hice en la universidad y, en base a eso, me pidió que diseñara un juez de codificación en línea (como Codechef). Me pidió que lo implementara usando clases. Me preguntó cómo manejar eficientemente el código escrito en diferentes lenguajes de programación, etc. Hubo muchas discusiones sobre esta pregunta.
- Me pidió que diseñara las funciones de deshacer y rehacer de un editor de texto.
Ronda 4 (50 minutos):
- Dado un árbol binario, compruebe si es BST o no .
- El entrevistador me pidió que diseñara un motor de búsqueda. El motor de búsqueda tiene que buscar un token en una colección de documentos y debe poder encontrar los documentos en los que el token está presente junto con la frecuencia del token y la posición (índice) del token en el documento. Me pidió que escribiera un código de trabajo completo, lo hice usando una estructura de datos trie.
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.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
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