Beste svaret
Det virker nesten ubrukelig å svare, for hva mener du med «bra»? Hva vil du oppnå?
Hvis du vil bli ansatt, kan det tenkes å være en god måte å bli ansatt, men det virker usannsynlig, med mindre du virkelig er et supergodt hot shot av noe slag. Men det er vanskelig å vite hvordan du vil gjøre det. Jeg er ganske sikker på at det er bedre måter å finne en jobb på hvis du vet hvordan du skal kode godt og kan bevise det. Sett for eksempel noen gode, nyttige koder på github.
Jeg har brukt mye tid der nylig (i flere måneder nå). Som med alle læringsoppgaver hjelper det å klare deg selv mens du gjør det. Prosessen med å tjene grønne hakemerker og gullmynter og bedre merker kan være vanedannende, så pass på et uproduktivt platå.
Folk kritiserer de daglige utfordringene, men innser at det å lage en daglig utfordring er også en kreativ prosess, og kommentarene seksjonen er der for å hjelpe.
For å bare lære et språk, er det en Arcade-seksjon der du kan jobbe deg gjennom problemer i ditt eget tempo. Det ser ut til å rangere folk bare etter fullføringsrekkefølge, så det er ikke noe å være konkurransedyktig om. Jeg syntes dette var veldig nyttig for å bli bedre kjent med PHP-funksjoner og matriser, og jeg jobber med å bruke OO-metoder også.
Jeg synes de daglige utfordringene er veldig spennende, interessante (for tiden), og utfordrende. Hvis du alltid kan gjøre det, er det for enkelt. Å lese beskrivelsen er en kunst. Noen ganger begynner jeg å kode for fort før jeg vet beskrivelsen riktig, og så angrer jeg. Noen ganger tenker jeg på en løsning som ikke er riktig, og begynner å kode det før jeg har forstått hvordan jeg skal løse problemet riktig. Nylig har det vært noen veldig utfordrende problemer som trenger dynamiske programmeringsteknikker for å løse dem, og det var tre av dem jeg ikke kunne gjøre på den tildelte tiden.
Hvis du vil gjøre utfordrende gåter og pusse opp på kodingsferdigheter i PHP eller C ++ eller Java eller MySQL eller Javascript, eller lære et fancy språk som Haskell eller Python eller R eller Ruby etc. så vil jeg si Codefights er et flott nettsted å gå til.
Svar
Jeg har brukt begge plattformene ganske mye for å styrke opp datastrukturer og algoritmekunnskap.
Hackerank Strengths
- Tonnevis, og jeg mener tonnevis av spørsmål og organisert i spor. Vil du lære om hvordan du bruker Regular Expressions / Java / SQL / Algorithms / Data Structures / Python / Math? Hvert av disse emnene og mer har spesifikke baner med spesifikke underemner.
- Hvis du bruker disse nettstedene for å få intervjupreparat, sender mange selskaper sine kodingsutfordringer gjennom Hacker-rang som bortsett fra intervjuprosessen , så det er godt å bli kjent. Expedia, GE, Goldman Sachs og Optiver for å nevne noen
- Du får nesten all funksjonalitet (om ikke alle) fra nettstedet gratis. På Leetcode uten betalt abonnement er det klare ulemper.
- For eksempel kan du ikke alltid sende inn løsningen med en gang, på grunn av hvordan de kjører løsningen for å rangere mot alle andre løsninger.
- Nesten alle problemstillingene har eksempler på 1 eller 2 testtilfeller og svar og ganske grundige forklaringer på hvorfor svaret er slik det er. Det er mye mindre vanlig på Leetcode.
- Hvert spørsmål som legges ut på Hackerrank har en bekreftet løsning på «Editorial» -fanen. Ikke alle Leetcode-spørsmål har en (selv om du enkelt kan få svar på begge plattformene ved å klikke på «diskusjoner» -fanen)
- Begge nettstedene har synlige testtilfeller å kjøre koden din med før de sendes inn. Hackerrank gjør en ganske god jobb med å gjøre de synlige til de vanlige tilfellene, mens Leetcode nesten alltid bruker en edge case for den synlige testen.
- Hackerrack har vim-bindinger! (Hvis du er interessert i det)
Leetcode Strengths
- Noe jeg liker med Leetcode er at de har rett til poeng problemstillingene. Hackerrank har en tendens til å ha litt lange introduksjoner og tegnet scenarier som maskerer selve oppgaven.
- For eksempel: Hackerrank kan være som “Sally elsker sjokolade, men bare ønsker å spise sjokolade med den laveste mengden natrium. Gitt en rekke natriumnivåer, returner den laveste sjokoladen med lavest natrium ”
- Leetcode-ekvivalent vil være“ Gitt en rekke heltall, returner min-elementet ”
- Både Hackerrank og Leetcode sammenligner kjøretidskostnadene for algoritmen din ved å timing løsningen med testtilfeller. Når løsningen din er godkjent, viser den den imidlertid mot alle godkjente løsninger på samme programmeringsspråk og prosentandelen av hvor mange løsninger du slår ut for hastighet.
- Testmiljøet er langt overlegen. Når du skriver inn en tilpasset testsak, kjører den også den riktige løsningen, slik at du umiddelbart kan få vite om du har rett eller galt.På Hackerrank kjører du bare en løsning, som kjører en tilpasset testtilfelle.
- En annen ting jeg elsker, for hvert problem krever kodingsgrensesnittet bare å jobbe med en forhåndsdefinert funksjons signatur. I Hackerrank, mye tid du trenger for å håndtere inngang / utgang, og den kjører strengmatching for å validere svaret som kan bli litt irriterende
- Seriøst … hvorfor jeg skal skrive ut «JA» eller «JA» NO ”når den raskere ekvivalenten bare holder et boolsk objekt?
- Leetcode har den fancy “ Spørsmålet ble stilt av X Company med Y\% frekvens ”, som du har tilgang til med abonnementet. Jeg tror personlig at dette verktøyet ikke er så nyttig, og gir et feilaktig inntrykk av at folk bare kan huske alle de spesifikke spørsmålene når de får et intervju med X-selskapet.
Jeg personlig liker LeetCode bedre og til slutt kommer det ned til hva du bruker den til.
Ansvarsfraskrivelse : Dette er mine meninger om hva styrken og svakheter er. Mens noen kanskje ser på at en svakhet virkelig er en styrke og omvendt.