¿Cómo fue tu experiencia de entrevista con Code Nation?

Fui preseleccionado para entrevistas en CodeNation a través de CodeAgon , su concurso de programación.

Mi rango estaba en algún lugar entre 180 y 200 y realmente no esperaba ser preseleccionado, ya que CodeNation era popular por preseleccionar muy pocos candidatos.

Hubo 4 rondas de entrevistas. Después de cada ronda, estaba más que seguro de que no calificaría para la siguiente. Entonces, nunca me molesté en prepararme para ninguna de las entrevistas, pero tuve la suerte de romper todas las rondas 😀

Detalles elaborados sobre las entrevistas:

Prepárate, esta será una respuesta larga. ¡Espero que le quites algo útil!

Ronda 0: Ronda de depuración

Tiempo: 25 minutos.

Se compartió conmigo una URL de colaboración que tenía una función C ++ que se suponía que debía depurar. Se proporcionaron la entrada y la salida esperada.

El problema era encontrar el número de subcadenas palindrómicas dentro de una cadena usando programación dinámica. La función proporcionada tenía algunos errores lógicos y sintácticos que tuve que corregir. Después de corregir los errores, le expliqué las correcciones al entrevistador y realmente no proporcionó una respuesta positiva al respecto, por lo que era escéptico sobre cómo fue la entrevista.

Ronda 1: problema algorítmico

Tiempo: 60 minutos

Esta tiene que ser una de las mejores experiencias de entrevista que he tenido.

El entrevistador pasó 15-20 minutos discutiendo mi proyecto de pasantía y mis intereses en informática.

Luego, me dio un problema algorítmico para resolver. No estuve en contacto con la programación competitiva durante mucho tiempo y estaba un poco oxidado.

El problema era: dados 2 arreglos ordenados A y B, si tenemos que seleccionar A [i] y B [j] de modo que i <= j, encuentre el Kth valor mínimo de (A [i] + B [j]) .

Me llevó casi 8-10 minutos descubrir la solución. Después de confirmar la solución con el entrevistador, la implementé en C ++, asegurándome de usar los nombres de variables adecuados y manejar los casos de esquina.

En un momento, estaba a punto de renunciar al problema, pensando que posiblemente no podría haber una mejor solución, pero el entrevistador me empujó a pensar más y finalmente me di cuenta de una solución mucho más rápida.

El entrevistador extendió ese problema a un escenario del mundo real y planteó algunas preguntas de escalabilidad basadas en él, relacionadas con el almacenamiento en caché , la paginación y otras optimizaciones.

Realmente aprendí la importancia de no rendirme en esta entrevista.

Ronda 2: problema de diseño

Tiempo: 60 minutos

Estaba a punto de omitir esta entrevista, ya que pensé que había llegado lo suficientemente lejos en el proceso y que despejar más rondas no era mi taza de té.

Mi padre, sin embargo, me instó a intentarlo.

Esta fue la ronda más dura del proceso. El entrevistador parecía tener mucha experiencia e hizo varias preguntas que cuestionaron mis 4 años de educación en informática.

Se me pidió que diseñara API para un editor de texto, como el Bloc de notas, que tenía algunas características básicas como agregar caracteres, eliminar caracteres, copiar y pegar bloques de texto, cortar y pegar bloques de texto, etc. Tenía que decidir qué estructuras de datos Lo usaría sabiamente. También tuve que escribir pseudocódigo para las funciones.

El entrevistador siguió probándome por varias decisiones de diseño que tomé. Cada decisión obstaculizaba el rendimiento de alguna otra función de alguna manera, y estaba mejorando mis soluciones de forma incremental.

Al final de la entrevista, me preguntaron sobre mis notas bastante promedio en la universidad (aproximadamente el 65%, el topper solía obtener alrededor del 85% +). El entrevistador me dijo: “No basta con atrapar soluciones a problemas algorítmicos de GeeksForGeeks. La ingeniería de software es mucho más compleja que esos problemas “.

En mi cabeza, estaba pensando: “¡Ni siquiera me preparé para esta ronda!”

Sabía que todo había terminado y que tendría que unirme a esa compañía que construía cajeros automáticos. Me alegré de haber hecho 2 rondas.

Pasó una semana y un día recibí un correo del reclutador que había calificado para la siguiente ronda. Revisé el correo una vez más para ver si realmente estaba destinado a mí. Era.

La siguiente ronda tendría lugar después de 2 días.

Ronda 3: problema de diseño

Tiempo: 45-50 minutos.

