20 iOS Utvikler Intervju Spørsmål

Gjør deg klar for din iOS intervju

den store dagen kommer opp. Enten det er en telefon, online eller personlig intervju, er det alltid litt stressende. Så, for å lette stresset du gjorde noe prep – arbeid-fullførte leksene på firmaet du intervjuer med, stalket ansettelsesansvarlig og halvparten av ingeniørteamet i firmaet du ønsker på linkedin & github, du børstet opp på noen av ferdighetene og kunnskapen du ikke har brukt på en stund – du er klar til å gå.

men etter US Navy Seals motto «To er en og en er ingen» la oss gå gjennom en annen rask oppfriskning for å hjelpe deg med å ess det iOS-intervjuet. Så la oss komme rett inn i det!

La oss starte med noen av de grunnleggende spørsmålene som jeg håper du allerede er klar for. De kan virke åpenbare, men du vil bli sjokkert over hvor mange ingeniører mislyktes elendig på dem i løpet av de 12 årene jeg har gjort tekniske intervjuer.

Tekniske Spørsmål

Ok, nå som vi har det dekket, la oss hoppe inn i de tekniske spørsmålene.

se her for slideshare for alle tekniske intervjuspørsmål!

Spørsmål 1

På En UITableViewCell-konstruktør:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

Hva brukes reuseIdentifier til?

reuseIdentifier brukes til å indikere at en celle kan brukes på nytt i en UITableView. For eksempel når cellen ser ut som den samme, men har forskjellig innhold. UITableView vil opprettholde en intern cache på UITableViewCell ‘s med reuseIdentifier og tillate dem å bli gjenbrukt når dequeueReusableCellWithIdentifier: kalles. Ved å bruke tabellcellen på nytt, er rulleytelsen til tableview bedre fordi nye visninger ikke trenger å bli opprettet.

Spørsmål 2

Forklar forskjellen mellom atomiske og nonatomic syntetiserte egenskaper?

Atomisk og ikke-atomisk refererer til om settere / getters for en egenskap vil atomisk lese og skrive verdier til egenskapen. Når atomic keyword brukes på en egenskap, vil enhver tilgang til den bli «synkronisert». Derfor vil et anrop til getter garanteres å returnere en gyldig verdi, men dette kommer med en liten ytelsesstraff. Derfor brukes nonatomic i noen situasjoner for å gi raskere tilgang til en egenskap, men det er en sjanse for at en løpstilstand forårsaker at egenskapen blir null under sjeldne omstendigheter (når en verdi settes fra en annen tråd og den gamle verdien ble frigjort fra minnet, men den nye verdien ennå ikke er fullstendig tilordnet plasseringen i minnet for egenskapen).

Spørsmål 3

Forklar forskjellen mellom kopier og behold?

Beholde et objekt betyr beholde teller øker med en. Dette betyr at forekomsten av objektet vil bli holdt i minnet til det er beholde teller faller til null. Egenskapen vil lagre en referanse til denne forekomsten og vil dele samme forekomst med alle andre som beholdt den også. Kopier betyr at objektet vil bli klonet med dupliserte verdier. Den deles ikke med noen andre.

Vil du ess ditt tekniske intervju? Planlegg En Teknisk Intervjuøvelse Med en ekspert nå!

Spørsmål 4

hva er metode swizzling I Mål C og hvorfor vil du bruke det?

Method swizzling tillater implementering av en eksisterende velger å bli slått på kjøretid for en annen implementering i en klasse dispatch tabell. Swizzling lar deg skrive kode som kan utføres før og / eller etter den opprinnelige metoden. For eksempel kanskje for å spore tidsmetoden kjøring tok, eller for å sette inn logg setninger

#import "UIViewController+Log.h"@implementation UIViewController (Log) + (void)load { static dispatch_once_t once_token; dispatch_once(&once_token, ^{ SEL viewWillAppearSelector = @selector(viewDidAppear:); SEL viewWillAppearLoggerSelector = @selector(log_viewDidAppear:); Method originalMethod = class_getInstanceMethod(self, viewWillAppearSelector); Method extendedMethod = class_getInstanceMethod(self, viewWillAppearLoggerSelector); method_exchangeImplementations(originalMethod, extendedMethod); }); } - (void) log_viewDidAppear:(BOOL)animated { ; NSLog(@"viewDidAppear executed for %@", ); }@end

