20 iOS Developer Interjú kérdések

felkészülés az iOS interjú

a nagy nap jön. Legyen szó telefonról, online vagy személyes interjúról, ez mindig egy kicsit stresszes. Tehát, hogy megkönnyítse a stresszt, amit előkészítő munkát végzett – befejezte a házi feladatot a vállalatnál, akivel interjút készít, a LinkedIn & github – on a választott vállalatnál a felvételi menedzsert és a mérnöki csapat felét követte, néhány olyan készségre és tudásra, amelyet egy ideje nem használt-készen áll.

de a következő US Navy Seals mottója: “kettő egy, az egyik pedig nincs” menjünk át egy másik gyors frissítő, hogy segítsen ász, hogy iOS interjú. Tehát menjünk bele!

kezdjük néhány alapvető kérdéssel, amelyekre remélem, már készen áll. Lehet, hogy nyilvánvalónak tűnnek, de megdöbbenne, hogy hány mérnök kudarcot vallott rajtuk a 12 évek óta technikai interjúkat készítek.

technikai kérdések

Ok, most, hogy ezt lefedtük, ugorjunk be a technikai kérdésekbe.

lásd itt a slideshare minden technikai interjú kérdések!

1. kérdés

UITableViewCell konstruktoron:

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

mire használható a reuseIdentifier?

a reuseIdentifierjelzi, hogy egy cella újra felhasználható a UITableView -ben. Például, ha a cella ugyanúgy néz ki, de eltérő tartalommal rendelkezik. A UITableViewfenntartja a UITableViewCell belső gyorsítótárát a reuseIdentifier-vel, és lehetővé teszi azok újrafelhasználását a dequeueReusableCellWithIdentifier: meghívásakor. A táblázatcella újbóli használatával a tableview görgetési teljesítménye jobb, mert új nézeteket nem kell létrehozni.

2. kérdés

magyarázza el az atomi és a nematomi szintetizált tulajdonságok közötti különbséget?

atomi és nem atomi arra utal, hogy egy tulajdonság szetterei/getterei atomikusan olvasnak-e és írnak-e értékeket a tulajdonságra. Ha az atomic kulcsszót egy tulajdonságon használják, akkor az ahhoz való hozzáférés “szinkronizálva”lesz. Ezért a getterhez intézett hívás garantáltan érvényes értéket ad vissza, ez azonban kis teljesítménybüntetéssel jár. Ezért bizonyos helyzetekben a nonatomic-ot arra használják, hogy gyorsabb hozzáférést biztosítson egy tulajdonsághoz, de van esély arra, hogy egy versenyfeltétel miatt a tulajdonság nulla legyen ritka körülmények között (amikor egy értéket egy másik szálból állítanak be, és a régi értéket felszabadították a memóriából, de az új értéket még nem rendelték hozzá teljesen a tulajdonság memóriájában lévő helyhez).

3. kérdés

magyarázza el a különbséget a másolat és a megőrzés között?

egy objektum megtartása azt jelenti, hogy a megtartási szám eggyel növekszik. Ez azt jelenti, hogy az objektum példánya a memóriában marad, amíg a megőrzési száma nullára nem csökken. A tulajdonság egy hivatkozást tárol erre a példányra, és ugyanazt a példányt megosztja bárki mással, aki azt is megtartotta. Másolás azt jelenti, hogy az objektumot duplikált értékekkel klónozzák. Senki mással nem osztják meg.

szeretné, hogy ász a technikai interjú? Ütemezzen egy technikai interjú gyakorlatot egy szakértővel most!

4. kérdés

mi a módszer swizzling Objective C és miért használja?

módszer swizzling lehetővé teszi a végrehajtását egy meglévő választó kell kapcsolni futásidőben egy másik végrehajtását osztályok feladó tábla. Swizzling lehetővé teszi, hogy írjon kódot lehet végrehajtani előtt és / vagy után az eredeti módszer. Például, hogy nyomon követhessük a végrehajtás idejét, vagy naplóbejegyzéseket szúrjunk be

#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

5. kérdés

