Tarkvarainsener pakub täistööajaga töötades 43 päeva jooksul pakkumisi

Faktid

Umbes aasta tagasi sain tarkvarainsenerina pakkumisi Google'ilt, LinkedInilt, Amazonilt, Uberilt ... Enamik pakkumisi tuli reklaamiga ja põhipalga tõus oli koguni 40%. Lõpuks valisin kõigi nende ettevõtete hulgast Uberi (mitte kõige suurema palgaga ettevõtte, aga olin selle ettevõtte potentsiaaliga sügavalt kursis). Kuna täna tähistatakse esimest tööpäeva Uberiga ja kuna mu sõbrad küsivad pidevalt intervjuudega nõuandeid, otsustasin aasta tagasi intervjuu protsessi üle järele mõelda ja proovida lisada selle olemuse, mis oli ettevalmistamise ajal abiks.

Miks alustada?

Ma hindan kõrgelt nii oma karjääri kui ka linna, kus elan. Töötamise jahi alustamise ajal töötasin Microsoft Office'i meeskonnas ja elasin Bellevue'is ning mõlemad tegurid aitasid minu tööotsimise otsusele võrdselt kaasa. Tahaksin töötada veebiga seotud tarkvara väljatöötamise alal ja elada elavas linnas, mis on täis noori töö-spetsialiste, kes saavad nii kõvasti tööd teha kui ka pidusid teha. Kuna eelmine töö ja linn ei täitnud ühtegi eelistust, otsustasin edasi liikuda.

Plaani ülevaade

IMO, Silicon Valley stiilis intervjuu tarkvarainseneride jaoks on eraldi hindamissüsteem, mis erineb palju töötulemuste hindamisest. Ehkki paljud ettevõtted püüavad intervjuuprotsessi muuta nii, et intervjuude signaal kajastaks kandidaatide võimet teha võimalikult palju reaalset tööd, pole see siiski veel täiuslik. Selle ettevalmistusprotsessi alguses on minu eesmärk kristallselge: vaadake vestluse protsessi standardiseeritud testina ja naelutage see läbi.

Hiina haridussüsteemi pikaajalisest kokkupuutest on kasu olnud / üle elatud. Standardiseeritud testi ettevalmistamine on minu jaoks alati olnud spektri lihtsal poolel: mul on vaja kõrge intensiivsusega ajajoont ja ma kulutan aega ainult asjadele, mis lähevad olema intervjuu suhtes mõjus. Internetis on lugematu arv postitusi, mis ütlevad inimestele, et nad peaksid jälle ülikoolide õpikuid lugema, ja minu jaoks on see ülepaisutus. Intervjuu alustamiseks ei pea te lihtsalt teadma Knapsacki ajalugu, vaid peate teadma, kuidas kasutada probleemide lahendamiseks dünaamilist programmeerimist. Ma ei ütle, et intervjuude ettevalmistamiseks on tingimata vaja otseteed, kuid selleks peaks olema vähemalt see "selge tee", milles mõistlikud kandidaadid peaksid omavahel kokku leppima.

Lõplik ajakava: 1 päev oma CV värskendamiseks, 2 päeva saatmiseks / suunamiseks / võrgustike loomiseks / (kõik intervjuu saamist abistavad protsessid) ja 20 päeva ettevalmistamiseks enne esimest intervjuud ning lõpuks veel 20 päeva intervjueerimiseks / ettevalmistamise jätkamiseks.

Hankige intervjuusid

Ettevõtte nimekiri intervjuu saamiseks

Ülal on ettevõtte nimekiri, mille koostasin Evernote'is. Kuna ma hindan seda linna, kus ma elan, nii palju, liigitasin ettevõtted 3 klastrisse: NYC, LA ja SF lahe piirkond (ma ei hinda ülejäänud lahe piirkonda nii palju, et need ettevõtted said minu jaoks teise astme. I vihkan pikka pendeldamist.).

