← Все навыки

Swift для iOS-разработчика: углублённый курс

Девять тем технической секции iOS — от устройства Swift и ARC до SwiftUI, UIKit, сетей и архитектуры: вопросы собеседований с разобранными материалами

9 разделов, 92 материала Middle / Senior Индивидуально с ментором

Для кого этот курс

  • iOS-разработчики, которые хотят понимать язык глубже уровня «пишу и работает»
  • Те, кто готовится к техническим секциям собеседований и хочет закрыть пробелы по всему стеку, а не только по Swift
  • Переходящие на Swift с Objective-C или другого стека

Курс собран как карта технической секции: по каждой теме — список вопросов, которые звучат на собеседовании, и разобранные материалы под них. Основа — официальная документация Apple, поверх неё статьи с примерами и разборами.

Программа

Swift

Самая объёмная тема курса: язык от опционалов до акторов
  • Опционалы, коллекции, поток управления, замыкания, вариативные параметры и defer
  • Типы-значения против ссылочных, copy-on-write, struct против class по памяти и скорости
  • Инициализаторы, свойства и property wrappers, диспетчеризация методов, method swizzling
  • Протоколы и делегирование, associated types, дженерики, opaque return types, POP
  • Стек и куча, ARC и управление памятью
  • Потоки, GCD, NSOperationQueue, async/await, структурированная конкурентность и акторы

SwiftUI

Жизненный цикл, identity и система лэйаута
  • Жизненный цикл View и identity, @main, AppDelegate и SceneDelegate
  • Система лэйаута, стеки, VStack против LazyVStack
  • Property wrappers SwiftUI и написание собственного
  • @ViewBuilder и непрозрачные типы
  • Взаимная интеграция: SwiftUI в UIKit и UIKit в SwiftUI

UIKit

Жизненные циклы и производительность рендера
  • Жизненный цикл приложения и UIViewController
  • Scene Delegate против AppDelegate, иерархия классов UIKit
  • Auto Layout
  • Оптимизация скролла и рендера: frame buffer, Render Server, FPS, CPU против GPU

Combine

Publisher, Subscriber, операторы
  • Publisher, Subscriber, Subjects и операторы
  • subscribe(on:) против receive(on:), DispatchQueue.main против RunLoop.main
  • eraseToAnyPublisher() и Cancellables
  • Тестирование кода на Combine

Базы данных

Хранение данных на устройстве и Core Data
  • Способы хранения данных в iOS: плюсы, минусы, потокобезопасность
  • Core Data: основные сущности, fetch request, миграции
  • SQL и SQLite: операторы, типы соединений, связи, индексы

Сети

От модели OSI до WebSocket и GraphQL
  • Модель OSI, TCP/IP, отличие TCP от UDP
  • HTTP: элементы запроса, методы, коды ответов, HTTP против HTTPS, TLS/SSL
  • Идентификация, аутентификация и авторизация, MIME-типы
  • WebSocket и GraphQL

Паттерны и архитектура

UI-паттерны, GoF, code smells и CI/CD
  • UI-паттерны и паттерны проектирования
  • Антипаттерны ООП
  • Признаки хорошего и плохого кода (code smells)
  • CI/CD в мобильной разработке

Objective-C

Легаси, которое до сих пор спрашивают
  • Синтаксис, структура программы, функции
  • ООП в Objective-C, категории и расширения
  • Протоколы и делегаты, управление памятью
  • Foundation Framework и задачи на закрепление

Структуры данных

Array, Set, Dictionary и задачи
  • Array, Set, Dictionary: устройство и сложность операций
  • Прочие структуры данных
  • Задачи на структуры данных

Как построено обучение

Каждая тема — список вопросов с собеседований, материалы под них и практический блок

  • Теоретический блок: вопросы в той формулировке, в какой их задают на секции
  • Материалы: официальная документация Apple плюс статьи с примерами и разборами
  • Практический блок и задачи по Objective-C и структурам данных
  • Темп и акценты подстраиваются под ваш опыт — разбираете с ментором то, что провисает