Skip to content

yoalexandra/InterviewPreparation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iOS Interview Preparation Materials

Добро пожаловать в коллекцию материалов для подготовки к собеседованию на позицию 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, sync vs async
  • 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 и как их избежать
  • weak vs unowned (когда использовать)
  • Closures и Memory Management ([weak self])
  • Практические примеры (URLSession, Timer, Delegates, NotificationCenter)
  • Method Dispatch (Static, Dynamic, Message)
  • Virtual Method Table (vtable)
  • Оптимизация производительности с final
  • 15 Q&A карточек

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 карточек

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 карточек

Продвинутые техники 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 карточек

🎯 Как использовать эти материалы

Для подготовки к собеседованию:

  1. Начни с основ - прочитай 01_iOS_Interview_Preparation.md
  2. Изучи системный дизайн - 02_System_Design_Mobile.md
  3. Практикуй схемы БД - 03_Database_Schemas_Practical.md
  4. Изучи пагинацию - 04_Pagination_SwiftUI.md и 05_Pagination_UIKit.md
  5. Освой продвинутые техники - 06_Advanced_Techniques_Diffable.md

Для практики:

  • Создай проекты с примерами из материалов
  • Реализуй пагинацию в своем приложении
  • Попробуй оптимизировать существующий код
  • Практикуйся объяснять решения вслух

📝 Советы для успеха на собеседовании

  1. Практикуйся объяснять код вслух - объясняй свои решения
  2. Задавай уточняющие вопросы - не предполагай, уточняй
  3. Начинай просто - добавляй сложность постепенно
  4. Обсуждай trade-offs - показывай критическое мышление
  5. Будь открыт к обратной связи - итерируй на дизайне
  6. Управляй временем - не трать слишком много времени на одну часть

🔗 Полезные ресурсы

  • Swift.org - официальная документация Swift
  • Hacking with Swift - практические туториалы
  • Ray Wenderlich - iOS туториалы
  • LeetCode - алгоритмические задачи
  • iOS Interview Questions - сборники вопросов

💡 Примеры использования

Пример 1: Подготовка к техническому интервью

  1. Прочитай все материалы
  2. Создай проект с примерами пагинации
  3. Практикуйся объяснять архитектуру
  4. Решай задачи на LeetCode

Пример 2: Улучшение существующего проекта

  1. Изучи материалы по оптимизации
  2. Примени Diffable Data Source
  3. Добавь Image Caching
  4. Оптимизируй пагинацию

📧 Контакты

Если у тебя есть вопросы или предложения по улучшению материалов, создай issue или pull request.


🚀 Удачи на собеседовании!

Помни: практика делает совершенным. Чем больше ты практикуешься, тем увереннее будешь на собеседовании!

Ты готов! Удачи! 🎉

@Alexandra Beznosova

About

iOS Interview Preparation Materials - Comprehensive guides and Q&A for iOS developer interviews

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors