Bästa svaret
Det verkar nästan värdelöst att svara, för vad menar du med ”bra”? Vad vill du åstadkomma?
Om du vill bli anställd kan det tänkas vara ett bra sätt att bli anställd, men det verkar osannolikt, såvida du inte är en super bra hot shot av något slag. Men det är svårt att veta hur du skulle göra. Jag är ganska säker på att det finns bättre sätt att hitta ett jobb om du vet hur du kodar bra och kan bevisa det. Lägg till exempel lite bra, användbar kod på github.
Jag har tillbringat mycket tid där nyligen (i flera månader nu). Som med alla inlärningsinsatser hjälper det att hantera dig själv medan du gör det. Processen att tjäna gröna bockar och guldmynt och bättre märken kan vara beroendeframkallande, så se upp för en oproduktiv platå.
Folk kritiserar de dagliga utmaningarna, men inser att det är också en kreativ process att göra en daglig utmaning, och kommentarerna avsnittet finns där för att hjälpa.
För att bara lära sig ett språk finns det ett arkadavsnitt där du kan arbeta igenom problem i din egen takt. Det verkar ranka människor bara efter ordning på slutförande, så det är inte något att vara konkurrenskraftigt om. Jag tyckte att det här var till stor hjälp när jag blev mer bekant med PHP-funktioner och matriser och jag arbetar också med att använda OO-metoder.
Jag tycker att de dagliga utmaningarna är väldigt spännande, intressanta (för tillfället) och utmanande. Om du alltid kan göra det är det för lätt. Att läsa beskrivningen är en konst. Ibland börjar jag koda för snabbt innan jag känner till beskrivningen korrekt, och sedan ångrar jag det. Ibland tänker jag också på en lösning som inte är korrekt och börjar koda det innan jag har förstått hur man löser problemet rätt. Nyligen har det funnits några mycket utmanande problem som kräver dynamisk programmeringsteknik för att lösa dem, och det var tre av dem som jag inte kunde göra under den tilldelade tiden.
Om du vill göra utmanande pussel och borsta upp om kodningsförmåga i PHP eller C ++ eller Java eller MySQL eller Javascript, eller lär dig ett snyggt språk som Haskell eller Python eller R eller Ruby etc. så skulle jag säga Codefights är en bra webbplats att besöka.
Svar
Jag har använt båda plattformarna ganska mycket för att förbättra mina datastrukturer och algoritmkunskaper.
Hackerank Strengths
- Massor, och jag menar massor av frågor och organiserade i spår. Vill du lära dig mer om hur du använder Regular Expressions / Java / SQL / Algorithms / Data Structures / Python / Math? Var och en av dessa ämnen och mer har specifika vägar med specifika underämnen.
- Om du använder dessa webbplatser för att få intervjuförberedelser skickar många företag sina kodningsutmaningar genom Hacker-rang som förutom intervjuprocessen , så det är bra att bli bekant. Expedia, GE, Goldman Sachs och Optiver för att nämna några
- Du får nästan all funktionalitet (om inte alla) från webbplatsen gratis. På Leetcode utan den betalda prenumerationen finns det vissa nackdelar.
- Till exempel kan du inte alltid skicka in din lösning direkt, på grund av hur de kör lösningen för att rangordna mot alla andra lösningar.
- Nästan alla problemangivelser har exempel på 1 eller 2 testfall och svar och ganska grundliga förklaringar till varför svaret är som det är. Det är mycket mindre vanligt på Leetcode.
- Varje fråga som publiceras på Hackerrank har en verifierad lösning på fliken ”Editorial”. Inte varje Leetcode-fråga har en (även om du lätt kan få svar på båda plattformarna genom att klicka på fliken ”diskussioner”)
- Båda webbplatserna har synliga testfall att köra din kod med innan de skickas in. Hackerrank gör ett ganska bra jobb med att göra de synliga till de vanliga fallen, medan Leetcode nästan alltid använder ett kantfodral för det synliga testet.
- Hackerrack har vim-bindningar! (Om du är intresserad av det)
Leetcode Strengths
- Något jag älskar med Leetcode är att de har rakt på sak problemangivelser. Hackerrank tenderar att ha lite långa introduktioner och dras ut scenarier som maskerar själva uppgiften.
- Till exempel: Hackerrank kan vara som “Sally älskar choklad men bara vill äta choklad med den lägsta mängden natrium. Med en rad natriumnivåer, returnera den lägsta choklad med lägsta natrium ”
- Leetkodekvivalenten skulle vara“ Med en rad heltal, return min-elementet ”
- Både Hackerrank och Leetcode jämför kostnadskostnaderna för din algoritm genom att tajma lösningen med testfall. När din lösning väl har godkänts listas den dock mot alla godkända lösningar på samma programmeringsspråk och procentandelen av hur många lösningar du slår ut för snabbhet.
- Testmiljön är mycket överlägsen. När du anger ett anpassat testfall körs det också rätt lösning så att du omedelbart kan veta om dina är rätt eller fel.På Hackerrank körs bara en lösning för att köra ett anpassat testfall.
- En annan sak jag älskar, för varje problem kräver kodningsgränssnittet bara att arbeta med någon fördefinierad funktionssignatur. I Hackerrank har du mycket av tiden att hantera input / output, och den kör strängmatchning för att validera svaret som kan bli lite irriterande
- Allvarligt … varför ska jag skriva ut ”YES” eller ” NO ”när den snabbare ekvivalenten bara håller ett booleskt objekt?
- Leetcode har den snygga “ Frågan ställdes av X Company med Y\% frekvens ”, som du kan komma åt med prenumerationen. Jag tycker personligen att det här verktyget inte är så användbart och ger ett falskt intryck av att människor bara kan memorera alla dessa specifika frågor när de får en intervju med X-företaget.
Jag gillar personligen LeetCode bättre och i slutändan handlar det om vad du använder det till.
Ansvarsfriskrivning : Det här är mina åsikter om vad styrkorna och svagheter är. Medan vissa människor kan se att en svaghet verkligen är en styrka och vice versa.