mi a különbség a nem futó, inaktív, aktív, háttér és felfüggesztett végrehajtási állapotok között?

  • nem fut: Az alkalmazás nem indult vagy futott, de a rendszer megszüntette.
  • inaktív: az alkalmazás az előtérben fut, de jelenleg nem fogad eseményeket. (Lehet, hogy más kódot hajt végre.) Egy alkalmazás általában csak rövid ideig marad ebben az állapotban, amikor egy másik állapotba vált.
  • aktív: az alkalmazás az előtérben fut, és eseményeket fogad. Ez az előtérben lévő alkalmazások normál módja.
  • háttér: az alkalmazás a háttérben, és végrehajtó kódot. A legtöbb alkalmazás röviden belép ebbe az állapotba a felfüggesztés felé vezető úton. Azonban egy alkalmazás, amely extra végrehajtási időt kér, ebben az állapotban maradhat egy ideig. Ezenkívül egy közvetlenül a háttérbe indított alkalmazás az inaktív állapot helyett ebbe az állapotba kerül.
  • felfüggesztett: az alkalmazás a háttérben van, de nem hajtja végre a kódot. A rendszer automatikusan áthelyezi az alkalmazásokat ebbe az állapotba, és ezt megelőzően nem értesíti őket. Felfüggesztve egy alkalmazás a memóriában marad, de nem hajt végre semmilyen kódot. Alacsony memóriaállapot esetén a rendszer értesítés nélkül megtisztíthatja a felfüggesztett alkalmazásokat, hogy több hely maradjon az előtérben lévő alkalmazás számára.

6. kérdés

mi az a kategória és mikor használják?

a kategória egy módja annak, hogy további módszereket adjon hozzá egy osztályhoz anélkül, hogy kiterjesztené. Gyakran használják a kapcsolódó módszerek gyűjteményének hozzáadásához. Általános felhasználási eset az, hogy további módszereket adunk a kakaó keretrendszerekbe épített osztályokhoz. Például aszinkron letöltési módszerek hozzáadása a UIImage osztályhoz.

7. kérdés

meg tudja találni a hibát a következő kódban, és javasolhatja, hogyan kell kijavítani:

@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 

minden UI frissítést a fő szálon kell elvégezni. A fenti kódban a riasztási szöveg frissítése előfordulhat, hogy nem történik meg a fő szálon, mivel a globális feladási sor nem vállal garanciát . Ezért a kódot úgy kell módosítani, hogy mindig a fő szálon futtassa a felhasználói felület frissítését

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

8. kérdés

mi a különbség a viewDidLoadés viewDidAppear között?
melyiket kell használni a távoli szerverről származó adatok betöltéséhez a nézetben való megjelenítéshez?

viewDidLoadakkor hívják meg, amikor a nézet betöltődik, akár Xib fájlból, storyboardból, akár programozottan létrehozva loadView – ben. viewDidAppear minden alkalommal, amikor a nézet megjelenik az eszközön. Az, hogy melyiket használja, az adatok felhasználási esetétől függ. Ha az adatok meglehetősen statikusak, és nem valószínű, hogy megváltoznak, akkor viewDidLoad fájlba tölthetők be, és gyorsítótárazhatók. Ha azonban az adatok rendszeresen változnak, akkor a viewDidAppear használatával jobb betölteni. Mindkét esetben az adatokat aszinkron módon kell betölteni egy háttérszálra, hogy elkerüljék a felhasználói felület blokkolását.

9. kérdés

milyen megfontolásokra van szükség a távoli szerverről letöltött képeket megjelenítő UITableViewController írásakor?

ez egy nagyon gyakori feladat az iOS-ben, és egy jó válasz itt sok tudást lefedhet. A kérdés fontos információja az, hogy a képeket távolról tárolják, és időbe telhet a letöltés, ezért amikor “megfontolásokat” kér, akkor beszélnie kell:

  • csak akkor töltse le a képet, amikor a cellát nézetbe görgeti, azaz amikor cellForRowAtIndexPath hívják.
  • a kép aszinkron letöltése egy háttérszálra, hogy ne blokkolja a felhasználói felületet, így a Felhasználó tovább görgethet.
  • amikor a kép letöltődött egy cellához, ellenőriznünk kell, hogy a cella még mindig a nézetben van-e, vagy egy másik adat használta-e újra. Ha újra felhasználták, akkor el kell dobnunk a képet, különben vissza kell váltanunk a fő szálra, hogy megváltoztassuk a képet a cellán.

További jó válaszok a képek offline gyorsítótárazásáról szólnak, helyőrző képek használatával a képek letöltése közben.

10. kérdés

mi az a protokoll, és hogyan határozza meg a sajátját, és mikor használják?

