Общие вопросы
1. Расскажи про свой опыт работы: чем занимался, какие технологии использовал и на чем был основной упор в последнее время?
2. С какими проектами ты работал?
Core Data
3. Какой у тебя опыт работы с базами данных?
4. Насколько глубоко ты знаешь Core Data?
5. Расскажи про объектную модель Core Data.
6. Что такое контекст (NSManagedObjectContext) в Core Data?
7. Расскажи, что такое relationships (отношения) в Core Data?
8. С Core Data ты работал напрямую или использовал какие-то фреймворки-обертки?
9. Расскажи про Realm и свой опыт работы с ним.
10. Почему Realm считают быстрее, чем Core Data?
11. Почему Core Data закрыта, и нельзя посмотреть реализацию, а Realm, по-твоему, открыта?
Concurrency
12. Давай поговорим о многопоточности: что это такое, зачем она нужна, как с ней работать, и что такое очереди?
13. Расскажи подробнее про очереди в многопоточности, какой у них смысл?
14. Что такое Quality of Service?
15. Какие есть проблемы многопоточности (Deadlock, Race Condition, Livelock) и какие правила их предотвращения существуют?
16. Что такое примитивы синхронизации потоков: semafor, mutex, locks, barriers?
17. Можешь привести пример из реальной работы, где можно применить semafor?
18. В чем плюсы и минусы NSOperation по сравнению с GCD?
19. Какой у тебя опыт с async/await? Почему не использовал?
20. Как думаешь, за async/await будущее?
Управление памятью
21. Расскажи, как в iOS работает управление памятью.
22. Что такое ARC?
23. Какие типы ссылок (Strong, Weak, Unowned) ты знаешь и в чем их особенности?
24. Что такое Retain Cycle, и как его избегать?
25. Зачем нужна Unowned ссылка, если есть Weak?
26. В чем разница в производительности между Weak и Unowned?
27. Где хранятся ссылки типа Strong и Unowned, а где Weak? Что такое side table?
28. Почему все ссылки не хранятся в side table?
29. Какие типы данных (Value и Reference) существуют и как они связаны со стеком (Stack) и кучей (Heap)?
30. В чем отличие стека от кучи и зачем их разделяют?
31. Что такое copy-on-write?
32. Что такое closures?
33. Что такое Capture List? В чем его особенность?
34. Как сделать так, чтобы значение, захваченное в Capture List, можно было изменить?
35. Что такое ключевое слово @escaping?
36. Зачем нужен autorelease pool? Приведи пример его использования.
Objective-C и Runtime
37. Какой у тебя опыт работы с Objective-C?
38. Есть ли понимание, как устроен Objective-C Runtime?
39. Что такое таблица вызовов в Objective-C?
40. Что такое Method Swizzling, в чем его смысл и какое действие происходит при его использовании?
41. Зачем в принципе надо подменять методы?
42. У нас довольно много кода на Objective-C. Как ты думаешь, почему?
UI и верстка
43. Расскажи про свой опыт работы с UI.
44. Как ты работал с Auto Layout?
45. Пробовал ли ты верстать Constraint’ы строками?
46. Какие проблемы могут возникнуть при работе со Storyboards?
47. Что такое Xib-файлы и чем они отличаются от Storyboards?
Работа с сетью
48. Какой у тебя опыт работы с сетями?
49. Что такое Codable?
50. Зачем нам нужен протокол Codable при работе с сетью?
51. Как работает URLSession? В каком режиме?
52. Как реализовать несколько последовательных запросов с помощью URLSession?
53. Почему последовательные запросы могут быть предпочтительнее параллельных? Приведи пример.