Добро пожаловать в коллекцию материалов для подготовки к собеседованию на позицию iOS разработчика!
Собрано коротко и структурировано для экспресс подготовки к собеседованию
Основы Swift, SwiftUI, UIKit, архитектурные паттерны, concurrency, memory management, networking, и многое другое.
Содержание:
- Swift Fundamentals
- SwiftUI & UIKit
- Architecture Patterns (MVVM, MVC, VIPER)
- Concurrency (async/await, @MainActor, Actor)
- Memory Management (ARC, Retain Cycles)
- Networking (URLSession, Codable)
- Data Storage (UserDefaults, Keychain, Core Data)
- Testing
- Common Interview Questions
Системный дизайн для мобильной разработки iOS - архитектура приложений, паттерны проектирования, оптимизации.
Содержание:
- Mobile vs Backend System Design
- Architecture Layers (Presentation, Domain, Data)
- MVVM Pattern
- Repository Pattern
- Use Cases (Business Logic)
- Dependency Injection
- Network Layer
- Caching Strategy
- Offline-First Architecture
- Performance Optimizations
Практические схемы баз данных для системного дизайна - SQL, NoSQL, API schemas, GraphQL.
Содержание:
- Database Schemas (SQL)
- Примеры: Instagram, Twitter, URL Shortener, Chat System
- NoSQL Schemas (MongoDB)
- API Schemas (REST)
- GraphQL Schema
- Как проектировать схемы на интервью
- Checklist для интервью
Полное руководство по реализации пагинации в SwiftUI приложениях.
Содержание:
- Типы пагинации (Offset-based, Cursor-based)
- Архитектура пагинации
- Полная реализация с примерами кода
- Оптимизации производительности
- Prefetching, Debouncing, Caching
- Checklist для пагинации
Реализация пагинации в UIKit - UITableView и UICollectionView.
Содержание:
- UITableView с пагинацией
- UICollectionView с пагинацией
- Custom Table View Cells
- Оптимизации для UIKit
- Prefetching с UICollectionViewDataSourcePrefetching
- Debouncing, Batch Updates
- Checklist для UIKit пагинации
Продвинутые техники: Diffable Data Source, оптимизация производительности для больших списков.
Содержание:
- Diffable Data Source (iOS 13+)
- Image Caching System
- Оптимизированные ячейки
- Prefetching
- Cell Height Caching
- Debounced Pagination
- Checklist оптимизаций
Полное руководство по протоколам Swift, часто используемым и часто спрашиваемым на собеседованиях.
Содержание:
- Что такое протоколы
- Стандартные протоколы (Equatable, Hashable, Codable, Identifiable, CustomStringConvertible)
- Протоколы коллекций (Sequence, Collection)
- Protocol-Oriented Programming (POP)
- Protocol Extensions и
where-ограничения - Associated Types и protocol composition
- Практические примеры (NetworkService, Repository, Cache)
- Типичные вопросы на собеседовании
Набор карточек вопрос-ответ по многопоточности, async/await, Task, actor, @MainActor и Swift Concurrency.
Содержание:
- Синхронность vs асинхронность
- Главный поток и фоновые очереди
- GCD:
DispatchQueue.main,DispatchQueue.global,syncvsasync async/await,Task,Task.detached- Структурированная конкуренция (
async let, TaskGroup – концептуально) actorи@MainActor- Race conditions и deadlocks
- Обёртка completion-API в
async/await - Отмена задач и
Task.isCancelled - Concurrency vs parallelism
Подробное руководство по внутренним механизмам iOS: RunLoop, First Responder, Touch Events и обработка событий.
Содержание:
- RunLoop и его режимы (
.default,.tracking,.common) - Таймеры и RunLoop modes
- First Responder и Responder Chain
- Touch Events (
touchesBegan/Moved/Ended/Cancelled) - Hit Testing (
hitTest(_:with:),point(inside:with:)) - Gesture Recognizers
UIGestureRecognizerDelegate- CADisplayLink для анимаций
- NotificationCenter и RunLoop
- 15 Q&A карточек для собеседования
Полное руководство по архитектурным паттернам: MVC, MVVM, Clean Architecture, Coordinator, VIPER с практическими примерами.
Содержание:
- MVC (Model-View-Controller) и проблема Massive View Controller
- MVVM (Model-View-ViewModel) с примерами для SwiftUI
- Clean Architecture (слои: Presentation → Domain → Data)
- Use Cases и Repository Pattern
- Coordinator Pattern для управления навигацией
- VIPER (View-Interactor-Presenter-Entity-Router)
- Dependency Injection
- Сравнение паттернов и рекомендации
- 10 Q&A карточек
Полное руководство по управлению памятью и диспетчеризации методов в Swift.
Содержание:
- ARC (Automatic Reference Counting)
- Retain Cycles и как их избежать
weakvsunowned(когда использовать)- Closures и Memory Management (
[weak self]) - Практические примеры (URLSession, Timer, Delegates, NotificationCenter)
- Method Dispatch (Static, Dynamic, Message)
- Virtual Method Table (vtable)
- Оптимизация производительности с
final - 15 Q&A карточек
12. Networking в iOS
URLSession, Alamofire, обработка ошибок и best practices для сетевых запросов.
Содержание:
- URLSession Basics (data/download/upload tasks)
- Async/Await с URLSession (iOS 15+)
- Обработка ошибок (HTTP статусы, retry logic)
- Alamofire (interceptors, async/await)
- REST API Best Practices (структурированный client)
- Загрузка файлов с progress bar
- Network Reachability (NWPathMonitor)
- 10 Q&A карточек
13. Testing в iOS
Unit Tests, UI Tests, Mocking и TDD для iOS разработки.
Содержание:
- Зачем нужны тесты (преимущества)
- Unit Tests с XCTest (assertions, setUp/tearDown)
- Mocking и Dependency Injection
- Создание Mock объектов
- Тестирование async/await кода
- UI Tests с XCUITest (accessibility identifiers)
- Test-Driven Development (TDD)
- Best Practices (AAA pattern, изоляция, fixtures)
- 10 Q&A карточек
14. SwiftUI Advanced
Продвинутые техники SwiftUI: Custom ViewModifiers, Preferences, GeometryReader.
Содержание:
- Custom View Modifiers (переиспользуемые стили)
- Preference Keys (передача данных от child к parent)
- GeometryReader (размеры, позиции, responsive design)
- View Builders (@ViewBuilder для custom containers)
- Environment (@Environment, @EnvironmentObject, custom values)
- Animations Advanced (matchedGeometryEffect, custom timing)
- Performance Optimization (Equatable, LazyStacks)
- 10 Q&A карточек
Полное руководство по жизненным циклам, анимациям и работе RunLoop в iOS.
Содержание:
- App Lifecycle (iOS 13+ SceneDelegate vs iOS 12 AppDelegate)
- Состояния app (Active, Inactive, Background, Suspended)
- ViewController Lifecycle (все методы с примерами)
- View Lifecycle (UIView методы, didMoveToWindow, layoutSubviews)
- RunLoop и обновление UI (как работает, batch updates)
- Animations под капотом (CATransaction, CADisplayLink, Render Server)
- Model Layer vs Presentation Layer
- 20 Q&A карточек
Подробное руководство по frame, bounds, center и системам координат в UIView.
Содержание:
- Frame (позиция в superview) vs Bounds (собственная система координат)
- Система координат (где какие координаты)
- Transform и его влияние (rotation, scale)
- Почему frame изменяется, а bounds нет
- Bounds.origin и Scrolling (как работает UIScrollView)
- Custom ScrollView implementation
- Center и CALayer.position
- AnchorPoint (точка вращения)
- Практические примеры (центрирование, drawing, анимации, hit testing, parallax)
- Convert coordinates между views
- 15 Q&A карточек
Полное руководство по коллекциям Swift и паттерну Singleton.
Содержание:
- Array (операции, производительность, Copy-on-Write)
- Set (уникальность, O(1) contains, Hashable требования)
- Dictionary (key-value, группировка, производительность)
- Сравнение производительности коллекций
- Higher-Order Functions (map, filter, reduce, compactMap, flatMap)
- Lazy Collections (отложенные вычисления)
- Collection Protocols (Sequence, Collection, RandomAccessCollection)
- Singleton Pattern (реализация, thread-safety, проблемы)
- Testable Singleton с Dependency Injection
- Практические примеры (кэш, ID generator, анализ данных)
- 20 Q&A карточек
Полное руководство по особенностям Swift и новым фичам последних версий.
Содержание:
- Lazy Properties (когда использовать, НЕ thread-safe)
- Property Observers (willSet, didSet, практические примеры)
- Property Wrappers (@State, @Published, кастомные wrappers)
- Computed Properties (get/set, практика)
- Access Control (open, public, internal, fileprivate, private)
- Extensions (методы, протоколы, where clauses)
- Optionals Deep Dive (chaining, binding, !)
- Error Handling (throw, try, catch, rethrows)
- Result Type (success/failure pattern)
- What's New: Swift 5.5-6.0 (async/await, actor, macros, typed throws)
- 20 Q&A карточек
Полное руководство по Associated Objects, Objective-C Runtime, Method Swizzling и KVO.
Содержание:
- Associated Objects (добавление свойств через extension)
- Association Policies (RETAIN, COPY, ASSIGN, nonatomic/atomic)
- Практические примеры (UIButton closures, UITextField observers, URLSession metadata)
- Best Practices и ограничения
- Objective-C Runtime Basics (introspection, dynamic method resolution)
- Method Swizzling (замена реализаций в runtime)
- KVO Implementation (как работает под капотом)
- Message Forwarding
- 20 Q&A карточек
Глубокое погружение в Copy-on-Write с визуальными схемами и примерами кода.
Содержание:
- Что такое CoW и зачем нужен
- Как работает CoW в Swift (Array, Dictionary, Set, String)
- Value Types vs Reference Types
- CoW под капотом (isKnownUniquelyReferenced, Storage pattern)
- Visual Schemas (диаграммы памяти, reference counting)
- Implementing Custom CoW (CopyOnWrite wrapper, Property Wrapper)
- Performance Analysis (benchmarks, memory footprint)
- Common Pitfalls (неожиданное копирование, смешивание semantics)
- Advanced Techniques (Lazy CoW, версионирование, structural sharing)
- 20 Q&A карточек
Полное руководство по классам и структурам, stack vs heap, memory layout и производительности.
Содержание:
- Value Types vs Reference Types (полное сравнение)
- Stack vs Heap Memory (характеристики, что где хранится)
- Memory Layout (MemoryLayout, размеры, alignment, padding)
- Visual Schemas (struct assignment, class assignment, function parameters, arrays)
- Performance Comparison (allocation, copy, iteration benchmarks)
- When to Use What (decision tree, примеры)
- Memory Management (ARC для классов, overhead comparison)
- Advanced Topics (existential containers, indirect enums, generic specialization)
- 20 Q&A карточек
Полное руководство по KVO (Key-Value Observing) и паттерну Delegate в Swift iOS.
Содержание:
- Что такое KVO и как оно работает под капотом
- Использование KVO в Swift (базовые примеры, массивы, обработка ошибок)
- Delegate Pattern (протоколы, реализация, опциональные методы)
- Сравнение KVO и Delegate (когда что использовать)
- Практические примеры (синхронизация UI, UITableView, кастомные компоненты)
- Best Practices (избежание retain cycles, правильное удаление observers)
- Современные альтернативы (Combine вместо KVO)
- 20 Q&A карточек
- Начни с основ - прочитай
01_iOS_Interview_Preparation.md - Изучи системный дизайн -
02_System_Design_Mobile.md - Практикуй схемы БД -
03_Database_Schemas_Practical.md - Изучи пагинацию -
04_Pagination_SwiftUI.mdи05_Pagination_UIKit.md - Освой продвинутые техники -
06_Advanced_Techniques_Diffable.md
- Создай проекты с примерами из материалов
- Реализуй пагинацию в своем приложении
- Попробуй оптимизировать существующий код
- Практикуйся объяснять решения вслух
- Практикуйся объяснять код вслух - объясняй свои решения
- Задавай уточняющие вопросы - не предполагай, уточняй
- Начинай просто - добавляй сложность постепенно
- Обсуждай trade-offs - показывай критическое мышление
- Будь открыт к обратной связи - итерируй на дизайне
- Управляй временем - не трать слишком много времени на одну часть
- Swift.org - официальная документация Swift
- Hacking with Swift - практические туториалы
- Ray Wenderlich - iOS туториалы
- LeetCode - алгоритмические задачи
- iOS Interview Questions - сборники вопросов
- Прочитай все материалы
- Создай проект с примерами пагинации
- Практикуйся объяснять архитектуру
- Решай задачи на LeetCode
- Изучи материалы по оптимизации
- Примени Diffable Data Source
- Добавь Image Caching
- Оптимизируй пагинацию
Если у тебя есть вопросы или предложения по улучшению материалов, создай issue или pull request.
Помни: практика делает совершенным. Чем больше ты практикуешься, тем увереннее будешь на собеседовании!
Ты готов! Удачи! 🎉
@Alexandra Beznosova