Spørsmål 5

hva er forskjellen mellom ikke-kjører, inaktiv, aktiv, bakgrunn og suspendert kjøring stater?

  • kjører ikke: Appen har ikke blitt lansert eller kjørt, men ble avsluttet av systemet.
  • Inaktiv: appen kjører i forgrunnen, men mottar for øyeblikket ikke hendelser. (Det kan imidlertid utføres annen kode skjønt.) En app forblir vanligvis i denne tilstanden bare kort som det overganger til en annen tilstand.
  • Aktiv: appen kjører i forgrunnen og mottar hendelser. Dette er normal modus for forgrunnsapper.
  • Bakgrunn: appen er i bakgrunnen og utfører kode. De fleste apps angi denne tilstanden kort på vei til å bli suspendert. En app som ber om ekstra kjøretid, kan imidlertid forbli i denne tilstanden i en periode. I tillegg kommer en app som lanseres direkte i bakgrunnen, inn i denne tilstanden i stedet for inaktiv tilstand.
  • Suspendert: appen er i bakgrunnen, men utfører ikke kode. Systemet flytter apper til denne tilstanden automatisk og varsler dem ikke før de gjør det. Mens suspendert, forblir en app i minnet, men utfører ikke noen kode. Når det oppstår et lite minne, kan systemet rense suspenderte apper uten varsel for å få mer plass til forgrunnsappen.

Spørsmål 6

hva er en kategori og når brukes den?

en kategori er en måte å legge til flere metoder i en klasse uten å utvide den. Det brukes ofte til å legge til en samling relaterte metoder. En vanlig brukstilfelle er å legge til flere metoder for innebygde klasser i Cocoa-rammene. For eksempel legge async nedlastingsmetoder til klassen UIImage.

Spørsmål 7

kan du oppdage feilen i følgende kode og foreslå hvordan du fikser det:

@interface MyCustomController : UIViewController @property (strong, nonatomic) UILabel *alert; @end @implementation MyCustomController - (void)viewDidLoad { CGRect frame = CGRectMake(100, 100, 100, 50); self.alert = initWithFrame:frame]; self.alert.text = @"Please wait..."; ; dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ sleep(10); self.alert.text = @"Waiting over"; } ); } @end 

ALLE UI oppdateringer må gjøres på hovedtråden. I koden over oppdateringen til varselet teksten kan eller ikke kan skje på hovedtråden, siden global forsendelse køen gir ingen garantier . Derfor koden bør endres for å alltid kjøre UI oppdatering på hovedtråden

dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ sleep(10); dispatch_async(dispatch_get_main_queue(), ^{ self.alert.text = @"Waiting over"; });}); 

Spørsmål 8

hva er forskjellen mellom viewDidLoadog viewDidAppear?
Hvilken skal du bruke til å laste inn data fra en ekstern server for å vise i visningen?

viewDidLoad kalles når visningen er lastet, enten fra En Xib-fil, storyboard eller programmatisk opprettet i loadView. viewDidAppear kalles hver gang visningen presenteres på enheten. Hvilken du skal bruke, avhenger av brukssaken til dataene dine. Hvis dataene er ganske statisk og ikke sannsynlig å endre så det kan lastes i viewDidLoad og bufret. Men hvis dataene endres regelmessig, bruker du viewDidAppear for å laste det, er det bedre. I begge situasjoner skal dataene lastes asynkront på en bakgrunnstråd for å unngå å blokkere BRUKERGRENSESNITTET.

Spørsmål 9

hvilke hensyn trenger du når du skriver en UITableViewController som viser bilder lastet ned fra en ekstern server?

dette er en veldig vanlig oppgave i iOS, og et godt svar her kan dekke en hel rekke kunnskaper. Den viktige informasjonen i spørsmålet er at bildene er vert eksternt, og de kan ta tid å laste ned, derfor når det ber om «hensyn», bør du snakke om:

  • bare last ned bildet når cellen rulles til visning, dvs. når cellForRowAtIndexPath kalles.
  • Laster ned bildet asynkront på en bakgrunnstråd for ikke å blokkere BRUKERGRENSESNITTET slik at brukeren kan fortsette å rulle.
  • når bildet er lastet ned for en celle, må vi sjekke om den cellen fortsatt er i visningen eller om den har blitt gjenbrukt av et annet stykke data. Hvis det er blitt brukt på nytt, bør vi kaste bort bildet, ellers må vi bytte tilbake til hovedtråden for å endre bildet på cellen.

