Experiencia de entrevista de Nutanix para pasante de MTS | Fuera del campus 2021

Hola chicos, recientemente me entrevistaron para el puesto de pasante de miembro del personal técnico (MTS) en Nutanix. Todo el proceso fue virtual debido a la situación de pandemia en curso y constaba de 1 ronda de codificación, 1 ronda de depuración y 2 entrevistas F2F. Las siguientes fueron las preguntas de la entrevista:

Ronda de codificación (2 preguntas – 75 minutos):

  1. Se le proporciona una array binaria (puede tener solo 1 y 0 como elementos) con n filas y m columnas que inicialmente consisten solo en 0. Siguen las consultas Q. Las consultas pueden ser de 4 tipos:

    1. 1 índice R
    2. índice 1C
    3. índice 2R
    4. índice 2C

    En cada consulta, la primera entrada es el tipo de consulta, la segunda entrada es si tenemos que considerar la fila (R) o la columna (C) y la tercera entrada es el índice de la fila/columna. Para cada consulta de tipo 1, necesitamos voltear los elementos de la fila/columna que tiene el índice dado. Para cada consulta de tipo 2, tenemos que generar el número de ceros presentes en la fila/columna que tiene el índice dado.

    Restricciones: 

    N - 1 to10 ^ 5, Q - 1 to 10 ^ 5.
  2. Dada una array con n filas y m columnas, donde cada elemento es un número del 1 al 10 ^ 9, necesitamos encontrar el camino creciente más largo, es decir, la siguiente celda debe tener un valor mayor que la celda actual. Solo podemos movernos a celdas adyacentes, es decir, celdas que comparten un lado con la celda actual. Además, la ruta puede comenzar y terminar en cualquier parte de la array, pero ninguna celda puede visitarse dos veces.

Pude hacer 1.5 preguntas. Para la segunda pregunta, utilicé un enfoque DFS + DP y todos los casos de prueba pasaron. La solución fue similar a https://www.geeksforgeeks.org/find-the-longest-path-in-a-matrix-with-given-constraints/ . Para la primera pregunta, hice un intento de fuerza bruta que borró la mitad de los casos de prueba. Tenía algunos compromisos previos, así que tenía que terminar el examen en una hora, así que no traté de optimizarlo más. Afortunadamente, pasé el corte y fui preseleccionado para la siguiente ronda.

Ronda de depuración (1 pregunta – 45 minutos): La siguiente ronda fue una ronda de depuración. Había aproximadamente 20 personas en esta ronda y todos teníamos que dar esta ronda simultáneamente. Nos dieron un fragmento de código para escrituras de archivos simultáneas y secuenciales.reconocimientos y, como habrán juzgado por el nombre, fue una ronda basada en el sistema operativo (SO). A cada uno de nosotros nos dieron un documento separado con el enunciado del problema y el código. Tuvimos que sugerir cambios y comentar qué estaba mal con el código actual, por qué pensamos que ese cambio debería estar allí, etc. claramente mencionado en la declaración del problema, lo que significaba que la mayor parte se podía hacer simplemente entendiendo el código dado. Solo se nos pidió que buscáramos fallas lógicas y no errores de sintaxis. Al final, había señalado 10 u 11 fallas, y estaba bastante satisfecho con él. Diría que más que saber sobre la teoría, esta ronda fue para ver qué tan bueno es para comprender el código existente y descubrir errores básicos y fallas lógicas. 9 personas fueron preseleccionadas después de esta ronda.

Entrevista técnica 1 (Estructuras de datos y ronda de algoritmos – 1 hora): La primera entrevista F2F fue una ronda de DSA. Los 5 minutos iniciales fueron en la introducción. Luego tuve que iniciar sesión en el enlace del par de códigos en hackerrank y ella me hizo una pregunta. Entonces, la pregunta tenía una especie de premisa común sobre la cual se hicieron preguntas de seguimiento. La premisa era la siguiente:

