Experiencia de entrevista de ServiceNow NIT Rourkela (en el campus)

El proceso comenzó con una prueba en línea que constaba de 10 preguntas de opción múltiple (15 minutos) y una pregunta de programación. Hubo un problema con la ronda en línea. Primero teníamos que intentar los MCQ y después de 15 minutos teníamos que ir a la sección de programación y no podíamos ir a la sección MCQ. Los MCQ se basaron principalmente en cosas de informática como paginación, concepto de programación orientada a objetos, etc. y algunos cálculos cuantitativos sobre probabilidad y otras cosas. Las preguntas eran más o menos del lado más fácil. El programa que tuvimos que escribir fue la subsecuencia creciente más larga (LIS).

Ronda 1: Ronda Técnica (Aprox. 1 Hora):

P1: Háblame de ti, de lo que te interesa y todo eso.

Mi respuesta: Programación en general, estructuras de datos, algoritmos y aprendizaje automático.

P2: Dada una array de tamaño n de enteros positivos, encuentre el elemento mayoritario, es decir, encuentre el elemento que aparece más de n/2 veces en la array.

Mi respuesta: Primero, le dije que puedo tomar un mapa y almacenar la frecuencia de cada elemento único en el mapa. Luego iteraré a través del mapa para encontrar el elemento con frecuencia> n/2. me dijo que lo hiciera sin usar espacio extra. En segundo lugar,   le dije que ordenaría la array y que el elemento central sería mi elemento objetivo de acuerdo con la regla de encontrar la mediana. Luego me dijo que lo hiciera en tiempo O(n) sin usar espacio extra. Ahora , este era un problema que había hecho en Interview Bit , pero no pude encontrar la lógica en ese momento, incluso después de esforzarme mucho. Aquí están los enlaces al problema en Interview Bit y Geeksforgeeks. https://www.geeksforgeeks.org/majority-element/

P3: Te dan dos arrays de números enteros. Supongamos que hay un elemento x en el primer arreglo con frecuencia y y en el segundo arreglo con frecuencia z. Tienes que construir una nueva array donde la frecuencia de x será min(y, z) para cada elemento x en las dos arrays. Tienes que hacerlo en un tiempo óptimo y sin utilizar ningún espacio extra.

Mi respuesta: ordenar las dos arrays. Luego proceda con el algoritmo de fusión de dos arrays ordenadas. quedó impresionado con la solución.

P4: Te dan un árbol binario. Dado cualquier Node de ese árbol, imprima todos los Nodes que están a una distancia d del Node dado.

Mi respuesta: primero encontraré el nivel del Node dado y supondré que es l . Ahora, si la distancia dada es  d entonces los Nodes que tengo que imprimir estarán en el nivel l +d  o l -d. Podemos encontrar los Nodes en l+d simplemente recorriendo los hijos del Node dado. Pero mientras hacemos ld, a veces podemos encontrar un valor negativo. Si el valor de ld es negativo, tenemos que atravesar desde la raíz en el subárbol opuesto al que reside el Node dado y luego imprimir los elementos en el nivel -(ld).

NB  me pidió que implementara las funciones para todos los problemas anteriores. Escribí el programa para los dos primeros enfoques para el primer problema, el único enfoque para el segundo pero no pude completar el código para el tercero porque estaba atascado en alguna parte. Dijo que estaba bien y me dijo que esperara afuera.

Ronda 2: Ronda Técnica (Aprox. 90 minutos):

P1: Se le dan dos lotes (arrays) de strings. Tienes que encontrar la intersección de ellos de manera óptima.

Mi respuesta: tomé un mapa y conté la ocurrencia de cada string en array1. Luego atravesé la segunda array y si esa string se encuentra en el mapa, la imprimo y marco la ocurrencia de esa string en la array como 0. Quedó impresionado con la solución.

P2:  Hay dos orillas del río y el agua fluye entre ellas. Hay n piedras en el río y la distancia entre la orilla izquierda y la primera piedra es d1, entre la 1ª y la 2ª piedra es d2 y así sucesivamente. Finalmente la distancia entre la última piedra y la margen derecha es d(n+1). Cada piedra tiene una probabilidad de aguantar su peso y se dan como p1, p2, …, pn. ¿Cuál es la probabilidad máxima que podemos llegar a alcanzar de la margen izquierda a la margen derecha?

Mi respuesta: le di una solución de programación dinámica. Me dijo que estaba bien pero que había cometido un pequeño error que me señaló.

P3: Hay una serie de strings. Supongamos que hay una string cuyo último carácter coincide con el primer carácter de otra string. En ese caso esos dos forman un anillo. Tienes que encontrar la longitud máxima del anillo formado por las cuerdas en la array. Voy a explicar el problema con un ejemplo. Supongamos que la array de strings es {oreja, pista, cansada, rata, cierva}. Aquí el timbre máximo será oreja->rata->cansado->cierva>oreja. Entonces, la longitud será 4.

Mi respuesta: abordé el problema con una solución de programación dinámica. Me preguntó la complejidad temporal de mi solución. Le dije que será O(n*n). Me dijo que se puede hacer en O(n). Así que lo pensé, pero fue en vano.

NB  Le dijo que escribiera las funciones para todos los problemas anteriores. Escribí códigos para todos los problemas anteriores excepto el algoritmo de tiempo O(n) para el último.

Ronda 3: Gerencial (Aprox. 30 minutos):

El entrevistador me preguntó sobre mis intereses y le dije lo mismo que le dije al primer entrevistador. Me preguntó qué es el gradiente y cómo se usa en el aprendizaje automático. Luego me preguntó acerca de mi B.Tech. Proyecto de cuarto año y dio para encontrar una solución de escenario de la vida real que estaba relacionado con el proyecto. Luego me preguntó si estaba interesado en la robótica y me hizo algunas preguntas sobre lo que he hecho en robótica. Luego me pidió que diseñara una puerta OR con puerta NAND para probar mi conocimiento sobre las puertas universales. La última pregunta fue cómo puedo hacer que un niño de la clase 8 entienda qué es la interfaz. Y eso fue todo.

Este fue todo mi proceso de entrevista y realmente estoy agradecido con Geeksforgeeks por ayudarme tanto en la preparación para la colocación.

Saludos y todo lo mejor para todos los chicos y chicas que están tratando de conseguir un trabajo. Buena suerte.

Publicación traducida automáticamente

Artículo escrito por pnanisar 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 *