Cracking the HackerRank Test: 100% score made easy

Publicidad

Es bien sabido que la mayoría de los aspirantes a programadores no saben codificar ni en una bolsa de papel. Como consecuencia, la industria tecnológica está presionando para que las pruebas de selección sean más largas, más duras y más extremas.

La entrevista de pizarra ha sido el estándar durante un tiempo, seguido por los rompecabezas, luego FizzBuzz.

La última moda es HackerRank. Está introduciendo pruebas de programación automatizadas que debe hacer el candidato antes de que se le permita hablar con nadie en la empresa.

Muchas empresas muy buenas están utilizando HackerRank como herramienta de preselección. Si no podemos evitarlo, tenemos que aceptarlo.

¿Qué se puede encontrar en una prueba de HackerRank?

Hay 3 tipos de preguntas que se pueden encontrar en una prueba:

  • Preguntas de opción múltiple: «¿Cuál es la complejidad temporal para encontrar un elemento en un árbol rojo y negro?» -A- -B- -C- -D-
  • Ejercicio de codificación: «<Descripción larga de un problema a resolver>, <formato de datos de entrada>, <formato de datos de salida>.» Comienza a codificar una solución.
  • Ejercicio SudoRank: «Tus credenciales ssh son tester:[email protected] <descripción larga de lo que está mal en ese servidor>». SSH al servidor y empezar a arreglar.

Se puede juntar cualquier cantidad de cualquier pregunta, en cualquier orden, para hacer una prueba completa. Una empresa debe dar algunas indicaciones sobre lo que se puede esperar en su prueba.

HackerRank proporciona una biblioteca con cientos de preguntas y ejercicios listos para usar. También es posible que una empresa escriba las suyas propias (y se recomienda).

Preguntas de opción múltiple que hay que vencer

La mayoría de las preguntas de opción múltiple se pueden resolver con una búsqueda adecuada en Google. Por lo general, en el título, a veces en unas pocas palabras seleccionadas del texto.

hr pregunta dejando caer privilegios
Seleccionar texto => Clic derecho => Búsqueda rápida
hr google dejando caer privilegios
¡Google ha hablado! => todo a favor de setuid()

Ejercicios de codificación derrotistas

Buscar un párrafo de 10 líneas en Google no es una opción aceptable. Por no hablar de que el sitio web de HackerRank desactiva el copiar/pegar en el área de descripción.

La solución es buscar el título del ejercicio. Un título identifica de forma exclusiva una pregunta en HackerRank. Se mencionará en las soluciones relacionadas y en las publicaciones del blog. Perfecto para ser indexado por Google.

hr question lonely integer
Select Text => Right Click => Quick Search
hr google lonely integer.png
Touché!

El primer resultado es la pregunta, el segundo es la solución. Bueno, eso fue fácil.

Bonus: Esa solución de google es en realidad incorrecta… y sin embargo da todos los puntos.

// int main() { int N; cin >> N; int tmp, result = 0; for (int i = 0; i < N; i++) { cin >> tmp; result ^= tmp; } cout << result; return 0;}

Esta solución sólo es correcta si los números duplicados están en pares. Todas las pruebas unitarias de HackerRank se ajustan a este criterio por pura coincidencia.

Originalmente, pusimos esta sencilla pregunta al principio de una prueba para calentar. Recibimos esa respuesta de un candidato de nuestra primera tanda de aspirantes. Fue bastante desconcertante, ¿cuáles son las probabilidades de que alguien pueda llegar a un algoritmo tan enrevesado si sólo se le da el texto de la pregunta? Una rápida investigación reveló rápidamente la fuente.

Addendum:

La pregunta «Lonely Integer» está redactada de forma ligeramente diferente en el sitio público de HackerRank y en la biblioteca privada de HackerRank, pero la entrada, la salida y las pruebas unitarias son las mismas. De ahí que la solución esté fuera de lugar pero funcione. Obviamente, HackerRank está copiando preguntas de la comunidad en la biblioteca profesional. Esto es otra copia de gato atrapada!

Reclutador Insights: El engaño llevado al siguiente nivel

Tenemos muchos candidatos procedentes de reclutadores. ¿Cómo se comparan con los candidatos de otras fuentes?

Veamos las estadísticas de una pregunta difícil.

hr insights stock maximiza la distribución
Distribución sobre todos los intentos, por todas las empresas (escala logarítmica). 1234 cero vs 303 puntuación completa.

La mayoría de los candidatos obtienen 0 puntos: se quedaron sin tiempo, no pudieron responder, algoritmo incorrecto, o soluciones incompletas/parciales (es decir, buen comienzo pero no lo suficiente para pasar ninguna prueba de unidad todavía).

Queríamos mostrar la misma distribución sobre nuestro grupo de candidatos pero HackerRank ya no proporciona ese gráfico. Solía hacerlo.

De todos modos, recordamos los números aproximados. La distribución para nuestros candidatos es de aproximadamente 50/50% en cada extremo. Eso es significativamente mejor que el 75/17% de la población general. Podemos correlacionar ese número con el tiempo dedicado a la pregunta y a una revisión visual del código.

El resultado es que los candidatos procedentes de reclutadores rinden mejor, especialmente en los ejercicios difíciles. De hecho, ¡es increíble lo mucho que rinden! (Felicitaciones especiales a los chicos que son capaces de resolver un problema -con una solución perfectamente optimizada- en menos tiempo del que les llevaría leerlo realmente =D).

La conclusión es simple y llana: Nuestros reclutadores regalan el test a los candidatos.

Todo el mundo lo hace, lo que pasa es que nadie habla de ello
¿Los reclutadores regalan sus preguntas? Por supuesto!

Lección aprendida:

  • Para los candidatos: Recuerda pedir apoyo al reclutador antes de la prueba.
  • Para los reclutadores: Acuérdate de preparar al candidato para la prueba e indícale que anote los cambios (si los hay).
  • Para las empresas: ¡Cuidado con los candidatos de alta puntuación que vienen de los reclutadores! En particular, no calibre la puntuación basándose en las puntuaciones extremas de unos pocos tramposos.

Desafío: ¿Cuánto tiempo le lleva resolver un desafío comercial? .

Pruebas personalizadas de HackerRank

Las empresas pueden escribir ejercicios personalizados y deberían hacerlo. Es difícil y requiere habilidades particulares, pero definitivamente vale la pena.

Es la única solución efectiva contra Google, si se hace con cuidado. (En realidad es sorprendentemente difícil hacer ejercicios que sean a la vez simples Y que no se encuentren fácilmente con Google en 1000 tutoriales y foros de codificación).

Lamentablemente, no ayudará contra los reclutadores. (Excluyendo el primer lote de candidatos que serán sacrificados como exploradores).

Conclusión

¿Acabamos de arruinar la preselección de HackerRank? Por supuesto que no. Hay un suministro interminable de bobos incapaces de distinguir entre Internet e Internet Explorer.

Podríamos escribir un libro enseñando las respuestas al 90% de los problemas de las entrevistas de programación, y sin embargo el 99% de los solicitantes de empleo nunca lo leerían. Diablos, hace tiempo que se escribió y no tuvo ninguna repercusión.

Sólo el puñado de devs que siguen blogs/noticias o buscan «¿Qué es HackerRank?» podrán venir mejor preparados.

En todo caso, este artículo hace que HackerRank sea mejor y más relevante. Ahora un examen consiste en buscar ayuda en Google y arreglar fragmentos sutilmente rotos de código sin sangrar escritos en el lenguaje equivocado.

¡HackerRank por fin criba capacidades relevantes para el trabajo!

cracking the coding interview book cover

Un último consejo. Vas a necesitar formación si estás tratando de pasar la barra de entrevistas en buenas empresas tecnológicas y no tuviste la oportunidad de asistir al MIT. Este libro es el estándar de oro cuando se trata de estructuras de datos y preguntas de algoritmos. Muy recomendable. Contiene cientos de preguntas que te harán una y otra vez, en todas las empresas. Como mínimo, lee el avance gratuito en Amazon.

Leave a Reply