Solo quería tener una buena discusión con el entrevistador, como lo hago con mis amigos, sobre cómo haríamos para diseñar algo, señalar fallas en mi propio diseño a veces e intentar solucionarlo, proponer varias posibilidades y tratar de ser creativo y pensar fuera de la caja.

El primer problema en esta ronda fue diseñar la función de resaltado de texto para varios idiomas para un editor de texto. El siguiente problema fue crear una función Buscar y reemplazar para un editor de texto.

En este momento, ¡casi había asumido que CodeNation había creado editores de texto!

Los dos problemas anteriores fueron interesantes. Todos los algoritmos de coincidencia de cadenas que conocía flotaban en mi cabeza y estaba tratando de encajar en las cosas, calculando la complejidad y dando un veredicto sobre mi propia solución al entrevistador.

El entrevistador también discutió si implementaría malloc de manera diferente y qué cambiaría.

Después de esta entrevista, sentí una extraña satisfacción de haber participado en rondas de entrevistas agotadoras que me hicieron pensar, aprender y crecer.

La interacción con los entrevistadores me hizo sentir que podría trabajar con algunas personas realmente experimentadas. El reclutador siempre estuvo abierto para programar entrevistas según mi disponibilidad. En general, mi experiencia de entrevistar con CodeNation fue increíble.

Fui preseleccionado a través del filtro de reanudar. Solicité una pasantía de verano.

Ronda 1 (Skype)

Tiempo : 1 hora 15 min

Giró en torno a mis proyectos que mencioné en mi currículum. Había escrito 4 proyectos de los cuales se me pidieron tres.

Las preguntas generales fueron: –

  1. ¿Qué dificultades enfrentaste en este proyecto?
  2. ¿Cuáles fueron algunos otros enfoques posibles para hacer una funcionalidad particular?
  3. ¿Por qué elegiste este enfoque solamente? ¿Cuáles son los pros y los contras de otros enfoques? Compárelos a todos.
  4. ¿Cómo va a desarrollar aún más este proyecto? ¿Qué todas las funcionalidades se pueden agregar?

Cuando el entrevistador le pide que explique el proyecto, este es el mejor momento para que tome el mando y tome la entrevista donde se encuentran sus puntos fuertes. Por lo tanto, asegúrese de preparar una especie de discurso introductorio para cada proyecto del que pueda hablar durante aproximadamente 8-10 minutos. Eso establecerá el tono para el resto de la entrevista.

Ronda 2 (Skype)

Tiempo: 1 hora 30 min

Pregunta 1

Esta fue una ronda de codificación. Me pidieron que diseñara un juego similar al juego Snake en los teléfonos Nokia. La tarea consistía en diseñar una estructura de datos y un algoritmo para el movimiento de serpientes. Las reglas eran las mismas que las del juego original.

Mi enfoque era dividir toda la pantalla en una matriz 2D con celdas como coordenadas. Todas las celdas libres están marcadas con 0 y donde está el cuerpo de la serpiente, marque eso como 1. Usted toma las coordenadas de la boca de la serpiente y las coordenadas de las partículas de alimentos y luego aplica DFS.

Después de escuchar mi enfoque, me hizo las siguientes preguntas:

  1. Ajuste su DFS para proporcionar la ruta más corta.
  2. Ajuste su DFS para proporcionar una ruta con giros máximos y mínimos.
  3. ¿Cómo se asegurará de que la serpiente pueda comer la cantidad máxima de partículas de comida?
  4. Optimice su DFS para que pueda elegir correctamente casi siempre (giros a la izquierda, a la derecha y en línea recta).

Modifiqué mi DFS tomando más parámetros de entrada, como la dirección relativa en la que se encuentra la partícula de alimentos, las coordenadas de la cola y algunas secciones más del cuerpo.

Esto me dio información adicional sobre toda la arena, la posición de la serpiente, su cuerpo y partículas de comida. Esto ayudó a tomar la decisión correcta de cambiar de dirección.

No me pidieron que escribiera el código. Estaba contento con mi enfoque, pero en realidad quería el algoritmo A *. La solución estándar para resolver el juego Snake. Pero le expliqué que la heurística utilizada en A * para tomar decisiones es casi la misma que lo que estamos haciendo con nuestro DFS y estos parámetros adicionales. Compró mi argumento 🙂

A * Algoritmo de búsqueda – GeeksforGeeks

Pregunta 2

Me dieron una lista de la población de n ciudades y me pidieron que conectara estas ciudades utilizando una red de carreteras de modo que el costo de las carreteras sea mínimo. El costo de hacer un camino entre dos ciudades es producto de su población.