Andre gode svar vil fortsette å snakke om offline caching av bildene, ved hjelp av plassholderbilder mens bildene lastes ned.

Spørsmål 10

hva er en protokoll, og hvordan definerer du din egen og når brukes den?

en protokoll ligner et grensesnitt Fra Java. Den definerer en liste over nødvendige og valgfrie metoder som en klasse må / kan implementere hvis den vedtar protokollen. Enhver klasse kan implementere en protokoll og andre klasser kan da sende meldinger til den klassen basert på protokollmetodene uten at den vet hvilken type klasse.

@protocol MyCustomDataSource- (NSUInteger)numberOfRecords;- (NSDictionary *)recordAtIndex:(NSUInteger)index;@optional- (NSString *)titleForRecordAtIndex:(NSUInteger)index;@end

en vanlig brukstilfelle er Å gi En Datakilde for UITableView eller UICollectionView.

Spørsmål 11

HVA ER KVC og KVO? Gi et eksempel PÅ Å bruke KVC til å angi en verdi.

KVC står For Nøkkelverdikoding. Det er en mekanisme hvor et objekts egenskaper kan nås ved hjelp av strengens under kjøring i stedet for å statisk kjenne eiendomsnavnene ved utviklingstid. KVO står For Key-Value Observer og tillater en kontroller eller klasse å observere endringer i en egenskapsverdi.

La oss si at det er en egenskap name på en klasse:

@property (nonatomic, copy) NSString *name;

Vi kan få tilgang til DEN VED HJELP AV KVC:

NSString *n = 

og vi kan endre det verdi ved å sende den meldingen:

Spørsmål 12

hva er blokker og hvordan brukes de?

Blokker er en måte å definere en enkelt oppgave eller enhet av atferd uten å måtte skrive en Hel Objective-C klasse. Under dekslene Er Blokkene Fortsatt Objektive c-objekter. De er en språknivåfunksjon som tillater programmeringsteknikker som lambdas og lukninger som støttes I Objective-C. Opprette en blokk gjøres ved hjelp av syntaksen ^ { } :

 myBlock = ^{ NSLog(@"This is a block"); }

Det kan påberopes slik:

myBlock();

det er egentlig en funksjonspeker som også har en signatur som kan brukes til å håndheve typesikkerhet ved kompilering og kjøretid. For eksempel kan du sende en blokk med en bestemt signatur til en metode som så:

- (void)callMyBlock:(void (^)(void))callbackBlock;

hvis du ville at blokken skulle bli gitt noen data, kan du endre signaturen for å inkludere dem:

- (void)callMyBlock:(void (^)(double, double))block { ... block(3.0, 2.0);}

Spørsmål 13

hvilke mekanismer gir iOS for å støtte multi-threading?

  • NSThread oppretter en ny lavnivå tråd som kan startes ved å ringe start – metoden.
NSThread* myThread = initWithTarget:self selector:@selector(myThreadMainMethod:) object:nil];; 

  • NSOperationQueue lar en pool av tråder som skal opprettes og brukes til å utføre NSOperations parallelt. NSOperation s kan også kjøres på hovedtråden ved å spørre NSOperationQueue for mainQueue.
NSOperationQueue* myQueue = init];; ;
  • Gcd Eller Grand Central Dispatch er et moderne trekk Ved Objective-C som gir et rikt sett med metoder og API-ER å bruke for å støtte vanlige multi-threading oppgaver. GCD gir en måte å kø oppgaver for forsendelse på enten hovedtråden, en samtidig kø (oppgaver kjøres parallelt) eller en seriell kø (oppgaver kjøres I FIFO rekkefølge).
dispatch_queue_t myQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_async(myQueue, ^{ printf("Do some work here.\n");});

Spørsmål 14

Hva Er Responder-Kjeden?

