CodeNation visitó nuestro campus para contratar pasantes de verano. El proceso fue el siguiente:
1) Codificación en línea Ronda
3 preguntas basadas en estructuras de datos y algoritmos, se hicieron en esta ronda, para ser resueltas en 75 minutos. Las preguntas tenían un nivel de dificultad Medio a Difícil. El primer problema se basó en Disjoint Set Union (también se puede hacer usando DFS), la segunda pregunta fue una pregunta basada en la implementación y el tercer problema fue un problema de programación dinámica. Aquellos que resolvieron 2 problemas fueron preseleccionados para entrevistas posteriores Rondas
Nota: La programación competitiva puede ser realmente útil para esta ronda, ya que da una ventaja sobre las demás.
2) Entrevista telefónica
Esta ronda, el entrevistador se centró principalmente en las pasantías y proyectos anteriores que había mencionado en mi currículum. Uno necesita estar bien versado sobre el Proyecto. Fue una entrevista de 40-45 minutos donde se hicieron preguntas de profundidad relacionadas con el Proyecto. También hubo una preselección después de esta ronda.
3) Entrevista Técnica – 1
Esta ronda se centró principalmente en algoritmos y estructuras de datos. Me hicieron 5 preguntas. La primera pregunta fue que dada una array de N enteros donde cada número aparecía dos veces excepto un elemento, la tarea era encontrar el número que aparecía una vez. Sugerí el enfoque O(N) con memoria O(1) donde tomamos el xor de todos los elementos del arreglo y al final el valor de xor es igual al número requerido. Luego, el entrevistador modificó un poco la pregunta de modo que los números que aparecen dos veces tengan sus ocurrencias consecutivas, por ejemplo, arr = {1, 1, 2, 2, 3, 4, 4}. En este caso, la respuesta sería 3. Después de una discusión con el entrevistador, le di una solución basada en búsqueda binaria y escribí el código y el entrevistador quedó satisfecho con ella. La siguiente pregunta se basó en el dequeue. El tercer problema fue encontrar el elemento menor mayor que se encuentra en el lado derecho para cada elemento de la array. Luego se hizo una pregunta basada en hashing seguida de un problema de programación dinámica simple. El entrevistador fue muy amable y la entrevista duró unos 45 minutos. Además, se sugiere leer la pregunta con mucho cuidado, discutir su enfoque con el entrevistador constantemente y no tener prisa por codificar la lógica 🙂
4) Entrevista Técnica – 2
Esta ronda se centró en la resolución de problemas abstractos. Me pidieron que compartiera mi experiencia de hacer algo que fue realmente desafiante para mí cuando lo hice y luego pude superarlo. Tuve una discusión sobre lo mismo con el entrevistador. Luego me pidió que definiera Precisión y Recuperación y luego dijera cuál, según yo, era más importante tener (había mencionado una pasantía relacionada con el aprendizaje automático / PNL en mi currículum, por lo que me preguntaron esto). Luego me preguntó sobre un proyecto en el que mencioné el uso de una biblioteca de Python: Textblob y me preguntaron sobre mi decisión de hacer lo mismo, seguido de algunas preguntas técnicas relacionadas. Después de esto, se me pidió que pensara como un científico de datos y supusiera que estaba disponible el conjunto de datos de Facebook (suena bien, ¿verdad? :P) y proponga ideas sobre cómo usar los datos de una manera que podría ser útil. Básicamente, Se suponía que debía buscar ideas en las que los datos pudieran usarse de manera productiva. Di alrededor de 6-7 ideas para usarlo. Constantemente me hacían preguntas como cómo usaría los datos de manera más efectiva para todos y cada uno de los casos de uso que expuse. La clave aquí es tener confianza en tus ideas y discutirlas constantemente con el entrevistador. Al final, eligió un caso de uso del que había hablado antes y se le preguntó acerca de la estructura de datos y el algoritmo que usaría para hacer lo mismo. Le expliqué mi enfoque y escribí el pseudocódigo para el mismo. Después de esto, la entrevista me preguntó si tenía alguna pregunta para él. La clave aquí es tener confianza en tus ideas y discutirlas constantemente con el entrevistador. Al final, eligió un caso de uso del que había hablado antes y se le preguntó acerca de la estructura de datos y el algoritmo que usaría para hacer lo mismo. Le expliqué mi enfoque y escribí el pseudocódigo para el mismo. Después de esto, la entrevista me preguntó si tenía alguna pregunta para él. La clave aquí es tener confianza en tus ideas y discutirlas constantemente con el entrevistador. Al final, eligió un caso de uso del que había hablado antes y se le preguntó acerca de la estructura de datos y el algoritmo que usaría para hacer lo mismo. Le expliqué mi enfoque y escribí el pseudocódigo para el mismo. Después de esto, la entrevista me preguntó si tenía alguna pregunta para él.
Esta entrevista duró aproximadamente una hora y fue bastante exhaustiva, pero al mismo tiempo el entrevistador fue muy amable y discutió todas las ideas con bastante profundidad, lo que la convirtió en una experiencia interesante.
Al final, me dijeron que había sido seleccionado como pasante de verano en CodeNation. Fue una gran experiencia entrevistar para el mismo 🙂