a protokoll hasonló a Java interfészéhez. Meghatározza a szükséges és opcionális módszerek listáját, amelyeket egy osztálynak végre kell hajtania/végre kell hajtania, ha elfogadja a protokollt. Bármely osztály implementálhat egy protokollt, majd más osztályok üzeneteket küldhetnek az osztálynak a protokoll metódusok alapján anélkül, hogy ismernék az osztály típusát.

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

egy általános használati eset adatforrás biztosítása a UITableViewvagy UICollectionView számára.

11. kérdés

mi a KVC és KVO? Adjon példát a KVC használatára az érték beállításához.

a KVC a kulcs-érték kódolást jelenti. Ez egy olyan mechanizmus, amellyel az objektum tulajdonságai a stringek használatával érhetők el futásidőben, ahelyett, hogy statikusan ismerniük kellene a tulajdonságneveket a fejlesztési időben. A KVO a kulcs – érték megfigyelést jelenti, és lehetővé teszi egy vezérlő vagy osztály számára, hogy megfigyelje a tulajdonságérték változásait.

tegyük fel, hogy van egy tulajdonság name egy osztályon:

@property (nonatomic, copy) NSString *name;

a KVC segítségével érhetjük el:

NSString *n = 

és módosíthatjuk az értékét az üzenet elküldésével:

12. kérdés

mik azok a blokkok és hogyan használják őket?

a blokkok egyetlen feladat vagy viselkedési egység meghatározására szolgálnak anélkül, hogy teljes Objective-C osztályt kellene írni. A burkolatok alatt a blokkok továbbra is Objective C objektumok. Ezek olyan nyelvi szintű funkciók, amelyek lehetővé teszik a programozási technikák, mint a lambdák és a bezárások támogatását az Objective-C-ben. a blokk létrehozása a ^ { } szintaxis segítségével történik:

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

meg lehet hivatkozni, mint így:

myBlock();

ez lényegében egy függvénymutató, amely szintén rendelkezik egy aláírással, amely felhasználható a típusbiztonság érvényesítésére fordításkor és futásidőben. Például átadhat egy blokkot egy adott aláírással egy ilyen módszerhez:

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

ha azt akarta, hogy a blokk bizonyos adatokat kapjon, megváltoztathatja az aláírást, hogy tartalmazza őket:

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

13. kérdés

milyen mechanizmusokat biztosít az iOS a többszálú szálasítás támogatására?

  • NSThread létrehoz egy új, alacsony szintű szálat, amelyet a start metódus meghívásával lehet elindítani.
NSThread* myThread = initWithTarget:self selector:@selector(myThreadMainMethod:) object:nil];; 
  • NSOperationQueue lehetővé teszi egy szálkészlet létrehozását és használatát a NSOperations párhuzamos végrehajtására. A NSOperations a fő szálon is futtatható, ha NSOperationQueue – et kér a mainQueue – hez.
NSOperationQueue* myQueue = init];; ;
  • a GCD vagy a Grand Central Dispatch az Objective-C modern funkciója, amely gazdag metódusokat és API-kat kínál a közös többszálú feladatok támogatása érdekében. A GCD lehetőséget nyújt a feladatok feladására a fő szálon, egy egyidejű várólistán (a feladatok párhuzamosan futnak) vagy egy soros várólistán (a feladatok FIFO sorrendben futnak).
dispatch_queue_t myQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_async(myQueue, ^{ printf("Do some work here.\n");});

14. kérdés

mi a válaszadó lánc?

amikor egy nézetben esemény történik, például egy érintéses esemény, a nézet az eseményt a UIResponderobjektumokhoz társított UIView láncra indítja. Az első UIResponder maga a UIView, ha nem kezeli az eseményt, akkor folytatja a láncot, amíg UIResponder nem kezeli az eseményt. A lánc magában foglalja a UIViewControllers-t, a szülő UIViews-t és a hozzájuk tartozó UIViewControllers-t, ha ezek egyike sem kezeli az eseményt, akkor a UIWindow megkérdezi, hogy képes-e kezelni, végül, ha ez nem kezeli az eseményt, akkor a UIApplicationDelegate – t.

ha lehetőséget kap arra, hogy ezt kihúzza, érdemes megtenni, hogy lenyűgözze a kérdezőt:

írja be a kép leírását itt

15. kérdés

mi a különbség a küldött és az értesítés használata között?

mindkettőt értékek és üzenetek küldésére használják az érdekelt feleknek. A delegált egy-egy kommunikációra szolgál, és az Apple által támogatott minta. A delegálás során az osztálynövelő eseményeknek lesz egy tulajdonságuk a delegált számára, és általában elvárják, hogy valamilyen protocol – ot valósítson meg. A delegáló osztály ezután meghívhatja a _delegate_s protokoll metódusokat.

