20 iOS Developer Interview Questions

Getting ready for your iOS interview

the big day is coming up. Olipa se puhelin, verkossa tai henkilöhaastattelussa se on aina hieman stressaavaa. Joten, helpottaa stressiä teit joitakin prep työtä-suorittanut kotiläksyt yrityksen olet haastatella, stalked palkkaaminen johtaja ja puolet suunnittelutiimin yrityksen valitsemasi linkedin & github, harjattu joitakin taitoja ja tietoja et ole käyttänyt vähään aikaan – olet valmis menemään.

but following US Navy Seals motto ”Two is one and one is none” let ’ s go through another quick refresher to help you ace that iOS interview. Joten mennään suoraan asiaan!

aloitetaan muutamilla peruskysymyksillä, joihin toivottavasti olet jo valmis. Ne saattavat vaikuttaa itsestään selviltä, mutta olisit järkyttynyt siitä, kuinka monet insinöörit epäonnistuivat surkeasti niissä niiden 12 vuoden aikana, jotka olen tehnyt teknisiä haastatteluja.

tekniset kysymykset

Ok, nyt kun se on hoidettu, hypätään teknisiin kysymyksiin.

Katso kaikki tekniset haastattelukysymykset slidesharesta täältä!

kysymys 1

Uitableviewcellin rakentajasta:

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

mihin reuseIdentifier: ää käytetään?

reuseIdentifier käytetään osoittamaan, että solua voidaan käyttää uudelleen UITableView. Esimerkiksi kun solu näyttää samalta, mutta on eri sisältöä. UITableView säilyttää UITableViewCell’S: n sisäisen välimuistin reuseIdentifier: n kanssa ja mahdollistaa niiden uudelleenkäytön, kun dequeueReusableCellWithIdentifier: kutsutaan. Käyttämällä uudelleen taulukon solun vieritys suorituskyky tableview on parempi, koska uusia näkymiä ei tarvitse luoda.

kysymys 2

selitä atomien ja ei-atomien syntetisoitujen ominaisuuksien ero?

Atomisella ja ei-atomisella tarkoitetaan sitä, lukevatko ominaisuuden setterit / getterit atomisesti ja kirjoittavatko ne arvot kiinteistölle. Kun atomic avainsanaa käytetään ominaisuus, kaikki pääsy siihen on ”synkronoitu”. Siksi Soitto hankkijalle on taattu palauttamaan voimassa oleva arvo, mutta tämä ei tule pieni suoritus rangaistus. Siksi joissakin tilanteissa ei-atomia käytetään nopeamman pääsyn tarjoamiseen kiinteistöön, mutta on mahdollista, että rotukunto aiheuttaa kiinteistön olemattomaksi harvinaisissa olosuhteissa (kun arvo on asetettu toisesta säikeestä ja Vanha arvo on vapautettu muistista, mutta uutta arvoa ei ole vielä täysin osoitettu kiinteistön sijaintiin muistissa).

kysymys 3

selitä kopioinnin ja säilytyksen ero?

esineen säilyttäminen tarkoittaa, että pidätysmäärä kasvaa yhdellä. Tämä tarkoittaa esimerkiksi objektin pidetään muistissa, kunnes se säilyttää count laskee nollaan. Ominaisuus tallentaa viittauksen tähän instanssiin ja jakaa saman instanssin kenen tahansa muun kanssa, joka säilytti sen myös. Kopiointi tarkoittaa, että objekti kloonataan päällekkäisillä arvoilla. Sitä ei jaeta kenenkään muun kanssa.

Haluatko ässän tekniseen haastatteluun? Järjestä tekninen Haastatteluharjoitus asiantuntijan kanssa nyt!

kysymys 4

mikä on menetelmä swizzling tavoitteessa C ja miksi käyttäisit sitä?

menetelmä swizzling mahdollistaa olemassa olevan valitsimen käyttöönoton kytkemisen ajon aikana eri toteutukseen luokkien lähettämistaulukossa. Swizzlingin avulla voit kirjoittaa koodia, joka voidaan suorittaa ennen ja/tai jälkeen alkuperäisen menetelmän. Esimerkiksi seurata, kuinka kauan menetelmän toteuttaminen kesti, tai lisätä lokilausuntoja

