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 😀
- ¿Qué es mejor en India, trabajos gubernamentales o trabajos privados?
- Cómo acercarse a una nueva empresa para trabajar
- ¿Por qué el trabajo no puede distribuirse de manera más equitativa en la sociedad?
- Cómo ganar dinero a través del marketing afiliado como trabajo a tiempo parcial
- ¿Cuál es la relación de aspecto estándar de una imagen personal para un uso profesional profesional?
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.