Ronda 1: comienza después de que se realiza el proceso de preselección. A esta ronda acudieron casi todos los alumnos de todos los campus de SRM.
Así que CommVault nos dio a elegir entre SDE o SDET. Opté por SDE porque solo me interesa el desarrollo de software y no quería hacer nada relacionado con las pruebas.
La primera ronda comenzó con Aptitude y preguntas relacionadas con el lenguaje de programación que ha elegido (en mi caso fue Java, las opciones que estaban disponibles eran C++/JAVA para SDE, y para SDET teníamos JAVA/C++/Python).
Esta ronda se realizó en una plataforma en línea que alojaba la prueba, y fuimos monitoreados usando nuestras cámaras web. Las preguntas de aptitud eran básicas y lógicas. En la sección de Java, las preguntas eran un poco complicadas y la mayoría de ellas estaban relacionadas con los conceptos de OOPS. Se dieron 45 minutos para toda la prueba con un total de 25 preguntas.
Ronda 2: Pasando a la Ronda 2, fue un desafío de codificación, nos dieron 4 preguntas. Pude resolver 2 problemas completos con todos los casos de prueba en ejecución y 1 pregunta con 2 casos de prueba en ejecución.
Las preguntas no eran muy difíciles pero el límite de tiempo era menor. Nos dieron 65 minutos para resolver 4 problemas. Los problemas se basaron en Gráficos, Enfoque Codicioso, Lista Enlazada, Programación Dinámica.
- Problema codicioso: era un problema de mochila fraccional muy popular.
- Lista enlazada inversa en grupo K: Invierta una lista enlazada en grupos de un tamaño determinado
- Programación dinámica: la pregunta era similar al problema de la escalera en el que puedes subir 1 o 2 peldaños a la vez, y tienes que decir cuántos pasos darás para llegar al destino. Entonces la pregunta era: Hay una rana y frente a ella hay un lago de N longitud. Quiere cruzar el lago, pero solo puede saltar casi M metros a la vez. Hay piedras N-1 en el lago sobre las que la rana puede saltar, estas piedras están a 1 metro de distancia. Tienes que decir el Número de formas posibles para que la rana llegue al otro lado del lago.
Había una pregunta relacionada con el gráfico que no leí debido al límite de tiempo.
Eso es todo por esta ronda. Se seleccionaron 26 estudiantes para la siguiente ronda de codificación larga. La ronda de codificación larga iba a durar de 4 a 5 horas y estaba muy asustado.
Ronda 3: Entonces, la ronda 3 fue un desafío de codificación larga. No tenía ni idea de lo que iban a preguntar en esta ronda. Traté de buscar en línea y después de leer todo lo que pude pensar fue que no puedo hacerlo. Todas las preguntas que encontré parecían pedirnos que codifiquemos un sistema de archivos o algo relacionado con Linux. Pero en realidad, fue una experiencia completamente diferente. Me gustó mucho esta ronda. Esta ronda seguramente puso a prueba mis habilidades de programación orientada a objetos y mi capacidad lógica para almacenar datos en una estructura de datos diseñada por mí mismo.
Esta ronda comenzó a las 8:40 am. Nos presentaron brevemente lo que íbamos a hacer. Había 26 estudiantes que fueron seleccionados para esta ronda, nos dividimos en grupos de tres, pero la tarea debía realizarse de forma independiente.
El problema era: Tenemos que diseñar un reproductor de mp3. Suena complicado, ¿verdad? Pero no, no tenemos que hacer ninguna interfaz de usuario o leer ningún archivo, nada de eso. Tuvimos que diseñar un programa que pudiera almacenar diferentes detalles de canciones. La lista principal de jugadores, múltiples listas de reproducción y tuvimos que realizar diferentes operaciones en ellas.
Bueno, esto puede parecer complicado. Aquí esta lo que hice.
Hice una canción de clase que contenía atributos como el nombre de la canción, la duración de la canción, los derechos de autor, el cantante. Constructor hecho y valores inicializados cuando se crea un objeto.
Hice otra clase para Playlist. Eso tendrá un mapa hash de SongName como clave y Song como su valor.
Hizo otra clase llamada mp3Player para toda la operación lógica.
Y luego estaba esta clase principal que se nos proporcionó como plantilla para que podamos diseñar las funciones que faltan. Creo que esta fue la ronda que casi me hizo llorar. Estaba tan desanimado después de esta ronda, sentí que todo lo que había estado haciendo durante los últimos dos meses no significaba nada.
Así que esta ronda fue de 2 horas. Sí, escuchaste bien, hubo 2 entrevistadores y debo decir que fueron brillantes. Me sorprendió mucho que después de trabajar tanto tiempo en una empresa recuerden todos y cada uno de los pequeños conceptos de casi todas las materias básicas de CSE.
Entonces, cuando comenzó la entrevista, me pidieron que me presentara. Luego me preguntaron sobre mis proyectos. Les dije que prefiero JAVA a otros lenguajes.
Entonces me hicieron estas preguntas:
- ¿Qué es un compilador JAVA y cómo Java ejecuta un código?
- Nombre del compilador JAVA: compilador Java in time (no tenía ni idea en ese momento).
- ¿Cómo admite Java OOPS y cuáles son los principios de OOPS?
- ¿Cuántos tipos de polimorfismo hay?
- ¿Dar ejemplos de la vida real de polimorfismo en tiempo de ejecución?
- ¿En qué se diferencia el polimorfismo en tiempo de ejecución del polimorfismo estático?
- ¿Uso de la herencia en la vida real?
- ¿Qué es más rápido Java o C? ¿y por qué?
- ¿Por qué codificas en Java y no en C++?
- ¿En qué frameworks he trabajado?
- ¿Implementación de HashMap en Java?
- ¿Por qué usamos solo Map mientras estamos en la mitad izquierda de Map<Integer, Integer> m=new HashMap<>(); y ¿por qué no he usado HashMap en lugar de Map?
- Diferencia entre iteradores y enumeradores.
- Propiedades del DBMS ACID.
- ¿La normalización y sus tipos?
- ¿Qué es DeadLock?
- ¿Diferencia entre proceso y un hilo?
- ¿Cómo variará el consumo de memoria en estos casos, hay un Proceso que contiene 1 hilo y hay un Proceso que contiene 0 hilos?
- ¿Qué son las anotaciones? ¿Qué hacen?
- ¿Qué son los semáforos?
- ¿Qué son los algoritmos de programación?
- ¿Qué son los grafos dirigidos y no dirigidos?
- ¿Puede un gráfico no dirigido ser un árbol? En caso afirmativo, ¿cuáles son las condiciones necesarias?
- ¿Diferencia entre estructura y unión en C?
- ¿Por qué usamos sindicatos? ¿Dar ejemplos de la vida real donde una Unión es adecuada para su uso?
- ¿Cómo se logra el subprocesamiento múltiple en Java?
- ¿Cómo asegurarse de que dos subprocesos en ejecución que usan la misma función no colisionen y den como resultado una salida no deseada?
DSA (3 preguntas):
- Hay una array ordenada que se gira. Debe encontrar si el elemento está presente en la array y devolver su índice. Si no está presente, devuelve 0. Esta operación debe realizarse en tiempo LogN.
- Aquí hay una array de enteros. Tienes que encontrar la longitud de la subarreglo más larga que contiene enteros consecutivos. Devuelve la longitud del subarreglo más largo. Esto debe hacerse en tiempo O(N).
- Dada una array de enteros. Debe crear una nueva array del mismo tamaño que contendrá el valor del siguiente elemento mayor con una diferencia mínima en cada posición de la array.
por ejemplo:
Question=> 2 5 3 1 5 8 34 23 2 Answer => 3 8 5 2 8 23 -1 -1 -1