Skip to content

Instantly share code, notes, and snippets.

@cooler333
Last active February 22, 2023 19:15
Show Gist options
  • Save cooler333/814f8cb4ce114e5ceb73494c5eaf3f2c to your computer and use it in GitHub Desktop.
Save cooler333/814f8cb4ce114e5ceb73494c5eaf3f2c to your computer and use it in GitHub Desktop.

General

  • Что такое "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: что это?

Memory Management

  • 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?

Patterns / Priciples

  • SOLID: значение? (для каждой буквы с пояснением)
  • Паттерны проектирования? перечислить
  • Scrum/Kanban/XP/TDD
  • Waterfall/Agile/Lean
  • Что такое синглтон? Паттерн или анти-паттерн?
  • Что такое "O"? Как посчитать сложность функции? Какие виды бывают? (O/On/On^2)
  • Что такое бинарное дерево? Зачем оно нужно?

UI

  • 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?

Classes / Structures

  • Различие 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)

Multitasking

  • 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: dispatch_group + notify
    • answer: NSOperationQueue + addDependency
  • Что такое семафор? Какие способы синхронизации потоков/очередей существуют?

  • Как ограничить кол-во потоков на чтение?

    • 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

Data Storage

  • Core Data (UIManagedDocument)
  • Realm
  • SQLite
  • NSCache
  • NSURLCache
  • NSUserDefaults
  • Keychain Store
  • NSFileManage
  • iCloud
  • Property Lists
  • NSCoding
  • NSIncrementalStore
  • SQLCipher

Other Questions (from web)

  • 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?
@cooler333
Copy link
Author

// TODO: remove answers from comments

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment