- Чем
абстрактныйкласс отличается отинтерфейса? - Расскажите о паттерне
MVC. Чем отличаетсяпассивнаямодель отактивной? - Реализация
синглтона(Singleton) вARCи вnon-ARC? - Какие еще
паттернызнаете? - Паттерны
порождающие, создания объектов(Creational):Singleton, Abstarct Factory? - Паттерны
структурные(Structural):MVC, Decorator(Categories, Delegation), Adapter(Delegation), Facade, Composite? - Патерны
поведения и взаимодействия объектов(Behavioral):Observer(Notification, KVO), Memento(Archiving+UserDefaults), Chain of Recponsibility, Command(Target-Action mechanism)?
- Какие существуют
rootклассы в iOS? Для чего нужныrootклассы? - Что такое указатель
isa? Для чего он нужен? - Что происходит с методом после того, как он не нашелся в объекте класса, которому его вызвали?
- Чем
категорияотличается отрасширения(extension, наименованная категория)?категория vs extension? - Можно ли добавить
ivarв категорию? - Когда лучше использовать
категорию, а когданаследование?категория vs наследование? - Какая разница м/у использование
делегатов (delegation)инотификейшенов (notification)? - Чем отличается
NSSetотNSArray? Какие операции происходят быстро в NSSet и какае в NSArray? Формальный и неформальный (informal)протокол?- Есть ли
приватные и защищенныеметоды в Objective-C? - Как имитировать
множественное наследование? - Что такое
KVO? Когда его нужно использовать? - Что такое
KVC? Когда его нужно использовать? - Что такое
designated initializer?
— Как удалить объект в ходе итерации по циклу? — Сработает ли таймер? Почему?
void startTimer(void *threadId)
{
[NSTimer scheduleTimerWithTimeInterval:10.0f
target:aTarget
selector:@selector(tick: )
userInfo:nil
repeats:NO];
}
pthread_create(&thread, NULL, startTimer, (void *)t);— Какой метод вызовется: класса A или класса B? Как надо изменить код, чтобы вызвался метод класса A?
@interface A : NSObject
- (void)someMethod;
@end
@implementation A
- (void)someMethod {
NSLog(@"This is class A");
}
@end
@interface B : A
@end
@implementation B
- (void)someMethod {
NSLog(@"This is class B");
}
@end
@interface C : NSObject
@end
@implementation C
- (void)method {
A *a = [B new];
[a someMethod];
}— Как происходит ручное управление памятью в iOS? — autorelease vs release? — Что означает ARC? — Что делать, если проект написан с использованием ARC, а нужно использовать классы сторонней библиотеки написанной без ARC? — Weak vs assign, strong vs copy? — Atomic vs nonatomic. Чем отличаются? Как вручную переопределить atomic/nonatomic сеттер в не ARC коде? — Зачем все свойства ссылающиеся на делегаты strong/retain. :))) — Что такое autorelease pool? — Как можно заимплементировать autorelease pool на с++? — В каких случаях лучше использовать strong, а в каких copy для NSString? Почему?
@property (nonatomic, strong) NSString *someString;
@property (nonatomic, copy) NSString *anotherString;— Что выведется в консоль? Почему?
- (BOOL)objectsCount {
NSMutableArray *array = [NSMutableArray new];
for (NSInteger i = 0; i < 1024; i++) {
[array addObject:[NSNumber numberWithInt:i]];
}
return array.count;
}
- (void)someMethod {
if ([self objectsCount]) {
NSLog(@"has objects");
}
else {
NSLog(@"no objects");
}
}
- Преимущества и недостатки
синхронного и асинхронногосоединения? - Что означает
http, tcp? - Какие различия между
HEAD, GET, POST, PUT?
- Что такое
deadlock? - Что такое
livelock? - Что такое
семафор (semafor)? - Что такое
мьютекс (mutex)? Асинхронностьvsмногопоточность. Чем отличаются?- Какие технологии в iOS возможно использовать для работы с потоками. Преимущества и недостатки.
- Чем отличается
dispatch_async от dispatch_sync? - Выведется ли в дебагер «Hello world»? Почему?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog(@"Hello world");
});
/* Another implementation */
return YES;
}- Что выведется в консоль?
dispatch_async(dispatch_get_main_queue(), ^
{
NSLog(@"A %d", [object retainCount]);
dispatch_async(dispatch_get_main_queue(), ^
{
NSLog(@"B %d", [object retainCount]);
});
NSLog(@"C %d", [object retainCount]);
});
NSLog(@"D %d", [object retainCount]);- Что такое
Core Data? - В каких случаях лучше использовать
SQLite, а в какихCore Data? - Что такое
Managed object context? - Что такое
Persistent store coordinator? - Какие есть нюансы при использовании
Core Data в разных потоках? Каксинхронизировать данные между потоками? - Использовали ли
NSFetchedResultsController? Почему?
- Что не так с этим кодом? Зачем нужны инициализаторы?
[[[SomeClass alloc] init] init];- Напишите код, который разворачивает строку на С++.