30 nejlepších otázek a odpovědí na pohovorech o Objective-C (2026)

Otázky a odpovědi na pohovoru o Objective-C

Příprava na roli v Objective-C znamená předvídat, co tazatelé zkoumají nad rámec syntaxe a paměťových modelů. Pohovor v Objective-C odhaluje hloubku uvažování, úsudek o designu a praktické porozumění prostřednictvím cílených otázek konzistentně.

Tyto otázky otevírají cesty pro absolventy prvních ročníků, inženýry střední úrovně i seniory a odrážejí trendy v oboru a reálné výsledky. Zaměstnavatelé si cení technické odbornosti, analýzy a formulování problémů od profesionálů s praktickými zkušenostmi, kteří spolupracují s vedoucími týmů a manažery na aplikaci dovedností Objective-C v produkčním prostředí. Tato perspektiva podporuje růst v různých fázích kariéry.
Přečtěte si více ...

👉 Stažení PDF zdarma: Otázky a odpovědi k pohovoru o Objective-C

Nejčastější otázky a odpovědi na pohovoru o Objective-C

1) Co je Objective-C a k čemu se používá?

Objective-C je striktní nadmnožina programovacího jazyka C který přidává objektově orientované funkce a dynamické běhové prostředí. Původně byl vyvinut na začátku 1980. let a je primárním jazykem používaným pro macOS a vývoj aplikací pro iOS předtím SwiftDědí syntaxi z jazyka C, ale pro objekty používá zasílání zpráv ve stylu Smalltalku, což umožňuje dynamické volání metod za běhu.

Objective-C se používá pro vývoj nativní aplikace na platformách Apple protože se úzce integruje s frameworky Apple, jako je Foundation a Cocoa/Cocoa Touch. To umožňuje vývojářům vytvářet aplikace s plným přístupem k systémovým API a bohatým komponentám uživatelského rozhraní.

Příklad:

#import <Foundation/Foundation.h>
@interface Sample : NSObject
- (void)showMessage;
@end

@implementation Sample
- (void)showMessage {
    NSLog(@"Hello from Objective-C!");
}
@end
int main() {
    Sample *obj = [[Sample alloc] init];
    [obj showMessage];
    return 0;
}

2) Vysvětlete základní strukturu programu v Objective-C.

Program v Objective-C se obvykle skládá z:

  1. Příkazy preprocesoru (Jako je například #import)
  2. Rozhraní (@interface) – definuje třídu a její veřejné metody/vlastnosti
  3. Implementace (@implementation) – obsahuje definice metod
  4. Metody – funkce spojené s objekty
  5. Proměnné si Výrazy a příkazy – logika kódu
  6. Komentáře popsat logiku kódu

Tato struktura jasně odděluje rozhraní od implementace, což pomáhá modularizovat kód.


3) Co jsou protokoly v Objective-C a jaké typy existují?

V Objective-C, a protokol je podobné rozhraní v jiných jazycích. Definuje sadu metod, které může libovolná třída přijmout a implementovat, což umožňuje vícenásobnou dědičnost signatur metod (ne implementace).

Existují dva typy:

  • Formální protokoly – Deklarováno s použitím @protocolmůže definovat požadováno si volitelný metody.
  • Neformální protokoly – Obvykle implementováno jako kategorie na NSObject; volitelné ze své podstaty.

Případ použití: Vzory delegace v UIKitu často používají protokoly (např. UITableViewDelegate).


4) Jaký je rozdíl mezi #import a #include?

  • #include je direktiva preprocesoru jazyka C, která vkládá obsah jednoho souboru do jiného, ​​což může způsobit více problémů s inkluzí.
  • #import je direktiva Objective-C, která zajišťuje, že soubor je zahrnut pouze jednou, čímž se zabrání duplicitě.

Tak, #import je bezpečnější a preferovaný ve vývoji v Objective-C.


5) K čemu se používají kategorie v Objective-C?

Kategorie rozšiřují existující třídu o přidávání metod bez vytváření podtříd nebo úpravou původního kódu. Umožňují logicky oddělit metody do skupin nebo přidat další chování do tříd frameworku, jako například NSString.