når en hendelse skjer i en visning, for eksempel en berøringshendelse, vil visningen skyte hendelsen til en kjede av UIResponder objekter knyttet til UIView. Den første UIResponder er UIView selv, hvis den ikke håndterer hendelsen, fortsetter den opp kjeden til til UIResponder håndterer hendelsen. Kjeden vil inkludere UIViewControllers, foreldre UIView s og tilhørende UIViewController s, hvis ingen av dem håndterer hendelsen, blir UIWindow spurt om den kan håndtere det, og til slutt hvis det ikke håndterer hendelsen, blir UIApplicationDelegate spurt.

hvis du får muligheten til å trekke denne ut, er det verdt å gjøre for å imponere intervjueren:

skriv inn bildebeskrivelse her

Spørsmål 15

hva er forskjellen mellom å bruke en representant og varsling?

begge brukes Til å sende verdier og meldinger til interesserte parter. En representant er for en-til-en kommunikasjon og er et mønster fremmet Av Apple. I delegering vil klassehendelsene ha en egenskap for representanten og vil vanligvis forvente at den skal implementere noen protocol. Den delegerende klassen kan deretter kalle protokollmetodene _delegate_s.

Varsling tillater en klasse å kringkaste hendelser på tvers av hele programmet til alle interesserte parter. Kringkastingsklassen trenger ikke å vite noe om lytterne for denne hendelsen, derfor er varsel veldig nyttig for å hjelpe til med å avkoble komponenter i et program.

 postNotificationName:@"TestNotification" object:self];

Spørsmål 16

hva foretrekker du når du skriver BRUKERGRENSESNITT? Xib filer, Storyboards eller programmatic UIView?

det er ingen rett eller galt svar på dette, men det er flott måte å se om du forstår fordelene og utfordringene med hver tilnærming. Her er de vanlige svarene jeg hører:

  • Storyboard og Xib er stor for raskt å produsere UI er som samsvarer med en design spec. De er også veldig enkelt for produktsjefer å visuelt se hvor langt langs en skjerm er.
  • Storyboard er også gode til å representere en strøm gjennom et program og tillate et høyt nivå visualisering av en hel applikasjon.
  • Storyboards ulemper er at i et lagmiljø er de vanskelige å jobbe sammen fordi de er en enkelt fil og merge er blitt vanskelig å administrere.
  • Storyboards Og Xib-filer kan også lide av duplisering og bli vanskelig å oppdatere. For eksempel hvis alle knappens behov for å se identiske ut og plutselig trenger en fargeendring, kan det være en lang / vanskelig prosess å gjøre dette på tvers av storyboards og xibs.
  • Programmatisk konstruksjon UIView‘s kan være verbose og kjedelig, men det kan gi større kontroll og også enklere separasjon og deling av kode. De kan også være lettere enhet testet.

De fleste utviklere vil foreslå en kombinasjon av alle 3 hvor det er fornuftig å dele kode, deretter gjenbrukbare UIView s eller Xib filer.

Spørsmål 17

hvordan vil du sikkert lagre private brukerdata offline på en enhet? Hvilke andre sikkerhets beste praksis bør tas?

Igjen er Det ikke noe riktig svar på dette, men det er en fin måte å se hvor mye en person har gravd inn i iOS-sikkerhet. Hvis du intervjuer med en bank, vil jeg nesten definitivt forvente at noen skal vite noe om det, men alle selskaper må ta sikkerhet på alvor, så her er den ideelle listen over emner jeg forventer å høre i et svar:

  • hvis dataene er ekstremt følsomme, bør de aldri lagres offline på enheten fordi alle enheter er crackable.
  • nøkkelringen er ett alternativ for sikker lagring av data. Men det er kryptering er basert på pin-koden til enheten. Brukeren er ikke tvunget til å sette en pin-kode, så i noen situasjoner kan dataene ikke engang krypteres. I tillegg kan brukerne pin-kode være lett hacket.
  • En bedre løsning er å bruke noe sånt SQLCipher som er en fullt kryptert sqlite database. Krypteringsnøkkelen kan håndheves av programmet og skille fra brukerens pin-kode.

Andre anbefalte fremgangsmåter for sikkerhet er:

  • kun kommuniser med eksterne servere over SSL / HTTPS.
  • hvis mulig implementere sertifikat låsing i programmet for å hindre man-in-the-middle angrep på offentlig WiFi.
  • Fjern sensitive data ut av minnet ved å overskrive det.
  • Kontroller at all validering av data som sendes, også kjøres på serversiden.

Spørsmål 18

Hva ER MVC og hvordan er det implementert i iOS?
Hva er noen fallgruver du har opplevd med det? Er det noen alternativer TIL MVC?

MVC står For Modell, Utsikt, Kontroller. Det er et designmønster som definerer hvordan man skiller ut logikk når man implementerer brukergrensesnitt. I iOS gir Apple UIView som en grunnklasse for Alle _View_s, UIViewController er gitt for å støtte Kontrolleren som kan lytte til hendelser i En Visning og oppdatere Visningen når data endres. Modellen representerer data i et program og kan implementeres ved hjelp av alle NSObject, inkludert datasamlinger som NSArray og NSDictionary.

Noen av fallgruvene som folk treffer, er oppblåst UIViewController og skiller ikke ut kode i klasser utover MVC-formatet. Jeg vil anbefale å lese opp på noen løsninger på dette:

  • https://www.objc.io/issues/1-view-controllers/lighter-view-controllers/
  • https://speakerdeck.com/trianglecocoa/unburdened-viewcontrollers-by-jay-thrash
  • https://programmers.stackexchange.com/questions/177668/how-to-avoid-big-and-clumsy-uitableviewcontroller-on-ios

når det gjelder alternativer, er dette ganske åpent. DET vanligste alternativet er MVVM ved Hjelp Av ReactiveCocoa, men andre inkluderer VIPER og Bruker Funksjonell Reaktiv kode.

Spørsmål 19

en produktleder i firmaet rapporterer at programmet krasjer. Hva gjør du?

Dette er et stort spørsmål i et hvilket som helst programmeringsspråk og er virkelig designet for å se hvordan du løser problemet. Du får ikke mye informasjon, men noen intervjuer vil gi deg flere detaljer om problemet mens du går. Start enkelt:

  • få de nøyaktige trinnene for å reprodusere den.
  • finn ut enheten, iOS-versjonen.
  • har de den nyeste versjonen?
  • få enhetslogger hvis mulig.

når du kan gjengi det eller har mer informasjon, kan du begynne å bruke verktøy. La oss si at det krasjer på grunn av en minnelekkasje, jeg forventer å se noen foreslå Å bruke Instruments leak tool. En virkelig imponerende kandidat ville begynne å snakke om å skrive en enhetstest som gjengir problemet og feilsøker gjennom det.

Andre variasjoner av dette spørsmålet inkluderer sakte BRUKERGRENSESNITT eller programfrysing. Igjen er ideen å se hvordan du løser problemet, hvilke verktøy vet du om det som vil hjelpe, og vet du hvordan du bruker dem riktig.

Spørsmål 20

Hva Er AutoLayout? Hva betyr det når en begrensning er «ødelagt» av iOS?

AutoLayout er måten å legge ut UIViews ved hjelp av et sett med begrensninger som angir plassering og størrelse basert i forhold til andre visninger eller basert på eksplisitte verdier. AutoLayout gjør det enklere å designe skjermer som endrer størrelse og layout ut sine komponenter bedre basert på størrelsen og retningen på en skjerm. _Constraint_s inkluderer:

  • angi horisontal / vertikal avstand mellom 2 visninger
  • angi høyde / bredde som et forhold i forhold til en annen visning
  • en bredde/ høyde / avstand kan være en eksplisitt statisk verdi

noen ganger er begrensninger i konflikt med hverandre. Tenk deg for eksempel en UIView som har 2 høydebegrensninger: en sier at UIView 200px er høy, og den andre sier at høyden er to ganger høyden på en knapp. Hvis iOS runtime ikke kan tilfredsstille begge disse begrensningene, må den bare velge en. Den andre er da rapportert som «ødelagt» av iOS.

Standard Spørsmål

» Fortell meg om deg selv.»