#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

kysymys 5

Mitä eroa on ei-käynnissä olevilla, toimimattomilla, aktiivisilla, tausta-ja keskeytetyillä suoritustiloilla?

  • Ei käynnissä: Sovellusta ei ole käynnistetty tai se oli käynnissä, mutta järjestelmä lopetti sen.
  • inaktiivinen: sovellus on käynnissä etualalla, mutta ei tällä hetkellä saa tapahtumia. (Se voi olla suorittaa muita koodia vaikka.) Sovellus pysyy yleensä tässä tilassa vain lyhyesti, koska se siirtyy toiseen tilaan.
  • aktiivinen: sovellus pyörii etualalla ja vastaanottaa tapahtumia. Tämä on normaali tila etualan sovelluksia.
  • tausta: sovellus on taustalla ja suorittaa koodin. Useimmat sovellukset tulevat tähän tilaan lyhyesti matkalla keskeytetään. Kuitenkin, sovellus, joka pyytää ylimääräistä suoritusaikaa voi pysyä tässä tilassa jonkin aikaa. Lisäksi suoraan taustalle käynnistyvä sovellus siirtyy tähän tilaan passiivisen tilan sijaan.
  • keskeytetty: sovellus on taustalla, mutta ei suorita koodia. Järjestelmä siirtää sovellukset tähän tilaan automaattisesti eikä ilmoita niistä ennen sitä. Keskeytettynä sovellus pysyy muistissa, mutta ei suorita mitään koodia. Kun muistin puute ilmenee, järjestelmä voi puhdistaa keskeytetyt sovellukset ilman erillistä ilmoitusta tehdäkseen enemmän tilaa etualan sovellukselle.

kysymys 6

mikä on Kategoria ja milloin sitä käytetään?

A-luokka on tapa lisätä luokkaan ylimääräisiä menetelmiä laajentamatta sitä. Sitä käytetään usein lisätä kokoelma liittyviä menetelmiä. Yleinen käyttötapaus on lisätä luokissa rakennettuja lisämenetelmiä kaakaon kehyksiin. Esimerkiksi Async-latausmenetelmien lisääminen UIImage – luokkaan.

kysymys 7

voitko bongata vian seuraavasta koodista ja ehdottaa, miten se korjataan:

@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 

kaikki KÄYTTÖLIITTYMÄPÄIVITYKSET on tehtävä pääkierteellä. Yllä olevassa koodissa kuulutustekstin päivitys voi tapahtua tai olla tapahtumatta pääkierteellä, koska maailmanlaajuinen lähettäjäjono ei anna takuita . Siksi koodia tulisi muuttaa siten, että käyttöliittymän päivitys suoritetaan aina pääkierteellä

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

Kysymys 8

Mitä eroa on viewDidLoad ja viewDidAppear?
minkä avulla voit ladata etäpalvelimen tietoja näyttääksesi näkymässä?

viewDidLoad kutsutaan, kun näkymä Ladataan, oli se sitten Xib-tiedostosta, kuvakäsikirjoituksesta tai ohjelmallisesti luotu loadView. viewDidAppear kutsutaan aina, kun näkymä esitetään laitteessa. Se, mitä käyttää, riippuu tietojesi käyttötapauksesta. Jos tiedot ovat melko staattisia eivätkä todennäköisesti muutu, ne voidaan ladata kohdassa viewDidLoad ja tallentaa välimuistiin. Jos tiedot kuitenkin muuttuvat säännöllisesti, on parempi käyttää viewDidAppear lataamiseen. Molemmissa tilanteissa tiedot on ladattava asynkronisesti taustalangalle, jotta estetään käyttöliittymän tukkeutuminen.

kysymys 9

mitä huomioita tarvitset kirjoitettaessa UITableViewController , jossa näkyy etäpalvelimelta ladattuja kuvia?

