30 najboljih pitanja i odgovora za intervju za Objective-C (2026.)

Priprema za Objective-C ulogu znači predviđanje onoga što ispitivači istražuju izvan sintakse i modela pamćenja. Objective-C intervju otkriva dubinu rasuđivanja, prosudbu dizajna i praktično razumijevanje kroz dosljedno ciljana pitanja.
Ova pitanja otvaraju puteve za inženjere prve godine, srednjeg i starijeg nivoa, odražavajući trendove u industriji i stvarne rezultate. Poslodavci cijene tehničku stručnost, analizu i oblikovanje problema od profesionalaca s praktičnim iskustvom, koji surađuju s voditeljima timova i menadžerima kako bi primijenili Objective-C vještine u produkcijskim okruženjima. Ova perspektiva podržava rast u različitim fazama karijere. Čitaj više…
👉 Besplatno preuzimanje PDF-a: Pitanja i odgovori za intervju za Objective-C
Najčešća pitanja i odgovori za intervju za Objective-C
1) Što je Objective-C i zašto se koristi?
Objective-C je strogi nadskup programskog jezika C koji dodaje objektno orijentirane mogućnosti i dinamičko okruženje za izvođenje. Izvorno je razvijen početkom 1980-ih i primarni je jezik koji se koristi za macOS i razvoj iOS aplikacija prije SwiftNasljeđuje sintaksu iz C-a, ali koristi Smalltalk stil poruka za objekte, što omogućuje dinamičko pozivanje metoda tijekom izvođenja.
Objective-C se koristi za razvoj izvorne aplikacije na Apple platformama jer se čvrsto integrira s Appleovim okvirima kao što su Foundation i Cocoa/Cocoa Touch. To omogućuje programerima izradu aplikacija s punim pristupom sistemskim API-jima i bogatim UI komponentama.
Primjer:
#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) Objasnite osnovnu strukturu Objective-C programa.
Objective-C program se obično sastoji od:
- Naredbe pretprocesora (Npr.
#import) - Sučelje (
@interface) – definira klasu i njezine javne metode/svojstva - Izvršenje (
@implementation) – sadrži definicije metoda - Metode – funkcije povezane s objektima
- Varijable i Izrazi i naredbe – logika koda
- Komentari opisati logiku koda
Ova struktura jasno odvaja sučelje od implementacije, što pomaže u modularizaciji koda.
3) Što su protokoli u Objective-C-u i koje vrste postoje?
U Objective-C-u, a protokol slično je sučelju u drugim jezicima. Definira skup metoda koje bilo koja klasa može usvojiti i implementirati, omogućujući višestruko nasljeđivanje potpisa metoda (ne implementacije).
Postoje dvije vrste:
- Formalni protokoli – Deklarirano korištenjem
@protocolmože definirati potreban i opcionalno metode. - Neformalni protokoli – Obično se implementiraju kao kategorije na
NSObject; opcionalno po dizajnu.
Slučaj upotrebe: Uzorci delegiranja u UIKitu često koriste protokole (npr. UITableViewDelegate).
4) Koja je razlika između #import i #include?
#includeje C direktiva predprocesora koja ubacuje sadržaj jedne datoteke u drugu, što može uzrokovati višestruki problemi uključivanja.#importje Objective-C direktiva koja osigurava da je datoteka uključena samo jednom, izbjegavajući dupliciranje.
Dakle, #import sigurniji je i poželjniji u Objective-C razvoju.
5) Čemu služe kategorije u Objective-C-u?
Kategorije proširuju postojeću klasu za dodavanje metoda bez podklasiranja ili modificiranje izvornog koda. Omogućuju vam logičko odvajanje metoda u grupe ili dodavanje dodatnog ponašanja klasama okvira poput NSString.
Primjer upotrebe: Dodavanje uslužnih metoda u NSArray bez podklasiranja:
@interface NSArray (Utility) - (NSArray *)reversedArray; @end
6) Što radi @synthesize?
The @synthesize direktiva nalaže kompajleru da generiranje metoda za dobivanje i postavljanje za nekretninu prijavljenu s @propertyOvo provodi enkapsulaciju i automatizira standardni kod.
Od Xcode 4.4, autosinteza je zadano — često ne morate pisati @synthesize eksplicitno.
7) Objasnite upravljanje memorijom u Objective-C-u.
Upotreba Objective-C-a Automatsko brojanje referenci (ARC) za upravljanje memorijom. ARC dodaje pozive za zadržavanje/otpuštanje koje generira kompajler koji osiguravaju da objekti ostanu aktivni koliko god je potrebno i da su dealocirano kada ne preostanu reference.
Ključni koncepti:
- Snažne reference održavati predmete živima
- Slabe reference ne zadržavajte objekte, izbjegavajući cikluse zadržavanja
Primjer:
@property (strong, nonatomic) NSString *name; @property (weak, nonatomic) id delegate;
8) Koja je razlika između NSArray i NSMutableArray?
- NSAniz: Nepromjenjivi niz — sadržaj se ne može mijenjati nakon kreiranja.
- NSMutableArray: Promjenjivi niz — omogućuje dodavanje, uklanjanje ili zamjenu elemenata.
Primjer:
NSMutableArray *list = [NSMutableArray arrayWithObjects:@"A", @"B", nil]; [list addObject:@"C"]; // Allowed
9) Što je enkapsulacija podataka u Objective-C-u?
Enkapsulacija podataka povezuje podatke i funkcije koje na njima rade u jedna jedinica (razred) dok istovremeno ograničava izravan pristup izvan klase. To nameće modularnost, zaštitu podataka i apstrakciju.
10) Kako funkcionira pozivanje metoda u Objective-C-u?
Upotreba Objective-C-a prosljeđivanje poruka sintaksa:
[object methodName];
Ovdje, object prima poruku za pozivanje methodNameAko metoda nije riješena, runtime obrađuje prosljeđivanje ili izbacuje iznimku. Ova fleksibilnost je moćna značajka dinamičkog runtimea Objective-C.
11) Objasnite razliku između svojstava strong, weak, assign i copy u Objective-C-u.
Svojstva Objective-C-a definiraju kako se memorija upravlja za reference objekata, a odabir ispravnog atributa ključan je za stabilnost aplikacije. strong Atribut povećava broj referenci objekta, osiguravajući da ostane u memoriji sve dok svojstvo postoji. Obično se koristi za odnose vlasništva. weak atribut ne zadržava objekt, automatski postavljajući referencu na nil kada se objekt dealocira, što pomaže u sprječavanju ciklusa zadržavanja, posebno u obrascima delegata.
The assign Atribut se koristi za primitivne tipove podataka kao što su cijeli brojevi i brojevi s pomičnim zarezom. Ne zadržava objekte i ne bi se trebao koristiti za Objective-C objekte pod ARC-om. Atribut copy stvara copy dodijeljenog objekta, što je posebno važno za promjenjive objekte poput NSMutableString kako bi se spriječila nenamjerna modifikacija.
| Atribut | Zadržava objekt | Koristite slučaj |
|---|---|---|
| jak | Da | Svojina |
| slab | Ne | delegati |
| dodijeliti | Ne | primitivci |
| kopija | kopije | Nepromjenjiva sigurnost |
12) Kako interno funkcionira automatsko brojanje referenci (ARC)?
Automatsko brojanje referenci (ARC) je sustav upravljanja memorijom tijekom kompajliranja koji automatski ubacuje pozive za retain, release i autorelease. Za razliku od sakupljanja smeća, ARC se ne izvršava tijekom izvođenja programa; umjesto toga, kompajler analizira životne cikluse objekata i određuje gdje su potrebni pozivi za upravljanje memorijom. To osigurava učinkovito korištenje memorije bez intervencije programera.
ARC prati jake reference na objekte i dealocira ih kada ne preostanu jake reference. Slabe reference se automatski poništavaju kada se objekt dealocira, poboljšavajući sigurnost aplikacije. ARC ne upravlja Coreom. Foundation objekti automatski, pa tehnike premošćivanja kao što su __bridge i __bridge_transfer su obvezne.
Na primjer, ciklusi zadržavanja mogu se i dalje pojaviti ako dva objekta snažno referenciraju jedan na drugi, što se mora riješiti korištenjem slabih referenci.
13) Što je Objective-C runtime i zašto je važan?
Objective-C runtime je moćan sustav koji omogućuje dinamičko ponašanje u Objective-C programima. Omogućuje rješavanje metoda tijekom izvođenja, a ne tijekom kompajliranja, omogućujući značajke poput dinamičkog slanja metoda, prosljeđivanja poruka i introspekcije.
Ovo okruženje izvođenja omogućuje Objective-C-u da odredi koju metodu pozvati samo kada se poruka pošalje. Ako metoda ne postoji, okruženje izvođenja pruža više mogućnosti za njezino rješavanje, kao što je prosljeđivanje poruke drugom objektu. To čini Objective-C vrlo fleksibilnim i proširivim.
Runtime funkcije također omogućuju programerima pregled hijerarhija klasa, dinamičko dodavanje metoda i prebacivanje implementacija metoda, što se često koristi u okvirima za otklanjanje pogrešaka i analitiku.
14) Što su blokovi u Objective-C-u i koje su njihove prednosti?
Blokovi u Objective-C-u su zatvarači koji enkapsuliraju kod i varijable za kasnije izvršavanje. Slični su lambda izrazima u drugim programskim jezicima i često se koriste za povratne pozive, asinkrono izvršavanje i nabrajanje.
Blokovi hvataju varijable iz svog okolnog opsega, koje se mogu mijenjati pomoću __block ključna riječ. Pojednostavljuju čitljivost koda i smanjuju potrebu za obrascima delegata u mnogim scenarijima.
Prednosti blokova uključuju poboljšanu lokalnost koda, bolju čitljivost i jednostavnost asinkronog programiranja. Međutim, programeri moraju biti oprezni s ciklusima zadržavanja kada blokovi snažno hvataju self, koristeći __weak Reference unutar blokova sprječavaju curenje memorije.
15) Koja je razlika između nil i NULL u Objective-C-u?
U Objective-C-u, nil predstavlja pokazivač nultog objekta, dok NULL predstavlja nulti pokazivač za C tipove. Iako se često evaluiraju kao ista vrijednost (nula), semantički su različiti i treba ih koristiti na odgovarajući način.
nil koristi se za Objective-C objekte i omogućuje sigurno slanje poruka bez rušenja aplikacije. Kada se poruka pošalje nil, jednostavno vraća nulu ili nilNasuprot tome, dereferenciranje NULL Pokazivač u C-u rezultira nedefiniranim ponašanjem i često ruši aplikaciju.
Korištenje nil poboljšava sigurnost i čitljivost koda pri radu s Objective-C objektima, dok NULL treba biti rezerviran za C strukture i pokazivače.
16) Objasnite delegiranje u Objective-C-u s primjerom.
Delegiranje je obrazac dizajna u Objective-C-u koji omogućuje jednom objektu komunikaciju događaja ili odluka s drugim objektom. Implementira se pomoću protokola i slabih referenci kako bi se izbjegli ciklusi zadržavanja. Delegiranje potiče labavo povezivanje i ponovnu upotrebu.
Delegirajući objekt definira protokol, a delegatski objekt usvaja i implementira taj protokol. Delegirajući objekt zatim poziva metode na svom delegatu kada se dogode određeni događaji.
Na primjer, tablični prikaz obavještava svog delegata kada je odabran redak. Ovaj dizajn omogućuje prilagodbu ponašanja bez podklasiranja i široko se koristi u Appleovim okvirima.
17) Što su kategorije naspram ekstenzija u Objective-C-u?
Kategorije i proširenja omogućuju programerima dodavanje funkcionalnosti postojećim klasama, ali služe različitim svrhama. Kategorije dodaju javne metode klasi i često se koriste za organiziranje koda ili dodavanje pomoćnih metoda. Proširenja, poznata i kao proširenja klase, obično se deklariraju u implementacijskim datotekama i omogućuju dodavanje privatnih svojstava i metoda.
Kategorije ne mogu dodavati varijable instance, dok proširenja mogu. Kategorije se često koriste za poboljšanje klasa okvira, dok se proširenja koriste za enkapsulaciju i detalje interne implementacije.
Razumijevanje razlike osigurava bolji dizajn klase i poboljšanu održivost.
18) Kako KVC (Key-Value Coding) funkcionira u Objective-C-u?
Kodiranje ključ-vrijednost (KVC) omogućuje neizravan pristup svojstvima objekta pomoću string ključeva. Omogućuje dinamičko postavljanje i dohvaćanje vrijednosti bez eksplicitnog pozivanja metoda za dobivanje ili postavljanje.
KVC se široko koristi u Cocoa poveznicama i okvirima za serijalizaciju. Oslanja se na dobro definirani obrazac pretraživanja za razrješavanje ključeva i podržava operatore kolekcija za rad s nizovima i skupovima.
Na primjer, valueForKey: dinamički dohvaća vrijednost, dok setValue:forKey: dodjeljuje vrijednost. Neispravna upotreba ključa može rezultirati iznimkama tijekom izvođenja, stoga je potrebna pažljiva validacija.
19) Što je KVO (Key-Value Observing - promatranje ključa i vrijednosti) i po čemu se razlikuje od obavijesti?
Promatranje ključ-vrijednost (KVO) omogućuje objektima promatranje promjena određenih svojstava drugog objekta. Usko je povezano s KVC-om i omogućuje automatske obavijesti kada se vrijednost svojstva promijeni.
Za razliku od obavijesti, KVO je precizno definiran i specifičan za svojstvo, dok su obavijesti temeljene na emitiranju. KVO zahtijeva pravilno uklanjanje promatrača kako bi se izbjegli rušenja, dok su obavijesti labavije povezane.
KVO je idealan za promatranje promjena modela u MVC arhitekturi, dok su obavijesti prikladnije za događaje na razini cijelog sustava.
20) Koje su prednosti i nedostaci korištenja Objective-C-a danas?
Objective-C nudi dinamične značajke izvođenja, zrele alate i duboku integraciju sa starijim Appleovim okvirima. Omogućuje fleksibilno rukovanje porukama i još uvijek se široko koristi u velikim, zrelim kodnim bazama.
Međutim, Objective-C ima opširnu sintaksu, strmiju krivulju učenja i uglavnom je zamijenjen Swift za novi razvoj. Swift pruža poboljšanu sigurnost, čitljivost i optimizacije performansi.
| Aspekt | Prednosti | Nedostaci |
|---|---|---|
| dužina trajanja | Dinamičan | Kompleks |
| Sintaksa | Moćan | verbalan |
| ekosustav | zreo | Pad usvajanja |
21) Objasnite životni ciklus Objective-C klase od alokacije do dealokacije.
Životni ciklus Objective-C objekta započinje alokacijom memorije i završava dealokacijom. Ovaj životni ciklus se prvenstveno upravlja putem ARC-a ili ručnog brojanja referenci u naslijeđenim sustavima. Proces započinje s alloc, koji dodjeljuje memoriju za objekt i inicijalizira njegove varijable instance na zadane vrijednosti. Nakon toga slijedi init, koji priprema objekt za upotrebu postavljanjem početnog stanja.
Nakon inicijalizacije, objekt ostaje aktivan sve dok postoji barem jedna jaka referenca. Tijekom svog životnog vijeka, objekt može primati poruke, sudjelovati u delegiranju i komunicirati s drugim objektima. Kada se sve jake reference otpuste, ARC automatski poziva dealloc, gdje se izvode zadaci čišćenja poput uklanjanja promatrača ili oslobađanja resursa.
Razumijevanje ovog životnog ciklusa ključno je za izbjegavanje curenja memorije, visećih pokazivača i nepravilnog rukovanja resursima.
22) Kako funkcionira prosljeđivanje poruka u Objective-C-u?
Prosljeđivanje poruka je višekoračni mehanizam koji se koristi kada objekt primi poruku koju ne može obraditi. Umjesto trenutnog rušenja, Objective-C pruža nekoliko mogućnosti za dinamičko rješavanje metode. Prvo, runtime provjerava +resolveInstanceMethod: kako bi se vidjelo može li se metoda dinamički dodati. Ako se ne riješi, nastavlja se s -forwardingTargetForSelector: preusmjeriti poruku na drugi objekt.
Ako to ne uspije, runtime poziva -methodSignatureForSelector: i -forwardInvocation: za ručno prosljeđivanje poruke. To omogućuje proxy objekte, dekoratore i dinamičko ponašanje.
Ovaj mehanizam ističe fleksibilnost Objective-C-a i često se koristi u okvirima kao što je NSProxy i mocking bibliotekama.
23) Što su ciklusi zadržavanja i kako ih spriječiti?
Ciklus zadržavanja se događa kada dva ili više objekata imaju jake reference jedna na drugu, sprječavajući ARC da ih dealocira. To rezultira curenjem memorije, iako objekti više nisu potrebni. Ciklusi zadržavanja se obično događaju između roditeljskih i podređenih objekata, delegata i blokova koji hvataju self.
Kako bi spriječili cikluse zadržavanja, programeri koriste slabe reference za odnose koji nisu vlasnici, kao što su delegati. U blokovima, __weak or __unsafe_unretained reference na self koriste se za izbjegavanje snažnog hvatanja.
Identificiranje ciklusa zadržavanja pomoću instrumenata i pažljivo dizajniranje semantike vlasništva ključne su vještine za Objective-C programere koji rade na dugotrajnim aplikacijama.
24) Kako Objective-C rješava konkurentnost i višenitnost?
Objective-C pruža više mehanizama za konkurentnost, a Grand Central Dispatch (GCD) je najčešće korišten. GCD omogućuje programerima slanje zadataka u redove koji se izvršavaju serijski ili istodobno. Apstrahira upravljanje nitima, poboljšavajući performanse i sigurnost.
Drugi alati za konkurentnost uključuju NSThread, NSOperationi NSOperationQueue, Dok NSThread nudi niskonaponsku kontrolu, NSOperationQueue omogućuje upravljanje ovisnostima, otkazivanje i rukovanje prioritetima.
GCD se općenito preferira za kod kritičan za performanse, dok NSOperationQueue prikladan je za složene tijekove rada koji zahtijevaju preciznu kontrolu.
25) Što je method swizzling i kada ga treba koristiti?
Method swizzling je tehnika izvođenja koja omogućuje programerima zamjenu implementacija dviju metoda. To se postiže korištenjem Objective-C runtime API-ja i omogućuje modifikaciju ponašanja bez podklasiranja ili modifikacije izvornog koda.
Swizzling se često koristi u analitici, logiranju, otklanjanju pogrešaka i testiranju okvira. Međutim, treba ga koristiti s oprezom jer može uzrokovati neočekivano ponašanje, otežati otklanjanje pogrešaka i prekinuti funkcionalnost ako se promijene temeljne implementacije.
U produkcijskom kodu, prebacivanje metoda treba biti pažljivo dokumentirano i ograničeno na dobro definirane slučajeve upotrebe kako bi se održala stabilnost koda.
26) Objasnite razliku između plitke i duboke kopije u Objective-C-u.
Plitka kopija duplicira objekt spremnika, ali ne i objekte koje on sadrži. I izvorni i kopirani spremnik referenciraju iste temeljne objekte. Nasuprot tome, duboka kopija duplicira i spremnik i sve ugniježđene objekte, stvarajući neovisne kopije.
Klase kolekcija Objective-C obično izvode plitke kopije prema zadanim postavkama. Dubinsko kopiranje zahtijeva eksplicitnu implementaciju, često korištenjem NSCopying ili ručna iteracija.
| Tip kopije | Kontejner kopiran | Elementi kopirani |
|---|---|---|
| Plitak | Da | Ne |
| Duboko | Da | Da |
Razumijevanje ove razlike ključno je pri radu s promjenjivim strukturama podataka kako bi se izbjegli neželjeni nuspojave.
27) Kako Objective-C podržava introspekciju?
Introspekcija u Objective-C-u omogućuje objektima da ispitaju vlastitu strukturu i ponašanje tijekom izvođenja. To uključuje provjeru članstva u klasi, dostupnosti metoda i usklađenosti protokola. Metode kao što su isKindOfClass:, respondsToSelector:i conformsToProtocol: se obično koriste.
Introspekcija omogućuje obrambeno programiranje i dinamičku prilagodbu ponašanja. Na primjer, objekt može provjeriti implementira li drugi objekt metodu prije nego što je pozove, poboljšavajući sigurnost izvođenja.
Ova je mogućnost posebno korisna u labavo povezanim sustavima i arhitekturama temeljenim na dodacima.
28) Koja je razlika između isEqual: i == u Objective-C-u?
The == Operator uspoređuje memorijske adrese, utvrđujući pokazuju li dvije reference na isti objekt. isEqual: metoda uspoređuje sadržaj ili logičku jednakost objekata.
Na primjer, dva različita string objekta s istim tekstualnim sadržajem mogu vratiti NO u usporedbi s ==, Ali YES u usporedbi s isEqual:. Mnogi Foundation nadjačavanje klasa isEqual: kako bi se pružile smislene usporedbe jednakosti.
Odabir ispravne metode usporedbe ključan je za izbjegavanje logičkih pogrešaka, posebno pri radu s kolekcijama poput skupova i rječnika.
29) Kako se Objective-C integrira s C-om i C++ kodirati?
Objective-C je potpuno kompatibilan s C-om i može interoperirati s C++ kroz Cilj-C++. Pomoću .mm datoteke, programeri mogu kombinirati Objective-C i C++ kod unutar iste izvorne datoteke.
Ova integracija omogućuje ponovno korištenje postojećih C i C++ biblioteke, a istovremeno koriste prednosti objektno orijentiranih značajki Objective-C-a. Razvojni programeri moraju pažljivo upravljati iskrivljavanjem imena i životnim ciklusima objekata kako bi izbjegli probleme s memorijom i kompatibilnošću.
Cilj-C++ se često koristi u aplikacijama kritičnim za performanse kao što su game engine-i i obrada multimedije.
30) Kada biste trebali odabrati Objective-C umjesto Swift u modernom razvoju?
Objective-C je i dalje valjan izbor pri održavanju velikih naslijeđenih kodnih baza, integraciji sa starijim okvirima ili zahtijevanju naprednih značajki izvođenja koje nije lako postići u SwiftNjegov dinamički sustav razmjene poruka i zreli alati čine ga prikladnim za određene razvojne zadatke niske razine ili razvojne zadatke orijentirane na okvire.
Međutim, za nove projekte, Swift Općenito se preferira zbog poboljšane sigurnosti, čitljivosti i performansi. Odluka bi trebala biti utemeljena na zahtjevima projekta, stručnosti tima i dugoročnoj održivosti.
Dobro razumijevanje Objective-C-a ostaje vrijedno, posebno u poduzećima s opsežnim postojećim Objective-C aplikacijama.
🔍 Najčešća pitanja za intervju za Objective-C sa stvarnim scenarijima i strateškim odgovorima
1) Koje su ključne razlike između Objective-C i Swift, a kada biste ipak odabrali Objective-C?
Očekivano od kandidata: Ispitivač želi procijeniti vaše razumijevanje jezičnog ekosustava i vašu sposobnost donošenja informiranih arhitektonskih odluka.
Primjer odgovora: Objective-C je dinamičan jezik temeljen na porukama s jakim mogućnostima izvođenja. Swift naglašava sigurnost, performanse i modernu sintaksu. I dalje bih odabrao Objective-C prilikom održavanja ili proširenja velikih naslijeđenih iOS ili macOS kodne baze gdje se prepisivanje Swift uvelo bi nepotreban rizik ili trošak.
2) Kako funkcionira upravljanje memorijom u Objective-C-u pod ARC-om?
Očekivano od kandidata: Anketar provjerava vaše razumijevanje osnova upravljanja memorijom i kako ih ARC pojednostavljuje.
Primjer odgovora: Pod ARC-om, kompajler automatski ubacuje pozive za retain i release tijekom kompajliranja. Programeri i dalje moraju izbjegavati cikluse jakih referenci korištenjem slabih ili dodjeljivih referenci na odgovarajući način, posebno u obrascima delegata i korištenju blokova.
3) Možete li objasniti razliku između jakih, slabih i dodijelnih svojstava?
Očekivano od kandidata: Ispitivač želi osigurati da razumijete vlasništvo nad objektima i upravljanje životnim ciklusom.
Primjer odgovora: Jaka svojstva povećavaju broj zadržavanja i održavaju objekt aktivnim. Slaba svojstva ne zadržavaju objekt i postavljaju se na nil kada se objekt dealocira. Dodjeljivanje se obično koristi za primitivne tipove i ne upravlja vlasništvom nad objektom.
4) Opišite situaciju u kojoj ste otklonili probleme nakon teškog pada sustava u Objective-C aplikaciji.
Očekivano od kandidata: Ispitivač procjenjuje vaš pristup rješavanju problema i vještine otklanjanja pogrešaka.
Primjer odgovora: U prethodnoj ulozi, otklonio sam greške u ponavljajućem rušenju uzrokovanom prekomjernim oslobađanjem objekata u višenitnom okruženju. Koristio sam Instrumente s omogućenim Zombiesima za praćenje dealokacije i identificirao netočan atribut svojstva, što je riješilo problem nakon ispravljanja.
5) Po čemu se kategorije razlikuju od podklasa u Objective-C-u?
Očekivano od kandidata: Anketar želi procijeniti vaše razumijevanje organizacije koda i proširivosti.
Primjer odgovora: Kategorije omogućuju dodavanje metoda postojećoj klasi bez podklasiranja, što je korisno za modularizaciju funkcionalnosti. Podklase stvaraju nove hijerarhije klasa i mogu nadjačati ponašanje, ali povećavaju povezanost i složenost.
6) Što su blokovi u Objective-C-u i kako se obično koriste?
Očekivano od kandidata: Anketar provjerava vaše poznavanje modernih Objective-C obrazaca.
Primjer odgovora: Blokovi su zatvarači koji enkapsuliraju kod i snimljene varijable. Obično se koriste za asinhrone povratne pozive, rukovatelje dovršetkom i nabrajanje. Potrebno je paziti da se izbjegnu ciklusi zadržavanja korištenjem slabih referenci na sebe.
7) Kako biste riješili niti i konkurentnost u Objective-C-u?
Očekivano od kandidata: Ispitivač želi znati kako osiguravate učinkovitost i odzivnost.
Primjer odgovora: Na prethodnoj poziciji, uvelike sam se oslanjao na Grand Central Dispatch za upravljanje pozadinskim zadacima i ažuriranjima korisničkog sučelja. Koristio sam serijske redove čekanja za dosljednost podataka i istovremene redove čekanja za operacije kritične za performanse.
8) Objasnite obrazac delegata i njegove prednosti.
Očekivano od kandidata: Anketar provjerava vaše razumijevanje uobičajenih obrazaca dizajna u iOS razvoju.
Primjer odgovora: Uzorak delegata omogućuje jednom objektu komunikaciju događaja ili podataka s drugim bez čvrstog povezivanja. Promiče odvajanje odgovornosti i olakšava testiranje i održavanje koda.
9) Opišite kako biste refaktorirali veliku, naslijeđenu Objective-C kodnu bazu.
Očekivano od kandidata: Anketar procjenjuje vaše strateško razmišljanje i iskustvo s postojećim sustavima.
Primjer odgovora: U svojoj posljednjoj ulozi, refaktoriranju sam pristupao postupno dodavanjem jediničnih testova prvo, izoliranjem kritičnih komponenti i poboljšanjem čitljivosti koda. Izbjegavao sam velika prepisivanja i usredotočio se na sigurno smanjenje tehničkog duga tijekom vremena.
10) Kako osiguravate kvalitetu i održivost koda u Objective-C projektima?
Očekivano od kandidata: Anketar želi uvid u vašu inženjersku disciplinu i timski rad.
Primjer odgovora: Na prethodnom poslu naglašavao sam dosljedne standarde kodiranja, temeljite preglede koda i dokumentaciju. Također sam poticao pisanje komponenti za višekratnu upotrebu i korištenje alata za statičku analizu kako bi se problemi otkrili u ranoj fazi.