Příklad použití: Přidání užitných metod do NSArray bez podtřídování:

@interface NSArray (Utility)
- (NSArray *)reversedArray;
@end

6) Co dělá @synthesize?

Jedno @synthesize direktiva říká kompilátoru, aby generování metod getter a setter pro nemovitost deklarovanou s @propertyToto vynucuje zapouzdření a automatizuje standardizovaný kód.

Od Xcode 4.4, autosyntéza je výchozí – často nemusíte psát @synthesize výslovně.


7) Vysvětlete správu paměti v Objective-C.

Použití Objective-C Automatické počítání referencí (ARC) pro správu paměti. ARC přidává kompilátorem generovaná volání retain/release, která zajišťují, že objekty zůstanou aktivní tak dlouho, jak je potřeba, a jsou uvolněno, když nezbývají žádné reference.

Klíčové koncepty:

  • Silné reference udržovat objekty živé
  • Slabé reference neuchovávejte objekty, vyhýbejte se cyklům uchovávání

Příklad:

@property (strong, nonatomic) NSString *name;
@property (weak, nonatomic) id delegate;

8) Jaký je rozdíl mezi NSArray a NSMutableArray?

  • NSArray: Neměnné pole – obsah se po vytvoření nemůže změnit.
  • NSMutableArray: Měnitelné pole – umožňuje přidávat, odebírat nebo nahrazovat prvky.

Příklad:

NSMutableArray *list = [NSMutableArray arrayWithObjects:@"A", @"B", nil];
[list addObject:@"C"]; // Allowed

9) Co je zapouzdření dat v Objective-C?

Zapouzdření dat spojuje data a funkce, které s nimi pracují, do jednoho celku. jedna jednotka (třída) a zároveň omezuje přímý přístup zvenčí třídy. Tím se vynucuje modularita, ochrana dat a abstrakce.


10) Jak funguje volání metod v Objective-C?

Použití Objective-C předávání zpráv syntax:

[object methodName];

Zde, object obdrží zprávu k vyvolání methodNamePokud metoda není vyřešena, běhové prostředí zpracuje přeposílání nebo vyvolá výjimku. Tato flexibilita je silnou vlastností dynamického běhového prostředí Objective-C.


11) Vysvětlete rozdíl mezi vlastnostmi strong, weak, assign a copy v Objective-C.

Vlastnosti Objective-C definují, jak je paměť spravována pro odkazy na objekty, a výběr správného atributu je zásadní pro stabilitu aplikace. strong Atribut zvyšuje počet odkazů na objekt a zajišťuje, že zůstane v paměti tak dlouho, dokud daná vlastnost existuje. Běžně se používá pro vlastnické vztahy. weak atribut si objekt nezachová, automaticky nastaví odkaz na nil když je objekt uvolněn, což pomáhá předcházet cyklům uchovávání, zejména ve vzorcích delegátů.

Jedno assign Atribut se používá pro primitivní datové typy, jako jsou celá čísla a čísla s plovoucí čárkou. Neuchovává objekty a neměl by se používat pro objekty Objective-C v ARC. Atribut copy vytváří copy přiřazeného objektu, což je obzvláště důležité pro proměnlivé objekty, jako je NSMutableString aby se zabránilo neúmyslné úpravě.

Atribut Zachovává objekt Použijte pouzdro
silný Ano Vlastnictví
slabý Ne Delegáti
přiřadit Ne Primitivové
kopie Kopie Nezměnitelná bezpečnost

12) Jak interně funguje automatické počítání referencí (ARC)?

Automatické počítání referencí (ARC) je systém správy paměti za kompilace, který automaticky vkládá volání funkcí retain, release a autorelease. Na rozdíl od garbage collection se ARC nespouští za běhu; kompilátor místo toho analyzuje životní cykly objektů a určuje, kde jsou volání správy paměti nezbytná. To zajišťuje efektivní využití paměti bez zásahu vývojáře.