Hay n casas en fila. Las casas están indexadas del 1 al n. Cada casa tiene una cierta cantidad de dinero asociada y se le dan los valores en una array. Ahora un voluntario tiene que recolectar dinero para unas ONG. Hay 2 formas en las que un voluntario puede recaudar dinero:

  1. El voluntario puede recolectar dinero en cualquier orden de casas.
  2. El voluntario puede recolectar dinero solo de casas consecutivas.

Ahora hay 3 ONG. Cualquier voluntario que distribuya una cantidad igual de dinero a las tres ONG es elegible para un premio. Necesitamos encontrar el número máximo de voluntarios que son elegibles para un premio. Se da que varios voluntarios pueden recolectar dinero de la misma casa pero un voluntario no puede recolectar dinero de la misma casa varias veces.

Dada esta premisa, se realizaron 4 preguntas una por una:

  1. Encuentre el número máximo de voluntarios que se otorgarán si todos los voluntarios pueden recolectar dinero solo de la primera manera. Es importante entender desde la premisa que esto simplemente significa encontrar el número de subconjuntos de la array tal que su suma sea divisible por 3. Por lo tanto, proporcioné una solución de Programación Dinámica de complejidad de tiempo O(n) y complejidad de espacio O(n) . Además preguntó qué pasaría si hubiera k ONG. La complejidad simplemente cambiaría a O(n * k) complejidad de tiempo y espacio. Tuve que codificar toda la solución.
  2. Encuentre el número máximo de voluntarios que se otorgarán si todos los voluntarios pueden recolectar dinero solo de la segunda manera. Una vez más, debemos entender que el problema ahora cambia para identificar la cantidad de subarreglos con una suma divisible por 3. Por lo tanto, utilicé un enfoque basado en Hashmap que es similar a https://www.geeksforgeeks.org/count-sub- arreglos-suma-divisible-k/ . También tuve que codificar la solución completa para esto.
  3. Encuentre el número máximo de voluntarios que se otorgarán si todos los voluntarios pueden recolectar dinero solo de la segunda manera dado que hay consultas de la forma (l, r) de modo que solo puede considerar casas en el rango [l, r]. El número de consultas fue de hasta 10 ^ 5. Para esto, utilicé un enfoque de árbol de segmentos y quedó impresionada con la solución, ya que esperaba algo más para la pregunta.
  4. El último seguimiento fue que en la pregunta anterior, ahora podemos tener consultas de la forma (índice, val) que significa cambiar el valor de la casa en el índice a val. De nuevo, esto fue manejado muy fácilmente por la estructura de datos del árbol de segmentos.

Esta ronda salió extremadamente bien y la entrevistadora quedó muy impresionada porque no esperaba que la entrevista continuara hasta la cuarta pregunta de seguimiento y me elogió por lo mismo.

Entrevista Técnica 2 (Ronda de Diseño del Sistema – 1hr):La ronda final fue una ronda de diseño de sistemas. Me pidieron que hiciera un diseño de sistema para Pastebin y me dieron una serie de requisitos que tenía que cumplir. Como nunca había hecho o ni siquiera sabía nada sobre las rondas de diseño de sistemas, estaba un poco nervioso y acababa de hojear blogs aleatorios sobre el tema 15 minutos antes de la entrevista. Sin embargo, el entrevistador fue muy útil y me guió en todo momento. Tuve que dar las firmas para las API, discutir qué tipo de base de datos usaría y sus pros y contras, las diversas colecciones que tendría la base de datos, cómo manejar el almacenamiento en caché, el diseño para el caché LRU, etc. Fue un muy ronda interesante y, de hecho, aprendí mucho en la ronda en sí. Terminé la ronda bien dentro del tiempo y estaba muy contento con cómo había ido la ronda.

Veredicto: ¡Fui seleccionado y me ofrecieron la pasantía por un período de 5 meses a partir del 1 de febrero! 🙂 Fue una de las experiencias de entrevista más fluidas que he tenido, y estoy agradecido con Nutanix por lo mismo. 

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 *