tämä on hyvin yleinen tehtävä iOS: ssä ja hyvä vastaus tässä voi kattaa koko joukon tietoa. Tärkeä tieto kysymys on, että kuvat isännöi etänä ja ne voivat kestää aikaa ladata, siksi kun se pyytää ”näkökohdat”, sinun pitäisi puhua:

  • Lataa kuva vain, kun solua vieritetään näkyviin, eli kun cellForRowAtIndexPath kutsutaan.
  • kuvan lataaminen asynkronisesti taustalangalle, jotta käyttäjä ei estä käyttöliittymää, jotta käyttäjä voi jatkaa vierittämistä.
  • kun kuva on ladattu johonkin soluun, meidän on tarkistettava, onko kyseinen solu yhä näkymässä vai onko sitä käytetty uudelleen jollakin muulla datalla. Jos sitä on käytetty uudelleen, meidän pitäisi hylätä kuva, muuten meidän täytyy vaihtaa takaisin pääkierteeseen muuttaaksemme kuvaa solussa.

muissa hyvissä vastauksissa puhutaan kuvien offline-välimuistista, jossa käytetään paikkamerkintäkuvia, kun kuvia ladataan.

kysymys 10

mikä on protokolla, ja miten määrittelet omasi ja milloin sitä käytetään?

a-protokolla muistuttaa Java-käyttöliittymää. Siinä määritellään luettelo vaadituista ja valinnaisista menetelmistä, jotka luokan on/voi toteuttaa, jos se hyväksyy protokollan. Mikä tahansa luokka voi toteuttaa protokollan ja muut luokat voivat sitten lähettää kyseiseen luokkaan protokollamenetelmiin perustuvia viestejä ilman, että se tietää luokan tyypin.

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

yleinen käyttötapaus tarjoaa Aineistolähteen UITableView tai UICollectionView.

kysymys 11

mikä on KVC ja KVO? Anna esimerkki KVC: n käyttämisestä arvon asettamiseen.

KVC tulee sanoista Key-Value Coding. Se on mekanismi, jonka avulla objektin ominaisuuksia voidaan käyttää merkkijonon runtime eikä tarvitse staattisesti tietää ominaisuuksien nimet kehityksen aikana. KVO on lyhenne sanoista Key-Value Observing, ja sen avulla valvoja tai luokka voi tarkkailla kiinteistön arvon muutoksia.

sanotaan, että on olemassa ominaisuus name luokalla:

@property (nonatomic, copy) NSString *name;

Voimme käyttää sitä KVC:

NSString *n = 

voimme muokata sen arvoa lähettämällä viestin.:

kysymys 12

mitä lohkot ovat ja miten niitä käytetään?

lohkot ovat tapa määritellä yksittäinen tehtävä tai käyttäytymisen yksikkö ilman, että tarvitsee kirjoittaa kokonaista Objective-C-luokkaa. Kansien alla lohkot ovat edelleen Objective C-kohteita. Ne ovat kielitason ominaisuus, jonka avulla ohjelmointitekniikoita kuten lambdoja ja sulkuja voidaan tukea Objective-C: ssä. lohkon luominen tapahtuu käyttämällä ^ { } syntaksia:

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

siihen voidaan vedota näin:

myBlock();

se on lähinnä toiminto osoitin, joka on myös allekirjoitus, jota voidaan käyttää valvoa tyyppi turvallisuuden kääntää ja runtime. Voit esimerkiksi siirtää tietyn allekirjoituksen omaavan lohkon tällaiselle menetelmälle:

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

jos haluat, että lohkolle annetaan joitakin tietoja, voit muuttaa allekirjoituksen sisällyttämään ne.:

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

kysymys 13

mitä mekanismeja iOS tarjoaa monisäikeisyyden tueksi?

  • NSThread luo uuden matalan tason kierteen,jonka voi aloittaa kutsumalla start – menetelmää.

NSThread* myThread = initWithTarget:self selector:@selector(myThreadMainMethod:) object:nil];; 
  • NSOperationQueue mahdollistaa säikeiden muodostamisen ja käyttämisen NSOperations: n suorittamiseen rinnakkain. NSOperations voidaan ajaa myös pääkierteellä kysymällä NSOperationQueue mainQueue.