ARC sleduje silné reference na objekty a uvolňuje je, když už žádné silné reference nezbývají. Slabé reference se po uvolnění alokace objektu automaticky vynulují, což zvyšuje bezpečnost aplikace. ARC nespravuje Core... Foundation objekty automaticky, takže techniky přemostění, jako například __bridge si __bridge_transfer jsou povinné.

Například cykly uchování mohou nastat, i když se dva objekty na sebe silně odkazují, což je nutné vyřešit pomocí slabých odkazů.


13) Co je běhové prostředí Objective-C a proč je důležité?

Runtime prostředí Objective-C je výkonný systém, který umožňuje dynamické chování v programech Objective-C. Umožňuje rozpoznávání metod za běhu, nikoli během kompilace, což umožňuje funkce, jako je dynamické odesílání metod, přeposílání zpráv a introspekce.

Toto běhové prostředí umožňuje Objective-C určit, kterou metodu volat, pouze když je odeslána zpráva. Pokud metoda neexistuje, běhové prostředí nabízí několik možností, jak ji zpracovat, například přeposlat zprávu jinému objektu. Díky tomu je Objective-C vysoce flexibilní a rozšiřitelný.

Běhové funkce také umožňují vývojářům kontrolovat hierarchie tříd, dynamicky přidávat metody a „swizzle“ implementace metod, což se běžně používá v ladicích a analytických frameworkech.


14) Co jsou bloky v Objective-C a jaké jsou jejich výhody?

Bloky v Objective-C jsou uzávěry, které zapouzdřují kód a proměnné pro pozdější spuštění. Jsou podobné lambda výrazům v jiných programovacích jazycích a běžně se používají pro zpětná volání, asynchronní provádění a výčty.

Bloky zachycují proměnné z okolního rozsahu platnosti, které lze upravovat pomocí __block klíčové slovo. Zjednodušují čitelnost kódu a v mnoha scénářích snižují potřebu delegátních vzorů.

Mezi výhody bloků patří vylepšená lokalita kódu, lepší čitelnost a snadnost asynchronního programování. Vývojáři si však musí dávat pozor na cykly uchovávání, když bloky silně zachycují self, Použitím __weak odkazy uvnitř bloků zabraňují únikům paměti.


15) Jaký je rozdíl mezi nil a NULL v Objective-C?

V Objective-C, nil představuje ukazatel nulového objektu, zatímco NULL představuje nulový ukazatel pro typy C. Ačkoli se často vyhodnocují na stejnou hodnotu (nulu), sémanticky se liší a měly by být používány odpovídajícím způsobem.

nil se používá pro objekty Objective-C a umožňuje bezpečné odesílání zpráv bez pádu aplikace. Když je zpráva odeslána do nil, jednoduše vrátí nulu nebo nilNaproti tomu dereferencování NULL Ukazatel v jazyce C má za následek nedefinované chování a často vede k pádu aplikace.

Použití nil zlepšuje bezpečnost a čitelnost kódu při práci s objekty Objective-C a zároveň NULL by mělo být rezervováno pro struktury a ukazatele v jazyce C.


16) Vysvětlete delegaci v Objective-C na příkladu.

Delegace je návrhový vzor v Objective-C, který umožňuje jednomu objektu sdělovat události nebo rozhodnutí jinému objektu. Je implementována pomocí protokolů a slabých referencí, aby se zabránilo cyklům uchovávání. Delegace podporuje volné propojení a opakované použití.

Delegující objekt definuje protokol a objekt delegáta tento protokol přijímá a implementuje. Delegující objekt poté volá metody svého delegáta, když dojde k určitým událostem.

Například tabulkový pohled upozorní svého delegáta, když je vybrán řádek. Tento design umožňuje přizpůsobení chování bez vytváření podtříd a je široce používán v frameworkech Apple.


17) Co jsou kategorie versus rozšíření v Objective-C?

Kategorie i rozšíření umožňují vývojářům přidávat funkce do existujících tříd, ale slouží různým účelům. Kategorie přidávají do třídy veřejné metody a často se používají k organizaci kódu nebo k přidání užitných metod. Rozšíření, známá také jako rozšíření tříd, jsou obvykle deklarována v implementačních souborech a umožňují přidávat soukromé vlastnosti a metody.

