Вопросы на собеседовании: React Native-разработчик
100 реальных вопросов с образцовыми ответами и пояснениями для уровня Senior React Native разработчик.
Смотреть пример резюме: React Native-разработчик →Тренировка флешкарточками
Интервальное повторение · Hunter Pass
Вопросы
Я буду поэтапно выпускать отдельный обновлённый бинарник, потому что Fabric и Bridgeless действуют на весь React Native runtime, а не на выбранные экраны или пользователей.
- Я опишу все 180 экранов, 46 нативных зависимостей и 18 собственных модулей, затем проверю каждую зависимость в чистых Release-сборках iOS и Android.
- Кандидат на React Native 0.82 или новее будет рендерить все React Native-поверхности через Fabric; route flags смогут выбирать совместимую или переписанную реализацию экрана, но обе используют один renderer.
- Релизы 1-6 проведут обновлённый бинарник через 500 внутренних устройств, 1%, 5%, 25%, 50% и 100% с наблюдением не менее 48 часов перед каждым расширением.
- Я остановлю rollout при crash-free ниже 99,7%, росте ошибок критического флоу больше 0,2 процентного пункта или ухудшении startup p95 свыше 10%; приложение на React Native 0.81 или старше останется отдельной группой предыдущего бинарника.
Зачем это спрашивают: Интервьюер проверяет знание бинарной границы New Architecture и умение поэтапно выпускать обновлённый бинарник с численными gates.
Я бы сделал каждый независимо монтируемый React Native-флоу Fabric-поверхностью и не чередовал владельцев внутри одного интерактивного дерева представлений.
- Нативная оболочка checkout владела бы навигацией UIViewController или Fragment, а каждая React Native-поверхность отвечала бы за layout, события и accessibility ниже своего корня.
- Нативные контролы внутри поверхности я бы публиковал как Codegen Fabric-компоненты, а не оборачивал через произвольное вложение view controller.
- Данные через границу передавались бы небольшими типизированными props и событиями, без общих изменяемых ссылок на view и императивного обхода.
- Время монтирования и переходов я бы измерил на 3 классах устройств, потому что множество мелких поверхностей добавляет стоимость инициализации.
Зачем это спрашивают: Сильный ответ задаёт владельца рендеринга на каждой границе и учитывает измеримую стоимость чрезмерного дробления поверхностей.
Я бы сделал типизированную Codegen-спецификацию источником истины и развивал её только добавочными изменениями в окне совместимости из 8 релизов.
- Каждый модуль получил бы узкую TypeScript-спецификацию с явными nullable-значениями, enum, поведением promise и структурированными кодами ошибок для iOS и Android.
- Сгенерированный Codegen-код компилировался бы в обоих нативных проектах в CI, а diff API запрещал бы удаление методов и смену смысла полей.
- Новые возможности были бы опциональными и обнаруживались через версию или capability-метод, чтобы старый бинарник безопасно отклонял неподдерживаемый вызов.
- Синхронные методы я бы оставил только для ограниченной работы в памяти до 2 мс, а хранилище, сеть и разрешения сохранил асинхронными.
Зачем это спрашивают: Интервьюер оценивает развитие контрактов, паритет платформ и наличие реального лимита задержки для синхронных нативных вызовов.
Я бы привязал каждый JSI-объект к его runtime, а нативные буферы кадров сделал явно reference-counted и отменяемыми.
- Host object в области runtime владел бы shared нативным процессором, а задачи держали бы weak-ссылки, чтобы teardown запрещал поздние callback.
- Я бы никогда не сохранял и не обращался к jsi::Runtime с потоков камеры; результаты возвращались бы через runtime scheduler в поток JavaScript runtime.
- Буферы освобождались бы детерминированно после обработки, а ограниченная очередь из 2 кадров отбрасывала бы устаревшую работу вместо роста памяти.
- Unmount поверхности отменял бы producers и инвалидировал host objects, после чего проходил бы тест на утечки из 100 циклов mount и unmount на обеих платформах.
Зачем это спрашивают: Интервьюер проверяет практическое понимание привязки JSI к потоку, времени жизни нативных ресурсов, backpressure и teardown.
Я бы использовал один React Native host на процесс и монтировал изолированные поверхности в существующую нативную навигацию только при запросе React Native-маршрута.
- UIViewController на iOS и Fragment на Android получали бы типизированные параметры маршрута и размещали поверхность, не удерживая бизнес-состояние в нативном контейнере.
- Нативная оболочка продолжала бы отвечать за auth-gates, universal links, Android app links и системную навигацию назад.
- После первого нативного экрана я бы заранее загрузил только Hermes и минимальную оболочку, а выполнение уже встроенных не начальных feature-модулей отложил, не отдавая React Native весь 2-секундный бюджет.
- Контрактные тесты запускали бы все 60 React Native-маршрутов из нативного кода и проверяли возврат результата, восстановление состояния и восстановление после завершения процесса.
Зачем это спрашивают: Интервьюер ждёт конкретную brownfield-границу, которая сохраняет нативный lifecycle и не создаёт несколько дорогих React Native runtime.
Я бы свёл комбинаторное пространство к риск-ориентированным линиям, которые всё же проверяют каждую поддерживаемую границу до релиза.
- Каждый pull request собирал бы текущий minor React Native на минимальной и текущей iOS и Android в Debug и Release нативных конфигурациях.
- Ночные тесты покрывали бы предыдущий minor React Native, все 3 major iOS, Android API 26 и 2 репрезентативных современных API, а также физические arm64-устройства.
- Для каждой из 46 библиотек machine-readable манифест фиксировал бы поддержку New Architecture и ограничения по OS, Xcode, Gradle, Kotlin и CocoaPods.
- Обновление React Native или toolchain выходило бы только после нативной компиляции, 20 критических end-to-end флоу и 30-минутного soak-теста на каждой рискованной линии.
Зачем это спрашивают: Сильный ответ ограничивает стоимость матрицы риск-ориентированным покрытием и явно фиксирует границы зависимостей и платформ.
Я разделю пакеты на pure JavaScript, legacy native пакеты для interop и пакеты, которым нужна миграция на TurboModule или Fabric component.
- Pure JavaScript-пакет не требует переписывания нативной архитектуры, но всё равно проверяется на текущем Hermes, удалённые API и вклад в bundle.
- Legacy native module или view может временно остаться, если interop layer целевого React Native его поддерживает, а чистые Release-сборки iOS и Android и runtime smoke tests проходят.
- Вызываемые нативные API я перенесу на TurboModules, а нативные view на Codegen Fabric components только при отказе interop, неподдерживаемой семантике или доказанной измерениями стоимости границы.
- Каждый критический пакет будет 100 раз смонтирован, вызван, переведён в background и уничтожен в обеих Release-сборках, а до rollout получит владельца и план замены.
Зачем это спрашивают: Интервьюер проверяет, различает ли аудит JavaScript, совместимый legacy interop и настоящую миграцию по данным Release-сборок вместо автоматической замены.
Я буду считать Bridgeless частью обновлённого New Architecture-бинарника, а не отдельным runtime-переключателем для 10% пользователей.
- Вызовы TurboModule вернут promises или ограниченные по времени синхронные значения, а упорядоченные потоки событий получат sequence numbers и описанную семантику доставки.
- Общее нативное состояние будет использовать собственный serial executor, actor или lock вместо удалённой bridge queue как случайного mutex.
- Чистые Release-сборки iOS и Android смонтируют, вызовут, переведут в background и уничтожат все 12 пакетов, включая временно работающие через interop layer.
- Я проведу обновлённый бинарник через 1%, 5%, 25% и 100% минимум по 24 часа, останавливаясь при crash-free ниже 99,7% или росте ошибок пакетов на 0,2 пункта, пока legacy-приложение остаётся отдельной store-группой.
Зачем это спрашивают: Интервьюер проверяет, следует ли Bridgeless за бинарным rollout New Architecture и превращается ли прежний порядок bridge в явный контракт конкурентности.
Я бы централизовал объявления нативных версий и коммитил все lock-файлы resolver, чтобы одна ревизия давала одинаковый граф iOS и Android.
- Версии CocoaPods жили бы в одном podspec или helper с закоммиченным Podfile.lock, а Android использовал бы Gradle version catalog и dependency locking.
- React Native, Hermes, Reanimated, Kotlin, AGP и iOS toolchain двигались бы как единый проверенный набор платформы, а не как независимые обновления.
- Еженедельная автоматизация предлагала бы сгруппированные обновления, собирала 2 варианта приложения и публиковала diff графа зависимостей и размера бинарника.
- Для security-фиксов был бы ускоренный путь, но до 14 млн пользователей всё равно доходили бы неизменяемые lock-файлы и подписанный build artifact.
Зачем это спрашивают: Интервьюер оценивает воспроизводимость и умение обновлять тесно связанные нативные зависимости как проверенный платформенный набор.
Я разделю rollout бинарника и flags реализаций маршрута, потому что все React Native-поверхности обновлённого бинарника используют Fabric.
- Каждый из 30 маршрутов получит один типизированный контракт входа, выхода, сохранения и аналитики для совместимой и переписанной реализаций, которые обе рендерятся через Fabric.
- Кешируемый kill switch сможет за 10 минут направить новые флоу в совместимую реализацию без смены renderer и загрузки нативного кода.
- Распространение обновлённого бинарника останавливается отдельно; установленный New Architecture-бинарник нельзя удалённым флагом превратить в legacy-бинарник на React Native 0.81 или старше.
- Добавочные схемы состояния и 1000 тестов переключения и восстановления докажут переживание process death обеими реализациями, а прошлый store-бинарник останется нативной fallback-группой.
Зачем это спрашивают: Сильный ответ отличает fallback реализации на одном renderer от бинарной границы New Architecture.
Я федерализую владение исходниками и build-time packages, не считая web-style загрузку модулей в runtime допустимой на мобильных платформах.
- Проверенный бинарник будет содержать все 9 доменных модулей, а одна оболочка станет владельцем navigation, authentication, design tokens, telemetry и контракта нативных возможностей.
- React, React Native, Reanimated, navigation и библиотеки вокруг Hermes будут точными host-owned singletons с одним разрешённым набором нативных зависимостей.
- При старте выполнятся только оболочка и начальный маршрут; выполнение встроенных некритичных модулей можно отложить до navigation с бюджетом loading state 200 мс.
- Загружаемый JavaScript сможет обновляться только при разрешении текущих review и runtime policies и в рамках уже встроенных и проверенных возможностей; новая функциональность или нативный код потребуют store-бинарник.
Зачем это спрашивают: Интервьюер проверяет, ограничивает ли кандидат federation сборочной композицией и policy-compliant обновлениями вместо обещания загружаемых исполняемых фич на iOS.
Я сделаю еженедельным результатом версионированный build-time package и признаю, что production-активация фич следует за ежемесячным проверенным host-бинарником.
- Каждый package откроет одну registration entry с маршрутами, требованиями к host capabilities, версией схемы аналитики, lifecycle hooks и health check.
- CI проверит точный content hash с текущим и следующим host, после чего ежемесячный host встроит утверждённые версии в один подписанный кандидат iOS и Android.
- iOS не будет загружать исполняемые feature-модули, вводящие или меняющие функциональность, а нативная dynamic delivery Android пойдёт только через store-механизмы, связанные с версией приложения.
- Runtime JavaScript update сможет исправить уже проверенную встроенную возможность только при разрешении review policy и runtime compatibility; flags скроют плохой встроенный модуль до следующего бинарника.
Зачем это спрашивают: Сильный ответ даёт командам независимое владение пакетами, сохраняя исполняемую доставку фич внутри правил store и runtime.
Я бы построил граф вокруг API доменов и платформенных пакетов, а запрещённые направления зависимостей ломал ещё до компиляции.
- Каждый домен публиковал бы public index с маршрутами, командами и типами данных, а deep imports в другой домен запрещались бы lint и правилами графа.
- Общие пакеты ограничивались бы стабильными задачами вроде UI primitives, telemetry, networking и test utilities, без бизнес-логики для 2 доменов.
- Нативные пакеты явно объявляли бы входы iOS и Android, чтобы JavaScript-only изменение не инвалидировало все нативные targets.
- CI по affected graph проверял бы изменённые пакеты и обратные зависимости, а ночная полная сборка ловила бы ошибки вне 15-минутного пути.
Зачем это спрашивают: Интервьюер оценивает, обеспечиваются ли границы монорепозитория инструментами и улучшают ли они связанность и время сборки.
Я бы сохранил единое неизменяемое ядро продукта, а различия брендов выразил через проверяемую конфигурацию, сгенерированные assets и настройки нативной сборки.
- Brand manifest со schema validation задавал бы semantic tokens, bundles текстов, feature entitlements, API endpoints и доступные точки навигации.
- Bundle identifiers, signing, associated domains, push credentials и privacy manifests генерировались бы для каждого бренда при нативной сборке.
- Runtime-переключение бренда касалось бы только возможностей общего бинарника и никогда не меняло бы native entitlements или отсутствующие SDK.
- CI собирал бы все 12 брендов и запускал visual, deep-link и configuration contract tests минимум на 2 платформах до публикации SDK.
Зачем это спрашивают: Интервьюер проверяет, описываются ли white-label различия данными, а нативная идентичность и entitlements остаются задачами сборки.
Я бы один раз определил семантические токены и генерировал из одного проверяемого источника типизированные представления для React Native, iOS и Android.
- Компоненты использовали бы роли вроде surfacePrimary и textCritical вместо названий цветов бренда и сырых hex-значений.
- Генератор отклонял бы отсутствующие токены в любом из 12 брендов и рассчитывал contrast всех сочетаний текста и состояния по WCAG AA.
- Изменения typography и spacing проходили бы snapshot-тесты в 6 локалях, потому что длинный текст обнаруживает clipping даже при правильных цветах.
- Theme objects мемоизировались бы и переключались на границе приложения, чтобы 180 экранов не пересчитывали стили внутри кадра.
Зачем это спрашивают: Сильный ответ рассматривает tokens как генерируемый кроссплатформенный контракт с проверками accessibility, локализации и runtime-производительности.
Я бы сделал оболочку единственным владельцем навигации, а модулям разрешил регистрировать типизированные версионированные описания маршрутов.
- У каждого маршрута был бы стабильный ID, schema сериализуемых параметров, требования authentication и опциональный контракт результата.
- Universal links, Android app links и push targets нормализовались бы в один внутренний route intent до загрузки любого модуля.
- Неизвестная или удалённая версия маршрута вела бы на безопасный экран и отправляла метрику вместо падения при восстановлении состояния.
- Контрактные тесты воспроизводили бы 100 самых частых внешних ссылок на текущем и предыдущем месячных host-бинарниках iOS и Android.
Зачем это спрашивают: Интервьюер проверяет, является ли навигация устойчивым межмодульным протоколом, а не прямым доступом к navigator другого модуля.
Я бы разделил зависимости на host singletons, централизованно выровненные библиотеки и действительно приватные leaf-зависимости.
- React, React Native, Reanimated, navigation, gesture handling и query client были бы точными host-owned singletons без копий внутри модулей.
- Общие TypeScript-библиотеки подчинялись бы единой workspace version policy, а приватные pure JavaScript utilities могли бы отличаться только при доказанной bundle-изоляции.
- Module manifests объявляли бы peer ranges, а публикация падала бы, если диапазон не пересекается с платформенным набором host.
- Ежеквартальный upgrade train переносил бы singleton-набор вместе и удерживал рост bundle в пределах 1 МБ.
Зачем это спрашивают: Интервьюер проверяет, защищает ли sharing зависимостей идентичность runtime и нативную совместимость, а не только уменьшает bundle.
Я отклоню запрос в такой форме, потому что загружаемые исполняемые модули не могут служить обходным путём для новой функциональности приложения.
- Apple App Store Review Guideline 2.5.2 запрещает загружать, устанавливать или выполнять код, вводящий или меняющий функции приложения, поэтому iOS-бинарник должен уже содержать проверенную возможность.
- OTA-доставка JavaScript ограничивается текущей review policy, совпадающим runtime и поведением внутри контракта встроенных возможностей установленного бинарника.
- Нативные dynamic features Android могут использовать Play Feature Delivery, но остаются управляемыми store-артефактами, связанными с версией приложения из Play, а не произвольными загрузками.
- За 10 минут можно изменить flags, configuration и content или применить policy-compliant исправление; 5 новых исполняемых модулей, permissions, SDK или native API требуют store review и rollout.
Зачем это спрашивают: Сильный ответ применяет политику iOS по исполняемому коду и границу установленной возможности вместо отношения к подписанному JavaScript как к неограниченной доставке фич.
Я вычислю один типизированный flag на границе оболочки и направлю новый checkout в одну из двух полных встроенных реализаций.
- Flag будет содержать ID реализации, audience rules, срок удаления и минимальную версию возможностей бинарника, но не URL загружаемого исполняемого модуля.
- Последняя валидная подписанная конфигурация сохранится для cold start, а проверенный checkout станет default при offline или malformed config.
- Exposure запишется один раз до checkout, а этапы 1% и 10% будут наблюдаться по 24 часа, этап 50% 48 часов до перехода к 100%.
- Я остановлю rollout при completion ниже 99,9%, crash-free ниже 99,7% или росте ошибок оплаты больше 0,2 пункта; kill switch затронет новые checkout, не переключая незавершённую транзакцию.
Зачем это спрашивают: Интервьюер оценивает, выбирают ли flags встроенные реализации с численными gates вместо доставки исполняемых feature-модулей.
Я бы задал небольшой версионированный контракт модуля и проверял каждую публикацию со всеми 3 поддерживаемыми версиями host.
- Контракт включал бы регистрацию, типизированные маршруты, требования capabilities, lifecycle callbacks, декларации telemetry и структурированные результаты ошибок.
- Добавочные поля были бы опциональными с defaults, а удаление или смена семантики требовали бы нового major-контракта и параллельного compatibility adapter.
- Consumer-driven tests от 3 host запускались бы против кандидата, а fixtures host проверяли бы его текущую и предыдущую версии.
- Публикация падала бы при недокументированном global state, прямом импорте из shell или вызове native capability вне объявленного диапазона.
Зачем это спрашивают: Интервьюер проверяет конкретную совместимость модулей с несколькими версиями, а не общие слова о взаимодействии команд.
Закрытые вопросы
- 21
Приложение со 180 экранами обслуживает 14 млн MAU и дублирует пользовательские данные в Redux, component state и 40 кешах; как вы разделите server, client и local state?
componentsstatecaching - 22
Два миллиона пользователей могут оставаться offline 24 часа и изменить до 5000 записей в SQLite; как вы обеспечите синхронизацию с SLA сходимости 60 секунд после reconnect?
design - 23
Пользователь редактирует одну анкету из 30 полей на 3 устройствах в течение 12 часов offline, а тихая потеря данных должна быть ниже 0,01%; какую стратегию конфликтов вы выберете?
- 24
Финансовое приложение хранит 200 МБ offline для 5 млн пользователей, должно отзывать доступ к серверу за 15 минут, а продукт просит за то же время стереть данные на offline suspended device; какую гарантию реально дают Keychain и Keystore?
secure-storagecoroutines - 25
Четырнадцать миллионов MAU используют сессии максимум на 3 устройствах, access tokens живут 10 минут, а отзыв должен распространяться за 15 минут; как вы спроектируете мобильную аутентификацию?
authtokenssessions - 26
Приложение со 180 экранами выполняет 60 типов GraphQL и 40 типов REST-запросов, должно показать кеш за 300 мс и допускает stale data на 5 минут; как вы объедините кеширование?
cachingrestgraphql - 27
Пользователи загружают 20 фотографий по 8 МБ через нестабильные мобильные сети, а 95% upload-сессий должны завершаться за 10 минут; как вы спроектируете media path?
sessionsdesign - 28
Пять процентов из 14 млн месячных пользователей открывают одно из 120 направлений через push notifications или deep links, а routing должен завершаться за 500 мс; как вы спроектируете flow?
android-componentsnavigationdeep-linking - 29
Медицинское приложение с 14 млн MAU работает в 6 регионах, должно удалять account data за 30 дней и хранит до 500 МБ на устройстве; как вы обеспечите privacy и retention на мобильном клиенте?
retentionactive-users - 30
Девять модулей отправляют 400 analytics events для 14 млн MAU, а ошибки schema должны оставаться ниже 0,1%; как вы спроектируете контракт мобильной аналитики?
active-usersschemadesign - 31
Приложение с 14 млн MAU должно показывать usable content за 2 секунды на p75 средних устройств, но сейчас тратит 3,8 секунды; как вы распределите бюджет запуска?
active-users - 32
Лента должна плавно работать на устройствах 60 Гц и 120 Гц для 14 млн MAU, допуская меньше 1% slow frames; как вы учтёте frame budgets?
active-usersdesign - 33
Hermes heap растёт с 90 МБ до 260 МБ за 20 минут на среднем Android-устройстве при общем memory budget 300 МБ; как вы измените использование памяти?
memoryhermesdata-structures - 34
React Native-флоу с большим числом изображений использует 140 МБ в JavaScript и 420 МБ нативно на устройствах с 2 ГБ, а OOM должен быть ниже 0,05%; как вы разделите и ограничите бюджеты?
reactreact-nativememory - 35
Лента из 10 000 разнородных элементов должна использовать меньше 220 МБ и держать p95 interaction latency ниже 100 мс; как вы выберете FlatList или FlashList?
latencyvirtualized-lists - 36
Каталог показывает 40 изображений на экран для 14 млн MAU при бюджете передачи первого экрана 1,5 МБ и прокрутке 60 fps; какую image architecture вы выберете?
active-usersarchitecture - 37
Интерактивный график обновляется по жесту с частотой 120 Гц в течение 30 секунд и не может превышать 8,33 мс на кадр; что вы поместите в Reanimated UI runtime?
animation - 38
Приложение доставки работает до 8 часов за смену, должно расходовать меньше 8% батареи в час и не превышать 50 МБ сети в день; как эти бюджеты повлияют на архитектуру?
architecture - 39
Еженедельные релизы затрагивают 180 экранов, а CI должен блокировать ухудшение startup больше 100 мс или slow frames больше 0,5 процентного пункта; какую автоматическую performance-систему вы построите?
system-designperformance - 40
Ваши 14 млн пользователей работают на бюджетных устройствах с 2 ГБ, средних с 6 ГБ и флагманах 120 Гц в 4 поколениях OS; какую device-tier performance matrix вы зададите?
performance - 41
Приложение со 180 экранами выходит еженедельно и должно удерживать дефекты критических флоу ниже 0,5%; какую мобильную test pyramid вы спроектируете?
defectspyramiddesign - 42
Девять модулей выходят еженедельно через EAS, Fastlane или Bitrise, а feedback по pull request должен приходить за 20 минут; как вы построите мобильный pipeline?
feedbackci-cdswift - 43
Двенадцать брендовых приложений требуют signing iOS и Android, 40 еженедельных сборок и ротации credentials каждые 90 дней; как вы организуете signing и secrets?
secrets - 44
Приложению с 14 млн MAU нужны OTA-исправления за 30 минут через EAS Update или self-hosted service, пока активны 6 нативных версий бинарника; как вы обеспечите совместимость и правила stores?
active-usersandroid-componentsover-the-air-updates - 45
Еженедельный релиз обслуживает 14 млн MAU и должен сохранять 99,7% crash-free sessions при этапах 1%, 5%, 25% и 100%; как вы спроектируете rollout controls?
active-usersdesignsessions - 46
Активны 6 нативных версий, а 99% crash events должны иметь читаемые stacks за 15 минут; как вы докажете provenance symbols, retention, upload SLO и synthetic verification?
retentionslo - 47
Девяти модулям нужны development, preview, staging и production channels EAS Update для 6 активных runtime versions; как вы предотвратите drift environments, branches и artifacts?
artifactsiacover-the-air-updates - 48
React Native-монорепозиторий содержит 35 пакетов, 9 приложений и 40 нативных сборок в день, но remote-cache hit rate равен 20%; как вы перестроите build caching для достижения 80%?
reactreact-nativecaching - 49
Девять модулей предлагают 25 нативных SDK в квартал, но compressed device-specific store download size должен оставаться меньше 80 МБ отдельно на iOS и Android при 99,7% crash-free sessions; какую governance вы закодируете?
sessions - 50
Какой SLO dashboard вы построите для приложения с 14 млн MAU, 180 экранами и еженедельными релизами, чтобы держать startup 2 секунды и 99,7% crash-free?
active-usersslo - 51
После выката бинарника с Fabric на 20% пользователей доля сессий без сбоев упала с 99,7% до 97,8%; что вы сделаете в первый час и перед возобновлением выката?
sessionsfabric-renderer - 52
Синхронный C++ TurboModule входит в deadlock: вызов из JavaScript удерживает mutex модуля и ждёт main thread, а нативный callback повторно входит в модуль и ждёт тот же mutex; как вы найдёте и исправите проблему?
concurrencyjavascriptcallbacks - 53
Обработчик изображений на JSI раз в 40 000 редактирований падает с сигнатурой use-after-free; как вы найдёте и исправите ошибку времени жизни?
jsiconcurrency - 54
Платёжный SDK поддерживает старую архитектуру, но падает в Android-бинарнике с New Architecture, выкаченном на 15% пользователей; как вы обработаете несовместимость?
new-architecturesoft-skills - 55
После релиза общего Fabric-компонента Android работает правильно, но iOS теряет касания в 12% сессий; как вы диагностируете расхождение платформ?
componentssessionsfabric-renderer - 56
Brownfield-приложение встраивает React Native в три нативных сценария и падает при запуске второй поверхности New Architecture; как вы разделите lifecycle host на Android и iOS?
lifecyclenew-architecturereact - 57
Мигрированный нативный сенсорный модуль отправляет 800 событий в секунду и создаёт задержку ввода 400 мс; как вы остановите поток событий?
- 58
Отмена асинхронной задачи C++ TurboModule зависает: completion удерживает mutex результата и ждёт JavaScript scheduler, а cancel удерживает lock реестра и ждёт эту задачу; как вы исправите проблему?
asyncconcurrencyjavascript - 59
При rollout бинарника с New Architecture на 35% ошибки checkout растут с 0,4% до 2,1% без явного сбоя; как вы сдержите релиз и сохраните доказательства?
new-architecture - 60
Руководство спрашивает, действительно ли миграция New Architecture завершена после выката на 92%; какие продакшн-доказательства вы покажете?
new-architecturemigrations - 61
После релиза холодный запуск вырос с 1,8 до 4,6 секунды; разберите диагностику, сдерживание, исправление и доказательство результата.
- 62
После добавления персонализированных карточек продуктовая лента падает с 60 до 32 fps; как вы восстановите производительность прокрутки?
discoveryperformance - 63
Жест плавный при 60 Гц, но дёргается на устройствах 120 Гц с бюджетом кадра 8,3 мс; что вы исследуете и измените?
- 64
Поисковый ввод зависает на 700 мс при каждом пятом символе, хотя CPU остаётся ниже 35%; как вы найдёте остановку event loop JavaScript?
javascript - 65
Логи JavaScript быстро реагируют на касание checkout, но видимый переход зависает на 480 мс на Android; как вы исследуете jank UI thread?
concurrencyjavascriptrendering - 66
На 4 млн устройств каждый переход в foreground добавляет нативный listener сети; heap JavaScript остаётся ровным, callbacks множатся, а расход батареи растёт на 18%; как найти и остановить утечку на всём парке?
javascriptcallbacksdata-structures - 67
При просмотре видео Android RSS растёт на 420 МБ, а Hermes heap остаётся ровным; где вы продолжите поиск?
hermesdata-structures - 68
Загрузка четырёх 48-мегапиксельных фото вызывает OOM на устройствах с 3 ГБ RAM; как вы перестроите путь изображений?
- 69
После релиза доля Android ANR превышает 0,6%, а iOS получает watchdog termination при запуске; какое общее расследование вы проведёте?
- 70
После изменения сети расход батареи удваивается из-за фоновых повторов неудачных запросов; как вы ограничите и исправите проблему?
resilience - 71
Исправление через EAS Update использует нативный метод только из runtime 6, а 8% активных пользователей остаются на runtime 5 и корректно отфильтрованы от этого update; как вы ограничите инцидент для обеих когорт?
cohortsincidentsover-the-air-updates - 72
Двум бинарникам с разными нативными зависимостями назначили одинаковый runtimeVersion, поэтому EAS считает их совместимыми и доставляет один update обоим; как вы исправите политику?
dependencies - 73
Релиз нужен через шесть часов, но после ротации сертификата подпись iOS не работает, хотя Android собирается; как вы поступите?
- 74
В store-релизе ошибки покупок выросли с 0,3% до 1,4% на этапе 10%; какое релизное решение вы примете?
gtm - 75
После релиза Sentry показывает 2000 непрозрачных нативных сбоев из-за отсутствующих source maps, dSYM и ProGuard symbols; как вы восстановите наблюдаемость?
observabilitysource-mapsbuild-tools - 76
CI периодически выпускает старую нативную библиотеку при правильных package locks; как вы докажете и исправите отравление нативного кеша?
caching - 77
После обновления нативной camera-зависимости проект компилируется, но падает на arm64 release-устройствах с ошибкой ABI symbol; что вы сделаете?
dependencies - 78
Новый бинарник повышает долю сессий без сбоев с 99,2% до 99,8%, но снижает конверсию checkout на 3,5%; будете ли вы откатывать?
sessionsrollback - 79
Apple отклоняет приложение за два дня до запуска, потому что встроенный SDK не содержит обязательный privacy manifest; как вы безопасно решите проблему?
android-components - 80
Новый модуль главного экрана вызывает login loop в 6% сессий, а store-откат займёт часы; как должен работать kill switch?
rollback - 81
После переподключения по завершении 12-часового перелёта 2% пользователей теряют offline-изменения, если одну запись меняли на двух устройствах; как вы обработаете инцидент?
soft-skillsincidents - 82
После SQLite-миграции 7% обновившихся Android-пользователей не могут открыть приложение; каков ваш план восстановления?
recoverymigrations - 83
Изменение expired token заставляет 40 параллельных запросов одновременно обновлять аутентификацию и выкидывает пользователя; как остановить refresh storm?
authtokenslocking - 84
После ротации ключа зашифрованные сессии не читаются у 3% пользователей, пропустивших две версии приложения; как вернуть доступ без ослабления защиты хранилища?
encryptionsessions - 85
Обновление GraphQL cache показывает детали заказа одного пользователя в карточке другого заказа в 0,2% сессий; как вы исследуете и исправите это?
sessionsgraphqlcaching - 86
Пользователи с плохой сетью создают дубли загрузок и дважды платят за обработку; как сделать мобильный flow безопасным?
concurrency - 87
Push-уведомления дублируются у 6% Android-пользователей, а касание после холодного запуска иногда открывает home вместо нужного route; что вы сделаете?
android-components - 88
Custom-scheme deep link для login может перехватить другое установленное приложение; как вы закроете риск takeover?
deep-linkingnavigation - 89
15-минутная фоновая синхронизация проходит в симуляторе, но ОС завершает её примерно через 30 секунд на реальных устройствах; как вы её перестроите?
- 90
Релиз отправляет полные поисковые запросы и user ID в свойствах аналитики, создавая 12 миллионов уникальных значений в день; как вы обработаете проблему cardinality и privacy?
soft-skillsincidentsqueries - 91
Добавление одного feature module в super-app повышает медиану запуска с 2,0 до 3,1 секунды для всех 9 миллионов пользователей; как вы изолируете и отмените регрессию?
- 92
Два независимо выпускаемых super-app модуля требуют несовместимые версии одного нативного SDK, а пять поддерживаемых host builds должны проверить шесть комбинаций версий модулей; какое решение вы примете?
validation - 93
White-label релиз вышел на 60 000 пользователей с логотипом и support URL другого клиента; как вы ограничите и предотвратите смешение assets?
- 94
После миграции Fabric-компонента VoiceOver и TalkBack видят только 60% элементов checkout, хотя все представления показаны на экране; как вы исследуете пропавшие accessibility nodes?
mobile-accessibilitytalkbackvoiceover - 95
Обязательный нативный identity SDK недоступен два часа, и успех login падает с 98,9% до 61%; что может сделать команда приложения?
- 96
Flaky-тесты Detox и Maestro блокируют каждый релиз приложения со 180 экранами, причём 14% прогонов падают по-разному; как вы вернёте сигнал?
end-to-end-testing - 97
Примите релизное решение, если доля сессий без сбоев равна 99,55% при SLO 99,7%, но единственная новая ошибка затрагивает 0,08% малозначимых сессий.
sessionsslo - 98
Релиз проходит на flagship-устройствах, но падает на 11% Android-телефонов с 2 ГБ RAM и API 26; как вы обработаете сбой только на слабых устройствах?
soft-skillsapi - 99
iOS отправляет memory warning после пяти camera edits и завершает приложение на седьмом, а Android стабилен; что вы сделаете?
memory - 100
У инженера есть две недели на исправление редкого зависания checkout, которое воспроизводится один раз из 300; как вы будете его наставлять, не забирая задачу?
mentoring