Aseta selkeät tavoitteet ja aikarajat

Ennen kuin aloitat mitään ajastettua koodausistuntoa, määrittele erityisiä, mitattavissa olevia tavoitteita. Sen sijaan, että epämääräinen tavoite, kuten ...käytännöt algoritmeja, ...jakamaan sen: ratkaista kolme keskipitkän vaikean matriisin ongelmia 25 minuutin kuluessa kunkin, tai suorittaa yksi dynaaminen ohjelmointi ongelma alle 40 minuuttia.

Yhtä tärkeää on asettaa tiukat aikarajat. Monet innokkaat insinöörit epäonnistuvat ajastetuissa asetuksissa ei siksi, että he eivät voi ratkaista ongelmaa, vaan siksi, että he tuhlaavat aikaa ei-tärkeisiin yksityiskohtiin. Käytä lähtölaskenta-ajastinta jokaiseen ongelmaan ja kohtele sitä vaikeana aikarajana. Ajan mittaan tämä kuri kouluttaa aivojasi jakamaan henkisiä resursseja tehokkaasti. Esimerkiksi jos löydät itsesi jumissa yli 10 minuuttia yhdellä lähestymistavalla, pakota itsesi kääntymään tai raaka voimaa ratkaisu ja optimoimaan myöhemmin.

Valitse oikea käytäntöympäristö

Fyysinen ja digitaalinen asetus vaikuttaa suoraan suorituskykyysi. Matki todellisia testausolosuhteita mahdollisimman tarkasti. Käytä puhdasta työtilaa, jossa on minimaalinen sotku. Sammuta puhelinilmoitukset, sulje liittymättömät selainvälilehdet ja poista Slack tai sähköposti käytöstä. Jos harjoittelet kotona, harkitse meluntorjuntakuulokkeiden tai taustavalkoisen äänen käyttöä.