Kategorie nemohou přidávat proměnné instance, zatímco rozšíření ano. Kategorie se často používají k vylepšení tříd frameworku, zatímco rozšíření se používají pro zapouzdření a detaily interní implementace.

Pochopení rozdílu zajišťuje lepší návrh tříd a lepší údržbu.


18) Jak funguje KVC (kódování klíč-hodnota) v Objective-C?

Kódování klíč-hodnota (KVC) umožňuje nepřímý přístup k vlastnostem objektu pomocí řetězcových klíčů. Umožňuje dynamické nastavování a načítání hodnot bez explicitního volání metod getter nebo setter.

KVC se široce používá v frameworkech pro vazby a serializaci Cocoa. Spoléhá na dobře definovaný vyhledávací vzor pro rozpoznávání klíčů a podporuje operátory kolekcí pro práci s poli a sadami.

Například, valueForKey: dynamicky načítá hodnotu, zatímco setValue:forKey: přiřadí hodnotu. Nesprávné použití klíče může vést k výjimkám za běhu, proto je nutné pečlivé ověření.


19) Co je KVO (pozorování klíče a hodnoty) a jak se liší od notifikací?

Pozorování klíčových hodnot (KVO) umožňuje objektům sledovat změny specifických vlastností jiného objektu. Je úzce propojeno s KVC a umožňuje automatická upozornění při změně hodnoty vlastnosti.

Na rozdíl od oznámení je KVO detailní a specifické pro danou vlastnost, zatímco oznámení jsou založena na vysílání. KVO vyžaduje řádné odstranění pozorovatele, aby se předešlo pádům, zatímco oznámení jsou volněji propojena.

KVO je ideální pro sledování změn modelu v architektuře MVC, zatímco notifikace jsou vhodnější pro události v celém systému.


20) Jaké jsou výhody a nevýhody používání Objective-C v dnešní době?

Objective-C nabízí dynamické běhové funkce, vyspělé nástroje a hlubokou integraci se staršími frameworky Apple. Umožňuje flexibilní zpracování zpráv a je stále široce používán ve velkých, vyspělých kódových bázích.

Objective-C má však podrobnější syntaxi, strmější křivku učení a byl z velké části nahrazen... Swift pro nový vývoj. Swift poskytuje vylepšenou bezpečnost, čitelnost a optimalizaci výkonu.

Vzhled Výhody Nevýhody
Runtime Dynamický Komplex
Syntax Silný Podrobný
Ekosystém zralý Klesající přijetí

21) Vysvětlete životní cyklus třídy Objective-C od alokace po dealokaci.

Životní cyklus objektu Objective-C začíná alokací paměti a končí jejím uvolněním. Tento životní cyklus je v starších systémech řízen primárně pomocí ARC nebo ručního počítání referencí. Proces začíná alloc, který alokuje paměť pro objekt a inicializuje jeho proměnné instance na výchozí hodnoty. Následuje init, který připraví objekt k použití nastavením počátečního stavu.

Po inicializaci zůstává objekt aktivní, dokud existuje alespoň jeden silný odkaz. Během své životnosti může objekt přijímat zprávy, účastnit se delegace a interagovat s ostatními objekty. Po uvolnění všech silných odkazů se ARC automaticky spustí. dealloc, kde se provádějí úklidové úlohy, jako je odstranění pozorovatelů nebo uvolnění zdrojů.

Pochopení tohoto životního cyklu je nezbytné pro zamezení úniků paměti, visících ukazatelů a nesprávného zacházení s prostředky.


22) Jak funguje přeposílání zpráv v Objective-C?

Přeposílání zpráv je vícekrokový mechanismus, který se používá, když objekt obdrží zprávu, kterou nedokáže zpracovat. Místo okamžitého pádu nabízí Objective-C několik možností dynamického řešení metody. Nejprve běhové prostředí kontroluje +resolveInstanceMethod: aby se zjistilo, zda lze metodu dynamicky přidat. Pokud se to nevyřeší, pokračuje se k -forwardingTargetForSelector: přesměrovat zprávu na jiný objekt.

Pokud se to nezdaří, běhové prostředí vyvolá -methodSignatureForSelector: si -forwardInvocation: ručně přeposlat zprávu. To umožňuje proxy objekty, dekorátory a dynamické chování.

Tento mechanismus zdůrazňuje flexibilitu Objective-C a běžně se používá v frameworkech, jako je NSProxy a mocking knihovnách.


23) Co jsou to cykly uchovávání a jak jim předcházet?

K cyklu uchování dat dochází, když dva nebo více objektů na sebe navzájem uchovávají silné odkazy, což brání ARC v jejich uvolnění. To vede k únikům paměti, i když objekty již nejsou potřeba. Cykly uchování dat se běžně vyskytují mezi nadřazenými a podřízenými objekty, delegáty a zachycenými bloky. self.

Aby se zabránilo cyklům uchovávání, vývojáři používají slabé reference pro vztahy bez vlastnictví, jako jsou delegáti. V blocích, __weak or __unsafe_unretained odkazy na self se používají k zamezení silného zachycení.

Identifikace cyklů uchovávání dat pomocí nástrojů a pečlivé navrhování sémantiky vlastnictví jsou klíčové dovednosti pro vývojáře v Objective-C pracující na dlouhodobě běžících aplikacích.


24) Jak Objective-C zvládá souběžnost a multithreading?

Objective-C nabízí několik mechanismů pro souběžnost, přičemž nejpoužívanějším je Grand Central Dispatch (GCD). GCD umožňuje vývojářům odesílat úlohy do front, které se provádějí buď sériově, nebo souběžně. Abstrahuje správu vláken, čímž zlepšuje výkon a bezpečnost.

Mezi další nástroje pro souběžnost patří NSThread, NSOperation, a NSOperationQueue. Zatímco NSThread nabízí nízkoúrovňovou kontrolu, NSOperationQueue poskytuje správu závislostí, rušení a zpracování priorit.

GCD je obecně preferován pro kód kritický pro výkon, zatímco NSOperationQueue je vhodný pro složité pracovní postupy vyžadující jemnozrnnou kontrolu.


25) Co je to method swizzling a kdy by se měl používat?

Method swizzling je běhová technika, která umožňuje vývojářům vyměňovat si implementace dvou metod. Toho je dosaženo pomocí běhových API Objective-C a umožňuje modifikaci chování bez vytváření podtříd nebo úprav původního zdrojového kódu.

Swizzling se běžně používá v analytických, protokolovacích, ladicích a testovacích frameworkech. Měl by se však používat s opatrností, protože může způsobit neočekávané chování, ztížit ladění a narušit funkčnost, pokud se změní základní implementace.

V produkčním kódu by mělo být přepínání metod pečlivě zdokumentováno a omezeno na dobře definované případy užití, aby se zachovala stabilita kódu.


26) Vysvětlete rozdíl mezi mělkou a hlubokou kopií v Objective-C.

Mělká kopie duplikuje objekt kontejneru, ale ne objekty, které obsahuje. Původní i kopírovaný kontejner odkazují na stejné podkladové objekty. Naproti tomu hluboká kopie duplikuje kontejner i všechny vnořené objekty a vytváří tak nezávislé kopie.

Kolekce tříd Objective-C obvykle standardně provádějí mělké kopie. Hluboké kopírování vyžaduje explicitní implementaci, často s použitím NSCopying nebo manuální iteraci.

Typ kopírování Kontejner zkopírován Prvky zkopírovány
Mělký Ano Ne
Hluboký Ano Ano

Pochopení tohoto rozdílu je nezbytné při práci s proměnlivými datovými strukturami, aby se předešlo nezamýšleným vedlejším účinkům.


27) Jak Objective-C podporuje introspekci?

Introspekce v Objective-C umožňuje objektům zkoumat jejich vlastní strukturu a chování za běhu. To zahrnuje kontrolu členství ve třídě, dostupnosti metod a shody s protokolem. Metody jako například isKindOfClass:, respondsToSelector:, a conformsToProtocol: se běžně používají.

Introspekce umožňuje defenzivní programování a dynamickou adaptaci chování. Například objekt může před voláním metody zkontrolovat, zda jiný objekt implementuje danou metodu, což zlepšuje bezpečnost za běhu.

Tato funkce je obzvláště užitečná ve volně propojených systémech a architekturách založených na pluginech.


28) Jaký je rozdíl mezi isEqual: a == v Objective-C?

Jedno == Operátor porovnává paměťové adresy a určuje, zda dva odkazy ukazují na stejný objekt. isEqual: Metoda porovnává obsah nebo logickou shodu objektů.

Například dva různé objekty typu string se stejným textovým obsahem mohou vrátit NO ve srovnání s použitím ==, Ale YES ve srovnání s použitím isEqual:. Mnoho Foundation přepsání tříd isEqual: poskytnout smysluplné srovnání rovnosti.

Výběr správné metody porovnání je nezbytný pro zamezení logickým chybám, zejména při práci s kolekcemi, jako jsou množiny a slovníky.


29) Jak se Objective-C integruje s jazykem C a C++ kód?

Objective-C je plně kompatibilní s jazykem C a může s ním interagovat. C++ prostřednictvím cíle-C++. Používáním .mm soubory, vývojáři mohou kombinovat Objective-C a C++ kód ve stejném zdrojovém souboru.

Tato integrace umožňuje opětovné použití stávajících jazyků C a C++ knihovny a zároveň využívat výhod objektově orientovaných funkcí Objective-C. Vývojáři musí pečlivě spravovat změny názvů a životní cykly objektů, aby se vyhnuli problémům s pamětí a kompatibilitou.

Objektivní-C++ se běžně používá v aplikacích kritických pro výkon, jako jsou herní enginy a zpracování multimédií.


30) Kdy byste si měli vybrat Objective-C před Swift v moderním vývoji?

Objective-C je stále platnou volbou při údržbě rozsáhlých starších kódových základen, integraci se staršími frameworky nebo při požadavku na pokročilé běhové funkce, kterých není snadno dosáhnout v... SwiftJeho dynamický systém zasílání zpráv a vyspělé nástroje ho činí vhodným pro určité vývojové úkoly na nízké úrovni nebo zaměřené na frameworky.

Nicméně u nových projektů, Swift je obecně preferován kvůli lepší bezpečnosti, čitelnosti a výkonu. Rozhodnutí by mělo být založeno na požadavcích projektu, odbornosti týmu a dlouhodobé udržovatelnosti.

Důkladná znalost Objective-C je i nadále cenná, zejména v podnicích s rozsáhlými stávajícími aplikacemi Objective-C.


🔍 Nejčastější otázky na pohovoru v Objective-C s reálnými scénáři a strategickými odpověďmi

1) Jaké jsou klíčové rozdíly mezi Objective-C a SwiftA kdy byste si ještě vybrali Objective-C?

Očekává se od kandidáta: Tazatel chce posoudit vaše znalosti jazykového ekosystému a vaši schopnost činit informovaná architektonická rozhodnutí.

Příklad odpovědi: Objective-C je dynamický jazyk založený na zprávách se silnými běhovými schopnostmi. Swift klade důraz na bezpečnost, výkon a moderní syntaxi. Při údržbě nebo rozšiřování velkých starších systémů iOS nebo... bych si stále vybral Objective-C. macOS kódové základny, kde se přepisování Swift by to přineslo zbytečné riziko nebo náklady.


2) Jak funguje správa paměti v Objective-C pod ARC?

Očekává se od kandidáta: Tazatel testuje vaše znalosti základů správy paměti a toho, jak je ARC zjednodušuje.

Příklad odpovědi: V ARC kompilátor automaticky vkládá volání retain a release během kompilace. Vývojáři se stále musí vyhýbat cyklům silných referencí vhodným používáním slabých nebo přiřazovacích referencí, zejména ve vzorech delegátů a použití bloků.


