Beste antwoord
Het lijkt bijna nutteloos om te antwoorden, want wat bedoel je met “goed”? Wat wil je bereiken?
Als je aangenomen wilt worden, kan het mogelijk een goede manier zijn om aangenomen te worden, maar het lijkt onwaarschijnlijk, tenzij je echt een supergoede hot shot bent. Maar het is moeilijk om te weten hoe u het zou doen. Ik ben er vrij zeker van dat er betere manieren zijn om een baan te vinden als je weet hoe je goed codeert en het kunt bewijzen. Zet bijvoorbeeld een goede, nuttige code op github.
Ik heb daar de laatste tijd veel tijd doorgebracht (nu al maanden). Zoals bij elke leerinspanning, helpt het om jezelf te beheren terwijl je het doet. Het proces van het verdienen van groene vinkjes en gouden munten en betere badges kan verslavend zijn, dus pas op voor een onproductief plateau.
Mensen bekritiseren de dagelijkse uitdagingen, maar beseffen dat het maken van een dagelijkse uitdaging ook een creatief proces is, en de opmerkingen sectie is er om te helpen.
Om gewoon een taal te leren, is er een Arcade-sectie waar u problemen in uw eigen tempo kunt oplossen. Het lijkt erop dat mensen alleen gerangschikt worden op volgorde van voltooiing, dus dat is niet iets om competitief te zijn. Ik vond dit erg nuttig om meer vertrouwd te raken met PHP-functies en arrays en ik werk ook aan het gebruik van OO-methoden.
Ik vind de dagelijkse uitdagingen erg spannend, interessant (op dat moment) en uitdagend. Als je het altijd kunt, is het te gemakkelijk. Het lezen van de beschrijving is een kunst. Soms begin ik te snel met coderen voordat ik de beschrijving goed weet, en dan heb ik er spijt van. Soms denk ik ook aan een oplossing die niet correct is en begin ik die te coderen voordat ik heb begrepen hoe ik het probleem goed kan oplossen. Onlangs zijn er enkele zeer uitdagende problemen geweest die dynamische programmeertechnieken nodig hebben om ze op te lossen, en er waren er drie die ik in de afgesproken tijd niet kon doen.
Als je uitdagende puzzels wilt maken en wilt opfrissen over codeervaardigheden in PHP of C ++ of Java of MySQL of Javascript, of leer een mooie taal zoals Haskell of Python of R of Ruby enz. dan zou ik zeggen dat Codefights een geweldig is site om naar toe te gaan.
Antwoord
Ik heb beide platforms behoorlijk uitgebreid gebruikt om mijn datastructuren en algoritmenkennis te verbeteren.
Hackerank Strengths
- Tonnen, en ik bedoel tonnen, vragen en georganiseerd in tracks. Wilt u leren hoe u reguliere expressies / Java / SQL / algoritmen / gegevensstructuren / python / wiskunde gebruikt? Elk van deze onderwerpen en meer hebben specifieke paden met specifieke subonderwerpen.
- Als u deze sites gebruikt om sollicitatiegesprekken voor te bereiden, sturen veel bedrijven hun codeeruitdagingen via Hacker-rang als onderdeel van het sollicitatiegesprek , dus het is goed om vertrouwd te raken. Expedia, GE, Goldman Sachs en Optiver om er maar een paar te noemen.
- Je krijgt bijna alle functionaliteit (zo niet alle) gratis van de website. Op Leetcode zonder het betaalde abonnement zijn er duidelijke nadelen.
- U kunt uw oplossing bijvoorbeeld niet altijd meteen indienen, vanwege de manier waarop ze de oplossing uitvoeren om te vergelijken met alle andere oplossingen.
- Bijna alle probleemstellingen bevatten voorbeelden van 1 of 2 testgevallen en antwoorden en behoorlijk grondige uitleg waarom het antwoord is zoals het is. Dat komt veel minder vaak voor bij Leetcode.
- Elke vraag die op Hackerrank wordt gepost, heeft een geverifieerde oplossing op het tabblad “Redactioneel”. Niet elke Leetcode-vraag heeft er een (hoewel je op beide platforms gemakkelijk een antwoord zou kunnen krijgen door op het tabblad “discussies” te klikken)
- Beide sites hebben zichtbare testgevallen om je code uit te voeren voordat je deze indient. Hackerrank doet er behoorlijk goed aan om van die zichtbare gevallen de gewone gevallen te maken, terwijl Leetcode bijna altijd een randgeval gebruikt voor de zichtbare test.
- Hackerrack heeft vim-bindingen! (Als je daar zin in hebt)
Leetcode Strengths
- Iets wat ik leuk vind aan Leetcode is dat ze directe probleemstellingen hebben. Hackerrank heeft meestal wat lange inleidingen en uitgesponnen scenarios die de feitelijke taak maskeren.
- Bijvoorbeeld: Hackerrank zou kunnen zijn als “Sally houdt van chocolade, maar alleen wil chocolade eten met de minste hoeveelheid natrium. Gegeven een reeks natriumniveaus, retourneert u de laagste chocolade met het laagste natrium ”
- Leetcode-equivalent zou zijn” Gegeven een reeks gehele getallen, retourneer het min element ”
- Zowel Hackerrank als Leetcode vergelijken de runtime-kosten van uw algoritme door de oplossing te timen met testgevallen. Als uw oplossing eenmaal is goedgekeurd, wordt deze vermeld tegen alle goedgekeurde oplossingen in dezelfde programmeertaal en het percentage van het aantal oplossingen dat u overtreft wat betreft snelheid.
- De testomgeving is veel beter. Wanneer u een aangepaste testcase invoert, wordt ook de juiste oplossing uitgevoerd, zodat u onmiddellijk weet of die van u goed of fout is.Op Hackerrank draait het draaien van een aangepaste testcase alleen jouw oplossing.
- Iets anders waar ik van hou, voor elk probleem vereist de coderingsinterface alleen het werken met een vooraf gedefinieerde functiehandtekening. In Hackerrank heb je veel tijd om de invoer / uitvoer af te handelen, en het voert string-matching uit om het antwoord te valideren, wat een beetje vervelend kan worden.
- Serieus … waarom zou ik “JA” of ” NEE “wanneer het snellere equivalent gewoon een Booleaans object bewaart?
- Leetcode heeft dat mooie ” Vraag werd gesteld door X Company met Y\% frequentie “, waartoe u toegang hebt met het abonnement. Persoonlijk denk ik dat deze tool niet zo nuttig is en de verkeerde indruk wekt dat mensen al die specifieke vragen gewoon uit het hoofd kunnen leren als ze eenmaal een interview met bedrijf X hebben gekregen.
Persoonlijk vind ik LeetCode leuker en uiteindelijk komt het erop aan waarvoor u het gebruikt.
Disclaimer : dit zijn mijn meningen over wat de sterke punten en zwakke punten zijn. Terwijl sommige mensen misschien denken dat een zwakte in feite een sterkte is en omgekeerd.