Melhor resposta
Quase parece inútil responder, porque o que você quer dizer com “bom”? O que você deseja realizar?
Se você deseja ser contratado, pode ser uma boa maneira de ser contratado, mas parece improvável, a menos que você realmente seja um bom atirador de algum tipo. Mas é difícil saber como você faria. Tenho certeza de que há maneiras melhores de encontrar um emprego se você souber programar bem e puder provar isso. Por exemplo, coloque algum código bom e útil no github.
Tenho passado muito tempo lá recentemente (há meses). Como acontece com qualquer esforço de aprendizagem, ajuda a controlar-se enquanto o faz. O processo de ganhar marcas de verificação verdes e moedas de ouro e melhores emblemas pode ser viciante, então tome cuidado com um platô improdutivo.
As pessoas criticam os desafios diários, mas percebem que fazer um desafio diário também é um processo criativo, e os comentários A seção está aqui para ajudar.
Para aprender apenas um idioma, há uma seção Arcade onde você pode resolver os problemas no seu próprio ritmo. Parece classificar as pessoas apenas pela ordem de conclusão, então isso não é algo para ser competitivo. Achei isso muito útil para me familiarizar mais com as funções e matrizes do PHP e estou trabalhando no uso de métodos OO também.
Acho os desafios diários muito empolgantes, interessantes (na época) e desafiador. Se você sempre pode fazer isso, é muito fácil. Ler a descrição é uma arte. Às vezes, começo a codificar rápido demais antes de saber a descrição corretamente e depois me arrependo. Além disso, às vezes penso em uma solução que não está correta e começo a codificá-la antes de entender como resolver o problema da maneira certa. Recentemente, surgiram alguns problemas muito desafiadores que precisam de técnicas de Programação Dinâmica para resolvê-los, e houve três deles que eu não consegui resolver em muito tempo.
Se você quiser resolver quebra-cabeças desafiadores e retocar em habilidades de codificação em PHP ou C ++ ou Java ou MySQL ou Javascript, ou aprender uma linguagem sofisticada como Haskell ou Python ou R ou Ruby etc. então eu diria que Codefights é um ótimo site para ir.
Resposta
Eu usei as duas plataformas amplamente para reforçar minhas estruturas de dados e conhecimento de algoritmos.
Pontos fortes do Hackerank
- Toneladas, e quero dizer toneladas, de perguntas e organizadas em trilhas. Quer aprender como usar Expressões regulares / Java / SQL / Algoritmos / Estruturas de dados / Python / Matemática? Cada um desses tópicos e outros têm caminhos específicos com subtópicos específicos.
- Se você estiver usando esses sites para se preparar para entrevistas, muitas empresas enviam seus desafios de codificação por meio da classificação de Hacker como parte do processo de entrevista , então é bom se familiarizar. Expedia, GE, Goldman Sachs e Optiver, para citar alguns
- Você obtém quase todas as funcionalidades (se não todas) do site gratuitamente. No Leetcode sem a assinatura paga, existem desvantagens definitivas.
- Por exemplo, você nem sempre pode enviar sua solução imediatamente, devido à forma como eles executam a solução para se classificar em relação a todas as outras soluções.
- Quase todas as declarações de problemas têm exemplos de 1 ou 2 casos de teste e respostas e explicações bastante completas de por que a resposta é como está. Isso é muito menos comum no Leetcode.
- Cada pergunta postada no Hackerrank tem uma solução verificada na guia “Editorial”. Nem toda pergunta Leetcode tem uma (embora você possa facilmente obter uma resposta em ambas as plataformas clicando na guia “discussões”)
- Ambos os sites têm casos de teste visíveis para executar seu código antes de enviar. O Hackerrank faz um bom trabalho em tornar aqueles visíveis os casos comuns, enquanto o Leetcode quase sempre usa um caso extremo para o teste visível.
- O Hackerrack tem vínculos vim! (Se você gosta disso)
Pontos fortes do Leetcode
- Algo que adoro no Leetcode é que eles têm declarações de problemas diretas ao ponto. Hackerrank tende a ter introduções um pouco demoradas e cenários elaborados que mascaram a tarefa real.
- Por exemplo: Hackerrank poderia ser como “Sally adora chocolate, mas apenas quer comer chocolate com a menor quantidade de sódio. Dada uma matriz de níveis de sódio, retorne o chocolate mais baixo com sódio mais baixo ”
- Leetcode equivalente seria“ Dada uma matriz de inteiros, retorne o elemento min ”
- Tanto o Hackerrank quanto o Leetcode comparam os custos de tempo de execução de seu algoritmo cronometrando a solução com casos de teste. No entanto, uma vez que sua solução foi aprovada, ela a relaciona com todas as soluções aprovadas na mesma linguagem de programação e a porcentagem de quantas soluções você superou em velocidade.
- O ambiente de teste é muito superior. Quando você insere um caso de teste personalizado, ele também executa a solução correta para que você possa saber imediatamente se o seu está certo ou errado.No Hackerrank, executar um caso de teste personalizado executa apenas sua solução.
- Outra coisa que adoro, para cada problema, a interface de codificação requer apenas o trabalho com algumas assinaturas de função predefinidas. No Hackerrank, muitas vezes você tem que lidar com a entrada / saída, e ele executa a correspondência de strings para validar a resposta, o que pode ser um pouco chato
- Sério … por que devo imprimir “SIM” ou “ NÃO ”quando o equivalente mais rápido é apenas manter um objeto booleano?
- Leetcode tem aquela fantasia “ A pergunta foi feita pela empresa X com frequência de Y\% ”, que você pode acessar com a assinatura. Pessoalmente, acho que essa ferramenta não é tão útil e dá a falsa impressão de que as pessoas podem memorizar todas aquelas perguntas específicas assim que conseguirem uma entrevista com a empresa X.
Pessoalmente, gosto mais do LeetCode e, em última análise, tudo se resume ao que você está usando.
Isenção de responsabilidade : essas são minhas opiniões sobre quais são os pontos fortes e fraquezas são. Embora algumas pessoas possam ver que uma fraqueza é realmente uma força e vice-versa.