Todo el proceso fue en línea.
Todas las entrevistas se realizaron a través de la plataforma HackerRank CodePair en nuestra oficina de TPC ya que no visitaron el campus.
Ronda en línea:
Hubo un total de 32 preguntas divididas de la siguiente manera:
Sección 1 – 15 MAT/ Preguntas de razonamiento lógico. (MCQ)
Sección 2- 15 Preguntas técnicas (nuevamente MCQ pero principalmente para determinar el resultado)
Sección 3- 2 Codificación de preguntas.
Primera pregunta: https://stackoverflow.com/questions/21077763/smallest-number-that-can-not-be-formed-from-sum-of-numbers-from-array
No recuerdo la segunda pregunta.
Resolver una pregunta de codificación y hacerlo bien en otras dos secciones (cada sección tiene su propio corte) fue suficiente para continuar con las entrevistas técnicas.
La ronda 1:
1. Pedí un poco de mi currículum. No entró en detalles.
2. Comprobar si un árbol binario es BST o no
- Primero le dije que podíamos verificar si el recorrido en orden está en orden creciente (suponiendo que todos los elementos sean únicos), podemos decirlo fácilmente. Pero dado que haría uso de una array, se agregaría una complejidad de espacio adicional. Así que sugerí ir por otro enfoque.
- Le dije el enfoque de rango. Estaba satisfecho, pero me preguntó si podemos mejorar la complejidad del espacio en el enfoque Inorder. Dije que en realidad podemos simplemente almacenar el elemento anterior y mantener una condición en el código Inorder. Quedó satisfecho y me pidió que codificara la función.
- Me pidió que hiciera algunos cambios en el código.
3. Conceptos principales de OOPS
- Contó los 4 con ejemplos. Me pidió que demostrara el polimorfismo en tiempo de ejecución con un código de ejemplo.
La ronda 2:
1. Me preguntó qué tecnologías conozco. Mencioné Django junto con algunos. Se le pidió que explicara brevemente qué es Django.
2. Supongamos que tenemos una biblioteca donde los libros no están ordenados en los estantes. Tienes que diseñar un software de biblioteca tal que:
Puede buscar con varias palabras clave (luego pregunté si todas las palabras clave deberían estar contenidas en el nombre del libro)
Tienes que generar resultados ponderados. Por ejemplo: si su palabra clave es «Tom» y hay un libro que contiene «Tom» en su nombre 3 veces y el resto de los libros solo una vez, debería generar el nombre del libro que contiene 3 «Tom» primero y luego el resto.
- Primer enfoque: supongamos que tenemos una array de strings donde las strings son nombres de libros. Para cada palabra clave, tratándola como un patrón, hacemos KMP con cada string y también contamos cuántas veces se repitió. Luego, tendríamos una lista refinada y podemos verificar iterativamente cada palabra clave de manera similar en las listas refinadas. Luego preguntó sobre la parte del peso. Dije que podríamos hacer una función de evaluador en consecuencia y tal vez podríamos mantener la suma de ocurrencias de cada palabra clave como nuestra función de evaluador para el peso. Entonces me preguntó el inconveniente. (Complejidad de tiempo obviamente)
- Segundo enfoque: Trie usado. Me preguntó cómo sería el trie. Le explicó con gestos de la mano ya que en la pantalla se parecía más a Lista enlazada. Me hizo algunas preguntas sobre cómo lo implementaríamos usando Trie y qué beneficio daría. Pensé que Trie convencional no sería lo mejor, por lo que podríamos necesitar hacer algunos cambios en Trie convencional. Me pidió que mostrara los cambios escribiendo su Node y cómo lo usaría. Pensé que no estaba lo suficientemente convencido, así que cambió la pregunta.
3. Diferencia entre puntero vacío y puntero int. Qué sucede con las siguientes operaciones. ++ en void poiter y ++ en int pointer (supongo que respondí mal a ambas partes).
4. Si podemos encasillar un puntero vacío, ¿por qué necesitamos punteros int, etc.? Le dije algo pero no estaba muy seguro.
5. Consulta SQL que involucra uniones que usaron group by y limit.
6. ¿Qué es la virtualización en el sistema operativo?
Ronda 3:
1. A = { 1, 4, 6, 8, 9, } (cualquier número aleatorio, también puede ser 10^6). Hay un número B = 2 ^ A[0] + 2 ^ A[1] + …
¿Necesitamos decir en qué ubicaciones se habrían establecido bits en la representación binaria de B? (puede ser n bit, no 32/64)
- Usado el concepto 2^m es igual a 1<<m. Entonces, el problema se reduce a manejar múltiples bits establecidos en la misma ubicación cuando los números en la array se repetirían.
2. Qué es la Clase Abstracta. ¿Cuál es el uso de ello?
3. ¿Por qué no podemos hacer objetos de clase abstracta (no se pudo responder)
4. ¿Qué es la virtualización? ¿Cuál es el tamaño de página que debemos usar para cada proceso?
Ronda de recursos humanos:
Dos candidatos (incluyéndome a mí) fueron preseleccionados para la ronda de recursos humanos. Ambos fuimos invitados a la misma reunión de video en línea donde el departamento de recursos humanos nos dijo que nos estaban ofreciendo a los dos y nos explicó sobre la empresa.
¡Salud!
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