NSOperationQueue* myQueue = init];; ;
  • GCD tai Grand Central Dispatch on Objective-C: n moderni ominaisuus, joka tarjoaa runsaasti menetelmiä ja API: n käytettäväksi yhteisten monisäikeisten tehtävien tukemiseksi. GCD tarjoaa tavan jonottaa lähetettäviä tehtäviä joko pääkierteessä, samanaikaisessa jonossa (tehtävät suoritetaan rinnakkain) tai sarjajonossa (tehtävät suoritetaan FIFO-järjestyksessä).
dispatch_queue_t myQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_async(myQueue, ^{ printf("Do some work here.\n");});

kysymys 14

mikä on Vastaajaketju?

kun näkymässä tapahtuu jokin tapahtuma, esimerkiksi kosketustapahtuma, näkymä ampuu tapahtuman UIResponder UIView – kappaleeseen liittyvään ketjuun. Ensimmäinen UIResponder on UIView itse, jos se ei käsittele tapahtumaa niin se jatkaa ketjua ylöspäin, kunnes UIResponder käsittelee tapahtuman. Ketjuun kuuluvat UIViewControllers, vanhempi UIViews ja niihin liittyvä UIViewControllers, jos kukaan näistä ei käsittele tapahtumaa, niin UIWindow: ltä kysytään, kestääkö se sen ja lopuksi jos tuo ei käsittele tapahtumaa, niin UIApplicationDelegate: ltä kysytään.

jos saat mahdollisuuden vetää tämän esiin, kannattaa tehdä vaikutus haastattelijaan:

anna kuvan kuvaus tähän

kysymys 15

Mitä eroa on valtuutetun käytöllä ja ilmoituksella?

molempia käytetään arvojen ja viestien lähettämiseen kiinnostuneille. Valtuutettu on yksi-yhteen-viestintä ja on malli edistää Apple. Delegaatiossa luokkanousutapahtumissa on valtuutetulle omaisuutta ja tyypillisesti odottaa sen toteuttavan joitakin protocol. Delegoiva luokka voi sitten kutsua _delegate_s-protokollamenetelmiä.

ilmoituksen avulla luokka voi lähettää tapahtumia koko sovelluksen kautta kaikille asianomaisille osapuolille. Yleisradioluokan ei tarvitse tietää mitään tämän tapahtuman kuuntelijoista, joten ilmoitus on erittäin hyödyllinen aplikaation osien irrottamisessa.

 postNotificationName:@"TestNotification" object:self];

kysymys 16

mikä on suosikkisi kirjoitettaessa UI ’ s? Xib-tiedostoja, kuvakäsikirjoituksia vai ohjelmallisia UIView?

tähän ei ole oikeaa tai väärää vastausta, mutta on hieno tapa nähdä, ymmärrätkö jokaisen lähestymistavan hyödyt ja haasteet. Tässä yhteiset vastaukset:

  • Storyboard ’ s ja Xib: n ovat suuria nopeasti tuottaa UI: n, jotka vastaavat suunnittelu spec. Tuotepäälliköiden on myös todella helppo nähdä silmämääräisesti, kuinka pitkällä näyttö on.
  • Storyboard ’ s On myös loistava edustamaan virtaa sovelluksen läpi ja mahdollistamaan koko sovelluksen korkean tason visualisoinnin.
  • Storyboardin haittapuolena on se, että tiimiympäristössä niitä on vaikea työstää yhteistyössä, koska ne ovat yksi tiedosto ja yhdistämistä on vaikea hallita.
  • Storyboards – ja Xib-tiedostot voivat myös kärsiä päällekkäisyyksistä ja tulla vaikeiksi päivittää. Esimerkiksi jos kaikki Buttonin tarve näyttää identtiseltä ja tarvitsee yhtäkkiä värimuutoksen, niin se voi olla pitkä/vaikea prosessi tehdä tämä kuvakäsikirjoitusten ja xibs.
  • ohjelmallisesti UIViewn konstruointi voi olla monisanaista ja työlästä, mutta se voi mahdollistaa suuremman kontrollin ja myös helpomman koodin erottelun ja jakamisen. Ne voidaan myös helpommin yksikkötestata.

