Med Silicon Valley andre store tech-boom, har ingeniører vært i stor etterspørsel av både startups og tech-giganter. For de som har ingeniørbakgrunn eller studerer informatikk, er verden din østers akkurat nå.
Når det er sagt, gir ikke selskaper bare jobber bort. Programmerere trenger fortsatt å gå gjennom spesialiserte intervjuprosesser - inkludert det noen ganger fryktede tekniske intervjuet.
Å forberede seg på disse kan være forvirrende prøvelser. Bør du studere spesifikke tekniske prosjekter eller generelt oppdatere på mange temaer? Bør du øve på en datamaskin eller med en venn?
Som den tredje ingeniøren hos Pocket Gems, som har rundt 165 tekniske ansatte, har jeg gjennomført hundrevis av telefon- og stedintervjuer. I løpet av denne tiden har jeg lært mye om hvordan du forbereder meg riktig til en. Her er tipsene du trenger for å spikre ditt neste tekniske intervju.
Fokus på grunnleggende
Intervjuer skal hovedsakelig stille deg spørsmål om grunnleggende: datastrukturer, algoritmisk kompleksitetsanalyse, klassedesign og lignende. Dette vil være spørsmål både direkte om grunnleggende forhold (f.eks. Bruk X til å gjøre Y) og spørsmål du vil bruke grunnleggende for (mer om det nedenfor).
Tenk på grunnleggende elementer som verktøyene i verktøykassen. De kommer til å forbli de samme uansett hvilken fantastisk ny teknologi som kommer ut. Med sterke grunnleggende forhold, vil du være bedre forberedt på å takle åpen problemer - hva slags problemer vi og mange andre startups løser på en daglig basis. Ved å fokusere på grunnleggende, kan intervjuere bruke mindre tid på å sette opp intervjuspørsmålene og mer tid på å se hvordan du tenker.
Du kan for eksempel bli spurt om noe som: Du får et binært tre og to noder i treet. Finn den laveste vanlige stamfaren til de to gitte nodene i O (n) tid.
Gjennom dette spørsmålet ser intervjueren etter å se hvor godt du kan kommunisere din tankeprosess og løsning. Hvordan du tenker gjennom problemet, organiserer tankene dine og kommuniserer svaret ditt, er ofte like viktig som konklusjonen din. Vi jobber i komplekse og stadig skiftende miljøer og trenger mennesker som både kan løse tøffe problemer og effektivt kommunisere dem til sine tekniske og ikke-tekniske lagkamerater.
For dette området av intervjuet, bør du være komfortabel med å diskutere ting som strenger, matriser, grunnleggende syntaks, datatyper, koblede lister, trær, grafer, stabler, køer og hasjbord. Oh, og sørg for at du kan svare på FizzBuzz uten å banke.
Vær forberedt på å løse ting forskjellige måter
Hver av dine grunnleggende faktorer har fordeler og ulemper og tilbyr en unik løsning for en bestemt type problem. Etter at intervjuer bare stiller et spørsmål om grunnleggende, vil de sannsynligvis se hvordan du kan bruke dem i praksis. Dette oppnås ved å stille åpne spørsmål som kan løses på forskjellige måter.
Et eksempel på spørsmålet her vil være: Du får en aritmetisk ligning som en streng. Denne ligningen vil ha enkeltsifre 0-9, addisjon, subtraksjon, multiplikasjon og parenteser. Skriv en funksjon som tar denne ligningen og beregner riktig svar. Eksempelinnganger inkluderer “1 + 1” og “2 * (1 + 9) - ((2 + 5) -9”).
Som før ønsker intervjueren å se hvordan du bryter ned åpne spørsmål og din tankeprosess når du velger din løsning. Det viktigste er at de vil se at du effektivt kan kommunisere komplekse problemer.
Uansett hvilket spørsmål eller hvilken løsning du velger, må du huske å tenke høyt! Hvis du har forskjellige måter å løse problemet på, snakk gjennom alternativene før du bestemmer deg for hvilke du vil bruke. Det hjelper intervjueren å se og forstå tankeprosessen din. Intervjueren kan også anbefale en løsning i forhold til de andre fordi han eller hun vet at de andre kan ha visse fallgruver eller kan være utenfor intervjuets virkeområde.
Ikke vær redd for å stille spørsmål hvis noe er uklart eller det ikke er mye detaljert informasjon. Disse viser at du tenker også - og gir intervjueren en følelse av hvordan du ville jobbe med andre. Forsikre deg om at du stiller avklarende spørsmål for å forstå spørsmålet fullt ut og at du ikke utvider omfanget av problemet (f.eks. Hva er noen eksempler på innspill? Må jeg bekymre meg for å dele med 0? Må jeg bekymre meg for sommertid?)
Til slutt, sørg for at du muntlig går gjennom noen få testtilfeller før du sier at du er ferdig. Dette lar deg både sjekke koden og vise intervjueren at du sjekker koden din. Så enkelt som det ville gjøre jobbintervjuer, kan vi dessverre ikke lese tankene dine.
Så mens du forbereder deg, kan du øve på å løse spørsmål med forskjellige verktøy fra verktøykassen, slik at du utvikler en intuisjon om det. Vet når du skal bruke hvert av verktøyene dine, slik at du ikke blir snublet opp under intervjuet. Og sørg for at du trener fullstendig på å beskrive din tankeprosess - dette kan være den vanskeligste delen for kodere som er vant til å jobbe isolert.
Øv, Øv, Øv
Jo mer du øver, jo bedre forberedt vil du være på det tekniske kodingsintervjuet. Dette gjelder for det meste, men spesielt relevant for tekniske intervjuer - de krever virkelig at du varmer opp hjernen din.
Her er noen tips for å hjelpe deg med å få mest mulig ut av treningstiden din:
- Forsikre deg om at du simulerer intervjumiljøet. Gi deg selv en tidsbegrensning på problemer. Hvis du skal holde et telefonintervju, kan du øve på både Stypi og Google Docs. (Jeg vet selv at ikke autofullføring og syntaks-utheving har utløst meg i telefonintervjuer.) Hvis du skal gjøre et intervju personlig, kan du øve på å gjøre problemer på papir eller på en tavle.
- Be en ikke-teknisk venn stille deg intervjuspørsmålene, og gå ham eller henne gjennom svarene dine. Hvis du kan forklare det for ham eller henne, er jeg sikker på at du kan forklare det for din tekniske intervjuer.
- Føler ikke at du jukser hvis du bruker noen av prep-verktøyene som er der ute. De tilbyr ofte stor innsikt og praktiseringsspørsmål. Mine favoritter er nettsteder som TopCoder og Head First- bøkene. Noen andre bøker som snakker mer om intervjuprosessen er Programming Interviews Exposed and Cracking the Code Interview .
Tekniske kodingsintervjuer kan virke ganske skremmende, men med riktige typer fokusert praksis vil du være klar til å esse dem. Husk å fokusere på brød og smør, grunnleggende ting, og trene mye. Følg tipsene over, så vil du være forberedt på ditt neste tekniske kodingsintervju.
Vil du ha mer info? Jeg presenterte nylig om dette emnet på UC Berkeley Engineering / Tech Career Conference. Sjekk lysbildene mine fra samtalen nedenfor for flere tanker og ressurser!