/interview

Вопросы и ответы для подготовки к собеседованию на позицию iOS инженера

Memory(MRC/ARC)

Теория

  1. Счетчик ссылок у класса и структуры?
  2. Устройства памяти в свифте? WWDC видео
  3. RunLoop + RunLoopMode + autoreleasepool + NSThread + NSTimer
  4. unowned vs weak
  5. closure capture list

Практика

  1. Задача 1
  2. Задача 2
  3. Задача 3
  4. Задача 4

Multithreading(NSOperation/GCD)

Теория

  1. Отличие NSOperation и GCD
  2. GCD (group, barrier, sepahore, QoS, workitem)
  3. deadlock/livelock
  4. Как работает async и sync? Как работает под капотом? Как это связано с RunLoop?
  5. На каком потоке работает NSOperationQueue?
  6. В чем разница между потоками и очередями?
  7. Может ли быть у очереди несколько потоков, а наоборот?
  8. NSThread если не разбудить ранлуп умрет ли поток после выполнения одного цикла?
  9. Если запустить приложение в main.m без @autorealesepool что будет?
  10. gcd queue и thread как устроенно под капотом

Практика

  1. Задача 1
  2. Задача 2
  3. Задача 3

Value and Reference types

Теория

  1. Какие структуры к чему относятся?
  2. Какое отличие между типами?
  3. Copy on write? Как реализовать самому?
  4. closure как устроены в памяти value or reference

Практика

  1. Задача 1

Method dispatch

Теория

  1. Какие есть?
  2. Где какие методы используются?
  3. Table Witness Table/Protocol Witness Table

Практика

  1. Задача 1

Generics

Теория

  1. В классах
  2. В структурах
  3. В протоколах(associatedtype, Swift Type Erasure)
  4. В енамах
  5. Какие проблемы решают?
  6. Где можно использовать служебное слово where?

Практика

TODO

Stack and Heap

Теория

  1. Где инициализируется структура, а где класс?
  2. Почему Array в свифте структура, а не класс?
  3. Если инициализировать класс в функции, где он создатся на стэке или в куче?
  4. wwdc 2016 stake heap
  5. Closure на stack или на heap?

Практика

TODO

Designated and Convenience Initializers

  1. Что это такое?

Практика

TODO

Storage

Теория

  1. CoreData
  2. UserDefaults
  3. Keychain

Практика

TODO

Access Control

Теория

  1. Разница между static и class?
  2. Разница между public и open?
  3. Разница между private и fileprivate?

Практика

TODO

iOS Application

Теория

  1. Application states

Практика

TODO

Advanced

Теория

  1. Как устроен словарь под капотом?
  2. Как устроен массив в памяти?
  3. Что нового в Swift 5?
  4. Optional closure, почему escaping?
  5. SwiftClass, side_table
  6. Array deep copy
  7. swift runtime

Практика

TODO

UIKit

Теория

  1. intrinsicContentSize
  2. content hugging and content compression resistance priorities
  3. calayer/uiview
  4. shouldRasterize
  5. viewWillLayoutSubviews
  6. Responder Chain
  7. uiview calayer animation
  8. anchor
  9. frame vs bounds, повороты
  10. UIView и метод hitTest

Практика

TODO

Architecture

Теория

  1. SOLID
  2. DRY/KISS/YAGNI
  3. Dessign patterns

Практика

TODO

Algoritms and Data Structures

Теория

  1. Сложность алгоритма, Big(O)
  2. Сортировки
  3. Алгоритмы поиска
  4. Структуры данных
  5. Сложности операций в Array
  6. Сложности операций в Dictionary

Практика

TODO