Med Silicon Valley's andet store tech-boom har ingeniører været i meget stor efterspørgsel af både startups og tech-giganter. For dem, der har ingeniørbaggrund eller studerer datalogi, er verden din østers lige nu.
Når det er sagt, giver virksomheder ikke bare job væk. Programmerere er stadig nødt til at gennemgå specialiserede interviewprocesser - inklusive den til tider frygtede tekniske samtale.
Forberedelse til disse kan være forvirrende prøvelser. Bør du studere specifikke tekniske projekter eller generelt opdatere på en masse emner? Skal du øve dig på en computer eller med en ven?
Som den tredje ingeniør hos Pocket Gems, der har ca. 165 tekniske medarbejdere, har jeg gennemført hundreder af telefon- og on-site-interviews. I løbet af denne tid har jeg lært meget om, hvordan man ordentligt forbereder mig på en. Her er de tip, du har brug for for at sømme din næste tekniske samtale.
Fokus på grundlæggende
Interviewere vil hovedsageligt stille dig spørgsmål om dine grundlæggende forhold: datastrukturer, algoritmisk kompleksitetsanalyse, klassedesign og lignende. Dette vil være spørgsmål både direkte om grundlæggende elementer (f.eks. Brug X til at gøre Y) og spørgsmål, som du vil bruge dine grundlæggende elementer (mere om det nedenfor).
Tænk på fundamentale elementer som værktøjerne i din værktøjskasse. De vil forblive de samme, uanset hvilken fantastisk ny teknologi der kommer ud. Med stærke grundlæggende vil du være bedre forberedt på at tackle åbne problemer - den slags problemer, som vi og mange andre startups løser dagligt. Ved at fokusere på fundamentale forhold, kan interviewere bruge mindre tid på at konfigurere interviewspørgsmålene og mere tid på at se, hvordan du synes.
For eksempel kan du blive spurgt om noget som: Du får et binært træ og to noder i træet. Find den laveste fælles stamfar til de to givne knudepunkter i O (n) -tid.
Gennem dette spørgsmål er intervieweren på udkig efter at se, hvor godt du kan kommunikere din tankeproces og løsning. Hvordan du tænker gennem problemet, organiserer dine tanker og kommunikerer dit svar er ofte lige så vigtigt som din konklusion. Vi arbejder i komplekse og stadigt skiftende miljøer og har brug for mennesker, der både kan løse hårde problemer og effektivt kommunikere dem til deres tekniske og ikke-tekniske holdkammerater.
I dette område af interviewet skal du være komfortabel med at diskutere ting som strenge, arrays, grundlæggende syntaks, datatyper, sammenkædede lister, træer, grafer, stabler, køer og hashborde. Åh, og sørg for, at du kan svare på FizzBuzz uden at slå et øje.
Vær forberedt på at løse forskellige ting
Hver af dine grundlæggende ting har fordele og ulemper og tilbyder en unik løsning til en bestemt type problem. Når interviewere kun stiller et spørgsmål til dine grundlæggende spørgsmål, vil de sandsynligvis se, hvordan du kan bruge dem i praksis. Dette opnås ved at stille åbne spørgsmål, der kan løses på forskellige måder.
Et eksempelspørgsmål her ville være: Du får en aritmetisk ligning som en streng. Denne ligning har enkeltcifre 0-9, tilføjelse, subtraktion, multiplikation og parenteser. Skriv en funktion, der tager denne ligning og beregner det rigtige svar. Eksempelindgange inkluderer “1 + 1” og “2 * (1 + 9) - ((2 + 5) -9”).
Som før vil intervieweren se, hvordan du nedbryder åbne spørgsmål og din tankeproces ved at vælge din løsning. Vigtigst af alt ønsker de at se, at du effektivt kan kommunikere komplekse problemer.
Ligegyldigt hvad spørgsmålet eller hvilken løsning du vælger, så sørg for at tænke højt! Hvis du har forskellige måder at løse problemet på, skal du tale gennem indstillingerne, inden du beslutter, hvilken du skal bruge. Det hjælper intervieweren med at se og forstå din tankeproces. Intervieweren kan også anbefale en løsning i forhold til de andre, fordi han eller hun ved, at de andre kan have visse faldgruber eller kan være uden for samtalen.
Vær ikke bange for at stille spørgsmål, hvis noget er uklart, eller hvis der ikke er meget detaljerede oplysninger. Disse viser, at du også tænker - og giver intervieweren en fornemmelse af, hvordan du ville arbejde med andre. Sørg for, at du stiller afklarende spørgsmål for fuldt ud at forstå spørgsmålet, og at du ikke udvider omfanget af problemet (f.eks. Hvad er nogle eksempler på input? Må jeg bekymre mig om at dele med 0? Må jeg bekymre mig om sommertid?)
Endelig skal du sørge for, at du mundtligt gennemgår et par testsager, før du siger, at du er færdig. Dette giver dig mulighed for både at kontrollere koden og vise intervieweren, at du kontrollerer din kode. Så let som det ville gøre jobsamtaler, kan vi desværre ikke læse dit sind.
Så når du forbereder dig, kan du øve dig på at løse spørgsmål med forskellige værktøjer fra din værktøjskasse, så du udvikler en intuition om det. Ved hvornår du skal bruge hvert af dine værktøjer, så du ikke bliver snublet op under samtalen. Og sørg for at øve dig fuldt på at beskrive din tankeproces - dette kan være den sværeste del for kodere, der er vant til at arbejde isoleret.
Øv, Øv, Øv
Jo mere du øver, desto bedre forberedt vil du være til den tekniske kodningsinterview. Dette gælder for de fleste ting, men især relevant for tekniske interviews - de kræver virkelig, at du opvarmer din hjerne.
Her er et par tip, der hjælper dig med at få mest muligt ud af din træningstid:
- Sørg for at simulere interviewmiljøet. Giv dig selv en tidsbegrænsning for problemer. Hvis du skal lave en telefoninterview, skal du øve dig på både Stypi og Google Docs. (Jeg ved selv, at ikke autofuldførelse og syntaksbelysning har udløst mig i telefoninterviews.) Hvis du personligt skal tage et interview, skal du øve dig på at udføre problemer på papir eller på en tavle.
- Få en ikke-teknisk ven til at stille dig interviewspørgsmålene, og gå ham eller hende igennem dine svar. Hvis du kan forklare det for ham eller hende, er jeg sikker på, at du kan forklare det til din tekniske interviewer.
- Må ikke føle, at du snyder, hvis du bruger nogle af de prep-værktøjer, der er derude. De tilbyder ofte stor indsigt og praksis spørgsmål. Mine favoritter er websteder som TopCoder og Head First- bøger. Nogle andre bøger, der taler mere om interviewprocessen, er programmering af interviews udsat og krakning af kodeintervjuet .
Tekniske kodningsinterviews kan virke temmelig skræmmende, men med de rigtige typer fokuseret praksis er du klar til at esse dem. Husk at fokusere på dit brød og smør, det fundamentale, og træne meget. Følg tipene ovenfor, så vil du være forberedt på din næste tekniske kodningsinterview.
Vil du have mere info? Jeg præsenterede for nylig om dette emne på UC Berkeley Engineering / Tech Career Conference. Tjek mine lysbilleder fra samtalen nedenfor for flere tanker og ressourcer!