Epam Systems Hyderabad Entrevista de (graduados de 2019) para ingeniero de software junior

Ronda 1: (Desafío de codificación en línea de Java) 

Este fue un desafío de codificación en línea en Java (150 minutos). La cámara web era obligatoria para tomar esta prueba. Había 3 preguntas: 1 fácil, 1 medio y 1 difícil. Solo podíamos pasar a la siguiente pregunta si habíamos enviado la anterior.

Pregunta 1: Esta fue la pregunta fácil en la que tuvimos que extender una clase abstracta, anular 2 métodos de ella y agregar algunos métodos más. Lo resolví en 6 minutos, aunque el tiempo asignado para esto fue de 40 minutos (un poco demasiado, supongo)

Pregunta 2: Esta fue la pregunta mediana y esta etiqueta de ‘medio’ me confundió. La pregunta fue bastante fácil, pero no la leí correctamente y codifiqué una solución incorrecta al principio. Eventualmente lo resolví en 30 minutos de los 50 minutos asignados. Podría haber resuelto esta pregunta fácilmente en 10 minutos si hubiera leído la pregunta correctamente. Era un simple problema ad-hoc basado en la operación de arreglos.

Pregunta 3: Resolví la pregunta difícil en 18 minutos del tiempo asignado de 1 hora y resultó que me tomó menos tiempo resolver esto que el medio. Este fue un problema basado en la subsecuencia palindrómica más larga y mi intensa práctica de programación dinámica durante los últimos meses me ayudó a pasar todos los casos de prueba con facilidad.

En general, me tomó alrededor de 50 minutos completar la prueba y obtuve una puntuación de 100/100. Sentí que tenía una buena oportunidad de calificar para la Ronda 2, lo cual finalmente hice y me llamaron para más rondas en el MLR Institute Of Technology, Hyderabad. Solo 2 estudiantes de mi universidad calificaron para la siguiente ronda y me sentí eufórico de estar entre ellos.

Ronda 2: (Desafío de codificación JAVA)

Esta ronda contenía 11 preguntas MCQ de 20 puntos basadas en JAVA, OOPS, C++, DBMS, redes y sistemas operativos. Había 2 preguntas más de codificación Java, de las cuales una era media y otra difícil. El tiempo total para esta prueba fue de 2 horas. El límite para esta ronda fue 40/100. A los estudiantes que obtuvieron menos de 40 se les pidió que se fueran y a los que tenían más de 40 se les pidió que se quedaran atrás para más rondas. Resolví la pregunta mediana en 4 minutos y la pregunta difícil requería conocimiento de expresión regular para ser resuelta. A partir de una string dada, tuve que averiguar si era una dirección IPV4 o una dirección IPV6 o ninguna de ellas. No conocía la expresión regular, pero aún así encontré una manera de resolverlo pasando todos los casos de prueba excepto 2. Obtuve 34/50 en esa pregunta. No volví a intentarlo porque sabía que me había clasificado para la siguiente ronda porque ya había conseguido 30 en la pregunta anterior. Eventualmente obtuve un puntaje de 75.2/100, que luego resultó ser excepcional considerando el desempeño de otros estudiantes, pero honestamente siento que debería haberlo hecho mucho mejor. 37 estudiantes de más de 150 estudiantes (para ese centro en particular) aprobaron la Ronda 2 y se les pidió que fueran a almorzar.

Ronda 3: (Discusión en grupo)

El siguiente paso fue la Ronda de Discusión en Grupo. De hecho, fue muy interesante ya que tuvimos la oportunidad de conocernos e hicimos algunos amigos después de la ronda. Nos dieron una situación en la que la Tierra sería destruida en los próximos 15 minutos. Solo 3 de nosotros podemos sobrevivir y tenemos que decidir quiénes 3 serán los afortunados/desafortunados. Nadie fue eliminado en esta ronda y se nos pidió que pasáramos a la ronda técnica.

Ronda 4: (Entrevista Técnica)

Esta fue una agotadora sesión de entrevistas de 40 minutos a 1 hora con solo un miembro en el panel. Sin embargo, ya tuve una experiencia de entrevista en TCS y, por lo tanto, no me intimidé demasiado y mantuve la calma.

Entrevistador: OK, entonces Riddhi, ¿eres de Kolkata?

Yo: Si señor.

Entrevistador: Bueno, en realidad me gustan los bengalíes porque son muy trabajadores.

Yo: No realmente señor. Creo que somos las personas más perezosas que jamás verás.

Entrevistador: Jaja, Ok, empecemos con las preguntas. Será una ronda rápida y tendrás que responder muy rápido. ¿Entonces estas lista?

Yo: Si señor.

Entrevistador: ¿Qué es la inmutabilidad de strings?

Yo: explicado

Entrevistador: ¿Qué es la agrupación de strings?

Yo: Lo siento señor, no lo sé. (Más tarde descubrí que conocía el concepto pero no sabía que se denominaba agrupación de strings).

Entrevistador: escriba un código para demostrar el envío de métodos dinámicos.

Yo: hice

Entrevistador: ¿Qué es una clase abstracta?

Yo: Dije.

Entrevistador: ¿Se pueden anular los métodos estáticos, privados y finales?

Yo: No señor. Sin embargo, anular los métodos estáticos no dará ningún error de tiempo de compilación, pero los otros 2 sí.

Entrevistador: Bien. ¿Cuál es la diferencia entre interfaz y clase abstracta?

Yo: dicho.

Entrevistador: Entonces, Riddhi, ¿cómo logrará la herencia múltiple en JAVA?

Yo: Con la ayuda de la interfaz, señor. Una interfaz puede implementar y extender múltiples interfaces.

Entrevistador: ¿Qué es la clase estática?

Yo: dicho

Entrevistador: ¿Cuál es la diferencia entre la clase interna y la clase anidada?

Yo: Dije. (Parecía satisfecho conmigo por ahora)

Entrevistador: Explique la clase final, el método final.

Yo: hice

Entrevistador: ¿Qué es el campo final, el campo estático? dame su aplicacion

Yo: hice

Entrevistador: ¿Qué es la clase singleton? Escribe un código para explicar cómo funciona.

Yo: Escribí

Entrevistador: ¿Cuándo puede anular el método de clonación de la clase Object?

Yo: Señor, solo cuando esa clase implementa Cloneable, que es una interfaz de etiquetado. Y deberíamos hacer eso solo cuando surja un problema de copia superficial.

Entrevistador: ¡Son wah, concepto para pura claro hain tumhara!

Yo: Gracias señor. (Recibir un elogio de un entrevistador puede ser lo mejor del mundo. Mis nervios se calmaron. Sin embargo, la siguiente pregunta…)

Entrevistador: ¿Qué es un marco extensible?

Yo: (Confía en mí, todavía tengo que encontrar una respuesta a esta pregunta).

Entrevistador: Recuerda, si otros responden a esta pregunta, ¡te irás!

Yo: (Tiró de vuelta a la tierra y mi confianza recibió una paliza)

Entrevistador: Bien, dime por qué JAVA es independiente de la plataforma.

Yo: dicho

Entrevistador: ¿Podemos tener múltiples constructores en una clase? ¿Cómo implementarlo?

Yo: Sí señor, por sobrecarga del constructor.

Entrevistador: ¿Sabes súper y esto?

Yo: Si señor y explicado.

Entrevistador: ¿Cuál es la diferencia entre String Builder y String Buffer?

Yo: Buffer es seguro para subprocesos, señor, pero el otro no lo es.

Entrevistador: ¿Cuál es la diferencia entre == y .equals() ?

Yo: dicho

Entrevistador: OK, entonces explícame el funcionamiento interno de Hash-map en Java.

Yo: lo expliqué a fondo usando un método de enstringmiento separado y usando una array de cubos. También se hicieron muchas preguntas.

Entrevistador: Usaste la lista enlazada, ¿podemos usar alguna otra estructura de datos mejor?

Yo: Señor, probablemente Balanced BST.

Entrevistador: Sí, antes de Java 5 usaban listas enlazadas, pero ahora usan BST balanceado.

Yo: asiente con la cabeza.

Entrevistador: Bueno, Riddhi, eres el primer candidato con el que me encontré que realmente podría responder esta pregunta. Nadie pudo. Así que lo estás haciendo muy bien y tienes una gran oportunidad. No lo tires.

Yo: Claro, señor haré mi mejor esfuerzo. (Confianza recuperada)