Dette er EN veldig vanskelig en! Så mange leser deres cv høyt (glemmer jeg ser rett på det!), oppføring av hver klasse de tok på college, hver stilling de noensinne har hatt (og som virkelig legger til Senior Ingeniører) og hvert ansvar (som ofte er det samme over 2 eller 3 selskaper som personen har jobbet på. Så, 20 minutter senere, vet jeg fortsatt ikke noe nytt / utenfor cv om kandidaten, vi er 20 minutter inn, og da tror jeg at de også kan være roboter (og roboter pleier ikke å passe veldig bra med dynamiske lag).

Så gjør deg selv (og ansettelsesansvarlig) en tjeneste ved å forberede en 2min lang heishøyde på bakgrunnen din – hold det enkelt, kortfattet og kort, og legg deretter til noe personlig på slutten. Elsker du å løpe? Trener du din datters fotballag? Die hard Star Wars fan? Legge litt personlighet i er en stor ice breaker, og vil gjøre for en fantastisk overgang til den dypere delen av intervjuet.

» Beskriv et interessant problem og hvordan du løste det.»

din sjanse til å høre denne er i utgangspunktet 99%, så du har bedre et godt svar klar for dem! Her er noen tips: tenk på et spesielt fantastisk prosjekt som du er stolt av. Forstått? Flott! Nå, ta et stykke papir og oppsummere det i 5 punkter.
1st bullet point-veldig kort bakgrunnshistorie av omstendighetene bak prosjektet
2nd bullet-selve prosjektets natur
3rd bullet-problemene du har kommet over mens du løste det / dem
4thbullet-hvordan løste du vanskelighetene ovenfor
5th bullet point-hva har du lært av det.

finn nå noen som vil lytte (en venn, partner, kollega) og spør dem om historien gir mening(minus eventuelle tekniske aspekter ved det hvis personen du snakker med ikke er din peer). Det er en fin måte å validere om historien holder seg sammen.

Du vil bli sjokkert over hvor mange ganger jeg har hørt ting som » og så gikk Jeg til John, og han brukte verktøyet han har laget for å fjerne den kritiske feilen som da……». Hvem Er Tom? Sjefen din? Praktikant? Peer? Hvorfor gikk du til ham av alle i din bedrift? Hva er det magiske verktøyet han har satt sammen? Hvilken kritisk feil fjernet det og hvordan? Hva var resultatet?

du får ideen 😃

Ekstra bonus? Du har nå 5 punkter du kan bruke som en jukselapp under intervjuet uten å se UT som den fyren som leser hans cv høyt.

la Oss nå hoppe inn I DE RARE spørsmålene som noen ansettelsesledere liker å kaste inn for å tippe deg av spillet ditt.

  • Hvordan ville du teste en brødrister?
  • Hvor mange penner kan du passe inn i et fly?
  • Hvor mange vinduer er I San Francisco?
  • Hvor mange golfballer får plass i en skolebuss?
  • Hvor Mange Big Mac selger Mcdonalds hvert år i USA?

listen fortsetter og fortsetter. Selv om det ikke har noe å gjøre med dine tekniske ferdigheter, gjør det en god jobb med å sjekke hvordan du håndterer kurveballer, og for å se om du er i stand til logisk trinnvis problemløsning. I de fleste tilfeller er det ikke perfekte svar på slike spørsmål (selv om du kan google dem for din sjelefred). Det handler om hvordan du forklarer logikken din til intervjueren din.

her er svaret på golfballens spørsmål Av Michael Beauchamp, så du får ideen om hva jeg snakker om:

jeg regner med at en standard skolebuss er ca 8ft bred med 6ft høy med 20 fot lang-dette er bare et gjetning basert på tusenvis av timer jeg har blitt fanget bak skolebusser mens trafikken i alle retninger er stoppet.

det betyr 960 kubikkfot og siden det er 1728 kubikk inches i en alen fot, betyr det ca 1,6 millioner kubikk inches.

jeg beregner volumet av en golfball til å være ca 2,5 kubikk tommer (4/3 * pi*.85) som .85 tommer er radiusen til en golfball.

Del 2,5 kubikk tommer inn i 1.6 millioner og du kommer opp med 660.000 golfballer. Men siden det er seter og dritt i det tar opp plass og også siden sfærisk form av en golfball betyr det vil være betydelig tomrom mellom dem når stablet, jeg ‘ ll runde ned til 500.000 golfballer.

Se? Trinnvis. Og plutselig er det et relativt enkelt, logisk spørsmål. Bare vær rolig, og i stedet for å prøve å komme opp med et øyeblikkelig nummer i hodet ditt, gå intervjueren gjennom tankegangen din med deg.

Trenger virkelige liv praksis? Føl deg fri til å planlegge en mock intervju Med Matt, som har gjort tekniske intervjuer for 12 år, og be om hans tilbakemelding!

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.