Iga ülalnimetatud ettevõtte puhul võtsin kindlasti ühendust nende ettevõtetega kolmest erinevast vaatenurgast: veebiportaal, sõprade pöördumised ja värbajad, kellega LinkedInist pääseb. Üks väike näpunäide on see, et proovige tähtsustada sõprade suunamist veebiportaali ees, kuna mõne ettevõtte puhul pole soovitused pärast veebitaotluse esitamist saadaval.

Tegin nädalavahetusel kõigi ülalnimetatud ettevõtete jaoks kõik ülalnimetatud protsessid ja järgmisel esmaspäeval oli EOD-l plaanitud üle 10 intervjuu.

Algoritm ja andmete struktuur

Kandidaadid kardavad tavaliselt algoritmi ja andmestruktuuriintervjuusid, kuid ma isiklikult arvan, et see on tegelikult üks lihtsamaid teemasid, kui teil on süsteemne lähenemine. Keskendusin ettevalmistamise ajal kahele vaatenurgale: probleemide lahendamine ja probleemide lahendamise selgitamine.

Kasutasin oma probleemide lahendamise ettevalmistamiseks veebipõhist kodeerimisplatvormi Leetcode.com ja olen tulemusega rahul. Tarkvarainseneride intervjuude ettevalmistamine Leetcode.com-is praktiseerides pole midagi uut, kuid arvan, et eristasin oma lähenemist „vähem on rohkem“: keskendusin ainult esimesele 150 probleemile, sortimata. Veebis on üsna palju inimesi, kes ütlevad, et peaksite sorteerima raskuste järgi ja alustama kergematest, ja see on minu jaoks jama: te ei valmista ennast meelelahutuseks ega oma enesekindluse suurendamiseks ning peate proovima kajastada tõelist intervjuustsenaariumi nagu võimalikult objektiivselt.

Esimesed 150 probleemi on vinge. Need hõlmavad suures osas kõiki tarkvarainseneri intervjuus nõutavaid teemasid: alates tavalistest teemadest, nagu näiteks keel, massiiv, binaarne puu, dünaamiline programmeerimine, bitimanipulatsioon, kuni mitte nii levinud teemadeni, nagu Segment Tree, Trie, Topological Sort.

Leetcode.com käsitletud teemad

Pange iga programmeerimiskatse aeg sisse. Intervjuurütmisse sattumisel on kriitilise tähtsusega range ajakava omamine. Ma eraldasin igale probleemile 30 minutit oma esimese kordamise jaoks. 150. Esimesel probleemide kordamisel üritasin tõesti kõvasti iga neist lahendada. Kui ma ei lahendanud ühte probleemi 30 minutiga, ei helista ma kõva peatusele enne, kui ma ei suuda seda veel 30 minuti pärast välja mõelda. Teiseks iteratsiooniks panin ajapiiranguks iga probleemi 15 minutit, eeldades, et mul on lähenemised juba mällu konsolideeritud.

Probleemi lahendamise selgitamine mängib veel suurt rolli. Kunagi arvasin, et sellest saab loomulikult minu puudus, sest inglise keel pole minu esimene keel. Inglise keele sujuvus ei ole siiski tehnikaintervjuu määrav tegur. On tõsi, et see hõlmab kõike "räägi õiget keelt", kuid "õige keel" on tegelikult õigete terminoloogiate kogum, mis juhtub olema ümbritsetud inglise keele kontekstiga. Nii et õige terminoloogia ja idee edastamise õige protsess on kõige olulisemad aspektid, mille poole püüelda.

Geeksforgeeks.com on kaugelt selline veebisait, millest sain kõige rohkem kasu oma mõtteprotsessi selgitamiseks valmistumisel. See on tech ajaveebi infotund iga klassi algoritmi ja klassikaliste näidete probleemide kohta. Tech ajaveeb sobib ideaalselt intervjuu ajaga: mõlemad üritavad kristallselget ideed edastada ajaliselt tõhusalt ja lühidalt. Iga 150 programmeerimisprobleemi puhul mõtlesin kindlasti läbi mõelda, milline algoritm on probleemi taga. Seejärel loen põhjalikult Geeksforgeeks.com artiklit algoritmi, aga ka näidisprobleemide ja nende lahenduste kohta.