useimmat kehittäjät ehdottavat Kaikkien 3: n yhdistelmää, jossa on järkevää jakaa koodia, sitten uudelleen käytettäväksi UIViews tai Xib tiedostoja.

kysymys 17

miten säilyttäisit turvallisesti yksityisen käyttäjän tiedot offline-tilassa laitteella? Mitä muita turvallisuuskäytäntöjä pitäisi ottaa?

tähän ei taaskaan ole oikeaa vastausta, mutta se on hieno tapa nähdä, kuinka paljon ihminen on kaivanut iOS-tietoturvaa. Jos haastattelet pankkia, odotan melkein varmasti jonkun tietävän siitä jotain, mutta kaikkien yritysten on otettava turvallisuus vakavasti, joten tässä on ihanteellinen lista aiheista, joita odotan kuulevani vastauksessa.:

  • jos tiedot ovat erittäin arkaluonteisia, niitä ei pitäisi koskaan tallentaa offline-tilassa laitteeseen, koska kaikki laitteet ovat murtokelpoisia.
  • avainnippu on yksi vaihtoehto tietojen turvalliseen tallentamiseen. Sen salaus perustuu kuitenkin laitteen pin-koodiin. Käyttäjän ei ole pakko asettaa pin-koodia, joten joissain tilanteissa tietoja ei välttämättä edes salata. Lisäksi käyttäjien pin-koodi voidaan helposti hakkeroida.
  • parempi ratkaisu on käyttää jotain sqlcipheriä, joka on täysin salattu SQLite-tietokanta. Salausavainta voidaan valvoa sovelluksen avulla ja erottaa käyttäjän pin-koodista.

muut turvallisuuden parhaat käytännöt ovat:

  • vain kommunikoida etäpalvelimet SSL / HTTPS.
  • jos mahdollista, ota käyttöön hakemuksessa oleva sertifikaatti, jolla ehkäistään mies keskellä-hyökkäykset julkiseen WiFi-verkkoon.
  • Poista arkaluontoiset tiedot muistista korvaamalla ne.
  • varmista, että kaikki toimitettavien tietojen validointi suoritetaan myös palvelinpuolella.

kysymys 18

mikä on MVC ja miten se toteutetaan iOS: ssä?
millaisia sudenkuoppia olet kokenut sen kanssa? Onko vaihtoehtoja MVC: lle?

MVC tulee sanoista Model, View, Controller. Se on suunnittelukuvio, joka määrittelee, miten logiikan voi erottaa käyttöliittymiä toteutettaessa. IOS: ssä Apple tarjoaa UIView perusluokaksi kaikille _View_s, UIViewController on säädetty tukemaan ohjainta, joka voi kuunnella näkymän tapahtumia ja päivittää näkymän tietojen muuttuessa. Malli edustaa tietoja sovelluksessa ja se voidaan toteuttaa millä tahansa NSObject: llä, mukaan lukien tiedonkeruut kuten NSArray ja NSDictionary.

jotkut ihmisten osumista sudenkuopista ovat paisuneita UIViewController, eivätkä ne erottele koodia MVC-formaattia pidemmälle meneviin luokkiin. Suosittelen lukemaan joitakin ratkaisuja tähän:

  • 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

vaihtoehtojen suhteen tämä on aika avoin loppu. Yleisin vaihtoehto on MVVM käyttäen ReactiveCocoa, mutta muita ovat VIPER ja käyttämällä toiminnallista reaktiivista koodia.

kysymys 19

yrityksesi tuotepäällikkö kertoo sovelluksen kaatuvan. Mitä sinä teet?

