- Чем
абстрактныйкласс отличается отинтерфейса? - Расскажите о паттерне
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)? - Что такое
responder chain? - Как работают
push нотификации?
- Опишите основные понятия ОО программирования в терминах Objective-C (
интерфейс, реализация, свойства, протоколы,и т.д) - Что такое назначеный инициализатор (
designated initializer), напишите любой элементарный инициализатор, почему он так выглядит? (имеется ввиду if (self = [super ...])) - Какие существуют
rootклассы в iOS? Для чего нужныrootклассы? - Что такое указатель
isa? Для чего он нужен? - Что происходит с методом после того, как он не нашелся в объекте класса, которому его вызвали?
- Чем
категорияотличается отрасширения(extension, наименованная категория)?категория vs extension? - Можно ли добавить
ivarв категорию? - Когда лучше использовать
категорию, а когданаследование?категория vs наследование? - Какая разница м/у использование
делегатов (delegation)инотификейшенов (notification)? - Чем отличается
NSSetотNSArray? Какие операции происходят быстро в NSSet и какае в NSArray? Формальный и неформальный (informal)протокол?- Есть ли
приватные и защищенныеметоды в Objective-C? - Как имитировать
множественное наследование? - Что такое
KVO? Когда его нужно использовать? - Что такое
KVC? Когда его нужно использовать? - Что такое
designated initializer? - Как удалить объект в ходе итерации по циклу?
- Что такое
Run Loop? - Как лучше всего загрузить UIImage c диска(с кеша)?
- Какой контент лучше хранить в
Documents, а какой вCache? - Как связаны
NSRunLoop и NSAutoreleasePoolна пальцах? - Почему нам не следует вызывать
instance методы в методе initialize,? NSCoding, archiving- Протокол
NSCopying, почему мы не можем просто использовать любой собственный объект в качестве ключа в словарях (NSDictionary) , что нужно сделать чтобы решить эту проблему? (разница между глубоким и поверхностным копированием)
- Как происходит
ручное управление памятью - MRCв 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 на с++?
- Если я вызову
performSelector:withObject:afterDelay:– объекту пошлется сообщение retain? - Как происходит обработка
memory warning? Зависит ли обработка от версии iOS? - Напишите простую реализацию
NSAutoreleasePollна Objective-C - Когда нужно использовать метод
retainCount(никогда, почему?) - Основные тему управления памятью, такие как владение retain/release/autorelease --Что случится если вы добавите только что созданный объект в Mutable Array, и пошлете ему сообщение release? --Что случится если послать сообщение release массиву? --Что случится если вы удалите объект из массива и попытаетесь его использовать?
- С подвохом: сборщик мусора для iPhone.
- Преимущества и недостатки
синхронного и асинхронногосоединения? - Что означает
http, tcp? - Какие различия между
HEAD, GET, POST, PUT?
- Что такое
deadlock? - Что такое
livelock? - Что такое
семафор (semafor)? - Что такое
мьютекс (mutex)? Асинхронностьvsмногопоточность. Чем отличаются?- Какие технологии в iOS возможно использовать для работы с потоками. Преимущества и недостатки.
- Чем отличается
dispatch_async от dispatch_sync? - Для чего при разработке под iOS использовать
POSIX-потоки?pthread_create(&thread, NULL, startTimer, (void *)t); - А чем реально POSIX-потоки лучше чем GCD или NSOperationQueue вместе с NSOperation? Приходилось ри реально использовать POSIX и как в этом были прюсы? Реально, просто интересно…
Use POSIX calls if cross-platform portability is required. If you are writing networking code that runs exclusively in OS X and iOS, you should generally avoid POSIX networking calls, because they are harder to work with than higher-level APIs. However, if you are writing networking code that must be shared with other platforms, you can use the POSIX networking APIs so that you can use the same code everywhere.
- Чем отличается frame от bounds?
- Какие бывают состояния у приложения?
- Цикл жизни UIViewController?
- что такое View (представление) и что такое window?
- разница между свойствами bounds и frame объекта UIView какого разрешение экранов iphon'ов, и в чем разница между points (точками) и пикселями (pixels)?
- что такое responder chain (цепочка обязанностей, паттерн chain of responsibility, на примере UI компонентов iOS ), becomeFirstResponder.
- что означают IBOutlet и IBAction, для чего они нужны, и что значат для препроцессора?
- как работает UITableView?
- Как многопоточность работает с UIKit?
- Что можно сделать если клавиатура при появлении скрывает важную часть интерфейса?
- Почему мы должны релизить IBOutlet'ты во viewDidUnload?
- Что такое awakeFromNeeb, в чем разница между xib и nib файлами?
- Что такое
Core Data? - В каких случаях лучше использовать
SQLite, а в какихCore Data? - Что такое контекст-
Managed object context? - Что такое
Persistent store coordinator? - Какие есть нюансы при использовании
Core Data в разных потоках? Каксинхронизировать данные между потоками? - Использовали ли
NSFetchedResultsController? Почему? - что такое Fault и зачем он нужен
- как происходят изменения в NSManagedObjectContext
- синхронизация разных типов NSManagedObjectContext (получение и изменение данных в child контекстах).
- зачем нужен NSPersistentStoreCoordinator
- зачем нужно делать двустороннии связи в таблицах
- что таке Fetched Property и особенности работы с ним по сравнению с обычной связью
- Как использовать coreData совместно с многопоточностью?
- Что такое NSManagedObjectId? Можем ли мы сохранить его на потом еслиприложение закроется
- Какие типы хранилищ поддерживает CoreData?
- Что такое ленивая загрузка (lazy loading)? Что ее связывает с CoreData? Опишите ситуация когда она может быть полезной?
- Что такое fetch result controlle?
- Как синхронизировать контекст?
- чем отличается UIView от CALayer
- какие типы CALayer есть?
- чем отличается UIView based Animation от Core Animation
- тайминги в CoreAnimation
- что такое backing store
- чем отличаются аффинные преобразования от трехмерных
- Напишите код, который разворачивает строку на С++. (переставить символы в строке в обратном порядке.)
- Что не так с этим кодом? Зачем нужны инициализаторы?
[[[SomeClass alloc] init] init];- Сработает ли таймер? Почему?
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];
}— В каких случаях лучше использовать 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");
}
}- Выведется ли в дебагер «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]);