3) Můžete vysvětlit rozdíl mezi silnými, slabými a přiřazovacími vlastnostmi?

Očekává se od kandidáta: Tazatel se chce ujistit, že rozumíte vlastnictví objektů a správě jejich životního cyklu.

Příklad odpovědi: Silné vlastnosti zvyšují počet uchování a udržují objekt aktivní. Slabé vlastnosti objekt neuchovávají a při uvolnění objektu se nastaví na nil. Metoda Assign se obvykle používá pro primitivní typy a nespravuje vlastnictví objektů.


4) Popište situaci, kdy jste ladili složitý pád aplikace v Objective-C.

Očekává se od kandidáta: Tazatel hodnotí váš přístup k řešení problémů a dovednosti v odstraňování chyb.

Příklad odpovědi: V mé předchozí roli jsem ladil opakující se pád způsobený nadměrným uvolněním objektů ve vícevláknovém prostředí. Použil jsem nástroje s povolenou funkcí Zombies ke sledování dealokace a identifikoval nesprávný atribut vlastnosti, což problém po opravě vyřešilo.


5) Jak se kategorie liší od podtříd v Objective-C?

Očekává se od kandidáta: Tazatel chce posoudit vaše znalosti organizace kódu a jeho rozšiřitelnosti.

Příklad odpovědi: Kategorie umožňují přidávat metody do existující třídy bez vytváření podtříd, což je užitečné pro modularizaci funkcí. Podtřídy vytvářejí nové hierarchie tříd a mohou přepsat chování, ale zvyšují propojení a složitost.


6) Co jsou bloky v Objective-C a jak se běžně používají?

Očekává se od kandidáta: Tazatel ověřuje vaši znalost moderních vzorů Objective-C.

Příklad odpovědi: Bloky jsou uzávěry, které zapouzdřují kód a zachycené proměnné. Běžně se používají pro asynchronní zpětná volání, obslužné rutiny dokončení a výčty. Je třeba dbát na to, aby se zabránilo cyklům uchovávání pomocí slabých odkazů na self.


7) Jak byste řešili threading a souběžnost v Objective-C?

Očekává se od kandidáta: Tazatel chce vědět, jak zajišťujete výkon a pohotovost.

Příklad odpovědi: V předchozí pozici jsem se pro správu úloh na pozadí a aktualizací uživatelského rozhraní silně spoléhal na Grand Central Dispatch. Pro konzistenci dat jsem používal sériové fronty a pro operace kritické pro výkon jsem používal souběžné fronty.


8) Vysvětlete vzor delegáta a jeho výhody.

Očekává se od kandidáta: Tazatel testuje vaše znalosti běžných návrhových vzorů ve vývoji pro iOS.

Příklad odpovědi: Vzor delegáta umožňuje jednomu objektu sdělovat události nebo data zpět druhému bez těsného propojení. Podporuje oddělení odpovědností a usnadňuje testování a údržbu kódu.


9) Popište, jak byste refaktorovali rozsáhlou, starší kódovou základnu Objective-C.

Očekává se od kandidáta: Tazatel hodnotí vaše strategické myšlení a zkušenosti se staršími systémy.

Příklad odpovědi: V mé poslední roli jsem k refaktoringu přistupoval postupně, nejprve jsem přidával jednotkové testy, izoloval kritické komponenty a zlepšoval čitelnost kódu. Vyhýbal jsem se rozsáhlým přepisům a zaměřoval jsem se na bezpečné snižování technického dluhu v průběhu času.


10) Jak zajišťujete kvalitu a udržovatelnost kódu v projektech Objective-C?

Očekává se od kandidáta: Tazatel chce nahlédnout do vaší inženýrské disciplíny a týmové práce.

Příklad odpovědi: V mém předchozím zaměstnání jsem kladl důraz na konzistentní standardy kódování, důkladné kontroly kódu a dokumentaci. Také jsem podporoval psaní opakovaně použitelných komponent a používání nástrojů pro statickou analýzu k včasnému odhalení problémů.

Shrňte tento příspěvek takto: