DE Shaw organizó una campaña de reclutamiento en el campus para una pasantía de desarrollo de software de 2 meses.
A continuación se muestra mi experiencia de la unidad.
Ronda 0: Codificación en línea y prueba de aptitud
Esta prueba tenía 26 MCQ (14 de aptitud + 12 técnicas) y 2 preguntas de codificación
- Pregunta de codificación uno: esta pregunta era similar a la suma máxima eligiendo elementos no adyacentes.
- Pregunta de codificación dos: esta pregunta era similar a los puntos mínimos requeridos para llegar al final de la cuadrícula.
De 250 estudiantes, 2 (yo y uno de mis compañeros de lote) fueron seleccionados para la siguiente ronda.
Ronda 1: Ronda de par de códigos (60 minutos) | ranking de hackers
La cantidad de preguntas que se hacen en esta prueba no se fijó para cada candidato, básicamente depende del entrevistador.
- Primera pregunta (Cakewalk): dados dos números ‘a’ y ‘b’ que tienen el mismo número de dígitos. La tarea es encontrar el número mínimo de movimientos necesarios para convertir ‘a’ en ‘b’ . En movimiento puede incrementar o disminuir cualquier dígito de ‘a’ en 1. Por ejemplo: a = 45, b = 34, Respuesta = 2 (Incrementar 4 en 1 y disminuir 5 en 1 ). Aunque parece fácil, hay un caso de esquina que debes manejar y esto es lo que estaba buscando.
- Segunda pregunta (final abierta): hay muchas torres de telecomunicaciones en una región, cada torre tiene un cierto rango de señal y rango de ancho de banda. Sin embargo, por cada par de torres que tengan un rango de señal superpuesto , no debe haber ningún punto que se encuentre en el rango de ancho de banda de ambas torres (es decir, sus rangos de ancho de banda no deben superponerse entre sí). La tarea es encontrar el número mínimo de rangos de ancho de banda únicos que podemos usar para asignar todas las torres. La entrada no contendrá los rangos de señal de las torres, solo contendrá una lista de pares de torres donde cada par de torres significará que los rangos de señal de estas dos torres se superponen entre sí. Di un enfoque usando el gráfico pero estaba fallando en algunos casos.
- Tercera pregunta (operadores matemáticos y bit a bit): se le proporciona un método que puede generar 0 y 1 con un 50% de probabilidad. Necesita diseñar un nuevo método que pueda generar 0 con 75% y 1 con 25% de probabilidad utilizando el método dado. Utilicé el operador AND bit a bit para realizar la tarea dada.
Ambos (mi compañero de lote y yo) fuimos seleccionados para la ronda final.
Ronda 2: Ronda de par de códigos (60 minutos) | Hackerrank (Ronda final)
Primera pregunta (era una pregunta abierta, por lo que me tomó un tiempo pensar en un enfoque optimizado): Tienes un texto dado escrito en JSON (me sorprendió ver eso porque nunca he codificado nada en JSON ). Escribió un pequeño código en JSON en el editor, intentaré escribir ese código a continuación.
As far as I remember the below code is what the interviewer wrote. Note: There might be some syntax errors(although it will not make the question wrong) in this code as I don't know JSON, I will try to replicate what he wrote there. Code: A: { B: { C: { D = 45 } } C: { B = 98 } }
El entrevistador dijo que en este código JSON hay una jerarquía en cada ruta, por ejemplo , A -> B -> C -> D {45} es una ruta de manera similar A -> C -> B es otra ruta. Por jerarquía quiso decir que hay un camino desde A -> B en este código pero no hay un camino desde B -> A, lo que significa que podemos llegar de A a B pero no de B a A (de manera similar para otras partes del código).
Nota: Todas las rutas son independientes entre sí (sobre la base de la jerarquía), como aquí podemos ver que en la primera ruta (A -> B -> C -> D), B es el padre de C, pero en el segunda ruta (A -> C -> B), C es el padre de B .
Ahora me pidió que diseñara una estructura que pueda almacenar esta información de este código y responder a las consultas de manera eficiente. Por ejemplo, si la consulta es ABC , la respuesta será {D:45}, de manera similar, si la consulta es ACB , la respuesta será 98, formalmente tengo que devolver toda la información dentro de la ruta dada o determinar que la ruta dada no es válida. Una ruta no válida significa una ruta que no existe, por ejemplo, BA
Primero pensé en algo así como un gráfico dirigido mirando la información, pero luego pensé que para encontrar la respuesta para cada consulta tenemos que usar DFS, que es una operación costosa debido al hecho de que tenemos que realizarla para cada consulta. Por último, pensé en un enfoque utilizando la estructura de datos TRIE (mejor que el anterior) y pude codificarlo en el momento de la entrevista (estaré feliz de ver mejores enfoques en los comentarios 🙂).
Segunda pregunta: Esta fue la última pregunta de la ronda final y se basó en DBMS. Dada una tabla de empleados, encuentre todos los datos del empleado que tiene el salario máximo.
Dos días después de que se anunciaran los resultados de las entrevistas, y desafortunadamente ninguno de los dos fuimos seleccionados para la pasantía, aunque una universidad más estaba participando en la misma campaña y dos estudiantes de esa universidad recibieron una oferta después de esta ronda. Sin embargo, todavía estamos contentos porque al menos obtuvimos la experiencia de cómo se llevan a cabo las entrevistas de codificación, ya que era nuestra primera vez.
ACTUALIZACIÓN : Olvidé mencionar que me rechazaron porque me hicieron 2 preguntas basadas en OS y CN de las que no tenía idea…
PD: A diferencia de la mayoría de las otras entrevistas de DE Shaw, esta entrevista no se compuso de demasiadas preguntas sobre temas básicos de CS, excepto la última.
Por último, creo que puede tomar la ayuda de geeksforgeeks para la preparación de la entrevista y para obtener un buen conocimiento de las estructuras de datos y los algoritmos, ya que estos problemas de discusión abierta los requieren.
Muchas gracias a todo el equipo de geeks for geeks y colaboradores.
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