- Что такое "Project Purple"?
- Каких Русских/Иностранных iOS программистов/медийных личностей вы знаете? (Steve Voznyak, Chris Eidhof, Florian Kugler, Mattt Thompson, Ray Wenderlich, Егор Толстой, Андрей Панов, Александр Зимин)
- Какие сайты читаете?
- NSRunLoop: что это? как работает? для чего нужно?
- Что такое UIApplication? UIApplication delegate? Каким образом вызываются методы делегата?
- Зачем нужны делегаты?
- Что такое KVO/KVC?
- Как написать c++ функцию внутри .m файла?
- Что такое полиморфизм, наследование, инкапсуляция?
- @noescape, @escaping, @autoclosure: для чего используется? В чем разница?
- @warn_unused_result / @discardableResult
- Reflection, Mirror: что это?
- UnsafeMutablePointer, UnsafePointer: что это? Как с этим работать? instance.memory
- Что такое ARC, как оно работает?
- Retain vs Strong? unsafe_unretained vs Assign vs Weak? Weak vs Unowned? Различия? В каких случаях использовать?
- @AutoreleasePool: Для чего нужно? Зачем? применимо ли в ARC? если да, то зачем? Как создать не использьуя "@AutoreleasePool"
- Copy vs Retain
- Аргумент copy делает deep copy or shallow?
- Retain Cycle: что это?
- Как находить и исправлять утечки память?
- Как хранятся closure в памяти? и где именно (heap/stack)?
- Heap, Stack: где именно и какие данные храняться? Что это? Различия, приемущества?
- __bridge, __bridge_transfer, __bridge_retained?
- SOLID: значение? (для каждой буквы с пояснением)
- Паттерны проектирования? перечислить
- Scrum/Kanban/XP/TDD
- Waterfall/Agile/Lean
- Что такое синглтон? Паттерн или анти-паттерн?
- Что такое "O"? Как посчитать сложность функции? Какие виды бывают? (O/On/On^2)
- Что такое бинарное дерево? Зачем оно нужно?
- Frame vs Bounds?
- UIKit thread safe?
- drawRect: зачем необходим?
- UIResponder: что это?
- AppDelegate относится к UIKit?
- hint: class AppDelegate: UIResponder, UIApplicationDelegate { ... }
- Как кнопка понимает что она нажата? (рассказать все стадии)
- Responder Chain? что это?
- CALayer: что произойдет, если мы добавит sublayer на главный layer, а затем повернем устройтсво? почему перемещение CALayer через frame работает сильно медленнее чем у UIView
- ViewWillLayoutSubviews, ViewDidLayoutSubview
- Зачем нужен UIWindow?
- Различие Obj-C структуры и Swift? Cтруктура в Swift лучше? Если да, то почему?
- structs: для чего необходимо mutating? что происходит при изменении property внутри var struct
- Any vs AnyObject
- Что такое hash для класса/структуры? Как он получается?
- Что такое hash таблица? как она устроена? как хранится в памяти?
- Как работает память в swift при копировании let/var струкуры/класса?
- instancetype: что это?
- Как работают associated values внутри enum case?
- let vs var: отличия
- Category, Extension: что такое и в каких случаях использовать?
- Что такое property? ivar?
- Можно ли использовать ivar или property в category?
- CFArray vs NSArray
-
NSSet vs Array vs Dictionary? Отличия в хранении, какую сложность имеет Set? Array? Dict? как храняться данные в этих структурах?
-
Как понять сколько раз одна и та же сущность была добавлена(попытка) в NSSet? (легкий ответ)
-
Как именно NSSet понимает что объект уже был добавлен и его не нужно повторно добавлять?
-
Как реализовать weak NSSet/NSArray/NSDict?
-
Что произойдет в памяти (поэтапно)? что будет внутри arr? arrCopy? arrMutableCopy?
NSMutableArray *arr = [NSMutableArray new]; User *user = [User new]; arr.addObject(user); arrCopy = [arr copy]; User *user1 = [User new]; [arrCopy addObject: user1]; arrMutableCopy = [arr mutableCopy]; User *user2 = [User new]; [arrMutableCopy addObject: user2];
-
Что произойдет если два объекта в NSSet станут похожи/одинаковы уже после добавления?
-
NSOrderedSet, NSMutableOrderedSet
-
Перечислите базовые операторы(функции) для работы с массивом. (forEach, map, reduce, flatMap, filter)
-
thread / queue: в чем разница? какие отличия?
-
Как сделать потокозащищенную запись? (синхронизация)
var arr = [0] func addOneMore() { arr.append(arr.last! + 1) }
-
Сколько возможно создать очередей/потоков на один одноядерный процессор?
-
Что такое очередь, поток? Различия?
-
NSOperationQueue vs GCD vs NSThread: что это? различия? Преимущества? В каких случаях использовать?
-
NSOperationQueue vs NSOperation: различия? Для чего применяются? какие параметры у NSOperationQueue?
-
NSInvocationOperation, NSBlockOperation, NSOperation: различия?
-
Как выполнить асинхронно 10 блоков кода, а затем 11 после всех?
-
Что такое семафор? Какие способы синхронизации потоков/очередей существуют?
-
Как ограничить кол-во потоков на чтение?
- answer: GCD+SerialQueue+ConcurrentQueue+Semaphore с нужным кол-вом сигналов, либо просто использовать NSOperationQueue + maxConcurrentOperationCount
-
NSOperationQueue().cancelAllOperations() что произойдет с блоком операции если выполнение функции еще не закончилось?
- answer: блок продолжит выполнение, однако свойство соответствующего NSOperation cancelled будет выставлено в true
-
@synchronized: что это?
-
Atomic vs Nonatomic synthesized properties: отличия? Преимещуства? В каких случаях использовать?
-
mutex: что это? Для чего используется?
-
OSSpinLock: OSX/iOS
-
dispatch_sync vs dispatch_async? Какое поведение у обоих функций в Concurrent и Serial очереди?
-
dispatch_barrier_async vs dispatch_sync?
-
Критическая секция: что это?
-
Deadlock
-
Как dispatch_once понимает что необходимо сработать только один раз?
static dispatch_once_t onceToken = 0;
-
Dispatch Groups: dispatch_group_t, dispatch_group_enter, dispatch_group_leave, dispatch_group_notify, dispatch_group_wait
-
dispatch_apply: для чего используется?
-
как в тестах дождаться завершения асинхронной задачи?
-
Dispatch Sources: dispatch_source_t dispatch_source_create
- Core Data (UIManagedDocument)
- Realm
- SQLite
- NSCache
- NSURLCache
- NSUserDefaults
- Keychain Store
- NSFileManage
- iCloud
- Property Lists
- NSCoding
- NSIncrementalStore
- SQLCipher
-
Literal
-
Вызов метода на nil указателе
NSArray *nullPointer = [NSArray array]; nullPointer = nil; NSLog(@"it's ok, %d ", [nullPointer count]);
-
NSEnum
-
Сохранение persistent данных в DirectoryFolder
-
Swift Compiler: как устроен?
-
Что такое llvm?
-
Explain how an autorelease pool works at the runtime level.
-
In C, how would you reverse a string as quickly as possible?
-
Explain how code signing works.
-
What is posing in Objective-C?
-
What is the difference between frames and bounds?
-
What happens when the following code executes?
Ball *ball = [[[[Ball alloc] init] autorelease] autorelease];
- iOS developers have a "dispatch_after(when, queue, block)" Grand Central Dispatch (GCD) function they can utilize but once it's set up, these calls can not be easily cancelled. Describe how you might implement a more convenient version of this named "cancellable_dispatch_after"
- Convert a string into an integer without using the inbuilt frameworks
- Give a brief description of how UIScrollView is implemented. How does it operate with gesture recognizers, multiple touches and the run loops?
- How are Objective-C classes implemented? Describe how the Objective-C runtime is implemented. (load, initialize)
- How do you setup/initialise a core data stack in your application? Is this activity performed on main thread? If not, why?
- What is NSPersistentStoreCoordinator? What duties does it perform?
- What is NSPersistentStore? Is it thread safe?
- What is NSManagedObjectContext? What are the different concurrency types? Explain them.
- Different types of persistent stores? Which all types can we have on iOS?
- Can my application have multiple models? (Yes)
- In a single model, can I have few entities in one sqlite db file and remaining in another sqlite db file? (Yes, Hint: configurations)
- What are the different store migration options? When are they used? How do they work? What is mapping model?
- Explain parent-child context setup. How does it work? What are the advantages?
- What is difference between performBlock: and performBlockAndWait:?
- Are the NSManagedObjectContext queues serial or concurrent?
- Can you pass same core data objects between different threads and modify?
- What performance issues can you face when using CoreData?
- What is NSFetchedResultsController? How do you turn on content monitoring?
- How to implement "load more" using NSFetchedResultsController? (Hint: Set fetch offset and fetch limit on the NSFetchRequest of the controller, change the request to fetch more results)
- What are the different delete rules that a relationship can have? Which one takes ownership?
- In NSFetchRequest can we fetch only a selective few attributes of an entity? How?
- Can I have relationship between entities in separate stores (in case of configurations)? (No)
- What are fetched properties? How do you create a fetched property?
- What does $FETCH_SOURCE and $FETCHED_PROPERTY in the predicate mean?
- Why do all model object attributes get marked with @dynamic and not synthesised? What does @dynamic mean?
- When a NSFetchRequest fetches an entity object from store, does it fetch all of its data at once?
- What is a fault?
- What are transient properties?
// TODO: remove answers from comments