Entrevistador: Ok Riddhi, ahora probemos tus habilidades para resolver problemas. Obtuviste 75 en la segunda ronda. Guau, eso fue genial. Vamos a ver cómo te va aquí. ¿Deberíamos empezar?

Yo: Si señor.

Entrevistador: Tengo una array desordenada. Quiero que devuelvas un par de 2 números de esa array tal que la suma sea igual a x. Hazlo por mí de la manera más eficiente. Sólo dime el enfoque.

Yo: Señor, puede haber un enfoque de O (N ^ 2) ejecutando dos bucles y verificando las combinaciones de todos los pares uno por uno.

Entrevistador: ¡Dije solución eficiente!

Yo: Dame 2 minutos, señor… (Pensando, pensando… Después de unos segundos) Está bien, lo tengo, señor. Lo haré en Nlogn. Primero ordenaré la array y luego, para cada valor de a[i], aplicaré la búsqueda binaria en la array para encontrar si xa[i] existe en la array. Si lo encuentro, he terminado. Para cada iteración, haré un trabajo de inicio de sesión.

Entrevistador: Bueno, eso funcionará. Paso a la siguiente pregunta.

Supongamos que tengo una array de 0 y 1 y no están ordenados. ¿Cómo puedo ordenarlos de manera eficiente?

Yo: Señor, usaré el método de dos punteros para hacerlo en O(n) y en un recorrido.

Entrevistador: ¿Cómo detectará bucles en una lista enlazada?

Yo: mantendré una array booleana y si visito un bucle lo marcaré como visitado…

Entrevistador: (Interrumpiéndome.) No quiero desperdiciar espacio extra.

Yo: Ok, déjeme intentarlo otra vez, señor…

Entrevistador: ¿Qué tal aplicar dos punteros aquí?

Yo: Está bien, señor, lo tengo. (Le expliqué mi enfoque con dos punteros).

Entrevistador: ¿Cómo imprimirá solo la vista izquierda de un árbol?

Yo: usando el orden transversal de nivel, señor, e imprimiré el primer elemento de la cola siempre.

Entrevistador: ¿Cómo encontrará el primer carácter que no se repite en una string?

Yo: Le expliqué mi lógica usando hash-maps.

Entrevistador: ¿Cómo puedo llegar desde la posición (0, 0) a la posición (n-1, n-1) en una array a través del camino más corto?

Yo: Usaré BFS señor.

Entrevistador: ¿y si los costos son diferentes?

Yo: Entonces usaré Programación Dinámica porque BFS solo funcionará para valores unitarios. Usaremos el algoritmo de ruta de costo mínimo.

Entrevistador: Genial. Ahora supongamos que tengo una array de 1 y 0 dispersos. El racimo de 1s forma una isla. ¿Cómo encontrará el número de tales islas?

Yo: El número de componentes conectados será la respuesta, señor.

Entrevistador: ¿y cómo lo vas a encontrar?

Yo: Señor, usaré BFS o DFS varias veces hasta que tenga todos los Nodes visitados. (Le expliqué todo el enfoque a partir de entonces y pareció satisfecho)

Entrevistador: Bueno, pasemos a los acertijos. ¿Te gusta resolverlos?

Yo: Sí señor. (aunque en ese momento no lo estaba. Estoy bastante seguro de que está aburrido de leer hasta esto y yo fui el que pasó por todo esto todo el día. No estaba de humor para resolver acertijos)

Entrevistador: 8 bolas hay. Uno de ellos es más ligero. Encuentre el más ligero utilizando el peso mínimo.

Yo: 3 señor. (aunque la respuesta era 2)

Entrevistador: OK Riddhi, he terminado. Gracias por tu tiempo.

Yo: Gracias señor.

Pasé la ronda técnica y tuve otra ronda (HR) que duró alrededor de 30 minutos. Luego nos llevaron a 5 de nosotros a una sala donde nos dijeron que habíamos sido preseleccionados después de haber superado todas las rondas con éxito. Sin embargo, no pudieron confirmarnos la oferta ya que tienen que visitar otros centros y aceptarán un total de 200 candidatos de toda la India.

Fue una experiencia increíble y, por primera vez, sentí que mi pasión por la codificación competitiva me ayudó en gran medida a descifrar la codificación y las rondas técnicas. Esperando los resultados. Dedos cruzados.

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 *