Dije que podemos hacer esto usando el árbol de expansión mínimo. Kruskal debería funcionar bien. Me pidió que codificara el algoritmo kruskal. Lo hizo. Me pidió que lo optimizara. Así que implementé kruskal usando Union Find. Luego me dijeron que comparara todos los algoritmos de gráficos posibles que se pueden usar en esta pregunta y encontrar cuál se adapta mejor.

http://blog.hackerearth.com/krus

Ronda 3 (skype)

Tiempo : 1 hora 40 min

Fue la ronda de diseño del sistema HR +. Las preguntas relacionadas con la ronda de recursos humanos son las siguientes:

  1. ¿Desde cuándo comenzó su viaje con Computer y qué aprendió en ese proceso?
  2. ¿Por qué IIIT Hyderabad?
  3. Los puntos que escribió en su currículum como calificaciones, proyectos, pasantías, etc., ¿cuál fue el más difícil de lograr?

Luego comenzó la entrevista de diseño del sistema. Me hizo algunas preguntas antes de saltar a la pregunta real como.

  1. ¿Cuáles son las principales tecnologías o plataformas que conoce que regirán 2018?
  2. ¿Cuál es la próxima gran novedad en informática?
  3. ¿Qué aplicaciones utilizas en tu rutina diaria?

Luego vino el tema principal. La conversación es así.

I – ¿Sabes sobre Alexa?

Yo sí. Es un asistente de hogar impulsado por IA de Amazon.

I- ¿Sabes qué pueden hacer todas las cosas?

Yo sí.

I- ¿Quiénes son todos los competidores de Alexa? ¿Y sabes cuáles son sus características?

Yo: Siri de Apple, Google Assistant y Microsoft Cortana son algunos de los competidores. Sí, también sé sobre sus características.

I- Entonces ahora necesitamos construir Alexa v2; que tiene todas las características de v1. Además ahora tiene cámara y pantalla. Necesitas encontrar todas las características posibles que Alexa v2 debería admitir. Sus características deben ser prácticas, deben resolver los problemas que enfrentamos en la vida cotidiana. Y lo más importante, debería volar la competencia.

Para entender el problema, le hice algunas preguntas. Luego, uno por uno, le dije características que se me ocurrían. Se interesó en una de las características y profundizó en ella.

Me preguntó el mecanismo de las características si decidimos implementarlo. Descubrí algunas lagunas que eliminé cambiando el enfoque. Finalmente me pidió que escribiera un pseudocódigo para ello. Después de escribirlo, me pidió que lo optimizara.

Se seleccionó 🙂

Cosas que aprendí de mi experiencia en la entrevista: –

  1. El contenido en el currículum es muy importante. Solo escribe aquellos puntos que puedas responder.
  2. Los buenos proyectos con un excelente discurso introductorio pueden llevarte a lugares.
  3. Conozca bien las estructuras de datos, los algoritmos y las técnicas de optimización. Intente resolver una variedad de preguntas en lugar de completar una pista completa de matriz, cadena, etc.
  4. Nunca saltes directamente al mejor enfoque aunque lo sepas. Intenta ir paso a paso, lo que arroja una buena impresión.
  5. No dudes en pedir sugerencias o sugerencias. Los entrevistadores son geniales y le mostrarán la dirección en la que quieren que piense.
  6. Cuida tus palabras. Piense antes de hablar cualquier término técnico. El entrevistador podría profundizar en eso.

No soy un empleado de CodeNation y, por lo tanto, esta respuesta no se basa en mi experiencia personal. Sin embargo, según he escuchado de mis amigos, la estructura de la entrevista no es compleja pero fuerte. La competencia en codificación se evalúa en solo dos rondas técnicas. Un ingeniero de software en un foro público mencionó que, un candidato recibe 6 preguntas para codificar en su propio compilador en 60 minutos y, si ha terminado, pasa a la segunda ronda técnica seguida de una ronda de recursos humanos para cerrar.

Como ya he mencionado, la estructura no es compleja sino profunda para evaluar al candidato adecuado. Debe comprender sus conceptos básicos con fluidez y fluidez en lo que hace. La actitud que los empleados de CodeNation tienen hacia el trabajo es encomiable y la empresa se esfuerza por seleccionar a los correctos. Sin lugar a dudas, están aumentando más.

En términos de paquete, pensé que no podría citar una cifra, sí sé que tienen una reputación de pagar a los empleados bastante más altos que los estándares de la industria.

Con la velocidad con la que la empresa está escalando, parece un poco difícil creer que CodeNation se fundó en 2014 reciente.