Skip to content

Вопросы на собеседовании: Мобильный разработчик

100 реальных вопросов с образцовыми ответами и пояснениями для уровня Senior.

Смотреть пример резюме: Мобильный разработчик

Тренировка флешкарточками

Интервальное повторение · Hunter Pass

Вопросы

reactflutter

Я выберу нативные Swift и Kotlin, потому что имеющаяся экспертиза и чувствительный к задержкам UI важнее выгоды от общего кода.

  • Торговые графики и экраны входа останутся в SwiftUI или UIKit и Compose при бюджете 16,7 мс на кадр, а учётные данные и биометрическая политика будут жить не в UI, а в платформенных адаптерах безопасности с Keychain, Keystore, LAContext и BiometricPrompt.
  • Я разделю схемы API и спецификации поведения, чтобы две сложившиеся команды выпускались независимо от общего runtime.
  • К KMP для доменной и сетевой логики я вернусь только после замера хотя бы 30% дублирующейся работы по сопровождению.

Зачем это спрашивают: Интервьюер проверяет, учитывает ли кандидат структуру команд, задержку рендеринга и независимость релизов вместо выбора любимого фреймворка.

typescript

Я выберу React Native с нативными границами checkout, потому что он соответствует команде и изолирует критичные платформенные интеграции.

  • Общий TypeScript покроет навигацию, состояние каталога, валидацию и API-клиенты с целью около 80% общего продуктового кода, а не 100%.
  • Платёжные SDK, трассировка запуска и камера останутся в малых модулях Swift и Kotlin за типизированными асинхронными интерфейсами.
  • Двухнедельный прототип должен пройти бюджеты холодного запуска, прокрутки и p95 checkout на самых старых устройствах.

Зачем это спрашивают: Интервьюер оценивает, умеет ли кандидат выбрать кроссплатформенный подход с явной целью переиспользования и проверкой производительности.

platformapiandroid-components

Я выберу Flutter, потому что единая модель рендеринга и одна команда соответствуют одинаковому UI и сроку.

  • Dart будет отвечать за экраны, валидацию, хранение и синхронизацию, а камера, GPS и фоновая загрузка останутся за тремя узкими плагинами.
  • Критерии приёмки составят 2 секунды холодного запуска и 16,7 мс p95 построения кадра на слабом Android.
  • Контракты плагинов останутся асинхронными и версионированными, чтобы нативные типы не проникали в домен.

Зачем это спрашивают: Интервьюер проверяет, выбран ли Flutter по конкретным продуктовым и кадровым причинам, с нативными границами и измеримыми критериями отказа.

composeswiftuitypes

Я разделю через KMP детерминированную доменную логику и данные, оставив навигацию, жизненный цикл и UI нативными.

  • Общий Kotlin владеет ценами, валидацией, DTO и синхронизацией с платформенными адаптерами для хранилища и HTTP.
  • SwiftUI и Compose получают неизменяемые данные через узкую границу без общего UI и абстракций жизненного цикла.
  • Сначала мигрирует один eligibility-сценарий с одинаковыми golden fixtures и регрессией запуска не более 5%.

Зачем это спрашивают: Интервьюер проверяет, проводит ли кандидат практичную границу общего домена вместо переноса платформенного UI в KMP.

widgetsconcurrencyandroid-components

Я дам каждому исполняемому модулю собственный composition root и разрешу расширениям подключать только явно безопасный для них общий домен.

  • Чистые модели, валидацию, сериализацию и узкие контракты репозиториев можно разделить, но UIApplication, навигация, аналитика, платёжные SDK и синглтоны основного приложения останутся в его target.
  • Межпроцессное состояние использует минимальный App Group container или Keychain access group с явным владельцем и атомарной записью, но не предполагает общий внутрипроцессный кеш.
  • CI проверяет link map каждого target и запрещённые символы, затем измеряет RSS запуска ниже 50 МБ и проверяет завершение расширения через NSExtensionContext или обработчик его предельного срока.

Зачем это спрашивают: Интервьюер проверяет изоляцию процессов, безопасные для расширений границы зависимостей и контролируемый обмен между процессами, а не общую модуляризацию фич.

indexesarchitecture

Я откажусь от гарантии в 15 минут и сопоставлю каждой нагрузке разрешённый режим с учётом квот.

  • iOS использует BGAppRefreshTask для короткого обновления, BGProcessingTask для отложенной индексации и background URLSession для передач; Android использует уникальные задачи WorkManager с ограничениями, оставляя expedited work или объявленный видимый пользователю foreground service только для действительно срочной работы.
  • Надёжный журнал работ хранит зависимости, checkpoints, время повтора и ключ идемпотентности, поэтому callback ОС лишь открывает окно выполнения, а любой worker может безопасно продолжить задачу.
  • Серверные push уменьшают polling, UI показывает отложенную работу, а телеметрия измеряет задержку выдачи окна, истечение, отказ из-за квоты и завершение только для активных доступных устройств вместо обещания работы после принудительного закрытия.