az értesítés lehetővé teszi az osztály számára, hogy az eseményeket az egész alkalmazásban közvetítse az érdekelt felek számára. A műsorszóró osztálynak nem kell tudnia semmit az esemény hallgatóiról, ezért az értesítés nagyon hasznos az alkalmazások összetevőinek szétválasztásában.

 postNotificationName:@"TestNotification" object:self];

16. kérdés

mi a preferenciája a felhasználói felület írásakor? Xib fájlok, forgatókönyvek vagy programozott UIView?

erre nincs jó vagy rossz válasz, de nagyszerű módja annak, hogy lássa, megérti-e az egyes megközelítések előnyeit és kihívásait. Itt vannak a gyakori válaszok, amelyeket hallok:

  • a Storyboard és a Xib nagyszerűek a felhasználói felület gyors előállításához, amelyek megfelelnek a tervezési specifikációnak. A termékmenedzserek számára is nagyon könnyű vizuálisan látni, hogy milyen messze van a képernyő.
  • Storyboard ‘ s is nagy képviselő áramlás egy alkalmazás, és lehetővé teszi a magas szintű vizualizáció egy egész alkalmazás.
  • Storyboard hátránya, hogy egy csapat környezetben nehéz együttműködni, mert ők egy fájlt, és merge válik nehéz kezelni.
  • a Storyboards és az Xib fájlok is megkettőződhetnek, és nehezen frissíthetők. Például, ha az összes gombnak azonosnak kell lennie, és hirtelen színváltozásra van szüksége, akkor ez hosszú/nehéz folyamat lehet a forgatókönyvek és a xibs között.
  • a UIView programozott felépítése lehet bőbeszédű és unalmas, de lehetővé teszi a nagyobb ellenőrzést, valamint a kódok könnyebb elválasztását és megosztását. Ők is könnyebben egység tesztelt.

a legtöbb fejlesztő az összes 3 kombinációját javasolja, ahol van értelme megosztani a kódot, majd újra felhasználható UIView s vagy Xib fájlokat.

17. kérdés

hogyan tárolná biztonságosan a privát felhasználói adatokat offline állapotban egy eszközön? Milyen egyéb biztonsági bevált gyakorlatokat kell alkalmazni?

erre ismét nincs helyes válasz, de ez egy nagyszerű módja annak, hogy megnézze, mennyit ásott az ember az iOS biztonságába. Ha interjút készít egy bankkal, akkor szinte biztosan elvárom, hogy valaki tudjon róla valamit, de minden vállalatnak komolyan kell vennie a biztonságot, tehát itt van az ideális témák listája, amelyet elvárnék egy válaszban:

  • ha az adatok rendkívül érzékenyek, akkor soha nem szabad offline állapotban tárolni az eszközön, mert minden eszköz feltörhető.
  • a kulcstartó az adatok biztonságos tárolásának egyik lehetősége. A titkosítás azonban az eszköz pin-kódján alapul. A felhasználók nem kényszerülnek pin-kód beállítására, így bizonyos helyzetekben az adatok nem is titkosíthatók. Ezenkívül a felhasználók pin-kódja könnyen feltörhető.
  • a jobb megoldás az, hogy valami hasonló SQLCipher, amely egy teljesen titkosított SQLite adatbázis. A titkosítási kulcsot az alkalmazás kikényszerítheti és elkülönítheti a felhasználó pin-kódjától.

egyéb biztonsági bevált gyakorlatok:

  • csak távoli szerverekkel kommunikáljon SSL/HTTPS – en keresztül.
  • ha lehetséges végre tanúsítvány rögzítését az alkalmazás, hogy megakadályozzák az ember-in-the-middle támadások nyilvános WiFi.
  • törölje az érzékeny adatokat a memóriából felülírással.
  • győződjön meg arról, hogy a benyújtott adatok minden érvényesítése a szerver oldalon is fut.

18. kérdés

mi az MVC és hogyan valósul meg az iOS-ben?
milyen buktatókat tapasztaltál vele? Van-e alternatívája az MVC-nek?

