- klaar voor uw iOS interview
- technische vragen
- opdracht 2
- vraag 3
- opdracht 4
- opdracht 5
- Vraag 6
- opdracht 7
- opdracht 8
- vraag 9
- Vraag 10
- opdracht 12
- Vraag 13
- opdracht 14
- opdracht 15
- Opdracht 16
- Vraag 17
- Vraag 18
- standaardvragen
- ” vertel me over uzelf.”
- “Beschrijf een interessant probleem en hoe je het hebt opgelost.”
klaar voor uw iOS interview
de grote dag komt eraan. Of het nu een telefoon, online of in persoon interview Het is altijd een beetje stressvol. Dus, om de stress te verlichten heb je wat voorbereidend werk gedaan – voltooide het huiswerk op het bedrijf waarmee u interviewt, stalkte de inhuurmanager en de helft van het engineeringteam van het bedrijf van uw keuze op linkedin & github, heb je wat vaardigheden en kennis opgefrist die je al een tijdje niet hebt gebruikt – je bent klaar om te gaan.
maar naar aanleiding van het motto van de US Navy Seals “Two is one and one is none” laten we nog een snelle opfriscursus doorlopen om je te helpen dat iOS-interview te winnen. Dus laten we meteen beginnen!
laten we beginnen met enkele van de fundamentele vragen waar u hopelijk al klaar voor bent. Ze lijken misschien voor de hand liggend, maar je zou geschokt zijn hoeveel ingenieurs jammerlijk gefaald hebben tijdens de 12 jaar dat ik technische interviews heb gedaan.
technische vragen
Ok, nu we dat hebben behandeld, laten we beginnen met de technische vragen.
Zie hier voor de slideshare voor alle technische interview Vragen!Vraag Nr. 1(9328): van een constructeur van een UITableViewCell:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
wanneer wordt
reuseIdentifier
voorgeschreven?de
reuseIdentifier
geeft aan dat een cel opnieuw kan worden gebruikt in eenUITableView
. Bijvoorbeeld wanneer de cel er hetzelfde uitziet, maar andere inhoud heeft. DeUITableView
zal een interne cache vanUITableViewCell
’s met dereuseIdentifier
onderhouden en toestaan dat deze opnieuw worden gebruikt wanneerdequeueReusableCellWithIdentifier:
wordt aangeroepen. Door tabelcel ‘ s te hergebruiken is de scrolprestatie van de tableview beter omdat er geen nieuwe weergaven hoeven te worden gemaakt.opdracht 2
verklaar het verschil tussen atomaire en niet-atomaire gesynthetiseerde eigenschappen?
atomair en niet-atomair verwijst naar of de setters / getters voor een eigenschap atomisch waarden zullen lezen en schrijven naar de eigenschap. Wanneer het atomaire trefwoord wordt gebruikt op een eigenschap, zal elke toegang tot het worden “gesynchroniseerd”. Daarom zal een call naar de getter gegarandeerd een geldige waarde retourneren, maar dit komt met een kleine prestatie boete. Daarom wordt in sommige situaties niet-atomisch gebruikt om snellere toegang tot een eigenschap te bieden, maar er is een kans dat een raceconditie ervoor zorgt dat de eigenschap in zeldzame omstandigheden nihil is (wanneer een waarde wordt ingesteld vanuit een andere thread en de Oude waarde uit het geheugen werd vrijgegeven, maar de nieuwe waarde nog niet volledig is toegewezen aan de locatie in het geheugen voor de eigenschap).
vraag 3
verklaar het verschil tussen kopiëren en bewaren?
een object behouden betekent dat het aantal behouden met één toeneemt. Dit betekent dat de instantie van het object in het geheugen zal worden gehouden totdat het aantal behouden daalt tot nul. De eigenschap zal een verwijzing naar deze instantie opslaan en zal dezelfde instantie delen met iedereen die deze ook heeft behouden. Kopiëren betekent dat het object gekloond wordt met dubbele waarden. Het wordt niet gedeeld met iemand anders.
wilt u uw technisch interview winnen? Plan nu een technisch Interview training met een expert!
opdracht 4
Wat is methode die beweegt in doelstelling C en waarom zou u deze gebruiken?
met methode swizzling kan de implementatie van een bestaande selector tijdens runtime worden geschakeld voor een andere implementatie in een klassen verzendingstabel. Swizzling kunt u code die kan worden uitgevoerd voor en/of na de oorspronkelijke methode te schrijven. Bijvoorbeeld om de tijdsduur van de uitvoering bij te houden, of om log statements
#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
opdracht 5
Wat is het verschil tussen niet-draaiende, inactieve, actieve, achtergrond-en opgeschorte uitvoerstatussen in te voegen?
- niet actief: De app is niet gelanceerd of werd uitgevoerd, maar werd beëindigd door het systeem.
- Inactief: de app draait op de voorgrond, maar ontvangt momenteel geen gebeurtenissen. (Het kan het uitvoeren van andere code al.) Een app blijft meestal in deze toestand slechts kort als het overschakelt naar een andere toestand.
- actief: de app draait op de voorgrond en ontvangt gebeurtenissen. Dit is de normale modus voor voorgrond apps.
- achtergrond: de app bevindt zich op de achtergrond en voert de code uit. De meeste apps voeren deze staat kort op hun weg naar geschorst. Echter, een app die vraagt om extra uitvoeringstijd kan in deze staat blijven voor een periode van tijd. Bovendien, een app wordt gestart direct in de achtergrond komt deze toestand in plaats van de inactieve toestand.
- opgeschort: de app bevindt zich op de achtergrond, maar voert geen code uit. Het systeem verplaatst apps om deze toestand automatisch en niet hen te melden voordat u dit doet. Terwijl opgeschort, een app blijft in het geheugen, maar geen code uit te voeren. Wanneer een toestand met weinig geheugen optreedt, kan het systeem opgeschorte apps zonder kennisgeving verwijderen om meer ruimte te maken voor de voorgrond app.
Vraag 6
Wat is een categorie en wanneer wordt deze gebruikt?
een categorie is een manier om extra methoden aan een klasse toe te voegen zonder deze uit te breiden. Het wordt vaak gebruikt om een verzameling van verwante methoden toe te voegen. Een veel voorkomende use case is om extra methoden toe te voegen aan ingebouwde klassen in de Cocoa frameworks. Bijvoorbeeld het toevoegen van Async downloadmethoden aan de
UIImage
klasse.opdracht 7
kunt u de bug in de volgende code herkennen en voorstellen hoe deze te repareren:
@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-updates moeten worden gedaan op de belangrijkste thread. In de code hierboven kan de update van de waarschuwingstekst al dan niet plaatsvinden op de hoofdthread, omdat de wachtrij voor wereldwijde verzending geen garanties biedt . Daarom moet de code worden gewijzigd om altijd de UI-update uit te voeren op de hoofdthread
dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ sleep(10); dispatch_async(dispatch_get_main_queue(), ^{ self.alert.text = @"Waiting over"; });});
opdracht 8
Wat is het verschil tussen
viewDidLoad
enviewDidAppear
?
wat moet u gebruiken om gegevens van een server op afstand te laden om weer te geven in de weergave?
viewDidLoad
wordt aangeroepen wanneer de weergave wordt geladen, hetzij vanuit een Xib-bestand, storyboard of programmatisch aangemaakt inloadView
.viewDidAppear
wordt aangeroepen telkens wanneer de weergave op het apparaat wordt weergegeven. Welke te gebruiken hangt af van de use case voor uw gegevens. Als de gegevens vrij statisch zijn en waarschijnlijk niet zullen veranderen, dan kan het inviewDidLoad
worden geladen en in de cache worden opgeslagen. Als de gegevens echter regelmatig veranderen, is het beter omviewDidAppear
te gebruiken om ze te laden. In beide situaties moeten de gegevens asynchroon op een achtergrond thread worden geladen om te voorkomen dat de gebruikersinterface wordt geblokkeerd.vraag 9
welke overwegingen heeft u nodig bij het schrijven van een
UITableViewController
die afbeeldingen toont die zijn gedownload van een server op afstand?dit is een veel voorkomende taak in iOS en een goed antwoord hier kan betrekking hebben op een hele reeks kennis. Het belangrijke stukje informatie in de vraag is dat de beelden op afstand worden gehost en ze kunnen de tijd nemen om te downloaden, dus als het vraagt om “overwegingen”, je moet praten over:
- download de afbeelding alleen wanneer de cel in beeld wordt gebracht, d.w.z. wanneer
cellForRowAtIndexPath
wordt aangeroepen.- het downloaden van de afbeelding asynchroon op een achtergrond thread om de gebruikersinterface niet te blokkeren zodat de gebruiker kan blijven scrollen.
- wanneer de afbeelding voor een cel is gedownload, moeten we controleren of die cel nog steeds in de weergave is of dat deze opnieuw is gebruikt door een ander stuk gegevens. Als het hergebruikt is, moeten we de afbeelding weggooien, anders moeten we terugschakelen naar de hoofdthread om de afbeelding op de cel te wijzigen.
andere goede antwoorden zullen verder gaan met het offline cachen van de afbeeldingen, waarbij placeholder-afbeeldingen worden gebruikt terwijl de afbeeldingen worden gedownload.
Vraag 10
Wat is een protocol en hoe definieer je het eigen protocol en wanneer wordt het gebruikt?
een protocol is vergelijkbaar met een interface van Java. Het definieert een lijst van vereiste en optionele methoden die een klasse moet/kan implementeren als het protocol wordt aangenomen. Elke klasse kan een protocol implementeren en andere klassen kunnen dan berichten naar die klasse sturen op basis van de protocolmethoden zonder dat ze het type van de klasse kennen.
@protocol MyCustomDataSource- (NSUInteger)numberOfRecords;- (NSDictionary *)recordAtIndex:(NSUInteger)index;@optional- (NSString *)titleForRecordAtIndex:(NSUInteger)index;@end
een veelvoorkomend geval levert een gegevensbron voor
UITableView
ofUICollectionView
.Vraag 11wat zijn KVC en KVO? Geef een voorbeeld van het gebruik van KVC om een waarde in te stellen.
KVC staat voor Key-Value codering. Het is een mechanisme waarmee de eigenschappen van een object kunnen worden benaderd met behulp van string ‘ s tijdens runtime in plaats van statisch te weten de eigenschap namen tijdens de ontwikkeling. KVO staat voor Key-Value Observing en staat een controller of klasse toe om veranderingen in een eigenschapswaarde te observeren.
stel dat er een eigenschap
name
is op een klasse:@property (nonatomic, copy) NSString *name;
we kunnen het benaderen met KVC:
NSString *n =
en we kunnen de waarde ervan wijzigen door het bericht te sturen:
opdracht 12
Wat zijn blokken en hoe worden ze gebruikt?
blokken zijn een manier om een enkele taak of eenheid van gedrag te definiëren zonder een hele Objective-C klasse te schrijven. Onder de covers blokken zijn nog steeds Objective C objecten. Ze zijn een functie op taalniveau die het mogelijk maakt programmeertechnieken zoals lambda ‘ s en sluitingen te ondersteunen in Objective-C. Het maken van een blok wordt gedaan met behulp van de syntaxis
^ { }
:myBlock = ^{ NSLog(@"This is a block"); }
het kan zo worden aangeroepen:
myBlock();
het is in wezen een functie pointer die ook een handtekening die kan worden gebruikt om type veiligheid af te dwingen bij compileren en runtime. U kunt bijvoorbeeld een blok met een specifieke handtekening doorgeven aan een methode als deze:
- (void)callMyBlock:(void (^)(void))callbackBlock;
Als u wilt dat het blok wat gegevens krijgt, kunt u de handtekening wijzigen om ze op te nemen.:
- (void)callMyBlock:(void (^)(double, double))block { ... block(3.0, 2.0);}
Vraag 13
welke mechanismen bieden iOS om multi-threading te ondersteunen?
NSThread
maakt een nieuwe low-level thread aan die kan worden gestart door destart
methode aan te roepen.NSThread* myThread = initWithTarget:self selector:@selector(myThreadMainMethod:) object:nil];;
NSOperationQueue
Hiermee kan een pool van threads worden aangemaakt en gebruikt omNSOperation
s parallel uit te voeren.NSOperation
s kan ook worden uitgevoerd op de hoofdthread doorNSOperationQueue
te vragen voor demainQueue
.NSOperationQueue* myQueue = init];; ;
- GCD of Grand Central Dispatch is een moderne functie van Objective-C die een rijke set van methoden en API ‘ s biedt om te gebruiken om gemeenschappelijke multi-threading taken te ondersteunen. GCD biedt een manier om taken in de wachtrij te plaatsen voor verzending op de hoofdthread, een gelijktijdige wachtrij (taken worden parallel uitgevoerd) of een seriële wachtrij (taken worden uitgevoerd in FIFO-volgorde).
dispatch_queue_t myQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_async(myQueue, ^{ printf("Do some work here.\n");});
opdracht 14
Wat is de Responderketen?
wanneer een gebeurtenis plaatsvindt in een weergave, bijvoorbeeld een aanraakgebeurtenis, zal de weergave de gebeurtenis afvuren op een keten van
UIResponder
objecten die geassocieerd zijn met deUIView
. De eersteUIResponder
is deUIView
zelf, als het de gebeurtenis niet afhandelt, gaat het verder totUIResponder
de gebeurtenis afhandelt. De keten zalUIViewController
s, ouderUIView
s en de bijbehorendeUIViewController
s bevatten, als geen van deze de gebeurtenis afhandelt, wordt deUIWindow
gevraagd of deze het aankan en als dat de gebeurtenis niet afhandelt, wordt deUIApplicationDelegate
gevraagd.als u de kans krijgt om deze uit te trekken, is het de moeite waard om indruk te maken op de interviewer:
opdracht 15
Wat is het verschil tussen het gebruik van een gedelegeerde en kennisgeving?
beide worden gebruikt voor het verzenden van waarden en berichten naar geïnteresseerde partijen. Een gedelegeerde is voor één-op-één communicatie en is een patroon gepromoot door Apple. In delegeren hebben de class raising events een eigenschap voor de gedelegeerde en verwachten ze meestal dat het
protocol
implementeert. De delegerende klasse kan dan de _delegate_s protocolmethoden aanroepen.de aanmelding maakt het mogelijk dat een klasse evenementen over de gehele aanvraag naar alle belanghebbende partijen uitzendt. De omroep klasse hoeft niets te weten over de luisteraars voor dit evenement, daarom kennisgeving is zeer nuttig in het helpen bij het ontkoppelen van componenten in een toepassing.
postNotificationName:@"TestNotification" object:self];
Opdracht 16
Wat is uw voorkeur bij het schrijven van UI ‘ s? Xib-bestanden, Storyboards of programmatisch
UIView
?er is geen goed of fout antwoord op deze, maar het is een geweldige manier om te zien of u de voordelen en uitdagingen begrijpt bij elke aanpak. Hier zijn de algemene antwoorden die ik hoor:
- Storyboard ’s en Xib’ s zijn geweldig voor het snel produceren van UI ‘ s die overeenkomen met een ontwerp spec. Ze zijn ook heel gemakkelijk voor productmanagers om visueel te zien hoe ver een scherm is.
- Storyboard ‘ s zijn ook geweldig in het vertegenwoordigen van een stroom door een toepassing en het toestaan van een high-level visualisatie van een hele toepassing.
- storyboard ’s nadelen zijn dat ze in een teamomgeving moeilijk samen te werken zijn omdat ze een enkel bestand zijn en merge’ s moeilijk te beheren zijn.
- Storyboards en Xib-bestanden kunnen ook last hebben van duplicatie en moeilijk te updaten worden. Als alle knoppen er bijvoorbeeld identiek uit moeten zien en plotseling een kleurverandering nodig hebben, kan het een lang/moeilijk proces zijn om dit op storyboards en xibs te doen.
- programmatisch construeren van
UIView
‘ s kan veelomvattend en vervelend zijn, maar het kan een grotere controle en ook een gemakkelijkere scheiding en het delen van code mogelijk maken. Ze kunnen ook gemakkelijker unit getest worden.de meeste ontwikkelaars zullen een combinatie van alle 3 voorstellen waar het zinvol is om code te delen, dan herbruikbare
UIView
s ofXib
bestanden.Vraag 17
hoe zou u gegevens van privégebruikers veilig offline op een apparaat opslaan? Welke andere beste beveiligingspraktijken moeten worden gevolgd?
opnieuw is er geen goed antwoord op dit, maar het is een geweldige manier om te zien hoeveel een persoon heeft gegraven in iOS beveiliging. Als je interviewt met een bank zou ik bijna zeker verwachten dat iemand er iets over Weet, maar alle bedrijven moeten beveiliging serieus nemen, dus hier is de ideale lijst met onderwerpen die ik verwacht te horen in een antwoord:
- als de gegevens is zeer gevoelig dan moet het nooit offline worden opgeslagen op het apparaat, omdat alle apparaten zijn crackable.
- de sleutelhanger is een optie voor het veilig opslaan van gegevens. Maar het is encryptie is gebaseerd op de pin-code van het apparaat. Gebruikers worden niet gedwongen om een pin-code in te stellen, dus in sommige situaties kunnen de gegevens zelfs niet worden versleuteld. Daarnaast kan de gebruikers pin-code gemakkelijk worden gehackt.
- een betere oplossing is om iets als SQLCipher te gebruiken, wat een volledig versleutelde SQLite database is. De coderingssleutel kan door de toepassing worden afgedwongen en gescheiden worden van de pincode van de gebruiker.
andere beste praktijken op het gebied van beveiliging zijn:
- communiceer alleen met externe servers via SSL / HTTPS.
- implementeer indien mogelijk het pinnen van certificaten in de applicatie om man-in-the-middle aanvallen op openbare WiFi te voorkomen.
- wis gevoelige gegevens uit het geheugen door het te overschrijven.
- zorg ervoor dat alle validatie van gegevens die worden ingediend ook op de server wordt uitgevoerd.
Vraag 18
Wat is MVC en hoe wordt het geïmplementeerd in iOS?
Wat zijn enkele valkuilen die u ermee hebt ervaren? Zijn er alternatieven voor MVC?MVC staat voor Model, View, Controller. Het is een ontwerppatroon dat definieert hoe logica te scheiden bij het implementeren van gebruikersinterfaces. In iOS biedt Apple
UIView
als basisklasse voor alle _View_s,UIViewController
wordt geleverd om de Controller te ondersteunen die naar gebeurtenissen in een weergave kan luisteren en de weergave kan bijwerken wanneer gegevens veranderen. Het Model vertegenwoordigt gegevens in een toepassing en kan worden geïmplementeerd met behulp van elkeNSObject
, inclusief gegevensverzamelingen zoalsNSArray
enNSDictionary
.sommige van de valkuilen die mensen raken zijn opgeblazen
UIViewController
en scheiden code niet in klassen buiten het MVC-formaat. Ik zou aanraden het lezen van een aantal oplossingen voor deze:
- 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
in termen van alternatieven, dit is vrij open einde. Het gemeenschappelijkste alternatief is MVVM gebruikend ReactiveCocoa, maar anderen omvatten VIPER en gebruikend functionele reactieve code.Opdracht 19
een productmanager in uw bedrijf meldt dat de toepassing crasht. Wat doe je voor werk?
dit is een grote vraag in elke programmeertaal en is echt ontworpen om te zien hoe je probleem op te lossen. Je krijgt niet veel informatie, maar sommige interviews zullen je meer details van het probleem glijden als je verder gaat. Eenvoudig starten:
- krijg de exacte stappen om het te reproduceren.
- ontdek het apparaat, iOS-versie.
- hebben ze de nieuwste versie?
- apparaatlogboeken ophalen indien mogelijk.
zodra u het kunt reproduceren of meer informatie hebt, kunt u tooling gebruiken. Laten we zeggen dat het crasht als gevolg van een geheugenlek, ik zou verwachten dat iemand suggereren het gebruik van instrumenten Lek tool. Een echt indrukwekkende kandidaat zou beginnen te praten over het schrijven van een unit test die het probleem reproduceert en debuggen door het.
andere variaties op deze vraag zijn onder meer langzame UI of bevriezing van de toepassing. Opnieuw is het idee om te zien hoe je probleem op te lossen, welke tools Weet je over dat zou helpen en weet je hoe ze correct te gebruiken.Vraag 20
Wat is AutoLayout? Wat betekent het wanneer een beperking wordt “gebroken” door iOS?
AutoLayout is een manier om
UIView
s te lay-out met behulp van een reeks beperkingen die de locatie en grootte specificeren ten opzichte van andere weergaven of op basis van expliciete waarden. AutoLayout maakt het gemakkelijker om schermen te ontwerpen die de grootte en lay-out van hun componenten beter op basis van de grootte en de oriëntatie van een scherm. _constraint_s include:
- de horizontale / verticale afstand instellen tussen 2 weergaven
- de hoogte/breedte instellen als een verhouding ten opzichte van een andere weergave
- een breedte/hoogte/spatiëring kan een expliciete statische waarde
soms conflicteren beperkingen met elkaar. Stel je bijvoorbeeld een
UIView
voor Die 2 hoogtebeperkingen heeft: de ene zegt Maak deUIView
200px hoog, en de tweede zegt Maak de hoogte tweemaal de hoogte van een knop. Als de iOS runtime niet aan beide beperkingen kan voldoen, moet het er maar één kiezen. De andere wordt vervolgens gerapporteerd als zijnde “gebroken” door iOS.standaardvragen
” vertel me over uzelf.”
Dit is echt een lastige! Zo veel mensen lezen hun CV hardop (vergeten Ik ben op zoek naar het!), een lijst van elke klasse die ze namen op de universiteit, elke positie die ze ooit hebben gehouden (en dat telt echt op voor de Senior level Engineers) en elke verantwoordelijkheid (die vaak toevallig hetzelfde over 2 of 3 bedrijven die bepaalde persoon heeft gewerkt. Dus, 20 minuten later, Ik weet nog steeds niets nieuws/buiten het CV over de kandidaat, we zijn 20 minuten in, en tegen die tijd denk ik dat ze net zo goed robots (en robots hebben de neiging om niet erg goed passen bij dynamische teams).
dus doe jezelf (en de hiring manager) een plezier door een 2min lange elevator pitch van je achtergrond voor te bereiden – houd het eenvoudig, beknopt en kort, en voeg dan iets persoonlijks toe aan het einde. Hou je van rennen? Coach je het voetbalteam van je dochter? Die hard Star Wars fan? Het toevoegen van een beetje persoonlijkheid in is een grote ijsbreker, en zal zorgen voor een verbazingwekkende overgang naar het diepere deel van het interview.
“Beschrijf een interessant probleem en hoe je het hebt opgelost.”
uw kans om deze te horen is in principe 99%, dus je kunt beter een geweldig antwoord klaar voor hen! Hier zijn een paar tips: denk aan een bijzonder geweldig project waar je trots op bent. Begrepen? Geweldig! Pak nu een stuk papier en vat het samen in 5 kogelpunten.
1ste bullet point-zeer kort achtergrondverhaal van de omstandigheden achter het project
2de bullet-de aard van het project zelf
3de bullet-de problemen die u tegenkwam bij het oplossen van het/them
4de Bullet – hoe hebt u de problemen hierboven
opgelost 5de bullet point – wat hebt u ervan geleerd.zoek nu iemand die wil luisteren (een vriend, partner, collega) en vraag hen of het verhaal zinvol is (minus eventuele technische aspecten ervan als de persoon met wie je praat niet je peer is). Het is een geweldige manier om te valideren als het verhaal zichzelf bij elkaar houdt.
je zou geschokt zijn hoe vaak ik dingen heb gehoord als ” en toen ging ik naar John, en hij gebruikte de tool die hij heeft gemaakt om de kritieke bug te verwijderen die vervolgens……”. Wie is Tom? Je manager? Stagiair? Peer? Waarom ging je naar hem van iedereen in je bedrijf? Wat is dat magische gereedschap dat hij heeft samengesteld? Welke kritieke bug precies heeft het verwijderd en hoe? Wat was de uitkomst?
u krijgt het idee
extra bonus? Je hebt nu 5 bullet points die je kunt gebruiken als een spiekbriefje tijdens uw interview zonder te kijken als die man die zijn cv hardop leest.
laten we nu even ingaan op de rare vragen die sommige managers graag stellen om je een tip te geven over je spel.
- hoe zou u een broodrooster testen?
- hoeveel pennen past er in een vliegtuig?
- hoeveel vensters zijn er in San Francisco?
- hoeveel golfballen passen er in een schoolbus?
- hoeveel Big Macs verkoopt McDonald ‘ s elk jaar in de Verenigde Staten?
de lijst gaat maar door. Hoewel het niets te maken heeft met je technische vaardigheden, is het goed om te controleren hoe je omgaat met curveballen en om te zien of je in staat bent om stapsgewijs logische problemen op te lossen. In de meeste gevallen, er zijn geen perfecte antwoorden op dit soort vragen (hoewel je ze kunt google voor uw gemoedsrust). Het gaat erom hoe je je logica uitlegt aan je interviewer.
hier is het antwoord op de golfballen vraag van Michael Beauchamp, dus je krijgt het idee van wat ik het over heb:
ik denk dat een standaard schoolbus ongeveer 8ft breed is bij 6ft hoog en 20 voet lang – dit is slechts een gok gebaseerd op de duizenden uren dat ik achter schoolbussen vastzit terwijl het verkeer in alle richtingen wordt gestopt.
dat betekent 960 kubieke voet en aangezien er 1728 kubieke inches in een kubieke voet, dat betekent ongeveer 1,6 miljoen kubieke inch.
ik bereken het volume van een golfbal op ongeveer 2,5 kubieke inch (4/3 * pi*.85) as .85 inch is de radius van een golfbal.
deel die 2,5 kubieke inch door 1.Zes miljoen en je komt met 660.000 golfballen. Echter, aangezien er zitplaatsen en crap in daar nemen ruimte en ook omdat de sferische vorm van een golfbal betekent dat er aanzienlijke lege ruimte tussen hen wanneer gestapeld, Ik zal afronden naar 500.000 golfballen.
zie? Stapsgewijs. Plotseling is het een relatief eenvoudige, logische vraag. Blijf gewoon kalm, en in plaats van te proberen om te komen met een instant aantal in je hoofd, loop de interviewer door uw trein van gedachten met je.
praktijk nodig? Voel je vrij om een mock interview te plannen met Matt, die al 12 jaar technische interviews doet, en vraag naar zijn feedback!