Вопросы на собеседовании: Мобильный разработчик
100 реальных вопросов с образцовыми ответами и пояснениями для уровня Senior.
Смотреть пример резюме: Мобильный разработчик →Тренировка флешкарточками
Интервальное повторение · Hunter Pass
Вопросы
Я выберу нативные Swift и Kotlin, потому что имеющаяся экспертиза и чувствительный к задержкам UI важнее выгоды от общего кода.
- Торговые графики и экраны входа останутся в SwiftUI или UIKit и Compose при бюджете 16,7 мс на кадр, а учётные данные и биометрическая политика будут жить не в UI, а в платформенных адаптерах безопасности с Keychain, Keystore, LAContext и BiometricPrompt.
- Я разделю схемы API и спецификации поведения, чтобы две сложившиеся команды выпускались независимо от общего runtime.
- К KMP для доменной и сетевой логики я вернусь только после замера хотя бы 30% дублирующейся работы по сопровождению.
Зачем это спрашивают: Интервьюер проверяет, учитывает ли кандидат структуру команд, задержку рендеринга и независимость релизов вместо выбора любимого фреймворка.
Я выберу React Native с нативными границами checkout, потому что он соответствует команде и изолирует критичные платформенные интеграции.
- Общий TypeScript покроет навигацию, состояние каталога, валидацию и API-клиенты с целью около 80% общего продуктового кода, а не 100%.
- Платёжные SDK, трассировка запуска и камера останутся в малых модулях Swift и Kotlin за типизированными асинхронными интерфейсами.
- Двухнедельный прототип должен пройти бюджеты холодного запуска, прокрутки и p95 checkout на самых старых устройствах.
Зачем это спрашивают: Интервьюер оценивает, умеет ли кандидат выбрать кроссплатформенный подход с явной целью переиспользования и проверкой производительности.
Я выберу Flutter, потому что единая модель рендеринга и одна команда соответствуют одинаковому UI и сроку.
- Dart будет отвечать за экраны, валидацию, хранение и синхронизацию, а камера, GPS и фоновая загрузка останутся за тремя узкими плагинами.
- Критерии приёмки составят 2 секунды холодного запуска и 16,7 мс p95 построения кадра на слабом Android.
- Контракты плагинов останутся асинхронными и версионированными, чтобы нативные типы не проникали в домен.
Зачем это спрашивают: Интервьюер проверяет, выбран ли Flutter по конкретным продуктовым и кадровым причинам, с нативными границами и измеримыми критериями отказа.
Я разделю через KMP детерминированную доменную логику и данные, оставив навигацию, жизненный цикл и UI нативными.
- Общий Kotlin владеет ценами, валидацией, DTO и синхронизацией с платформенными адаптерами для хранилища и HTTP.
- SwiftUI и Compose получают неизменяемые данные через узкую границу без общего UI и абстракций жизненного цикла.
- Сначала мигрирует один eligibility-сценарий с одинаковыми golden fixtures и регрессией запуска не более 5%.
Зачем это спрашивают: Интервьюер проверяет, проводит ли кандидат практичную границу общего домена вместо переноса платформенного UI в KMP.
Я дам каждому исполняемому модулю собственный composition root и разрешу расширениям подключать только явно безопасный для них общий домен.
- Чистые модели, валидацию, сериализацию и узкие контракты репозиториев можно разделить, но UIApplication, навигация, аналитика, платёжные SDK и синглтоны основного приложения останутся в его target.
- Межпроцессное состояние использует минимальный App Group container или Keychain access group с явным владельцем и атомарной записью, но не предполагает общий внутрипроцессный кеш.
- CI проверяет link map каждого target и запрещённые символы, затем измеряет RSS запуска ниже 50 МБ и проверяет завершение расширения через NSExtensionContext или обработчик его предельного срока.
Зачем это спрашивают: Интервьюер проверяет изоляцию процессов, безопасные для расширений границы зависимостей и контролируемый обмен между процессами, а не общую модуляризацию фич.
Я откажусь от гарантии в 15 минут и сопоставлю каждой нагрузке разрешённый режим с учётом квот.
- iOS использует BGAppRefreshTask для короткого обновления, BGProcessingTask для отложенной индексации и background URLSession для передач; Android использует уникальные задачи WorkManager с ограничениями, оставляя expedited work или объявленный видимый пользователю foreground service только для действительно срочной работы.
- Надёжный журнал работ хранит зависимости, checkpoints, время повтора и ключ идемпотентности, поэтому callback ОС лишь открывает окно выполнения, а любой worker может безопасно продолжить задачу.
- Серверные push уменьшают polling, UI показывает отложенную работу, а телеметрия измеряет задержку выдачи окна, истечение, отказ из-за квоты и завершение только для активных доступных устройств вместо обещания работы после принудительного закрытия.
Зачем это спрашивают: Интервьюер проверяет классификацию фоновых нагрузок, соблюдение квот iOS и Android и возобновляемость вместо надежды на периодические таймеры.
Я выберу reducer-driven автомат с единым неизменяемым состоянием checkout и явными эффектами.
- Действия и внешние callbacks станут типизированными событиями, а только reducer сможет менять один из 12 шагов.
- Сетевые и платёжные эффекты вернут результат с ID попытки, поэтому устаревший ответ не перезапишет новый.
- Я сохраню минимальное возобновляемое состояние и протестирую переходы, дубли callbacks и восстановление процесса.
Зачем это спрашивают: Интервьюер оценивает, умеет ли кандидат сделать конкуренцию и восстановление детерминированными через однонаправленное состояние.
Я оставлю обработку кадров нативной и передам через мост только компактные результаты.
- Swift и Kotlin владеют буферами камеры, потоками и распознаванием, исключая 30 крупных аллокаций и сериализаций в секунду.
- Общий код получает асинхронный версионированный результат со значением, форматом, уверенностью и временем.
- Контракт открывает запуск, остановку, разрешения и ошибки, а доля потерянных кадров должна быть ниже 1%.
Зачем это спрашивают: Интервьюер проверяет, видит ли кандидат проблему высокочастотного трафика через мост и сокращает ли данные на нативной стороне.
Я разделю семантические токены и контракты поведения, но не общие отрисованные компоненты для трёх платформ.
- Цвета, интервалы, типографика, имена иконок и длительности анимаций идут из одного версионированного пакета с генерацией кода.
- Общими будут состояния, анатомия, имена аналитических событий и требования доступности, а SwiftUI, Compose и Flutter создадут подходящие своей платформе реализации.
- Визуальные тесты покроют 20 компонентов, а платформенные отдельно проверят масштаб шрифта, порядок фокуса и кнопку назад.
Зачем это спрашивают: Интервьюер проверяет, умеет ли кандидат стандартизировать дизайн-систему без потери платформенных правил взаимодействия и доступности.
Я выберу KMP для бизнес-логики и данных, сохранив нативные воспроизведение и UI во всех трёх приложениях.
- Общий код покроет каталог, entitlement, метаданные загрузок и API-клиенты, где 70% пересечения стабильны и тестируемы.
- AVFoundation и Media3 останутся за платформенными интерфейсами, потому что DRM, фоновое аудио и controls различаются.
- Пилот должен сократить дублирующую работу на 25%, не подняв p95 старта воспроизведения выше 800 мс.
Зачем это спрашивают: Интервьюер оценивает платформенный выбор, который балансирует переиспользование для трёх приложений и глубокие нативные требования к медиа.
Я выберу нормализованные таблицы SQLite для сущностей, индексированные поисковые проекции и надёжный журнал операций.
- Формы, ответы, вложения и sync-метаданные получат UUID, внешние ключи, tombstones и серверные ревизии.
- Составные индексы появятся из замеров, а текст обслужит FTS-таблица вместо сканирования JSON.
- Вложения останутся зашифрованными файлами вне базы, а метаданные и состояние загрузки транзакционно сохранятся в SQLite.
Зачем это спрашивают: Интервьюер проверяет, умеет ли кандидат проектировать локальное хранилище для масштаба, задержки запросов и синхронизации, а не считать его простым кешем.
Я выберу возобновляемую двунаправленную синхронизацию с упорядоченными операциями и серверными дельтами по курсору.
- Клиент отправляет около 100 операций в пакете с монотонными номерами и хранит максимальный подтверждённый номер.
- Сервер возвращает изменения после непрозрачного курсора с лимитом по байтам и количеству для медленного канала.
- Оба направления сохраняют прогресс независимо, поэтому отмена или принудительное завершение процесса не перезапускает все 10 000 правок.
Зачем это спрашивают: Интервьюер оценивает, способен ли кандидат определить конкретный протокол синхронизации для долгого офлайна и ограниченной пропускной способности.
Я сделаю файлы символов неизменяемыми релизными артефактами, привязанными к точной идентичности каждого выпущенного бинарника, и поставлю проверенную символикацию в 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, поэтому параллельные добавления сольются без перезаписи.
- Статус подчинится монотонному серверному автомату, отклоняющему переход в более раннее состояние.
Зачем это спрашивают: Интервьюер проверяет, выводит ли кандидат семантику конфликтов из доменных инвариантов вместо универсального правила по времени.
Я использую непрозрачные курсоры над надёжным журналом изменений и ограниченный fallback на снимок.
- Каждая страница вернёт upserts, tombstones, следующий курсор и checksum в пределах 2 МБ.
- Клиент применит страницу и продвинет курсор в одной транзакции, исключая частичный прогресс после завершения процесса.
- Недействительный курсор запускает постраничный снимок в теневые таблицы, которые заменят рабочие лишь после проверки.
Зачем это спрашивают: Интервьюер оценивает эффективность дельты, атомарное продвижение курсора и безопасный путь полной ресинхронизации.
Я использую SQLCipher со случайным 256-битным ключом базы и отдельное аутентифицированное шифрование файлов вложений.
- Android оборачивает ключ базы неэкспортируемым ключом Android Keystore с аппаратной защитой, когда её подтверждает KeyInfo; без неё устройство получает документированную программную защиту с меньшим доверием либо лишается офлайн-доступа в зависимости от модели угроз.
- iOS хранит ключ базы с kSecAttrAccessibleWhenUnlockedThisDeviceOnly и применяет согласование или обёртку через P-256 Secure Enclave только при требовании аппаратно привязанного присутствия пользователя, а не как хранилище произвольного AES-ключа.
- Отдельные AES-GCM ключи файлов ротируются независимо, а релизные замеры проверяют открытие, миграцию и поиск быстрее 2 секунд без повторного шифрования колонок, если его не требует модель угроз.
Зачем это спрашивают: Интервьюер проверяет баланс между управлением ключами, аутентифицированным шифрованием и измеренной производительностью устройства.
Я разделю все 250 МБ по классам данных и введу квоту даже для сохранённого пользователем контента.
- Сохранённые наборы статьи и главного изображения получают 60 МБ, то есть около 88 средних наборов, а при достижении лимита приложение просит удалить или заменить загрузки вместо скрытого превышения.
- Метаданные ленты получают 30 МБ и TTL семь дней, а несохранённые изображения получают 140 МБ и size-aware LRU.
- Оставшиеся 20 МБ резервируются для транзакционной подготовки загрузки, а реестр кеша отклоняет запись, если очистка не удержит общий объём в пределах 250 МБ.
Зачем это спрашивают: Интервьюер оценивает, превращает ли кандидат лимит хранилища и продуктовую семантику в явную политику кеша.
Я использую возобновляемые передачи под управлением ОС и считаю завершение за ночь целью best effort, а не гарантией.
- На iOS будет background URLSession, а на Android WorkManager с ограничениями по сети и зарядке.
- Файл поддерживает чанки или серверное возобновление со смещением, checksum и идемпотентным завершением.
- UI показывает очередь, загрузку и отсрочку и позволяет требовать Wi-Fi, потому что ОС не гарантируют срок.
Зачем это спрашивают: Интервьюер проверяет, уважает ли кандидат ограничения мобильных ОС вместо проектирования постоянно работающего воркера.
Я ограничу foreground-миграцию аддитивными изменениями, а возобновляемое обновление данных запущу после открытия совместимой схемы.
- Для каждой поддерживаемой исходной схемы есть проверенный путь к версии 12; запуск выполняет только обязательный DDL и метаданные совместимости, а фон обрабатывает по 1 000 строк с отдельными checkpoints.
- Манифест миграции заранее считает пиковый занятый объём как текущую базу, теневую копию при её наличии, временные индексы, максимальный WAL или journal и запас файловой системы по измеренному худшему случаю именно этого пути, а не по постоянному множителю.
- Чтение поддерживает старое и новое представления до конца проверки, а нехватка места оставляет исходную базу нетронутой и открывает явный путь управления хранилищем и чтения для восстановления.
Зачем это спрашивают: Интервьюер проверяет безопасность миграции при пропущенных релизах, больших локальных данных и строгом бюджете запуска.
Я стандартизирую семантику операций между платформами, но оставлю типы планировщика и 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