MVC jelentése modell, nézet, vezérlő. Ez egy tervezési minta, amely meghatározza, hogyan kell elválasztani a logikát a felhasználói felületek megvalósításakor. Az iOS rendszerben az Apple a UIView alaposztályt biztosítja az összes _View_s számára, a UIViewController pedig támogatja a vezérlőt, amely képes hallgatni az eseményeket egy nézetben, és frissíteni a nézetet, amikor az adatok megváltoznak. A modell egy alkalmazás adatait reprezentálja, és bármilyen NSObject használatával megvalósítható, beleértve az olyan adatgyűjtéseket is, mint a NSArray és a NSDictionary.

néhány buktató, amelyet az emberek eltaláltak, dagadt UIViewController és nem választja el a kódot az MVC formátumon kívüli osztályokra. Nagyon ajánlom, hogy olvassa el néhány megoldást erre:

  • 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

ami az alternatívákat illeti, ez elég nyílt végű. A leggyakoribb alternatíva az MVVM a ReactiveCocoa használatával,de mások közé tartozik a Viper és a funkcionális reaktív kód.

19.kérdés

a vállalat termékmenedzsere arról számol be, hogy az alkalmazás összeomlik. Mit csinálsz?

ez egy nagyszerű kérdés minden programozási nyelvben, és valóban úgy tervezték, hogy lássa, hogyan oldja meg a problémát. Ön nem kap sok információt, de néhány interjú csúszik meg további részleteket a kérdés, ahogy megy végig. Egyszerű indítás:

  • szerezd meg a pontos lépéseket a reprodukáláshoz.
  • tudja meg az eszközt, iOS verzió.
  • rendelkeznek a legújabb verzióval?
  • get eszköz naplók, ha lehetséges.

miután reprodukálni tudja, vagy több információval rendelkezik, kezdje el használni a szerszámozást. Tegyük fel, hogy összeomlik egy memóriaszivárgás miatt, azt várnám, hogy valaki javasolja az eszközök szivárgási eszközének használatát. Egy igazán lenyűgöző jelölt elkezdene beszélni egy egységteszt megírásáról, amely reprodukálja a problémát és hibakeresést végez rajta.

a kérdés egyéb változatai közé tartozik a lassú felhasználói felület vagy az alkalmazás fagyasztása. Ismét az ötlet az, hogy lássuk, hogyan oldja meg a problémát, milyen eszközöket tudsz, amelyek segítenek, és tudod, hogyan kell helyesen használni őket.

20. kérdés

mi az Automatikus elrendezés? Mit jelent, ha egy korlátozást “megtört” az iOS?

az AutoLayout a UIView s elrendezésének módja olyan korlátozások segítségével, amelyek meghatározzák a helyet és a méretet más nézetekhez képest vagy explicit értékeken alapulnak. Az automatikus elrendezés megkönnyíti az olyan képernyők tervezését, amelyek átméretezik és jobban elrendezik összetevőiket a képernyő mérete és tájolása alapján. _Constraint_s tartalmazza:

  • a vízszintes/függőleges távolság beállítása 2 nézet között
  • a magasság/szélesség beállítása egy másik nézethez viszonyított arányra
  • a szélesség/magasság/távolság kifejezett statikus érték lehet

néha a korlátok ütköznek egymással. Képzeljen el például egy UIView – et, amelynek 2 magasságkorlátozása van: az egyik azt mondja, hogy a UIView 200 képpont magas legyen, a második pedig azt, hogy a magasság kétszerese legyen a gomb magasságának. Ha az iOS futási ideje nem tudja kielégíteni mindkét korlátozást, akkor csak egyet kell választania. A másikról azt jelentik, hogy az iOS “megtörte”.

Standard kérdések

“Mesélj magadról.”

