El proceso completo consistió en una ronda de codificación en línea, una ronda de vuelo grupal y tres entrevistas técnicas.
Ronda de codificación en línea : hubo 3 «problemas de función», es decir, solo teníamos que completar una función, obteniendo 2, 3 y 5 puntos respectivamente y el tiempo total asignado fue de 75 minutos. Se llevó a cabo en la plataforma Cocubes y, aunque no tuve ningún problema con las bibliotecas en Java, algunos de mis compañeros de lote que usaban C++ sí lo hicieron. En el envío, se mostraron los resultados de algunos casos de prueba triviales.
2 puntos : Los autos impares pueden viajar en fechas impares y los autos pares en fechas pares. Otros autos serían multados con 250 cada uno. Dado el número de autos (una array de números enteros) que viajan en una fecha (un número entero), calcule la multa total recaudada.
Ejemplos:
Input : cars = [1, 2, 3], date = 15 Output : 250(for car 2) Input: cars = [3, 4, 5], date = 16 Output : 500(for cars 3 and 5)
3 puntos : siguiente palíndromo más pequeño
5 puntos : Suma de primos en un árbol binario
Ronda de vuelo grupal : hubo 7 preguntas de tipo de respuesta corta en C y DSA y un problema de codificación Detectar y eliminar bucle en una lista vinculada
Entrevistas : Fueron 3 rondas técnicas personales.
Primera ronda : Era una pregunta de lista enlazada . Tuve que codificar la solución en un papel y ejecutarla en seco mientras se la explicaba al entrevistador.
Segunda ronda : había hecho un curso sobre Machine Learning, por lo que me hicieron algunas preguntas sobre problemas de clasificación y descenso de gradiente.
Me pidieron dos problemas. El primero fue encontrar la raíz cuadrada de un número con una precisión de 10 decimales. Di una solución de búsqueda binaria que tuve que codificar.
La segunda pregunta fue ordenar una lista de números si los k dígitos menos significativos no son importantes.
Ejemplos:
Input : list = [674, 689, 349, 327, 989], k = 2 Output : [349, 327, 674, 689, 989] is valid and so is [327, 349, 689, 674, 989]
Mi primer enfoque fue la ordenación por radix, pero finalmente se me ocurrió una solución basada en la ordenación por cubos. La idea es asignar cada elemento a ‘cubos’ dividiéndolo por 10^k, por ejemplo, tanto 674 como 689 se asignarán al cubo 6, 349 y 327 a ‘3’ y así sucesivamente y luego ordenar los cubos. No tuve que escribir el código.
Tercera ronda : Tuvimos una discusión sobre mi proyecto sobre extracción de fotogramas clave. Me hizo preguntas sobre los algoritmos y cómo podía mejorarlos.
La pregunta formulada fue abierta y la solución se alcanzó a través de la discusión.
Hay un teclado numérico. La clave 1 se asigna a ‘a’, ‘b’ y ‘c’, 2 a ‘d’, ‘e’, ’f’ y así sucesivamente. Entonces, la secuencia de presionar 12 teclas se asigna a todas las combinaciones posibles, es decir, «ad», «ae», «af», «bd», «be», etc.
También hay una lista de strings y, dada una secuencia de pulsaciones de teclas, se muestran las strings que tienen una asignación como prefijo.
Esto es similar a cómo funciona una búsqueda en el marcador de un teléfono.
list = [abc, adg] sequence = 1 output = [abc, adg] sequence = 12 output = [adg] sequence = 11 output = [abc] sequence = 2 output = []
La memoria no es una limitación, pero el tiempo es crítico.
Mi enfoque inicial fue almacenar la lista de strings en un árbol de prefijos seguido de BFS de acuerdo con la secuencia de pulsación de teclas. Pero la complejidad es exponencial a la cantidad de pulsaciones de teclas en la secuencia, así que tuve que encontrar una solución diferente que se basara en el hashing.
Esto no era tanto una pregunta como una discusión de varios enfoques y el aspecto más importante era transmitir el pensamiento y la razón detrás de esto.
Tuve que codificar una parte de la solución.
En general, los entrevistadores fueron útiles y se les animó a hacer preguntas.
Sigue apurado,
orpidus
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