Зачем это спрашивают: Интервьюер проверяет классификацию фоновых нагрузок, соблюдение квот iOS и Android и возобновляемость вместо надежды на периодические таймеры.

concurrencycallbacks

Я выберу reducer-driven автомат с единым неизменяемым состоянием checkout и явными эффектами.

  • Действия и внешние callbacks станут типизированными событиями, а только reducer сможет менять один из 12 шагов.
  • Сетевые и платёжные эффекты вернут результат с ID попытки, поэтому устаревший ответ не перезапишет новый.
  • Я сохраню минимальное возобновляемое состояние и протестирую переходы, дубли callbacks и восстановление процесса.

Зачем это спрашивают: Интервьюер оценивает, умеет ли кандидат сделать конкуренцию и восстановление детерминированными через однонаправленное состояние.

designserializationjavascript

Я оставлю обработку кадров нативной и передам через мост только компактные результаты.

  • Swift и Kotlin владеют буферами камеры, потоками и распознаванием, исключая 30 крупных аллокаций и сериализаций в секунду.
  • Общий код получает асинхронный версионированный результат со значением, форматом, уверенностью и временем.
  • Контракт открывает запуск, остановку, разрешения и ошибки, а доля потерянных кадров должна быть ниже 1%.

Зачем это спрашивают: Интервьюер проверяет, видит ли кандидат проблему высокочастотного трафика через мост и сокращает ли данные на нативной стороне.

a11ydesign-systemnavigation

Я разделю семантические токены и контракты поведения, но не общие отрисованные компоненты для трёх платформ.

  • Цвета, интервалы, типографика, имена иконок и длительности анимаций идут из одного версионированного пакета с генерацией кода.
  • Общими будут состояния, анатомия, имена аналитических событий и требования доступности, а SwiftUI, Compose и Flutter создадут подходящие своей платформе реализации.
  • Визуальные тесты покроют 20 компонентов, а платформенные отдельно проверят масштаб шрифта, порядок фокуса и кнопку назад.

Зачем это спрашивают: Интервьюер проверяет, умеет ли кандидат стандартизировать дизайн-систему без потери платформенных правил взаимодействия и доступности.

reactflutter

Я выберу KMP для бизнес-логики и данных, сохранив нативные воспроизведение и UI во всех трёх приложениях.

  • Общий код покроет каталог, entitlement, метаданные загрузок и API-клиенты, где 70% пересечения стабильны и тестируемы.
  • AVFoundation и Media3 останутся за платформенными интерфейсами, потому что DRM, фоновое аудио и controls различаются.
  • Пилот должен сократить дублирующую работу на 25%, не подняв p95 старта воспроизведения выше 800 мс.

Зачем это спрашивают: Интервьюер оценивает платформенный выбор, который балансирует переиспользование для трёх приложений и глубокие нативные требования к медиа.

schemadesign

Я выберу нормализованные таблицы SQLite для сущностей, индексированные поисковые проекции и надёжный журнал операций.

  • Формы, ответы, вложения и sync-метаданные получат UUID, внешние ключи, tombstones и серверные ревизии.
  • Составные индексы появятся из замеров, а текст обслужит FTS-таблица вместо сканирования JSON.
  • Вложения останутся зашифрованными файлами вне базы, а метаданные и состояние загрузки транзакционно сохранятся в SQLite.

Зачем это спрашивают: Интервьюер проверяет, умеет ли кандидат проектировать локальное хранилище для масштаба, задержки запросов и синхронизации, а не считать его простым кешем.

typingprotocols

Я выберу возобновляемую двунаправленную синхронизацию с упорядоченными операциями и серверными дельтами по курсору.

  • Клиент отправляет около 100 операций в пакете с монотонными номерами и хранит максимальный подтверждённый номер.
  • Сервер возвращает изменения после непрозрачного курсора с лимитом по байтам и количеству для медленного канала.
  • Оба направления сохраняют прогресс независимо, поэтому отмена или принудительное завершение процесса не перезапускает все 10 000 правок.

Зачем это спрашивают: Интервьюер оценивает, способен ли кандидат определить конкретный протокол синхронизации для долгого офлайна и ограниченной пропускной способности.

immutability

Я сделаю файлы символов неизменяемыми релизными артефактами, привязанными к точной идентичности каждого выпущенного бинарника, и поставлю проверенную символикацию в gate релиза.

  • iOS-архив сохраняет каждый dSYM с индексом по Mach-O UUID и записывает версию приложения, номер сборки, commit исходников и запуск CI в подписанный релизный манифест.
  • Каждый вариант Android сохраняет свой R8 mapping.txt и неурезанные нативные символы для каждой ABI с индексом по versionCode и ELF build ID, а не в изменяемой папке последнего релиза.
  • Защищённая релизная job загружает символы с checksum в crash-сервис и write-once хранилище со сроком 24 месяца; повторы идемпотентны, а существующий UUID или build ID нельзя перезаписать.
  • До еженедельного rollout детерминированные тестовые сбои Swift, Kotlin и нативного кода должны за 10 минут дать минимум 99% символицированных кадров в релизном dashboard, иначе CI блокирует продвижение.

Зачем это спрашивают: Интервьюер проверяет неизменяемое происхождение релизных артефактов для платформенных форматов символов, срок хранения и измеримый gate символикации.

Я применю правила по полям вместо единого last-write-wins для всей записи.

  • Скалярные поля используют серверное время лишь там, где допустима потеря правки, а проигравшее значение хранится для аудита.
  • Заметки будут append-only записями с UUID, поэтому параллельные добавления сольются без перезаписи.
  • Статус подчинится монотонному серверному автомату, отклоняющему переход в более раннее состояние.

Зачем это спрашивают: Интервьюер проверяет, выводит ли кандидат семантику конфликтов из доменных инвариантов вместо универсального правила по времени.

design

Я использую непрозрачные курсоры над надёжным журналом изменений и ограниченный fallback на снимок.

  • Каждая страница вернёт upserts, tombstones, следующий курсор и checksum в пределах 2 МБ.
  • Клиент применит страницу и продвинет курсор в одной транзакции, исключая частичный прогресс после завершения процесса.
  • Недействительный курсор запускает постраничный снимок в теневые таблицы, которые заменят рабочие лишь после проверки.

Зачем это спрашивают: Интервьюер оценивает эффективность дельты, атомарное продвижение курсора и безопасный путь полной ресинхронизации.

databaserestencryption

Я использую SQLCipher со случайным 256-битным ключом базы и отдельное аутентифицированное шифрование файлов вложений.

  • Android оборачивает ключ базы неэкспортируемым ключом Android Keystore с аппаратной защитой, когда её подтверждает KeyInfo; без неё устройство получает документированную программную защиту с меньшим доверием либо лишается офлайн-доступа в зависимости от модели угроз.
  • iOS хранит ключ базы с kSecAttrAccessibleWhenUnlockedThisDeviceOnly и применяет согласование или обёртку через P-256 Secure Enclave только при требовании аппаратно привязанного присутствия пользователя, а не как хранилище произвольного AES-ключа.
  • Отдельные AES-GCM ключи файлов ротируются независимо, а релизные замеры проверяют открытие, миграцию и поиск быстрее 2 секунд без повторного шифрования колонок, если его не требует модель угроз.

Зачем это спрашивают: Интервьюер проверяет баланс между управлением ключами, аутентифицированным шифрованием и измеренной производительностью устройства.

caching

Я разделю все 250 МБ по классам данных и введу квоту даже для сохранённого пользователем контента.

  • Сохранённые наборы статьи и главного изображения получают 60 МБ, то есть около 88 средних наборов, а при достижении лимита приложение просит удалить или заменить загрузки вместо скрытого превышения.
  • Метаданные ленты получают 30 МБ и TTL семь дней, а несохранённые изображения получают 140 МБ и size-aware LRU.
  • Оставшиеся 20 МБ резервируются для транзакционной подготовки загрузки, а реестр кеша отклоняет запись, если очистка не удержит общий объём в пределах 250 МБ.

Зачем это спрашивают: Интервьюер оценивает, превращает ли кандидат лимит хранилища и продуктовую семантику в явную политику кеша.

jobs

Я использую возобновляемые передачи под управлением ОС и считаю завершение за ночь целью best effort, а не гарантией.

  • На iOS будет background URLSession, а на Android WorkManager с ограничениями по сети и зарядке.
  • Файл поддерживает чанки или серверное возобновление со смещением, checksum и идемпотентным завершением.
  • UI показывает очередь, загрузку и отсрочку и позволяет требовать Wi-Fi, потому что ОС не гарантируют срок.

Зачем это спрашивают: Интервьюер проверяет, уважает ли кандидат ограничения мобильных ОС вместо проектирования постоянно работающего воркера.

databaseschema

Я ограничу foreground-миграцию аддитивными изменениями, а возобновляемое обновление данных запущу после открытия совместимой схемы.

  • Для каждой поддерживаемой исходной схемы есть проверенный путь к версии 12; запуск выполняет только обязательный DDL и метаданные совместимости, а фон обрабатывает по 1 000 строк с отдельными checkpoints.
  • Манифест миграции заранее считает пиковый занятый объём как текущую базу, теневую копию при её наличии, временные индексы, максимальный WAL или journal и запас файловой системы по измеренному худшему случаю именно этого пути, а не по постоянному множителю.
  • Чтение поддерживает старое и новое представления до конца проверки, а нехватка места оставляет исходную базу нетронутой и открывает явный путь управления хранилищем и чтения для восстановления.

Зачем это спрашивают: Интервьюер проверяет безопасность миграции при пропущенных релизах, больших локальных данных и строгом бюджете запуска.

asyncconcurrencycoroutines

Я стандартизирую семантику операций между платформами, но оставлю типы планировщика и runtime внутри нативных адаптеров.

  • Контракты различают одиночный асинхронный результат и упорядоченный поток и задают владельца отмены, буферизации и завершения; Swift реализует их через actors и AsyncSequence, а Kotlin через структурированный CoroutineScope и Flow.
  • Принадлежащая фиче задача или область конкурентности отменяет дочернюю работу, инфраструктура не запускает бесхозные detached Task или GlobalScope job, а переход на MainActor или Dispatchers.Main происходит только в конечном UI-адаптере.
  • Общие контрактные тесты используют виртуальные часы и медленных потребителей, чтобы на обеих реализациях проверить порядок, ограниченный буфер, одно завершение и отмену за 100 мс.

Зачем это спрашивают: Интервьюер проверяет межплатформенный контракт конкурентности, который сохраняет правила нативной структурированной конкурентности и не навязывает один runtime всем клиентам.

Закрытые вопросы

  • 21

    Финансовому приложению нужны access token на 15 минут, сессии на 30 дней, биометрический повторный вход и немедленный отзыв после смены пароля. Как вы построите аутентификацию?

    authpasswordstokens
  • 22

    Корпоративное приложение разрешает один управляемый телефон на аккаунт, а копирование refresh token на другое устройство не должно работать. Какую схему device binding вы выберете?

    swiftuidesigntokens
  • 23

    Приложение хранит refresh token, ключ базы и настройку требовать биометрию через 5 минут. Что попадёт в Keychain или Keystore и с какой политикой?

    tokenssecure-storagedatabase
  • 24

    Билетное приложение теряет по $200 на каждый случай автоматизированного захвата аккаунта и хочет attestation при входе без блокировки законных пользователей на неподдерживаемых устройствах. Как применить App Attest и Play Integrity?

  • 25

    Регулируемому приложению нужен certificate pinning, но сертификаты API меняются каждые 60 дней, а экстренная ротация не должна отключить клиентов на месяцы. Какую стратегию вы выберете?

    api
  • 26

    Wellness-приложение работает в ЕС и США, собирает геолокацию и медицинские заметки и должно экспортировать и удалить аккаунт за 30 дней. Какую модель данных вы выберете?

    design
  • 27

    Приложение iOS и Android выполняет вход через внешнего OAuth/OIDC-провайдера, а перехват callback и повтор authorization code входят в модель угроз. Какую архитектуру входа вы выберете?

    authoautharchitecture
  • 28

    Маркетплейс отправляет 20 миллионов push-уведомлений в день на iOS и Android, у пользователя бывает пять устройств, а дубли заказов должны быть ниже 0,1%. Какую архитектуру вы выберете?

    android-componentsalerting
  • 29

    Мобильный checkout поддерживает карты, 3D Secure и wallets, а пользователь может завершить приложение после банковской авторизации, но до результата. Какую модель платёжных состояний вы выберете?

    auth
  • 30

    Детскому приложению нужны push и аналитика, но оно не должно показывать персональные данные на lock screen или отправлять рекламный ID без согласия. Какое решение вы примете?

    android-componentsdiscovery
  • 31

    Продукт задаёт p75 холодного запуска менее 1,8 секунды и тёплого менее 500 мс на телефоне четырёхлетней давности. Как вы распределите бюджет и выберете eager-инициализацию?

  • 32

    Торговый экран получает 200 обновлений цен в секунду и должен держать 60 fps с бюджетом 16,7 мс на кадр. Какую архитектуру рендеринга вы выберете?

    architecture
  • 33

    Камера обрабатывает 4K при 60 fps через захват, анализ и превью на iOS и Android. Шесть удержанных кадров YUV 4:2:0 занимают около 72 МБ ещё до буферов модели. Как различия ARC, GC и нативных аллокаций влияют на владение буферами?

    ownershipdesignci-cd
  • 34

    Бинарник занимает 180 МБ, конверсия установки падает выше 120 МБ, а три редко используемые ML-модели занимают 70 МБ. Какое решение по упаковке вы примете?

  • 35

    В сети с RTT 400 мс домашний экран делает 18 запросов и становится полезным через 5 секунд. Какую сетевую архитектуру вы выберете для p75 в 2 секунды?

    design
  • 36

    Видеоприложение разрешает до 20 офлайн-фильмов в пределах 4 ГБ, доступ должен прекращаться максимум через 48 часов офлайн, а отзыв применяться за 15 минут при наличии сети. Какую архитектуру защищённого медиа вы выберете?

    architecture
  • 37

    Товарная лента показывает 1 000 изображений при 60 fps, а кешу доступно только 100 МБ RAM и 500 МБ диска. Как вы построите image pipeline?

    cachingci-cd
  • 38

    В inbox 100 000 диалогов, поступает 20 обновлений в секунду, а scroll jank должен быть ниже 1% на слабом Android. Какую архитектуру списка вы выберете?

    rendering
  • 39

    Нужна observability для 5 миллионов ежедневных сессий, но телеметрия должна потреблять менее 1% CPU и 5 МБ в день и не содержать сырых персональных данных. Что вы инструментируете?

    discoveryobservabilitysessions
  • 40

    У приложения 98,7% crash-free sessions и 0,9% Android ANR, а release gate требует 99,8% и менее 0,3%. Какие quality gates и диагностику вы выберете?

    sessionsquality-gatesanr
  • 41

    Два приложения выпускаются еженедельно, store review занимает до 48 часов, а изменение checkout должно отключаться без нового бинарника. Какую release-архитектуру вы выберете?

    decision-makingarchitecture
  • 42

    Рискованный редизайн поиска должен попасть к 10% пользователей, сохраняться после перезапуска и исключать версии ниже 8.4. Как вы реализуете feature flag?

    feature-flags
  • 43

    Remote config управляет качеством изображений, размером страницы и числом повторов на 3 миллионах устройств, но неверное значение может сломать приложение. Какую валидацию и fallback вы выберете?

    designresilienceconfig
  • 44

    Android-версия ожидает 200 000 сессий в день, а управляемый rollout Google Play поддерживает фазы 1%, 5%, 20%, 50% и 100%. Как выбрать gates продвижения за 72 часа?

    sessions
  • 45

    API ленты переходит от страниц со смещением к курсорам, пока 15% активных устройств старше 90 дней, выкладки идут каждый час, а пользователь может продолжить цепочку страниц через 24 часа. Как развивать согласование версий и контракт pagination?

    paginationdeployment
  • 46

    В репозитории лежат iOS, Android и KMP, pull request должен получить результат за 15 минут, а полные device tests занимают 90 минут. Как вы построите mobile CI/CD?

    feedbackcode-reviewci-cd
  • 47

    CI-провайдер собирает оба магазина, но pull-request jobs не должны видеть долгоживущие signing keys или store credentials. Какую архитектуру подписи и секретов вы выберете?

    state-managementsecretsarchitecture
  • 48

    В приложении из 60 модулей неясное ownership, а изменение общей навигации требует reviews от восьми команд. Какая модель владения избежит центрального bottleneck?

    navigationownershiptracking
  • 49

    У sync engine есть 12 надёжных границ между локальной правкой, отправкой, подтверждением, применением дельты и фиксацией курсора. Как построить детерминированную стратегию fault injection для смерти процесса и ненадёжной сети?

    injectionconcurrency
  • 50

    KMP-репозиторий экспортирует suspend functions и Flow в SwiftUI, но отмена Swift Task оставляет Kotlin-работу активной, а доменные ошибки приходят как непрозрачные NSError. Какой мост Swift concurrency вы спроектируете?

    concurrencycoroutineskotlin
  • 51

    После перехода на Android 13 разрешение на уведомления дают только 34% пользователей, а открытия напоминаний о лекарствах падают на 41%, потому что приложение запрашивает доступ при холодном запуске, не объяснив пользу. Выкладка уже достигла 30%. Что вы измените?

    permissionsandroid-components
  • 52

    Складской AR-сканер начинает с 60 fps, но через 12 минут падает до 18 fps на телефонах среднего класса; тепловое состояние достигает serious, CPU держится около 180%, а память не растет. Точность сканирования не может опускаться ниже 98%. Как вы восстановите длительную производительность?

    memorywarehouse
  • 53

    После релиза с новым вычисляемым столбцом Room доля заметных пользователю ANR выросла с 0,22% до 1,10%; открытие базы блокирует запуск на 6,4 секунды во время заполнения 310 000 строк. При этом Room нужна совместимая схема до открытия любого DAO. Что вы выпустите?

    databaseschemaroom
  • 54

    На iOS 18 в 0,7% из 600 000 ежедневных сессий приложение зависает на 8-15 секунд после нажатия Search, но watchdog-отчеты не содержат сбоя. Main Thread Checker ничего не находит. Как вы локализуете зависание?

    concurrencysessions
  • 55

    После релиза для Android 14 у 23% устройств ночная синхронизация остатков откладывается более чем на 12 часов. Приложение создает 180 срочных задач WorkManager на устройство в день, а затронутые пользователи попали в категорию Restricted механизма App Standby Buckets. Как вы восстановите работу?

    jetpack
  • 56

    Расширение Share на iOS завершается системой на старых телефонах, когда пользователь отправляет шесть 24-мегапиксельных фотографий. Отчеты Jetsam показывают 118 МБ непосредственно перед завершением, хотя основное приложение работает нормально. Как вы исправите расширение?

  • 57

    Версия 7.2 увеличивает медианное фоновое потребление батареи с 2,1% до 11,8% в день у 400 000 Android- и iOS-пользователей, а свежесть синхронизации улучшилась лишь на 30 секунд. Как вы сдержите и исправите регрессию?

  • 58

    Расширение Notification Service на iOS пытается загрузить медиафайл размером 12 МБ и доходит до системного лимита времени. В кампании на 500 000 уведомлений 31% не показывают ни медиа, ни предусмотренный запасной вариант. Как вы остановите и исправите сбой?

    android-componentsestimation
  • 59

    После выпуска офлайн-поиска 1,6% Android-сессий зависают на четыре секунды во время записи синхронизации в базу Room объемом 2,5 ГБ. Трассы показывают ожидание соединения в UI, но рабочая телеметрия не записывает режим журнала и состояние контрольных точек. Что вы исследуете и измените?

    databaseroomsessions
  • 60

    Экран карты во Flutter пропускает 38% кадров на устройствах среднего класса; UI thread остается ниже 5 мс, но raster time достигает 28 мс при анимации 600 маркеров. Как вы исправите это, не убирая маркеры?

    flutterconcurrency
  • 61

    За 40 минут без сети 3200 выездных сотрудников создают 70 000 записей; после подключения 4,8% исчезают, хотя API вернул успех до фиксации данных асинхронным серверным обработчиком. Как вы исправите контракт?

    asyncconcurrencyapi
  • 62

    После восстановления сети обновление на переднем плане и фоновый обработчик одновременно отправляют корректировки остатков, создавая 1,9% дублей. Сервер не сможет добавить идемпотентность на этой неделе, а процесс может завершиться после отправки, но до подтверждения. Какую временную защиту вы выпустите?

    idempotencyconcurrency
  • 63

    Два устройства 48 часов редактируют один отчет инспекции offline; после подключения в 0,3% из 500 000 отчетов старый статус незаметно объединяется с новой подписью. Как вы предотвратите повреждение конфликтом?

    combine
  • 64

    Во время видеоинтервью входящий звонок прерывает запись на 18 секунд. После звонка в 6,2% сеансов iOS замирает предпросмотр, а в 2,1% запись продолжается без звука микрофона, хотя таймер идет. Как вы безопасно восстановите работу?

    sessions
  • 65

    Безопасность обнаружила refresh tokens в открытых логах, загруженных с 14 000 устройств за девять дней. Токены живут 30 дней, а обновление в store займет минимум 24 часа. Что вы сделаете?

    tokens
  • 66

    Новый антифрод считает App Attest и Play Integrity одним логическим значением и блокирует 7,4% нормальных входов. На iOS ошибки сосредоточены на восстановленных установках, а на Android на устройствах без строгого вердикта целостности. Как вы восстановите доступ?

  • 67

    Письма для сброса пароля используют собственную схему приложения, которую вредоносное Android-приложение может зарегистрировать на любой поддерживаемой версии ОС. Уже отправлено около 900 000 неистекших ссылок. Как вы закроете перехват, не полагаясь на обновление платформы?

    passwords
  • 68

    После релиза подписок 3800 пользователей видят списание магазина, но не получают премиум-доступ, а 620 сохраняют доступ после возврата. Инциденты есть и в StoreKit 2, и в Google Play Billing. Как вы сверите права?

    incidents
  • 69

    Фоновая загрузка завершается на сервере, но iOS останавливает приложение до сохранения callback от фоновой URLSession. При следующем запуске 2,6% из 80 000 вложений загружаются повторно под новым ключом объекта. Какую семантику вы реализуете?

    networking
  • 70

    Диагностический SDK собрал точную геолокацию и содержимое буфера обмена у 38 000 пользователей, хотя согласие распространялось только на данные о сбоях. Юристы требуют остановить сбор за четыре часа. Что вы сделаете?

  • 71

    Apple отклоняет версию 9.0 за два дня до запуска, потому что действие Delete Account открывает главную страницу поддержки и не позволяет начать удаление. От даты зависят 400 000 предзаказов. Как вы отреагируете?

    generics
  • 72

    Во время семидневного поэтапного релиза App Store на четвертый день при 10% доля сессий без сбоев падает с 99,9% до 98,6% только на iPhone 12. Маркетинг требует продолжать. Что вы решите?

    sessions
  • 73

    Поэтапная выкладка в Play достигает 25% из 5 миллионов пользователей, когда ANR на Android 10 растут с 0,30% до 0,82%. Остановка артефакта прекращает новый охват, но не удаляет его с обновившихся устройств. Что вы сделаете?

    gtmartifacts
  • 74

    Опечатка в выдаваемом сервером флаге включает новый сценарий оплаты на 100% вместо 1%, и за шесть минут доля платежных ошибок растет с 0,4% до 7,2% среди 900 000 активных пользователей. Оба сценария проходят через серверную маршрутизацию. Как вы остановите проблему и сделаете управление надежным?

  • 75

    После миграции импорта фотографий на iOS 18 у пользователей с ограниченным доступом 18% ранее выбранных материалов помечаются удаленными, а экран импорта постоянно просит доступ ко всей медиатеке. Как вы исправите миграцию?

    migrationspermissions
  • 76

    Сбой стороннего SDK идентификации блокирует запуск у 42% из 1,1 миллиона ежедневных пользователей, потому что инициализация не ограничена по времени. Заменить SDK во время инцидента нельзя. Что вы выпустите сейчас и измените позже?

    incidentsdependenciesresilience
  • 77

    App Store Connect блокирует завтрашний iOS-релиз: архив сообщает о незаявленном API с обязательным обоснованием в SDK аналитики, а в одном встроенном фреймворке нет privacy manifest. Зависимость используют четыре white-label приложения. Что вы сделаете?

    android-componentsapidependencies
  • 78

    p95 мобильного CI вырос до 45 минут при 120 pull request в день, а восемь инженеров ждут свободный исполнитель более двух часов. У вас один спринт и нельзя увеличить бюджет вычислений. Что вы измените?

    agilecode-review
  • 79

    Модуляризация создала цикл между Checkout, Profile и Analytics, увеличила чистую сборку с 18 до 31 минуты и лишила модули независимых тестов. Как вы разорвете цикл, не сливая их обратно?

    modularizationtesting
  • 80

    Обязательное обновление React Native переводит приложение на новую архитектуру, ломает 11 нативных модулей и ухудшает p95 холодного запуска на 18%. Поддержка безопасности текущей ветки закончится через шесть недель. Как вы проведете обновление?

    reactarchitecture
  • 81

    Через шесть месяцев после выбора Flutter общий слой мультимедиа отдает в Dart категории iOS AVAudioSession и константы Android AudioFocus. Три функции уже проверяют платформу в 27 местах, а восстановление Bluetooth не срабатывает в 8% сеансов. Как вы исправите границу?

    oopdartsessions
  • 82

    Два нативных приложения на 420 000 строк дублируют сетевую логику и валидацию; руководство хочет довести долю общего кода KMP до 60% за девять месяцев без остановки ежемесячных релизов. Как вы проведете миграцию?

    validation
  • 83

    Модули, содержащие 22% из 350 000 строк приложения, создают 68% рабочих сбоев и 46% срочных исправлений. Полная перепись оценена в 18 месяцев, а продукт требует еженедельных релизов. Какой путь миграции вы выберете?

    estimationmigrations
  • 84

    Версия 5 дизайн-системы меняет отступы и API кнопок на 74 экранах в четырех приложениях, а конверсия оплаты не может упасть более чем на 0,2%. Как вы проведете переход?

    system-designdesignapi
  • 85

    У мобильного приложения 2 миллиона ежедневных сессий. Оплата сейчас завершается в 99,93% попыток, только 96,8% синхронизаций укладываются в пять минут, а поддержка сообщает о зависаниях, которых нет на панелях сбоев. Задайте SLO надежности и релизную политику на следующий квартал.

    sessionsslo
  • 86

    Версия 14.0 повреждает кешированные профили у 3% пользователей после достижения 35% выкладки; магазины не поддерживают мгновенный откат, а уже установленный код чтения нельзя изменить удаленно. Как вы восстановите работу?

    cachingrollback
  • 87

    Четырехчасовой сбой мобильного сервиса вызвал 18 000 неудачных бронирований, потому что у истекшего значения удаленной конфигурации не было значения по умолчанию. В инциденте участвовали мобильная, серверная и релизная команды. Как вы проведете разбор?

    incidentsconfig
  • 88

    WebView-уязвимость уже активно эксплуатируют; у приложения 4 миллиона установок, 27% устройств не могут обновить системный компонент, а проверка магазина может занять 48 часов. Внешний браузерный сценарий уже есть, нативной замены нет. Как вы сдержите проблему и выпустите исправление?

    componentsvulnerabilitiessystem-design
  • 89

    Поставщик аналитики удваивает цену до 1,2 миллиона долларов и уже вызвал три сбоя SDK, но 240 отчетов зависят от его схемы событий. У вас четыре месяца на замену без потери экспериментов. Каков план?

    experimentsschemaprocurement
  • 90

    Исправление оплаты должно попасть в четыре white-label приложения на iOS и Android до партнерского запуска через девять дней. Повторная сборка после проверки уже вызывала расхождение конфигурации, а магазины завершают ревью в разное время. Как вы согласуете восемь артефактов?

    configartifactsiac
  • 91

    Экран checkout показывает неверную сумму раз на 8000 сессий после быстрой смены валюты, поворота устройства и возврата из 3DS. В логах есть три валидные суммы. Как вы возглавите отладку?

    sessions
  • 92

    Флаг входа по passkey достигает 40% пользователей, и завершение входа падает с 92% до 78%. Приложение проверяло только версию ОС: на части Android-устройств нет подходящего поставщика учетных данных или блокировки экрана, а у части iOS-аккаунтов недоступен iCloud Keychain. Как вы исправите выкладку?

    state-managementsecure-storage
  • 93

    Два senior-инженера три недели спорят о native или Skia rendering для dashboard с 20 анимированными графиками при 60 fps; решение блокирует roadmap на 12 недель. Как вы разрешите спор?

    roadmapconflict
  • 94

    Младший инженер использовал GlobalScope для загрузки геолокации. После 40 переходов по экрану продолжают работать 40 корутин, которые опрашивают сеть и отправляют данные после закрытия экрана, добавляя 9% расхода батареи и 18 000 запросов в час. Как вы остановите инцидент и проведете наставничество?

    mentoringincidentsnavigation
  • 95

    Нарисованная вручную клавиатура оплаты выглядит правильно, но VoiceOver представляет весь холст одним элементом без названия, а Switch Control не может нажать Delete или Pay. При 50% выкладки завершение оплаты с ассистивными технологиями падает с 91% до 54%. Что вы измените?

  • 96

    Вы передаете мобильное дежурство во время инцидента: доля ошибок оплаты 3,8%, временная мера действует только на iOS, а следующий инженер приступает через 15 минут. Что должно быть в передаче?

    incidentson-call
  • 97

    Отдел продаж обещал функцию 300 сотрудникам клиента к пятнице, но ей еще нужен полный день тестирования на устройствах, сегодня среда, а текущая проверка App Store занимает три дня. Ни одна уже одобренная сборка функции не содержит. Что вы скажете заинтересованным сторонам?

    stakeholder-managementpromisescommunication
  • 98

    В списке 180 пунктов мобильного технического долга и два инженера на квартал. Исправление на три человеко-недели уберет группу сбоев, вызывающую 9000 из 12 000 неудачных сессий в неделю; исправление кеша на четыре человеко-недели вернет 50 из 70 часов сборки в неделю. Как вы расставите приоритеты?

    backlogcachingprioritization
  • 99

    Вам нужно 90-минутное задание для найма старшего мобильного разработчика; доля выполнения домашнего задания упала ниже 35%, а роль отвечает за офлайн-синхронизацию 800 000 пользователей. Какое задание вы создадите?

    design
  • 100

    Через шесть недель после критического мобильного инцидента завершены лишь 4 из 17 мер, а тот же шторм повторных запросов едва не возник снова при 60 000 запросов в секунду. Как вы проведете повторный разбор?

    incidentsresilienceseverity-priority