ez egy nagyon trükkös! Olyan sok ember hangosan olvassa el önéletrajzát (elfelejtve, hogy jól nézek rá!), felsorolja az összes osztályt, amelyet az egyetemen vettek fel, minden pozíciót, amelyet valaha tartottak (és ez valóban összeadja a felső szintű mérnököket) és minden felelősséget (ami gyakran előfordul, hogy ugyanaz a 2 vagy 3 Vállalat között, ahol az adott személy dolgozott. Tehát 20 perccel később még mindig nem tudok semmi újat/az önéletrajzon kívül a jelöltről, 20 perc múlva vagyunk, és addigra azt hiszem, hogy akár robotok is lehetnek (és a robotok általában nem illenek túl jól a dinamikus csapatokhoz).

tehát tegye meg magának (és a bérleti menedzsernek) egy szívességet azzal, hogy elkészíti a háttér 2 perc hosszú emelési pályáját – tartsa egyszerű, tömör és rövid, majd adjon hozzá valami személyeset a végén. Szeretsz futni? A lánya focicsapatát edzi? Die hard Star Wars rajongó? Egy kis személyiség hozzáadása nagyszerű jégtörő, és csodálatos átmenetet eredményez az interjú mélyebb részébe.

“ismertesse egy érdekes problémát, és hogyan oldotta meg.”

az esélye, hogy meghallja ezt, alapvetően 99%, ezért jobb, ha készen áll egy nagyszerű válaszra! Íme néhány tipp: gondolj egy különösen csodálatos projektre, amelyre büszke vagy. Megvan? Zseniális! Most fogjon egy darab papírt, és foglalja össze 5 felsoroláspontban.
1. felsoroláspont-nagyon rövid háttértörténete a körülmények mögött a projekt
2. felsoroláspont-a természet a projekt maga
3.felsoroláspont – a problémák már találkoztam megoldása közben/őket
4thbullet – hogyan oldotta meg a fenti nehézségek
5. felsoroláspont – mit tanultál belőle.

most keressen valakit, aki meghallgatja (egy barát, partner, kolléga), és kérdezze meg, hogy van-e értelme a történetnek (levonva a technikai szempontokat, ha az a személy, akivel beszél, nem a társa). Ez egy nagyszerű módja annak, hogy érvényesítse, ha a történet tartja magát össze.

meg lennél döbbenve, hogy hányszor hallottam ilyeneket: “aztán elmentem Johnhoz, és ő az általa létrehozott eszközt használta a kritikus hiba eltávolítására, amely aztán……”. Ki az a Tom? A menedzsered? Gyakornok? Peer? Miért mentél hozzá a társaságod többi tagja közül? Mi az a mágikus eszköz, amit összerakott? Melyik kritikus hibát távolította el pontosan és hogyan? Mi lett az eredmény?

megkapod az ötletet 😃

további bónusz? Most van 5 pontokba szedve használhatja, mint egy puskát az interjú során anélkül, hogy néz ki, mint az a fickó, aki olvassa az önéletrajzát hangosan.

most ugorjunk be a furcsa kérdésekre, amelyeket néhány bérbeadó menedzser szeretne dobni, hogy felborítsa a játékot.

  • hogyan tesztelnél egy kenyérpirítót?
  • hány toll fér el egy repülőgépben?
  • hány ablak van San Franciscóban?
  • hány golflabda fér el egy iskolabuszban?
  • hány Big Mac – et ad el a McDonald ‘ s évente az Egyesült Államokban?

a lista folytatódik. Bár semmi köze a technikai készségekhez, jó munkát végez annak ellenőrzésében, hogy hogyan kezeli a görbe golyókat, és hogy képes-e logikus lépésről lépésre megoldani a problémamegoldást. A legtöbb esetben nincs tökéletes válasz az ilyen típusú kérdésekre (bár a nyugalma érdekében google-on is megkeresheti őket). Arról szól, hogyan magyarázza el logikáját az interjúkészítőnek.

itt van a válasz a golflabda kérdésre Michael Beauchamp, így kap az ötlet, hogy mit beszélek:

úgy gondolom, hogy egy szokásos iskolabusz körülbelül 8 láb széles, 6 láb magas, 20 láb hosszú-ez csak egy találgatás az iskolabuszok mögött csapdába esett több ezer óra alapján, miközben a forgalom minden irányban leáll.

ez 960 köblábot jelent, és mivel 1728 köbcentiméter van egy könyöklábban, ez körülbelül 1,6 millió köbcentimétert jelent.

kiszámítom a golflabda térfogatát körülbelül 2,5 köbcentiméterre (4/3 * pi*.85).85 hüvelyk a golflabda sugara.

ossza meg ezt a 2,5 köbcentimétert 1-re.6 millió, és 660.000 golflabdát kapsz. Mivel azonban vannak ülések és szar ott helyet foglal el, és mivel a gömb alakú golflabda azt jelenti, hogy jelentős üres hely lesz közöttük, amikor egymásra rakják, 500 000 golflabdára kerekítek.

látod? Lépésről lépésre. És hirtelen ez egy viszonylag egyszerű, logikus kérdés. Csak maradj nyugodt, és ahelyett, hogy megpróbálnál egy azonnali számot kitalálni a fejedben, sétálj a kérdezővel a gondolataidon keresztül.

szüksége van valós gyakorlatra? Nyugodtan ütemezzen be egy álinterjút Matt-tel, aki 12 éve készít technikai interjúkat, és kérje visszajelzését!

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.