DE Shaw realizó una campaña de reclutamiento en el campus de mi universidad para el puesto de pasante de QTE (2 meses) en julio de 2021.
Hubo tres rondas para el proceso de selección:
Ronda 1 (Prueba técnica: 95 minutos en el rango de pirata informático): hubo un total de tres secciones en esta prueba.
- La primera sección constaba de 14 Aptitude MCQs de nivel de dificultad fácil a medio para completarse en 28 minutos.
- La segunda sección se compone de 12 MCQ técnicas relacionadas con la búsqueda de errores en la lógica de los códigos C++, adivinar el resultado de las preguntas del código, DBMS, SQL y conceptos relacionados que se completarán en 17 minutos.
- La tercera era una sección de codificación que tenía dos preguntas de codificación, con 20 minutos y 30 minutos para la primera y la segunda pregunta respectivamente. Las dos preguntas eran: (i) Dada una array de n enteros, puede dividir la array en secciones que contengan k elementos cada una (n es divisible por k). La puntuación de cada sección es el producto de los elementos de esa sección. Encuentra la suma máxima de puntajes de todas las secciones que puedes lograr. (ii) Dado que tiene tres elementos A, B y C, debe colocarlos en un orden particular de modo que no haya tres elementos iguales consecutivos. Dadas n consultas de la forma (a, b, c) donde a, b y c son la cantidad de artículos A, B y C que tiene, encuentre la cantidad máxima de artículos A, B y C que puede pedir siguiendo la restricción anterior. (las restricciones eran bajas)
Ronda 1 de la entrevista técnica (60 minutos en el par de códigos de clasificación de hackers): hubo dos entrevistadores. Uno de ellos se retrasó un poco, la otra entrevista comenzó con sus presentaciones y luego pidió la mía. Luego dijo que el otro entrevistador está un poco retrasado y por qué no comenzamos con el primer problema hasta entonces:
- El primer problema que me dieron fue el siguiente: Tenemos N bloques que deben pintarse usando K colores con la siguiente condición de que como máximo solo 1 par de bloques adyacentes podrían tener el mismo color. Este era un tipo de problema de DP que identifiqué rápidamente y les di el enfoque recursivo y memorizado. Me dijo que hiciera algunos ensayos y luego pareció satisfecho con la solución.
- Ya se había sumado el segundo entrevistador y empezó dándome un acertijo: Vamos de nuestra casa a la oficina y de regreso, se da que los semáforos siempre están en rojo cada vez que te los encuentras. Ahora, mientras va de su casa a la oficina, se detiene dos veces, pero al regresar a casa de la oficina se detiene solo una vez. Como es posible esta situación. Me pidió que dibujara y explicara mi solución correctamente. (Sugerencia: no necesita detenerse en un semáforo cuando necesita girar a la izquierda). Me tomó alrededor de 5-10 minutos resolver este rompecabezas.
- Luego me preguntó el siguiente problema. Hay un edificio de N-piso y tienes un huevo. Debe encontrar el piso más bajo desde el cual el huevo se rompe al caer. Dado que el huevo se rompe después de cierto piso y encima de él y no se rompe desde ningún piso debajo de él. La única solución es donde tiramos el huevo desde el piso más bajo y vamos hacia arriba hasta que se rompe, esto no se puede optimizar más ya que solo tenemos un huevo. Luego me preguntó la complejidad del tiempo para esta solución a lo que le dije que era O(N).
- Luego modificó la pregunta y le dio seguimiento al problema anterior preguntando cuál sería el método más óptimo si tuviéramos 2 huevos para encontrar el piso más bajo desde el cual el huevo se rompe al caer. Al principio, le di otro enfoque O(N), pero me preguntó si había otro enfoque más optimizado al que le di un enfoque de búsqueda binaria. Usaríamos uno de los huevos para acortar nuestro rango de búsqueda y luego realizar una búsqueda lineal en el nuevo rango. Luego me preguntó qué pisos tendrían el peor caso y el mejor caso aquí el peor caso y el mejor caso se refieren al piso hasta el cual tendríamos que hacer el menor número de caídas.
- Ahora, el primer entrevistador me preguntó si sabía qué es el caché LRU. A lo que les dije que solo sé un poco al respecto y les expliqué lo que sabía. Luego me pidió que implementara un sistema que funcionaría como un caché LRU. Este fue un problema de diseño. Al principio les di un enfoque muy poco optimizado por lo que me preguntaron si podía hacerlo más eficiente. No pude llegar a la solución más optimizada, llegué a un sistema en el que tendríamos una estructura similar a una cola de prioridad con un mapa hash. La solución prevista se basó en una cola de prioridad de listas vinculadas y hashmap.
- Al final me preguntaron si tenía alguna duda y les pregunté en qué trabajaban y cuál era su rol.
Ronda 2 de la entrevista técnica (60 minutos en el par de códigos de HackerRank): hubo dos entrevistadores nuevamente. Después de la introducción, comenzaron con las preguntas:
- Comenzaron con un acertijo matemático en el que pidió encontrar cuál de los dos es más grande, 50 ^ (99) o 99!, una vez que dije que 50 ^ 99 era más grande, me preguntaron ¿por qué? Pude dar una respuesta lógica en la que cambiamos ambos números en términos de 100 y luego los comparamos, pero no parecían completamente satisfechos con eso.
- La segunda pregunta que hice fue que hay muchos estudiantes y muchos cursos, donde un estudiante puede participar en tantos cursos como quiera. Estamos haciendo un calendario de exámenes en el que cada estudiante debe dar solo un examen por día y la cantidad de días que dura el examen debe minimizarse y debemos encontrar la cantidad mínima de días que tomaría realizar el examen. Por ejemplo: Si son dos estudiantes y optaron por cursos de la siguiente manera: estudiante 1: M,P y estudiante 2:M,C. Entonces podemos tener el examen de la siguiente manera: Día 1: {M} y Día 2: {P,C). De esta forma ningún alumno tiene que dar dos exámenes en un día y se minimiza el lapso del total de días. Me tomó un tiempo finalmente observar que podemos tener una estructura similar a un gráfico donde los Nodes representarían un curso y el borde representaría que hay un estudiante que tiene ambos Nodes conectados por ese borde como materias. Ahora, para encontrar la cantidad mínima de días, tendríamos que realizar una clasificación topológica y encontrar la cantidad de niveles diferentes en el gráfico ordenado topológicamente. Luego me preguntó qué es la clasificación topológica seguida de un ejemplo de la vida real y cómo instalaríamos módulos en un proyecto en el que un módulo podría depender de algún otro módulo que debe instalarse antes (Topo-sort nuevamente).
- Luego, el otro entrevistador me planteó otro problema que era el siguiente: tenemos una especie de tabla de base de datos, que debido a alguna manipulación se cambió de la siguiente manera: las filas y las columnas deben mezclarse de manera aleatoria. Estamos obligados a verifique si los datos en la tabla aún son consistentes o no (los datos mezclados son consistentes siempre que los valores no hayan cambiado). Ofrecí un enfoque en el que podíamos realizar una clasificación personalizada en las columnas y luego verificar la consistencia de las filas con la ayuda de la clave principal y la tabla original. A lo que me pidió que resolviera esto de alguna otra manera, por lo que le dije que podíamos modificar la tabla y convertirla en una array de estructuras y luego verificar la consistencia fácilmente. Luego me preguntó si podía resolverlo usando clases y objetos para que dije que puedo,
- Ya casi había terminado el tiempo, así que me hicieron una pregunta final, esto era más un problema abierto en el que se me pedía que dijera qué cosas deberían probarse en una página de pago de un sitio web de comercio electrónico (como como Flipkart). Expliqué algunos puntos, como verificar si dos personas están pagando y solo queda un artículo, la consistencia del artículo con la base de datos, etc. Al final, me preguntaron si tenía alguna pregunta y les pregunté en qué trabajan y qué un interno trabajaría en.
Después de cada ronda, puede hacer cualquier pregunta que pueda tener a los entrevistadores.
Publicación traducida automáticamente
Artículo escrito por 18bhupenderyadav18 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA