Criterios de elegibilidad: CGPA >= 5.0
Ronda 1: Prueba técnica
Una prueba en línea realizada en HackerRank que consta de 20 MCQ y 2 preguntas de codificación.
- Pregunta de codificación 1: encuentre un recorrido que visite todas las estaciones
- Pregunta de codificación 2: una array consta de 0 y 1. Una operación de volteo es aquella en la que giras 1 ? 0 y un 0? 1. Tienes que hacer una operación de «voltear» como máximo una vez en una array secundaria. Luego, finalmente, muestre el número máximo de 1 que puede tener en la array después de una operación de volteo.
En ambas preguntas se aceptaron soluciones de fuerza bruta, es decir O(n^2).
Los MCQ
eran bastante simples, solo necesita tener conocimientos básicos sobre algoritmos de programación, subprocesos y complejidad del tiempo. En esta sección, la mayor parte procedía de los sistemas operativos.
Le sugiero que revise las notas de última hora sobre el sistema operativo, fueron un salvavidas para mí en la ronda en línea, así como en rondas posteriores.
Nos dijeron que solo habrá 2 rondas técnicas y ninguna ronda de recursos humanos.
Ronda presencial 1: (~1 hora)
- Preguntas 1: doblar una LinkedList: 1 ->2->3->4->5->6 se convierte en 1->6->2->5->3->4
Mi enfoque:- Paso 1: encuentra el centro de la lista de enlaces.
- Paso 2: invierta la segunda mitad de la lista de enlaces y mantenga el encabezado como head2 para la segunda mitad de la lista de enlaces.
Primera mitad
1->2->3
Segunda mitad después de la inversión
6->5->4
Ahora recorra ambas mitades simultáneamente y luego tome un Node de la primera lista y luego de la segunda lista, haga esto hasta llegar al final de la primera y segunda lista y hacer nuevos enlaces y mantener los enlaces al siguiente Node. Me pidió que cubriera todos los casos de esquina.
Finalmente me pidió que le diera un código de trabajo adecuado en papel.
- Pregunta 2:
Si uno de los Nodes en BST no está en la posición correcta, colóquelo en la posición correcta en el bst. Primero, por alguna observación, descubrí que habrá 2 Nodes que estarán en el orden incorrecto.
Entonces, esta pregunta se volvió similar a Dos Nodes de un bst intercambiados, corrija el bst. Di un enfoque transversal en orden, pero me perdí algunos casos de esquina, después de dar algunos, me dijo que me faltaban algunos casos de prueba más, luego pasó a la siguiente pregunta. - Pregunta 3:
Un reproductor de música tiene N canciones, usted tiene un generador de números aleatorios rand(n) que genera un número de [0,n-1]. Su tarea es reproducir una canción aleatoria de N canciones dadas de modo que cada canción sea se reprodujo una vez y su programa debería terminar una vez que haya reproducido todas las canciones.- Enfoque 1:
Usaremos un HashMap para almacenar el índice de la canción reproducida y luego, cada vez que se reproduzca una canción aleatoria, verificaremos su ocurrencia en el HashMap si ya está allí, genere un número aleatorio nuevamente y haga esto hasta que el tamaño del HashMap sea N.
Me dijo que es un código con errores y me pidió que averiguara el error.
El problema con el código es que podría terminar en un ciclo infinito en el peor de los casos, suponga que la primera vez que rand(n) genera un número k (k<n) y lo ponemos en el hashmap, ahora suponga que cada vez que rand(n) genera k, por lo que terminaremos en un ciclo infinito y es posible que nuestro programa nunca finalice. Después de mucho pensar, no pude encontrar un buen enfoque.
Sugerencia dada por el entrevistador: ¿Qué pasa si puedes intercambiar algunas de las canciones? - Enfoque 2:
Paso 1: Tome una variable por último, inicialícela en N.
Paso 2: Genere un número aleatorio usando rand (último), que sea k.
Paso 3: Swap(a[last-1],a[k])
Paso 4: last–;
Paso 5: Vaya al paso 2 hasta que se reproduzcan todas las canciones (¡último! = 0) Con la última variable, simplemente hago un seguimiento de todas las canciones que se reproducen (después del último).
Estaba satisfecho con el enfoque.
- Enfoque 1:
La ronda 1 había terminado.
Ronda presencial 2 (~1,5 horas)
- Pregunta 1:
Comenzó con gráficos que le pedían que encontrara los seguidores de una persona que le dijo que hiciera un bfs y algunas preguntas básicas relacionadas con bfs. - Pregunta 2: clone una lista de enlaces con punteros aleatorios.
Le di una solución usando Hash Map, no estaba satisfecho y me pidió que hiciera en O (1) espacio adicional.
Pensé durante 20 minutos, pero no pude encontrar el enfoque O (1).
Sugerencia dada por el entrevistador: ¿Qué sucede si cambia algunos enlaces en la lista original?
Una vez más, pensé que durante unos 10 minutos todavía no podía llegar a un enfoque O (1).
Luego me pidió que codificara el enfoque HashMap, mientras codificaba descubrí el enfoque con O (1) espacio adicional. Una vez que terminé con el código, le dije el otro enfoque, estaba satisfecho, no se requería código para el segundo enfoque.
- Pregunta 3: Si tienes 2 números muy grandes, ¿cómo los sumarías? Le dije que BigInteger está ahí en Java, usa eso.
I: No sin usar eso.
Tome dos strings y simplemente convierta cada carácter en dígito y luego súmelos.
I: No, no es necesario convertir un carácter en un dígito.
Toma 2 arrays.
I: Indique las restricciones con la array.
Entonces finalmente le dije que usara una LinkList.
Y finalmente me dijo el enfoque para agregarlos sin invertir la lista. (Hizo por recursión) - Luego hubo muchas preguntas pequeñas relacionadas con la clasificación rápida, montones, hash, complejidad de tiempo para varios algoritmos.
¿Cuáles son las diferentes fases en Compiler?
¡Nunca esperé eso!
Pensé durante unos 2 minutos e intenté recopilar la mayor cantidad posible de todo lo que había leído en Compiler design. Luego le di 4 fases del Compilador: Analizador Léxico, Analizador de Sintaxis, Analizador Semántico, Generación de Código Intermedio y luego le dije que no recuerdo nada más que esto ya que no he preparado CD y estudiado hace mucho tiempo. - Luego me hizo preguntas de OS.
¿Qué es enhebrar?
¿Por qué enhebrar mejor que procesar?
¿Qué es la paliza?
¿Qué es LRU?
Y algunas preguntas más básicas sobre el sistema operativo.
Eso fue todo por la entrevista.
Resultado: Seleccionado 😀
¡La mejor de las suertes para todos los geeks para su temporada de colocación!
Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo a review-team@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