tämä on suuri kysymys millä tahansa ohjelmointikielellä ja on todella suunniteltu näkemään, miten ongelma ratkaistaan. Sinulle ei anneta paljon tietoa, mutta jotkut haastattelut lipsauttavat sinulle lisää yksityiskohtia asiasta matkan varrella. Aloita yksinkertainen:

  • Hanki tarkat vaiheet jäljentää sitä.
  • selvitä laite, iOS-versio.
  • onko heillä uusin versio?
  • Hanki laitelokit, jos mahdollista.

kun voit jäljentää sen tai saat lisätietoja, aloita työkalujen käyttö. Oletetaan, että se kaatuu muistivuodon takia, odottaisin jonkun ehdottavan välineiden vuototyökalua. Todella vaikuttava ehdokas alkaisi puhua yksikkötestin kirjoittamisesta, joka toistaa asian ja virheenkorjaus sen läpi.

tämän kysymyksen muita muunnelmia ovat hidas UI tai sovelluksen jäädyttäminen. Jälleen ajatus on nähdä, miten ongelma ratkaista, mitä työkaluja tiedät, että auttaisi ja osaatko käyttää niitä oikein.

kysymys 20

mikä on AutoLayout? Mitä se tarkoittaa, kun rajoite on ”rikki” iOS?

AutoLayout on tapa asettaa UIViews käyttäen rajoitteita, jotka määrittelevät sijainnin ja koon suhteessa muihin näkymiin tai eksplisiittisiin arvoihin. Automatayoutin avulla on helpompi suunnitella näyttöjä, jotka muuttavat ja asettelevat komponenttejaan paremmin näytön koon ja suunnan perusteella. _rajoitteet sisältävät:

  • vaaka – /pystysuuntaisen etäisyyden asettaminen kahden näkymän välille
  • korkeus/leveys suhteeksi eri näkymään
  • leveys/korkeus/väli voi olla eksplisiittinen staattinen arvo

joskus rajoitteet ovat ristiriidassa keskenään. Kuvittele esimerkiksi UIView , jossa on 2 korkeusrajoitusta: yksi sanoo Tee UIView 200px korkea, ja toinen sanoo Tee korkeus kaksi kertaa napin korkeus. Jos iOS runtime ei voi tyydyttää molempia näistä rajoitteista sitten se on valittava vain yksi. Toinen on sitten raportoitu olevan ”rikki” iOS.

Vakiokysymykset

” kerro minulle itsestäsi.”

