Skip to content

Вопросы на собеседовании: React Native-разработчик

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

Смотреть пример резюме: React Native-разработчик

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

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

Вопросы

reactreact-nativearchitecture

Я буду поэтапно выпускать отдельный обновлённый бинарник, потому что 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.

reactreact-nativenlp

Я бы сделал каждый независимо монтируемый React Native-флоу Fabric-поверхностью и не чередовал владельцев внутри одного интерактивного дерева представлений.

  • Нативная оболочка checkout владела бы навигацией UIViewController или Fragment, а каждая React Native-поверхность отвечала бы за layout, события и accessibility ниже своего корня.
  • Нативные контролы внутри поверхности я бы публиковал как Codegen Fabric-компоненты, а не оборачивал через произвольное вложение view controller.
  • Данные через границу передавались бы небольшими типизированными props и событиями, без общих изменяемых ссылок на view и императивного обхода.
  • Время монтирования и переходов я бы измерил на 3 классах устройств, потому что множество мелких поверхностей добавляет стоимость инициализации.

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

designturbo-moduleskotlin

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

  • Каждый модуль получил бы узкую TypeScript-спецификацию с явными nullable-значениями, enum, поведением promise и структурированными кодами ошибок для iOS и Android.
  • Сгенерированный Codegen-код компилировался бы в обоих нативных проектах в CI, а diff API запрещал бы удаление методов и смену смысла полей.
  • Новые возможности были бы опциональными и обнаруживались через версию или capability-метод, чтобы старый бинарник безопасно отклонял неподдерживаемый вызов.
  • Синхронные методы я бы оставил только для ограниченной работы в памяти до 2 мс, а хранилище, сеть и разрешения сохранил асинхронными.

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

ownershipconcurrencyjsi

Я бы привязал каждый 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.

reactreact-native

Я бы использовал один 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.

reactreact-nativeapi

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

  • Каждый 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-теста на каждой рискованной линии.

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

reactreact-nativesessions

Я разделю пакеты на 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-сборок вместо автоматической замены.

reactreact-nativearchitecture

Я буду считать 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 в явный контракт конкурентности.

monorepodependenciesbuild-tools

Я бы централизовал объявления нативных версий и коммитил все 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.

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

new-architecturefabric-rendererrollback

Я разделю 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.

reactautolayoutreact-native

Я федерализую владение исходниками и 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.

active-users

Я сделаю еженедельным результатом версионированный 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.

monorepo

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

  • Каждый домен публиковал бы public index с маршрутами, командами и типами данных, а deep imports в другой домен запрещались бы lint и правилами графа.
  • Общие пакеты ограничивались бы стабильными задачами вроде UI primitives, telemetry, networking и test utilities, без бизнес-логики для 2 доменов.
  • Нативные пакеты явно объявляли бы входы iOS и Android, чтобы JavaScript-only изменение не инвалидировало все нативные targets.
  • CI по affected graph проверял бы изменённые пакеты и обратные зависимости, а ночная полная сборка ловила бы ошибки вне 15-минутного пути.

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

reactreact-nativesessions

Я бы сохранил единое неизменяемое ядро продукта, а различия брендов выразил через проверяемую конфигурацию, сгенерированные 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 остаются задачами сборки.

system-designdesigntokens

Я бы один раз определил семантические токены и генерировал из одного проверяемого источника типизированные представления для React Native, iOS и Android.

  • Компоненты использовали бы роли вроде surfacePrimary и textCritical вместо названий цветов бренда и сырых hex-значений.
  • Генератор отклонял бы отсутствующие токены в любом из 12 брендов и рассчитывал contrast всех сочетаний текста и состояния по WCAG AA.
  • Изменения typography и spacing проходили бы snapshot-тесты в 6 локалях, потому что длинный текст обнаруживает clipping даже при правильных цветах.
  • Theme objects мемоизировались бы и переключались на границе приложения, чтобы 180 экранов не пересчитывали стили внутри кадра.

Зачем это спрашивают: Сильный ответ рассматривает tokens как генерируемый кроссплатформенный контракт с проверками accessibility, локализации и runtime-производительности.

navigationdeep-linking

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

  • У каждого маршрута был бы стабильный ID, schema сериализуемых параметров, требования authentication и опциональный контракт результата.
  • Universal links, Android app links и push targets нормализовались бы в один внутренний route intent до загрузки любого модуля.
  • Неизвестная или удалённая версия маршрута вела бы на безопасный экран и отправляла метрику вместо падения при восстановлении состояния.
  • Контрактные тесты воспроизводили бы 100 самых частых внешних ссылок на текущем и предыдущем месячных host-бинарниках iOS и Android.

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

reactanimationdependencies

Я бы разделил зависимости на 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.

active-usersdesign

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

  • 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 как к неограниченной доставке фич.

slofeature-flagsactive-users

Я вычислю один типизированный 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-модулей.

api

Я бы задал небольшой версионированный контракт модуля и проверял каждую публикацию со всеми 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