Geeksforgeeksi lugemise käigus mõistsin, et kui palju on mul tehnikaintervjuu protsessist puudus olnud kui uus klass. Kiire lahenduse leidmine igale probleemile muudab kandidaadi arukaks, kuid “rääkige keelt” / probleemi lahendamise õigel viisil selgitamine paneb küsitlejad soovima kandidaadiga koostööd teha. Tavaliselt mängib viimane veelgi olulisemat rolli ja just nii juhtus minuga ühe Google'i intervjuu vooru ajal, kus ma ei saanud õiget vastust täielikult, kuid minu suhtlus võitis positiivse tagasiside tõttu.

Süsteemi kujundamine

Süsteemidisain kaalub tööstustööstuste jaoks rohkem kui NCG. Ilma eelneva töö ajal suures mahus veebisüsteemi projekteerimise kogemuseta tundsin end asjatult.

Õnneks aitasid hiredintech.com saidi süsteemidisaini kursused mind kõige rohkem. See hõlmas põhikontseptsioone, välja töötatud veebisüsteemi peamisi kitsaskohti ja mis kõige tähtsam: kuidas kvantifitseerida palju oma kujunduse osi, nii et näib, et räägite aastatepikkuse kogemuse põhjal.

Süsteemi kujundamise harjutamine võib olla keeruline, kuna see on olemuselt lahtine küsimus ja raske on leida universaalset / standardiseeritud protsessi probleemide lahendamiseks. Mida peaksime siis tegema, kui ühte universaalset lähenemist ei leita? Me liigitame süsteemi kujundamise probleemid kategooriatesse ja jagame ja vallutame seejärel.

Liigitusprotsess on üsna lihtne. Liigitasin kitsaskoha järgi, millega mõned populaarsed tooted on kokku puutunud, ja võtsin kokku näited, kuidas need tooted neist kitsaskohtadest üle saavad. Allpool on osa veebirakenduste loendist, millesse ma põhjalikult sisse kaevasin.

Justin Tv

SalesForce

Instagram

Flickr

Nagu näete, on suur osa ülalt pärit artikleid pärit saidilt highscalability.com. Kaevake sellel veebisaidil sügavale.

Lõpp

Vaadates tagasi, oli neid 43 päeva. Valmistusin tööpäeval umbes 5 tundi ja nädalavahetusel umbes 15 tundi. Jagasin kõik ettevõtted kaheks partiiks: esimeseks partiiks olid Google, Amazon, LinkedIn, Uber jne ja teiseks partiiks olid Facebook, Bloomberg, Airbnb, Spotify jne. Otsustasin alustada esimese partii kavandamisega, et alustada koos. Idee on see, et kui mu ettevalmistus täielikult ei õnnestunud, on mul ikkagi aega oma strateegiat kohandada ja tulistada teine ​​partii, mis on võrdselt hea ettevõtete komplekt IMO.

Õnneks tasus kõik strateegiad ja vaeva ära. 30 päeva ettevalmistust oli mul juba tunne, et saan Silicon Valley stiilis intervjuu põhiolemuse. Mis veelgi olulisem - ma tundsin, et mul on juba piisavalt sügav mõistmine intervjuusüsteemist, et oma intervjuu tulemuslikkust objektiivselt hinnata. Minu ootused pärast intervjuud on alati olnud tulemusega kooskõlas, mis oli tõepoolest hea tunne.

Lõppkokkuvõttes ei taga hea intervjueeritav olemine pärismaailma projektidega silmitsi seistes tipptulemusi. On õnn, et meil on süstemaatiline viis seda arenevat intervjuusüsteemi mängida, kuid ka igale kandidaadile peab olema selge, et pikaajaline teadmiste kogumine ja kirg kogu tööstuse vastu ulatuks kaugele. Olen endiselt teel heaks tarkvarainseneriks ja see osa nõuab tõsiseid jõupingutusi.

Loodan, et see artikkel aitab. Arutage, kritiseerige ja jagage julgelt.

Minu LinkedIn. Facebook. Ühendatakse.

-Siyi