1. Структура собеседования в РФ-бигтех
Типичная воронка для senior/lead iOS (Яндекс / Avito / Ozon / VK):
- Скрининг — HR + краткий технический.
- Алгоритмическая секция — лайвкодинг на
code.yandex/code.avito(онлайн-редактор без автодополнения и подсветки ошибок) (Habr: подготовка к алго-собесу). - Технический iOS-блок — Swift, рантайм, многопоточность, память, архитектура.
- System Design / Mobile Architecture — проектирование клиента и end-to-end флоу.
- Управленческая / лид-секция — для техлида: команда, делегирование, продукт (Яндекс Практикум).
2. Алгоритмическая секция
2.1. Протокол ответа на алго-задачу ★★ 🇷🇺
Из разбора реального собеса в Яндексе (Habr):
- Внимательно прочитать условие.
- Задать уточняющие вопросы: отсортирован ли массив; только ASCII; возможны ли дубликаты; можно ли менять массив in-place.
- Подробно описать алгоритм словами — думать вслух.
- Проверить на тест-кейсах, оценить по времени и памяти (Big-O).
- Сообщить о готовности → писать код.
- Повторно пройтись: исправить синтаксис/логику, мысленный дебаг.
- Не молчать ни на одном этапе.
2.2. Ключевые паттерны
Готовиться по темам, а не по числу задач. Прямо упомянутые типы: плавающее окно, бинарное дерево.
3. Технический iOS-блок (Senior)
Из разбора senior-вопросов (ios-interview.ru, ч.1):
| # | Вопрос | Тема | Ур. |
|---|---|---|---|
| 1 | Сколько потоков может выполняться одновременно без программного ограничения? | Многопоточность, CPU, параллелизм | ★★ |
| 2 | Перечислите состояния Operation | Жизненный цикл, state machine | ★★ |
| 3 | Чему будет равен count после выполнения? | Data Race, атомарность инкремента | ★★ |
| 4 | Что выведет MemoryLayout? | Размер структуры, выравнивание памяти | ★★ |
| 5 | Зачем нужен @inline? | Оптимизация компилятора | ★★ |
| 6 | Что выведет программа? | Диспетчеризация методов, extension протокола, SR-103 | ★★ |
| 7 | Что такое CALayer, отличие от UIView? | Слои, обработка событий, рисование | ★ |
| 8 | Что такое RunLoop? | Цикл событий, источники ввода | ★★ |
| 9 | Что такое коллизия хеш-функции? | Хеширование, коллизии | ★ |
| 10 | Оцените сложность алгоритма поиска | Бинарный поиск, O(log n) | ★ |
Дополнительные частые темы для senior+
- ARC, retain cycles,
weak/unowned, утечки памяти и их детект. - GCD vs
Operationvs Swift Concurrency (async/await,actor,Task,TaskGroup,@MainActor, structured concurrency). valuevsreferenceтипы, copy-on-write.- Method dispatch: static / dynamic / witness table / message dispatch.
- SwiftUI vs UIKit, жизненный цикл,
@State/@Binding/@Observable, Observation framework. - Архитектуры: MVC, MVVM, MVVM+C, VIPER, RIBs, TCA — плюсы/минусы.
- Сетевой слой, кэширование,
URLSession, фоновые задачи.
4. System Design / Mobile Architecture
4.1. Фреймворк ответа (универсальный) ★★ 🌍
Из System Design Newsletter и Jacob's Tech Tavern (2026):
- Requirements & scope (5–10 мин): что проектируем и ограничения.
- API & data needs (5–10 мин): что приложению нужно от сервера; data model.
- Architecture (10–15 мин): клиентские компоненты и поток данных.
- Deep dive (15–20 мин): один критичный флоу или адаптация под новое требование.
- Wrap-up (1–5 мин): резюме решений и трейд-оффов.
4.2. Уточняющие вопросы в начале
- Что такое успех для фичи? (скорость / надёжность / простота)
- Это всё приложение или одна часть? Платформы (iOS only / cross-platform)?
- Сетевые условия: всегда онлайн / нестабильно / полный офлайн?
- Кто пользователи и на каких устройствах (флагманы / low-end)?
- Технические ограничения: интеграция с легаси, существующая авторизация?
4.3. Частые задачи на проектирование
- Design Instagram feed / media-heavy лента с офлайн-поддержкой.
- Design chat / messaging (офлайн + E2E) — уточнять: WhatsApp-like / Slack-like / Twitter DMs.
- Design ride-sharing app.
- Share photos with friends (фоновая загрузка, чанкинг для 50MB видео).
- Design analytics SDK для крупной компании.
- Design news feed на соцприложении.
4.4. Что ожидают от уровней
| Уровень | Ожидания |
|---|---|
| Junior/Mid | Уточняющие вопросы, базовая диаграмма, объяснить кэширование/фон/lifecycle, простые трейд-оффы. |
| Senior | Проактивно вскрывать скрытые требования, обосновывать выбор (repository pattern для offline-first), глубокое знание mobile-specific (lifecycle, memory pressure, battery, offline sync), адаптация при смене требований, вести разговор. |
| Staff/Lead | Фреймить проблему («а нужен ли вообще офлайн?»), думать о структуре команды и владении модулями, дизайн под будущее, системные трейд-оффы: модуляризация, build time, деплой, обратная совместимость; мыслить как архитект. |
Полный разбор фреймворка и 7 кейсов — в Курсе B.
5. Лид / управленческая секция ★★★ 🇷🇺
Из Яндекс Практикум:
| Блок | Что проверяют | Примеры вопросов |
|---|---|---|
| Технический | Устройство системы, архитектурные решения, баланс архитектуры/бизнеса/команды | «Как выбрать стек, если команда на нём не работала?»; «Как спроектировать систему, выдерживающую рост нагрузки ×10 за год?» |
| Управленческий | Мотивация, разрешение конфликтов, планирование, распределение | «Команда выгорела, сроки поджимают — действия?»; «Два сеньора спорят про ORM — как решите?» |
| Продуктовый | Логика бизнеса, компромисс «идеальный код vs рабочая фича» | «Как убедить заказчика отказаться от ненужной фичи?»; «Три задачи, ресурс на одну — как выбираете?» |
Ожидаемые компетенции лида: техническая экспертиза (быть авторитетом, а не самым быстрым кодером), проектное мышление, делегирование, работа с людьми, решения в неопределённости, сильные soft skills.
6. Расширенный банк iOS-вопросов с опорными ответами senior → staff
Ключевые вопросы технической секции с каркасами сильных ответов. Цель — структура и глубина, а не заученный текст: проговаривайте trade-offs вслух. Источники: ios-interview.ru, Habr.
6.1. Память и ARC ★★
- Retain cycle и как разорвать. ARC считает сильные ссылки; цикл — когда два объекта (или замыкание и владелец) держат друг друга сильно → счётчик не доходит до нуля. Разрыв:
[weak self]/unowned. weakvsunowned.weak— опциональная, зануляется (безопасный выбор по умолчанию);unowned— не опциональна, не зануляется, только когда цель гарантированно жива (иначе краш).- Детект утечек. Instruments (Leaks/Allocations), Memory Graph Debugger, логи
deinit. Системно: рост памяти → Jetsam/OOM-kill. - Copy-on-write.
Array/Dictionary/Stringкопируют буфер только при мутации с >1 владельцем; в своих типах —isKnownUniquelyReferenced.
6.2. Concurrency ★★ ★★★
- GCD vs Operation vs Swift Concurrency. GCD — низкоуровневые очереди;
Operation— зависимости/отмена/приоритеты;async/await+акторы — структурированная конкурентность с проверкой на компиляции. - Data race и защита. serial-очередь,
.barrier,os_unfair_lock/NSLockили актор; ищется Thread Sanitizer. - Актор и
@MainActor. Актор сериализует доступ к состоянию (гонок нет by design);@MainActor— гарантия UI с главного потока. async let/TaskGroupvs GCD. Структурированность + автопроброска отмены/ошибок.Sendable(Swift 6). Маркер безопасного типа; strict concurrency превращает гонки в ошибки компиляции. Staff: стратегия поэтапной миграции.
6.3. Swift и рантайм ★★
- Диспетчеризация. static (
final/struct) / vtable (наследование) / witness table (протокол) / dynamic (@objc). - Value vs reference.
struct— семантика значения, потокобезопаснее;class— идентичность/общее состояние. - SR-103. Метод только в extension протокола → static dispatch по типу переменной, переопределение «не срабатывает».
somevsany.some— opaque, static dispatch, без боксинга;any— existential, динамика, дороже.
6.4. UI и жизненный цикл ★ ★★
CALayervsUIView. View — события/иерархия/Auto Layout; рисует backing-слой (GPU).- RunLoop. Цикл событий потока; режимы
.commonvs.default(таймер при скролле). @State/@Binding/@Observable. Observation (iOS 17+) — точечная инвалидация → меньше перерисовок.- SwiftUI vs UIKit. На практике гибрид; выбор по требованиям и минимальной версии iOS.
6.5. Архитектура и масштаб staff ★★★
- MVVM vs VIPER vs TCA. Выбор по размеру команды/проекта, не по моде; риск «massive ViewModel» у MVVM.
- Модуляризация (SPM). Параллельная сборка/изоляция vs рост build time при плохом графе; резать по доменам.
- DI. Явные зависимости + composition root вместо синглтонов.
- Feature flags / dynamic delivery. Rollout/A-B/kill-switch vs техдолг «мёртвых» флагов.
- Версионирование API. Клиент обновляется не сразу → аддитивные изменения, graceful degradation, форс-апдейт как крайняя мера.
7. Специфика компаний РФ-бигтеха
Форматы отличаются — узнавайте у рекрутёра заранее.
| Компания | Алгоритмы | System Design | Особенности |
|---|---|---|---|
| Яндекс | Лайвкодинг в своём редакторе (code.yandex), уровень Контеста: sliding window, деревья, графы | Mobile/общий SD на старших грейдах | Отдельная лид-секция; ценят рассуждение вслух и чистоту кода |
| Avito | Medium с упором на паттерны и структуры данных | Архитектура приложения, модуляризация | Сильный продуктовый разрез — метрики, влияние на бизнес |
| Ozon | Контесты (Route 256), классические алго-задачи | Проектирование под высокую нагрузку | Акцент на нагрузку и отказоустойчивость |
| VK | Алгоритмы + структуры данных | Масштаб, real-time, ленты/мессенджеры | Акцент на масштаб и real-time |
8. Поведенческая секция и метод STAR
Сильный ответ — по STAR: Situation → Task → Action → Result. Подготовьте 5–6 историй, переиспользуемых под разные вопросы.
| Вопрос | Что проверяют | Каркас сильного ответа |
|---|---|---|
| Конфликт в команде | Разрешение конфликтов, лидерство без давления | Свёл к данным/прототипу, дал решающий критерий, отношения сохранил |
| Команда выгорела, сроки горят | Забота о людях + управление ожиданиями | Пересмотрел скоуп со стейкхолдерами, защитил команду, сдал ядро |
| Решение в неопределённости | Решения при нехватке данных | Зафиксировал допущения, обратимое решение, метрика для проверки |
| Ваша неудача / факап | Рефлексия, ответственность, рост | Признал, починил, ввёл процесс/тест, изменил навсегда |
| Менторинг и рост команды | Развитие людей, делегирование | План роста, ревью, делегирование с возрастающей сложностью → рост грейда |
| Убедить отказаться от фичи | Продуктовое мышление, влияние | Данные, альтернатива, разговор на языке бизнеса → выиграл ресурс |
Что демонстрировать лиду: технический авторитет (а не «самый быстрый кодер»), делегирование, заботу о людях и продукте, решения в неопределённости. Источник: Яндекс Практикум.
9. Дополнительные подборки вопросов
- Medium — Advanced iOS architecture interview questions (Part 4), Anuj Kumar — модуляризация, dynamic feature delivery, CoreML/AI, версионирование API.
- Medium — 70 iOS Interview Questions (Apple, Meta, Amazon)
- Medium — iOS Developer Interview God List (850 вопросов)
- Habr — Object Oriented Design: подготовка к сложному интервью
- ios-interview.ru — Senior, часть 2
- ENIGMA AI — iOS собеседование 2026
- GitHub: weeeBox/mobile-system-design — фреймворк mobile SD