La mejor respuesta
Casi parece inútil responder, porque ¿qué quieres decir con «bueno»? ¿Qué quieres lograr?
Si quieres que te contraten, posiblemente podría ser una buena manera de que te contraten, pero parece poco probable, a menos que realmente seas un buen tirador de algún tipo. Pero es difícil saber cómo le iría. Estoy bastante seguro de que hay mejores formas de encontrar un trabajo si sabes codificar bien y puedes probarlo. Por ejemplo, ponga un código bueno y útil en github.
He pasado mucho tiempo allí recientemente (desde hace meses). Al igual que con cualquier esfuerzo de aprendizaje, es útil manejarse a sí mismo mientras lo hace. El proceso de ganar marcas de verificación verdes y monedas de oro y mejores insignias puede ser adictivo, así que tenga cuidado con una meseta improductiva.
La gente critica los desafíos diarios, pero se da cuenta de que hacer un desafío diario también es un proceso creativo, y los comentarios La sección está ahí para ayudar.
Para aprender un idioma, hay una sección de Arcade donde puede resolver los problemas a su propio ritmo. Parece clasificar a las personas solo por orden de finalización, por lo que no es algo para ser competitivo. Encontré esto muy útil para familiarizarme con las funciones y matrices de PHP y también estoy trabajando en el uso de métodos OO.
Encuentro que los desafíos diarios son muy emocionantes, interesantes (en ese momento) y desafiante. Si siempre puedes hacerlo, entonces es demasiado fácil. Leer la Descripción es un arte. A veces empiezo a codificar demasiado rápido antes de conocer la Descripción correctamente y luego me arrepiento. También a veces pienso en una solución que no es correcta y comienzo a codificarla antes de entender cómo resolver el problema correctamente. Recientemente ha habido algunos problemas muy desafiantes que necesitan técnicas de programación dinámica para resolverlos, y hubo tres de ellos que no pude resolver en el tiempo asignado.
Si quieres resolver acertijos desafiantes y repasar en habilidades de codificación en PHP o C ++ o Java o MySQL o Javascript, o aprender un lenguaje elegante como Haskell o Python o R o Ruby, etc. entonces diría que Codefights es un genial sitio al que ir.
Respuesta
He usado ambas plataformas bastante extensamente para reforzar mi conocimiento de algoritmos y estructuras de datos.
Fortalezas de Hackerank
- Toneladas, y me refiero a toneladas, de preguntas y organizadas en Tracks. ¿Quiere aprender a usar expresiones regulares / Java / SQL / Algoritmos / Estructuras de datos / Python / Math? Cada uno de esos temas y más tienen rutas específicas con subtemas específicos.
- Si está utilizando estos sitios para obtener preparación para entrevistas, muchas empresas envían sus desafíos de codificación a través del rango de Hacker como parte del proceso de entrevista , por lo que es bueno familiarizarse. Expedia, GE, Goldman Sachs y Optiver, por nombrar algunos
- Obtiene casi todas las funciones (si no todas) del sitio web de forma gratuita. En Leetcode sin la suscripción paga, hay desventajas definidas.
- Por ejemplo, no siempre puede enviar su solución de inmediato, debido a cómo ejecutan la solución para clasificarla frente a todas las demás soluciones.
- Casi todos los enunciados de problemas tienen ejemplos de 1 o 2 casos de prueba y respuestas y explicaciones bastante completas de por qué la respuesta es como es. Eso es mucho menos común en Leetcode.
- Cada pregunta publicada en Hackerrank tiene una solución verificada en la pestaña «Editorial». No todas las preguntas de Leetcode tienen una (aunque puede obtener fácilmente una respuesta en ambas plataformas haciendo clic en la pestaña «discusiones»)
- Ambos sitios tienen casos de prueba visibles para ejecutar su código antes de enviarlo. Hackerrank hace un buen trabajo al hacer que los casos visibles sean los casos comunes, mientras que Leetcode casi siempre usa un caso de borde para la prueba visible.
- ¡Hackerrack tiene enlaces vim! (Si le gusta eso)
Fortalezas de Leetcode
- Algo que me encanta de Leetcode es que tienen enunciados de problemas directos al grano. Hackerrank tiende a tener presentaciones un poco largas y escenarios detallados que enmascaran la tarea real.
- Por ejemplo: Hackerrank podría ser como “Sally ama el chocolate pero solo quiere comer chocolate con la menor cantidad de sodio. Dada una matriz de niveles de sodio, devuelva el chocolate más bajo con el menor sodio ”
- El equivalente de Leetcode sería“ Dada una matriz de números enteros, devuelva el elemento mínimo ”
- Tanto Hackerrank como Leetcode comparan los costos de tiempo de ejecución de su algoritmo cronometrando la solución con casos de prueba. Sin embargo, una vez que su solución ha sido aprobada, la lista con todas las soluciones aprobadas en el mismo lenguaje de programación y el porcentaje de cuántas soluciones supera en velocidad.
- El entorno de prueba es muy superior. Cuando ingresa a un caso de prueba personalizado, también ejecuta la solución correcta para que pueda saber de inmediato si la suya es correcta o incorrecta.En Hackerrank, ejecutar un caso de prueba personalizado solo ejecuta su solución.
- Otra cosa que me encanta, para cada problema, la interfaz de codificación solo requiere trabajar con alguna firma de función predefinida. En Hackerrank, la mayor parte del tiempo tienes que manejar la entrada / salida, y ejecuta la coincidencia de cadenas para validar la respuesta, lo cual puede resultar un poco molesto
- En serio … ¿por qué debería imprimir «SÍ» o » NO ”cuando el equivalente más rápido es simplemente mantener un objeto booleano?
- Leetcode tiene ese elegante » La pregunta fue hecha por X Company con Y\% de frecuencia «, al que puede acceder con la suscripción. Personalmente, creo que esta herramienta no es tan útil y da la falsa impresión de que las personas pueden memorizar todas esas preguntas específicas una vez que obtienen una entrevista con la empresa X.
Personalmente, me gusta más LeetCode y, en última instancia, todo se reduce a para qué lo usa.
Renuncia de responsabilidad : estas son mis opiniones sobre las fortalezas y son las debilidades. Mientras que algunas personas pueden ver que una debilidad es realmente una fuerza y viceversa.