tämä on todella hankala! Niin monet ihmiset lukevat ansioluettelonsa ääneen (unohtaen, että katson suoraan sitä!), listaamalla jokainen luokka he ottivat college, jokainen asema he ovat koskaan pitänyt (ja että todella lisää jopa ylemmän tason insinöörit) ja jokainen vastuu (joka usein kertaa sattuu olemaan sama koko 2 tai 3 yritykset, että tietty henkilö on työskennellyt. Niin, 20 minuuttia myöhemmin, en vieläkään tiedä mitään uutta / ulkopuolella jatkaa noin ehdokas, olemme 20 minuuttia, ja silloin uskon, että ne voisivat yhtä hyvin olla robotteja (ja robotit eivät yleensä sovi kovin hyvin dynaaminen joukkueet).

tee siis itsellesi (ja vuokrauspäällikölle) palvelus valmistamalla taustastasi 2min pituinen hissikoroke – pidä se yksinkertaisena, ytimekkäänä ja lyhyenä, ja lisää lopuksi jotain henkilökohtaista. Rakastatko juoksemista? Valmennatko tyttäresi jalkapallojoukkuetta? Die hard Star Wars-fani? Lisäämällä hieman persoonallisuutta on suuri jäänmurtaja, ja tekee hämmästyttävä siirtyminen syvemmälle osa haastattelun.

”kuvaile kiinnostava ongelma ja miten ratkaisit sen.”

sinun mahdollisuutesi kuulla tämä on periaatteessa 99%, joten sinulla on parempi olla loistava vastaus valmiina! Tässä muutama vinkki: mieti erityisen upeaa projektia, josta olet ylpeä. Onko selvä? Hienoa! Nyt, napata pala paperia ja tiivistää sen 5 bullet points.
1st bullet point-hyvin lyhyt taustatarina hankkeen taustaolosuhteista
2nd bullet – itse hankkeen luonne
3rd bullet – ongelmat, joihin olet törmännyt ratkaistessasi sitä/ne
4thbullet – miten ratkaisit
5th bullet point – mitä olet oppinut siitä.

etsi nyt joku, joka kuuntelee (ystävä, kumppani, kollega) ja kysy, onko tarinassa mitään järkeä (miinus kaikki sen tekniset puolet, jos keskustelukumppanisi ei ole vertaisesi). Se on hyvä tapa vahvistaa, jos tarina pysyy kasassa.

olisit järkyttynyt kuinka monta kertaa olen kuullut asioita kuten ” ja sitten menin John, ja hän käytti työkalua hän on luonut poistaa kriittinen vika, joka sitten……”. Kuka on Tom? Managerisi? Harjoittelija? Peer? Miksi menit hänen luokseen kaikista seurueestasi? Mikä se taikaväline on, jonka hän on koonnut? Minkä kriittisen vian se tarkalleen poisti ja miten? Mikä oli lopputulos?

saat idean 😃

lisäbonus? Sinulla on nyt 5 bullet points voit käyttää lunttilappu haastattelun aikana näyttämättä että kaveri, joka lukee hänen ansioluettelonsa ääneen.

nyt hypätään niihin outoihin kysymyksiin, joita jotkut palkkaavat managerit mielellään heittelevät vinkkatakseen pelistäsi.

  • miten testaisit leivänpaahtimen?
  • kuinka monta kynää lentokoneeseen mahtuu?
  • kuinka monta ikkunaa San Franciscossa on?
  • kuinka monta golfpalloa koulubussiin mahtuu?
  • kuinka monta Big Macia McDonald ’ s myy vuosittain Yhdysvalloissa?

lista jatkuu ja jatkuu. Vaikka sillä ei ole mitään tekemistä teknisten taitojesi kanssa, se tekee hyvää työtä tarkistamalla, miten käsittelet käyräpalloja, ja nähdäksesi, pystytkö loogiseen askel askeleelta ongelmanratkaisuun. Useimmissa tapauksissa, ei ole täydellisiä vastauksia tämäntyyppisiin kysymyksiin (vaikka voit google niitä mielenrauhaa). Kyse on siitä, miten selität logiikkasi haastattelijalle.

tässä on vastaus Michael Beauchampin golfpallokysymykseen, joten saat käsityksen siitä, mistä puhun:

luulen, että tavallinen koulubussi on noin 8ft leveä 6ft korkea 20 jalkaa pitkä – tämä on vain arvaus, joka perustuu niihin tuhansiin tunteihin, jotka olen ollut loukussa koulubussien takana, kun liikenne kaikkiin suuntiin on pysähtynyt.

se tarkoittaa 960 kuutiojalkaa ja koska kuutiojalkaa on 1728 kuutiotuumaa, se tarkoittaa noin 1,6 miljoonaa kuutiotuumaa.

lasken golfpallon tilavuudeksi noin 2,5 kuutiotuumaa (4/3 * pi *.85) as .85 tuumaa on golfpallon säde.

Jaa tuo 2,5 kuutiotuumaa 1.6 miljoonaa ja saat 660 000 golfpalloa. Kuitenkin, koska siellä on paikkoja ja paskaa siellä vie tilaa ja koska pallomainen muoto golfpallo tarkoittaa, että siellä on paljon tyhjää tilaa niiden välillä, kun pinottu, pyöräytän alas 500000 golfpalloa.

KS. Askel askeleelta. Ja yhtäkkiä se on suhteellisen yksinkertainen, looginen kysymys. Pysy rauhallisena, ja sen sijaan, että yrität keksiä instant numero päähäsi, kävellä haastattelija läpi junan ajatuksia kanssasi.

tarvitsetko tosielämän harjoittelua? Voit vapaasti ajoittaa pilkkahaastattelun Mattille, joka on tehnyt teknisiä haastatteluja 12 vuotta, ja pyytää häneltä palautetta!

Vastaa

Sähköpostiosoitettasi ei julkaista.