Valitse koodausalusta, joka tarjoaa sisäänrakennettuja ajastimia ja live-palautetta. [LeetCode[] ja HackerRank[] tarjoavat ajastettuja kilpailuja ja pilkkaa haastatteluja, jotka simuloivat tarkasti todellisia arviointiympäristöjä. Kilpailullisessa ohjelmoinnissa [Koodivoimat[] tarjoaa säännölliset ajoitetut kierroset. Avain on toistaa todellisen testin paine: ei kellon pausingia, ei vaihtotehtäviä, eikä checking ratkaisuja ennenaikaisesti.

Käytännöt realististen ongelmien kanssa

Aloita ongelmista, jotka vastaavat nykyistä taitotasoasi. Jos valmistaudut teknisiin haastatteluihin (esim. FANG), keskity yleisimmin esitettyihin aiheisiin: matriisit, jouset, hash-kartat, puut, kaaviot, dynaaminen ohjelmointi ja rekursio. Vältä hyppäämästä erittäin vaikeisiin ongelmiin liian aikaisin; joka voi murskata itseluottamusta ja ajanhukkaa. Sen sijaan vähitellen lisää vaikeuksia hallita kunkin mallin.

Valitessaan ongelmia, priorisoida niitä, jotka vaativat kriittistä ajattelua ja algoritmin valintaa. Vältä triviaaleja ongelmia, jotka voidaan ratkaista raaka voima kahdessa minuutissa. Hyvän ajoitetun käytännön ongelman pitäisi pakottaa sinut punnitsemaan kompromissit aikakompleksin, tilan monimutkaisuuden ja luettavuuden välillä. Esimerkiksi ongelma, joka pyytää sinua löytämään pisimmän substringin toistamatta merkkejä voidaan ratkaista liukuikkunalla O(n) lähestymistapa, mutta naiivi O(n2) ratkaisu epäonnistuu aikarajoitteiden alla.

Käytä aiempia kokeita ja mokkatestejä

Mikään ei valmista sinua kuin täydellinen simulaatio todellinen tentti. Monet alustat tarjoavat menneisyyden kilpailuongelmia tai pilka haastattelusviitit. Aseta ajastin tarkka kesto tavoitetesti, ja täydellinen joukko ongelmia ilman taukoja. Kun istunto, tarkistaa jokainen ratkaisu.

Kysy itseltäsi: Mihin haaskasin aikaa? Mietinkö liikaa ongelmaselontekoa? Jäikö jokin reunatapaus vai jäikö se liian hitaasti? Koodasinko kielen epätajuisuuden vuoksi? Käytä näitä oivalluksia muuttaaksesi strategiaasi. Esimerkiksi jos huomaat viettäväsi aina viisi ensimmäistä minuuttia lukeaksesi pikaviestin uudelleen, harjoittele itsesi poimimaan avainrajoitukset alle minuutissa.

Ajankäytön yleisstrategiat

Tehokas ajanhallinta menee pidemmälle kuin vain asettaa ajastin. Opi jakamaan aika viisaasti yhden ongelman. Yhteinen sääntö käytetään koodaushaastatteluissa on 5 minuutin sääntö: viettää ensimmäiset 5 minuuttia ongelman ymmärtäminen ja korkean tason suunnittelu. Kun sinulla on selkeä suunnitelma, koodi 15.20 minuuttia, sitten säästää lopullinen 5.10 minuuttia testaus ja vianetsintä. Jos osut umpikujaan, älä pelkää romuttaa lähestymistapa ja aloittaa tuoretta.

Aseta ongelmat tärkeysjärjestykseen ongelmien mukaan

Moniongelmaisessa aikaisessa testissä (kuten hakkerirankissa tai kilpailullisessa ohjelmointikierroksella) skannaa nopeasti kaikki ongelmat. Ratkaise helpoimmat ensin varmistaaksesi pisteet ja lisätäksesi vauhtia. Sitten siirryt vaikeampiin ongelmiin. Tämä strategia estää sinua käyttämästä 40 minuuttia vaikeaseen ongelmaan ja jättää samalla helposti pöydälle. Monet huippukilpailijoista seuraavat tätä helppo-keskivaikeaa tilausta.

Käytä ...kaksiportaista tekniikka

Monimutkaisten ongelmien osalta harkitse kaksiportaista lähestymistapaa: ensin toteuta oikein toimiva raaka voimaratkaisu, vaikkakin hidas. Sitten, jos aika sallii, optimoi se. Työskentely (mutta hidas) ratkaisu on paljon parempi kuin keskeneräinen optimaalinen ratkaisu. Haastatteluissa haastattelijat joskus hyväksyvät oikean raaka voima ja keskustelevat sitten optimoinnista suullisesti, säästäen arvokasta koodausaikaa.

Mielenterveys ja -käsittelypaine

Ajastetut ympäristöt aiheuttavat stressiä, joka voi heikentää kognitiivista suorituskykyä. Tämän torjumiseksi, sisällyttää henkinen valmistelu osaksi rutiinia. Harjoittele syvä hengitysharjoituksia tai lyhyttä tarkkaavaisuus meditaatiota ennen jokaista istuntoa. Aikaisessa testissä, jos tunnet paniikkia nousemassa, tauko 10 sekuntia, ottaa syvään henkeä, ja keskittyä ongelmaan.

Toinen tekniikka on simuloida tarkkaa painetta harjoittelemalla ulkoisella paineella, kuten ystävän katsella koodia tai web-kameralla tallentaa itse. Mitä enemmän altistat itsesi katsella tunnetta, sitä vähemmän pelottava todellinen haastattelu tuntuu.

Kehitetään esiistunnossa käytettävä rituaali

Luo johdonmukainen rituaali ennen jokaista ajankohtaista istuntoa: tarkista muutama nopea vinkki, kuuntele energisoivaa kappaletta tai ratkaise yksi triviaali lämmittelyongelma. Ajan mittaan tämä rituaali opastaa aivojasi siirtymään ...focus-tilaan........................................................................................................................................................................................................

Tarkista ja mieti syvällisesti

Isännän jälkeinen tarkastelu on paikka, jossa tapahtuu todellista kasvua.

  • Missä jäin jumiin?
  • - Oliko se paras mahdollinen?
  • Teinkö huolimattomia syntaksivirheitä?
  • Käsittelinkö reunakoteloita (tyhjä panos, suuret määrät jne.)?
  • Kuinka kauan vietin aikaa vianetsintä vs. kirjoittamalla uuden koodin?

Käytä taulukkolaskenta tai päiväkirja seurata näitä mittareita ajan. Jälkeen 10..20 istuntoja, kuvioita tulee esiin. Esimerkiksi voit huomata, että olet jatkuvasti menettää 5 minuuttia huono muuttujan nimeäminen, tai että usein unohdat käsitellä nollapanoksia. Puutu näihin heikkouksiin erityisesti seuraavassa käytännössä lohko.

Opi virallisista ratkaisuista ja keskusteluista

Kun olet ratkaissut ongelman, vertaa ratkaisuasi virallisiin toimituksellisiin ja huippuarvostettuihin yhteisöratkaisuihin. Kiinnitä huomiota koodaustyyliin, algoritmivalintoihin ja reuna-asioiden käsittelyyn. Jos näet tekniikan, jota et tiedä, tutki se erikseen ennen seuraavaa aikaistettua istuntoa. Tämä kohdennettu oppiminen täyttää aukot nopeasti.

Pysy johdonmukaisena ja asteittain lisää vaikeuksia

Johdonmukaisuus on intensiteettiä suurempi. Päivittäinen 30 minuutin aikakausharjoittelu viiden päivän viikossa tuottaa parempia tuloksia kuin yhden neljän tunnin maratonin viikonloppuisin. Aikatauluta istuntosi samaan aikaan joka päivä tavan luomiseksi. Käytä kalenteria tai tapahakusovellusta, jotta voit pitää itsesi tilivelvollisena.

Kun tulet mukavaksi, vähitellen lisätä haaste. Lyhennä sallittua aikaa per ongelma. Siirry helposti keskivaikeasta vaikeaan. Esittele uusia aiheita olet vähemmän perehtynyt. Lisää rajoituksia kuten . ei ulkoisia kirjastoja. tai . koodi kielellä harvoin käyttää...

Vivutuskoodimallit ja -nappulat

Ajanmukaisissa ympäristöissä jokainen sekunti on tärkeä. Rakenna mielentilakirjasto uudelleenkäytettävistä koodimalleista: binäärihakumallit, Union-find implementations, liukuikkunan kattilalevy, puun kulkureitit ja kaavio BFS/DFS. Kun aloitat ongelman, voit heti kirjoittaa luurangon ilman, että se tyhjenee uudelleen. Tämä vapauttaa kognitiivisen kuormituksen ongelman ainutlaatuisten näkökohtien ratkaisemiseksi.

Useimmat modernit IDE- ja verkkotoimittajat mahdollistavat yksityisen snippet-tiedoston säilyttämisen. Monissa aikaisissa testeissä kielletään ulkoiset resurssit, kun tiedetään, että mallit ovat sallittuja. Harjoittele näiden mallien kirjoittamista nopeasti lämmittelysessioiden aikana, jotta niistä tulee lihasmuistia.

Analysoi suorituskyky metrics

Don... Älä luota vain vaisto tunteet. Käytä tietoja harjoitusistuntoja tunnistaa heikkouksia. Seuraa näitä mittareita kunkin ongelman:

  • Aika ensimmäiseen koodimerkkiin (suunnittelunopeus)
  • Aika korjata ensimmäinen toimitus (koodausnopeus)
  • Epäonnistuneiden yritysten määrä (vianetsintätehokkuus)
  • Virhettä kohden debuggaaminen

InterviewBit[ tarjoaa usein aika-per-ongelma tilastot. Käytä näitä oivalluksia priorisoida. Esimerkiksi, jos vianetsintäaika on korkea, harjoittele kirjoittamista puhtaampaa koodia ja käyttämällä tulostusilmoituksia tai konsolilokeja säästeliäästi. Jos suunnitteluaika on korkea, työstä lukemisongelmia nopeammin ja tunnista malleja välittömästi.

Viimeinen sana ajoitetusta koodauksesta

Koodaus ei ole synnynnäinen lahjakkuus. Se on taito, joka on rakennettu tarkoituksellisen käytännön kautta. Aseta selkeät tavoitteet, simuloi todellisia ympäristöjä, hallitse aikaa useilla tasoilla ja heijastaa tarkasti jokaista istuntoa. Ajan myötä nopeus ja tarkkuus paranee ja kellosta tulee liittolainen eikä vihollinen.

Lisäresursseja varten tutustu Coding Interview Crash Course[] -ohjelmaan ilmaisella koodillaCamp ja BigFrontEnd -alustaan etupäässä olevien ajanmukaisten haasteiden varalta. Jatka rajojen työntämistä, ja menestyt missä tahansa ajoitetussa koodausskenaariossa.