Skip to content

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

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

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

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

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

Вопросы

active-usersarchitectureflutter

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

  • Каждая бизнес-фича публикует небольшой пакет api, а виджеты, провайдеры Riverpod или BLoC, репозитории и DTO держит в пакете реализации, за который отвечает одна команда.
  • Общие доменные типы Dart находятся в редко меняющихся core-пакетах, а код Swift, Kotlin и плагинов скрыт за platform-пакетом, поэтому фичи не импортируют детали хоста.
  • CODEOWNERS и проверка графа зависимостей запрещают импорты между реализациями, а тесты затронутых пакетов удерживают p95 проверки pull request ниже 12 минут.
  • Дополнительные модели на границах оправданы только там, где они позволяют 5 командам выпускать изменения без правок чужой реализации.

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

monorepodependenciesflutter

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

  • Я бы составил карту импортов и частоты изменений, затем вынес контракты маршрутов, результатов и домена из минимальной стабильной границы, разрывающей каждый из 11 циклов.
  • Часто меняющиеся общие UI- и utility-пакеты разделил бы по владельцам либо вернул потребителям; более 15 зависимых пакетов допустимы только у стабильных примитивов.
  • Проверка графа в CI запрещала бы циклы, недопустимые связи между фичами и публичные импорты каталога src другого пакета.
  • Новая схема принимается только при отсутствии циклов и инкрементальном анализе затронутой фичи быстрее 90 секунд.

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

ownershipflutter

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

  • Команда checkout владеет состоянием, UI, аналитикой и оркестрацией, а платежи, идентификация и каталог публикуют узкие возможности с явными владельцами и тестами совместимости.
  • CODEOWNERS требует владельца для изменений реализации, но для контракта достаточно одного ревьюера от потребителя и одного от поставщика вместо всех 5 команд.
  • Ежеквартальный отчет отслеживает пакеты без владельца, задержку согласований и межкомандные правки с целью не более одного внешнего согласования для обычного изменения checkout.
  • Общий код получает платформенного владельца лишь после того, как минимум 3 фичам понадобится одинаковое стабильное поведение, а не просто похожий синтаксис.

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

flutternavigationdesign

Я бы держал типизированные маршруты в API-пакетах, а конкретные builders разрешал в оболочке приложения.

  • Каждая фича публикует sealed-типы Dart 3 для входных данных маршрута и типизированных результатов со стабильными ID, но без классов Widget, экземпляров GoRouter и типов репозиториев.
  • Точка композиции приложения регистрирует все 24 обработчика и направляет 8 проверенных deep links через тот же парсер маршрутов с учетом аутентификации и предварительных условий.
  • Контрактные тесты проверяют сериализацию маршрута, неизвестные версии, поведение Back и однозначное разрешение каждой регистрации.
  • Проверка графа пакетов гарантирует отсутствие связей между реализациями, а централизованная сборка принимается ради прозрачной навигации.

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

active-usersmicro-frontendsflutter

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

  • Плагин оправдан, когда фича владеет API на Swift или Kotlin; он не дает независимого развертывания Dart-кода и добавляет работу с версиями платформ.
  • Отложенные компоненты Android могут сократить базовую загрузку, но на iOS код всё равно входит в приложение, поэтому я измерю размер и p95 первого открытия отдельно по платформам.
  • Микрофронтенд в рантайме добавляет отказы маршрутизации, зависимостей, наблюдаемости и совместимости, не обеспечивая доставку iOS-кода в обход App Store.
  • Я вынесу фичу в отложенную доставку только при p95 первого открытия ниже 4 секунд, иначе уменьшу ресурсы или включу ее в приложение.

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

flutterlatencyoop

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

  • Пакет для приложения определяет типизированные команды камеры, результаты, ошибки и состояния жизненного цикла без типов AVFoundation или CameraX.
  • Пакеты Swift и Kotlin реализуют контракт и отвечают за переключение потоков, разрешения, освобождение ресурсов и нативные тестовые фикстуры.
  • Dart-адаптер унифицирует только обязательное общее поведение, а платформенные возможности оставляет явными, не сводя их к ложному общему знаменателю.
  • Интеграционные бенчмарки измеряют p95 полного цикла команды ниже 50 мс на обеих платформах, включая сериализацию и переключение на главный поток.

Зачем это спрашивают: Вопрос проверяет, сохраняет ли абстракция общий контракт, не скрывая существенных различий iOS и Android.

platform-channelspigeon

Я бы выбрал Pigeon, потому что сгенерированные типизированные интерфейсы лучше выполняют требование compile-time контракта, чем написанные вручную карты MethodChannel.

  • Схема Pigeon задает nullable-поля, enum, структурированные ошибки и асинхронные host-методы, а CI генерирует согласованный код Dart, Swift и Kotlin.
  • Тонкий адаптер не пропускает сгенерированные типы в доменный слой, поэтому обновление схемы не расходится по 14 местам вызова.
  • MethodChannel подходит для одного небольшого экспериментального вызова, но строковые имена методов и динамические карты переносят ошибки в рантайм.
  • CI повторно генерирует код и падает при diff, а тесты совместимости запускают предыдущий Dart-клиент с текущим нативным хостом.

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

flutterdesign

Я бы разделил нативное состояние передачи и частоту обновления UI, явно задав срок жизни подписки.

  • Нативный код отправляет типизированные снимки с ID файла, монотонным номером, числом байтов и конечным состоянием в одной последовательной очереди, а не создает канал на каждый тик.
  • Dart-адаптер объединяет обновления каждого файла до частоты не более 10 в секунду, но всегда доставляет завершение и ошибку.
  • onListen регистрирует одного наблюдателя, onCancel удаляет его, а повторная подписка возвращает последний снимок, чтобы пересоздание view не сбрасывало прогресс.
  • Тест длительностью 60 секунд проверяет ограниченную память, отсутствие потерянных конечных событий и возраст UI-данных ниже 150 мс для всех 20 файлов.

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

algorithmsconcurrencydart

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

  • FFI устраняет повторную сериализацию кодеком, а NativeCallable или узкий C ABI сохраняет стабильную границу для оберток Swift, Kotlin и Dart.
  • Буферы имеют явное владение и переиспользуют нативные области памяти; каждое выделение и освобождение покрывается нагрузочными тестами и AddressSanitizer в нативных сборках.
  • Вызовы выполняются вне UI isolate, если могут превысить бюджет кадра, потому что сам по себе FFI не делает CPU-работу асинхронной.
  • Нативная сложность принимается только при p95 полного цикла ниже 16,7 мс и отсутствии роста памяти после 100 000 вызовов.

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

flutter

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

  • Dart-интерфейс согласует версию контракта и возможности, отклоняет неподдерживаемую major-версию и допускает добавочные optional-поля внутри одной major-линии.
  • Android привязывает ресурсы к ActivityAware callbacks и освобождает их при detachment из-за конфигурации; iOS реагирует на активацию и отключение сцен, не предполагая одно глобальное окно.
  • При потере хоста незавершенные вызовы получают типизированный результат unavailable или cancelled, а повторное подключение восстанавливает наблюдателей без дублей.
  • Перед публикацией матрица проверяет 3 линии Flutter, пересоздание Activity, 2 сцены iOS и совместимость старого Dart-клиента с новым хостом.

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

flutteranimationci-cd

Я бы считал 16,7 мс полным интервалом кадра и отдельно профилировал UI- и raster-работу, поскольку любая из них может пропустить vsync.

  • Графики кадров DevTools в profile- или release-сборке показывают, где задержка: build, layout, paint, растеризация или отправка команд GPU.
  • Я бы удерживал p95 UI- и raster-длительности примерно ниже 8 мс каждую, оставляя запас планировщику, а не отдавая одной стороне весь интервал.
  • Timeline-события вокруг анимации связывают конкретное взаимодействие с затратами shader, декодирования изображения, saveLayer или layout на целевом устройстве.
  • Изменение проходит проверку только при доле медленных кадров ниже 2 процентов в 20 одинаковых прогонах, а не при одном улучшении среднего.

Зачем это спрашивают: Вопрос проверяет практическое понимание параллельной UI- и raster-нагрузки Flutter и бюджетов по процентилям.

renderingwidgets

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

  • Неизменяемые widgets описывают конфигурацию, elements сохраняют идентичность и состояние, а render objects выполняют layout и paint, поэтому стабильные keys и const-поддеревья сокращают лишние обновления elements.
  • Значение счетчика выбирается у самого узкого потребителя через Riverpod select или точечный ListenableBuilder, оставляя конфигурации остальных 599 виджетов неизменными.
  • RepaintBoundary изолирует анимированную область, только если визуализация repaint в DevTools подтверждает перерисовку окружающих пикселей; избыток границ расходует слои и память.
  • Я сравню число build и время raster на 100 обновлениях, требуя перестройки только поддерева счетчика и p95 paint ниже 4 мс.

Зачем это спрашивают: Сильный ответ различает rebuild, relayout и repaint, а не считает их одной и той же затратой.

memory

Я бы составил ленивые slivers и сохранил стабильную идентичность элементов, чтобы viewport создавал только ближайшие строки.

  • CustomScrollView объединяет SliverPersistentHeader для месяцев со SliverList или SliverVariedExtentList, если размеры можно дешево узнать, без shrinkWrap и вложенных прокручиваемых списков.
  • Строки используют стабильные backend ID, готовые presentation-модели и ограниченный keep-alive только для тех контролов, которым действительно нужно локальное UI-состояние.
  • Пагинация удерживает окно вокруг viewport, а декодированные изображения удаляются через image cache вместо хранения render-детей для всех 50 000 моделей.
  • Бенчмарк прокрутки должен удерживать peak RSS ниже 120 МБ и p95 кадра ниже 16,7 мс на самом слабом поддерживаемом устройстве.

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

gridcustom-renderingjobs

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

  • Render object вычисляет видимые диапазоны строк и столбцов по constraints и смещениям прокрутки, затем раскладывает только ячейки viewport и небольшого cache extent.
  • Он отделяет layout-входы от изменений выделения, требующих только paint, реализует hit testing и semantics и не делает intrinsic measurement всех 2 000 ячеек.
  • Сначала я проверю готовые примитивы двухмерной прокрутки, потому что собственный layout несет долг по accessibility, жестам и обновлениям фреймворка.
  • Собственная реализация принимается только при p95 layout ниже 8 мс и semantics-тестах навигации с клавиатурой и screen reader.

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

flutterrenderinganimation

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

  • Profile-сборка с Perfetto и Flutter timeline разделяет Dart-работу, загрузку текстур, создание pipeline, raster-время и завершение GPU во время первой анимации.
  • Я упрощу неподдерживаемые или дорогие эффекты, сокращу большие области saveLayer и прогрею лишь небольшой предсказуемый путь анимации, если главным фактором доказано создание pipeline.
  • Все 3 модели GPU останутся в матрице бенчмарков, потому что драйверы и лимиты текстур могут различаться даже при модели предварительно скомпилированных shaders в Impeller.
  • Релиз требует p95 первого запуска ниже 16,7 мс либо осознанный fallback с reduced motion без визуальных расхождений в golden- или screenshot-проверках.

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

renderingfluttercaching

Я бы отделил стабильный дорогой контент от движущихся маркеров и оставил только те границы, для которых измерена экономия raster-работы.

  • Статичные метки и оформление карты могут делить один RepaintBoundary, если не меняются при обновлении маркеров, а анимированные маркеры рисуются в отдельном легком слое.
  • Я проверю записи raster cache и repaint rainbow, удалив отдельные границы меток, чьи кэшированные текстуры дороже повторного рисования простого текста.
  • Большие изображения декодируются близко к размеру показа и переиспользуются по ключу кэша, а временные трансформированные слои не кэшируются принудительно без окупаемости на повторных кадрах.
  • Цель: рост raster cache менее 15 МБ и p95 raster-времени ниже 8 мс за 60 секунд анимации.

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

a11yflutterdesign

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

  • CustomPainter или render object рисует видимые узлы из пространственного индекса, а рамки выделения и курсоры перерисовываются отдельно без перестройки модели из 500 узлов.
  • События указателя, клавиатуры и focus поступают в один детерминированный reducer с sealed actions Dart 3 и записями undo, а не напрямую изменяют объекты canvas.
  • Semantics представляет выбранные и ближайшие узлы как доступные controls, хотя визуальный canvas кастомный, а reduced-motion отключает необязательные переходы.
  • Бенчмарки pan, zoom, множественного выбора и undo требуют p95 кадра ниже 16,7 мс и задержки hit test ниже 50 мс.

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

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

  • Flutter integration- или нативные macrobenchmarks выполняют минимум 30 холодных запусков в profile- или release-режиме с одинаковым состоянием устройства, разделяя запуск engine, инициализацию Dart, регистрацию плагинов и первый кадр.
  • Синхронно остаются только crash reporting и критичная для запуска конфигурация; аналитика, remote config, прогрев БД и не начальные маршруты инициализируются при первом использовании.
  • Первый экран использует небольшие локальные ресурсы и не блокируется сетью, а startup-код Dart 3 не создает заранее весь граф провайдеров.
  • Gate требует p95 ниже 1,5 секунды и не допускает ухудшения p95 теплого старта более чем на 5 процентов.

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

fluttermemory

Я бы разделил утечки удерживаемых объектов, нагрузку декодированных изображений и нативные allocations до изменения лимитов кэша.

  • Heap snapshots и retaining paths в DevTools сравнивают посещения 2 и 10, а Android Studio или Instruments показывает, находится ли пропавшая память в Dart, GPU-текстурах или нативных плагинах.
  • Controllers, подписки streams и Riverpod auto-dispose scopes должны освобождаться вместе с маршрутом; повторный тест требует ноль удерживаемых владельцев галереи после сборки мусора.
  • Для декодированных изображений задается измеренный лимит ImageCache в байтах и декодирование до целевого размера с допустимыми повторами ради peak RSS ниже 210 МБ.
  • Цикл по галерее длительностью 15 минут проходит, только если память после GC возвращается в пределах 10 МБ от уровня второго посещения и процесс не завершается из-за OOM.

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

designci-cd

Я бы запрашивал, декодировал и кэшировал thumbnails в размере показа, а не пропускал 12 МП изображения через UI-путь.

  • CDN отдает варианты по ширине, формату и качеству, а cacheWidth или ResizeImage ограничивает локальное декодирование, если серверного варианта нет.
  • Список предзагружает лишь небольшое окно viewport, ограничивает параллельные загрузки и отменяет работу для строк, ушедших из окна до декодирования.
  • Memory cache хранит декодированные thumbnails в рамках байтового бюджета, disk cache хранит сжатые ответы, а полное разрешение загружается только на detail-экране.
  • Бенчмарки требуют первые видимые thumbnails за 500 мс, peak RSS ниже 220 МБ и не более 8 одновременных декодирований.

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

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

  • 21

    Android App Bundle занимает 92 МБ, а загрузка iOS 118 МБ при целевых значениях 65 и 85 МБ. Как вы создадите бюджет размера приложения?

  • 22

    Flutter-релиз содержит 40 feature-пакетов, 6 реестров, похожих на reflection, и 18 МБ предположительно недостижимого Dart-кода. Как вы проверите tree shaking?

    tree-shakingapp-sizeflutter
  • 23

    Flutter-приложение обслуживает 1 млн MAU, но телеметрия производительности может добавлять лишь 0,5 процента CPU и 200 КБ на сессию. Какую наблюдаемость вы внедрите?

    active-usersobservabilityperformance
  • 24

    Пять команд используют Riverpod в 35 фичах, а изменение login сейчас инвалидирует 120 провайдеров. Как вы перестроите владение состоянием?

    state-managementownership
  • 25

    В checkout на BLoC есть 16 состояний, 22 события и 4 параллельных side effects. Как сохранить детерминизм для 6 продуктовых команд?

    state-management
  • 26

    В profile flow есть 7 экранов, 3 черновика и восстановление процесса, но команды спорят, где хранить состояние: в widgets, Riverpod или repositories. Какие правила владения вы бы задали?

    conflictownershipwidgets
  • 27

    Telemetry BLoC получает 5 000 событий в минуту от 200 устройств. Для каждого устройства порядок обязателен, а независимые устройства должны обрабатываться параллельно. Как бы вы спроектировали keyed concurrency и детерминированное состояние?

    concurrencydesignstate-management
  • 28

    Офлайн-приложение для выездных сотрудников редактирует 10 000 записей, может быть без связи 72 часа и не допускает тихой перезаписи. Как вы спроектируете консистентность?

    designconsistency
  • 29

    Flutter-клиент должен поддерживать API версий 3 и 4 в течение 90 дней для 25 endpoints без принудительного обновления. Как вы построите клиентский контракт?

    endpointsflutter
  • 30

    Приложение на Dart 3 должно разобрать JSON размером 40 МБ менее чем за 600 мс, не блокируя взаимодействие на 60 Гц. Как вы используете isolates?

    concurrencydart
  • 31

    Приложение выполняет до 50 CPU-задач в минуту длительностью от 80 до 300 мс, а создание isolate занимает 20 мс. Как бы вы спроектировали compute pool?

    concurrencydesign
  • 32

    Пользователь отменяет задачу isolate длительностью 3 секунды, а UI должен остановиться за 100 мс без завершения несвязанной работы. Как вы реализуете отмену?

    concurrencyresilience
  • 33

    Плагин камеры отправляет в Dart кадры по 25 МБ 20 раз в секунду, а копирование поднимает память выше 300 МБ. Как вы перестроите передачу бинарных данных?

    memorydart
  • 34

    В очереди синхронизации 50 000 ожидающих изменений, а обычная синхронизация занимает 10 минут, но iOS обычно дает около 30 секунд background time, а Android может завершить процесс. Какой возобновляемый background-контракт и архитектуру вы бы пообещали?

    promisesconcurrencydata-structures
  • 35

    Пяти командам нужна Flutter design system с 60 компонентами и окном миграции 6 месяцев. Как вы определите ее архитектуру?

    componentsdesign-systemflutter
  • 36

    Checkout должен соответствовать WCAG 2.2 AA, поддерживать масштаб текста 200 процентов и оставаться доступным для switch control. Что вы потребуете?

    a11yscaling
  • 37

    Flutter-приложение поддерживает 12 locales, включая арабскую, а переводы могут быть длиннее на 40 процентов. Как вы организуете localization?

    flutter
  • 38

    Продукт требует нативного поведения iOS и Android на 30 общих экранах, но отличаются только 8 взаимодействий. Как вы адаптируете UI без его разветвления?

  • 39

    Пять команд создают golden tests на 3 операционных системах, и 14 процентов тестов сейчас падают из-за различий шрифтов или renderer. Какую стратегию вы зададите?

    golden-testssystem-designiac
  • 40

    В Flutter-репозитории есть 4 окружения, а 7 разработчиков могут исследовать клиентский binary. Где должны находиться API secrets?

    flutterapisecrets
  • 41

    Банковское приложение хранит refresh tokens и локальный ключ шифрования 256 бит на iOS и Android. Как вы примените secure storage?

    encryptiontokens
  • 42

    Mobile API обрабатывает платежи, а security-команда предлагает TLS pinning с сертификатами на 30 дней и SLA ротации 24 часа. Вы одобрите решение?

    tlsapi
  • 43

    Sentry собирает 2 процента сессий health-приложения, а события могут содержать email, текст диагноза и access tokens. Как бы вы спроектировали границу PII?

    tokenssessionspii
  • 44

    Threat model включает root на Android, jailbreak на iPhone, 7 разработчиков с доступом к исследованию binary и контролируемый атакующим local storage. Какую границу безопасности вы заявите?

    formsthreat-modeling
  • 45

    Flutter-приложение содержит 40 пакетов, pull request ограничен 8 минутами, а ночью доступны 2 модели физических устройств. Как бы вы определили test architecture?

    flutterarchitecture
  • 46

    Нативное приложение со 120 экранами должно внедрить Flutter add-to-app для 15 экранов за 4 релиза без смены владельца аутентификации и навигации. Какую границу вы используете?

    decision-makingownershipflutter
  • 47

    Две нативные команды планируют заменить 80 экранов на Flutter за 12 месяцев, продолжая ежемесячные релизы. Как вы выстроите миграцию?

    fluttermigrations
  • 48

    Flutter-монорепозиторий выпускается еженедельно в оба store, а pull requests должны завершаться за 10 минут. Какие CI/CD gates вы введете?

    ci-cdmonorepocode-review
  • 49

    Релиз распространяется на 1, 10, 25, 50 и 100 процентов аудитории в 1 млн MAU. Какие сигналы Sentry будут управлять каждым этапом?

    active-users
  • 50

    RFC предлагает заменить BLoC на Riverpod в 28 фичах, а 3 инженера не согласны после 2-недельного прототипа. Как вы примете решение и проведете команду через него?

    conflictmentoringdecision-making
  • 51

    После выхода релиза 9.4 на 20% аудитории доля медленных кадров в ленте на 60 Гц выросла с 3,2% до 18,7%, p95 UI-потока достиг 31 мс, а p95 raster-потока остался 7 мс. Что вы диагностируете, как локализуете проблему и чего потребуете перед продолжением раскатки?

    concurrency
  • 52

    Анимация графика на устройствах 120 Гц показывает p95 raster-потока 19 мс, 27% пропущенных кадров и p95 UI-потока 4 мс после раскатки на 35%. Как вы локализуете нагрузку на GPU и принимаете решение об откате?

    concurrencyanimationrollback
  • 53

    После переключения Android-рендерера на Impeller у 15% пользователей доля медленных кадров анимации оплаты выросла с 4% до 22% только на 2 семействах Mali GPU, p99 raster достиг 46 мс, а Dart-код не менялся. Какие доказательства и решение вам нужны?

    renderinganimationdart
  • 54

    Онлайн-аукцион пересоздаёт ключи для 600 строк при 10 тиках в секунду, что вызывает около 1800 монтирований элементов на каждом тике, паузы сборщика мусора по 24 мс и потерю состояния строк. Как вы диагностируете и локализуете проблему и чем докажете исправление?

    churn
  • 55

    На Android-устройствах с 512 МБ просмотр 24 фотографий повышает RSS со 118 до 472 МБ и вызывает 1,6% OOM-завершений; снимки heap показывают 48 декодированных изображений 4000x3000. Что вы локализуете и меняете?

    snapshotdata-structures
  • 56

    После 30 открытий и закрытий сканера Dart heap растёт с 82 до 244 МБ, а 30 объектов State остаются доступны через подписку на поток камеры. Как вы докажете и устраните утечку?

    data-structuresdart
  • 57

    Холодное время до первого кадра выросло с 1,6 до 3,9 секунды после добавления 3 SDK, причём 1,4 секунды проходят до runApp и 700 мс занимают синхронные чтения настроек. Что вы отложите и как проверите восстановление?

  • 58

    Доля заметных пользователю ANR на Android выросла с 0,24% до 0,93% при раскатке на 25%, а трассы показывают, что Flutter-плагин блокирует platform thread на 6,2 секунды во время миграции базы. Какова последовательность восстановления?

    databasemigrationsconcurrency
  • 59

    Обновление Flutter увеличило размер загрузки Android с 38 до 61 МБ, а размер установки iOS с 92 до 134 МБ, нарушив лимит 50 МБ для мобильной сети. Как вы найдёте регрессию в 23 МБ и решите, что выпускать?

    flutter
  • 60

    Кастомный RenderObject вышел на 10% и в 14% сессий вызывает повторяющийся layout, 900 проходов за 2 секунды и иногда пустые карточки после поворота. Как вы локализуете и диагностируете проблему?

    custom-renderingsessions
  • 61

    После выхода Riverpod-рефакторинга на 30% изменение одного аккаунта перестраивает данные всех 80 аккаунтов и запускает 240 API-запросов за 1 минуту. Как вы найдёте ошибку инвалидирования и восстановитесь?

    refactoringapistate-management
  • 62

    500 заказов создают 6000 событий статуса в минуту. Полностью последовательная обработка даёт задержку 90 секунд, а полностью параллельная меняет порядок событий одного заказа. Какую политику конкурентности BLoC вы выберете и как докажете сохранение порядка?

    state-managementconcurrency
  • 63

    Профиль загружает ревизию 42 за 180 мс, но старый запрос ревизии 41 завершается через 1,2 секунды и перезаписывает её в 3,8% сессий. Как вы остановите устаревший async commit?

    sessionsasync
  • 64

    После посещения 120 товаров память растёт со 110 до 390 МБ, а Riverpod сообщает о 120 живых family providers, потому что каждый вызвал keepAlive. Как ограничить удержание, не сломав возврат назад?

    state-managementnavigationmemory
  • 65

    Импорт 12 файлов запускает 12 изолятов, загружает 8-ядерные устройства до 100% CPU, задерживает UI-кадры до p95 74 мс и увеличивает завершение с 40 до 67 секунд. Что вы измените?

    concurrency
  • 66

    Передача Uint8List размером 180 МБ в изолят обработки изображений временно удваивает RSS до 620 МБ и вызывает OOM на устройствах с 1 ГБ, хотя самой обработке нужно только 220 МБ. Как вы проверите и примените TransferableTypedData?

    concurrency
  • 67

    Пользователь уходит с экрана отчёта через 300 мс, но 18-секундный экспорт продолжается, удерживает 140 МБ и записывает поздний success state в 6% переходов. Как сделать отмену настоящей?

    navigationresilience
  • 68

    Фоновая синхронизация записывает контрольную точку до фиксации локальной транзакции. ОС завершает процесс в 22% запусков, и после перезапуска пропускаются 18000 элементов. Как вы остановите потерю данных и перестроите синхронизацию для атомарного восстановления?

    transactionsconcurrency
  • 69

    После 50 циклов logout-login остаются 50 потоковых подписок Riverpod, и каждое обновление баланса дублируется 50 раз. Какая граница ownership нарушена и как доказать исправление?

    ownershipstate-management
  • 70

    BLoC восстановил 400 событий checkout после перезапуска процесса и отправил 17 дублированных заказов до включения kill switch. Как локализовать инцидент и изменить replay?

    concurrencydata-structuresincidents
  • 71

    Основной API возвращает 503 в течение 18 минут для 2 миллионов мобильных сессий, успешность checkout падает с 96% до 41%, а кеш каталога устарел на 20 минут. Что делает приложение во время восстановления?

    sessionsapicaching
  • 72

    Сбой на 90 секунд заставляет 600 000 клиентов повторять запрос каждую 1 секунду, повышая нагрузку backend после восстановления с 8000 до 140 000 запросов в секунду. Как остановить retry storm?

    zero-to-oneresilience
  • 73

    4 отдельно созданных клиента Dio обходят существующий координатор обновления токена. Когда 80 запросов сталкиваются с истёкшим токеном, возникают ошибки invalid_grant и пользователь выходит из аккаунта. Как вы диагностируете и локализуете сбой и восстановите единственный центр обновления?

    tokens
  • 74

    После потери сети на 4 минуты 300 000 WebSocket-клиентов переподключаются за 2 секунды, каждый получает 1200 пропущенных событий, а 7% балансов отображаются дважды. Как безопасно восстановиться?

    websockets
  • 75

    GraphQL-запрос главного экрана вырос со 180 КБ до 4,8 МБ, p95 парсинга достиг 1,6 секунды, а 9% устройств с 2 ГБ завершаются под давлением памяти. Как снизить влияние, не скрыв drift схемы?

    queriesschemagraphql
  • 76

    Два offline-устройства редактируют одну инспекцию из 35 полей, и last-write-wins удаляет 12 фотографий и 4 часа заметок при переподключении. Как локализовать потерю данных и изменить обработку конфликтов?

    incidents
  • 77

    Потеря питания во время записи кеша оставляет JSON-файл размером 26 МБ обрезанным, и 14% следующих запусков падают при его декодировании. Какова политика восстановления и повреждения?

    caching
  • 78

    Загрузка видео размером 2,4 ГБ падает на 93% при переключении мобильной сети и начинается с байта 0, расходуя у пользователя 4,8 ГБ трафика. Как добавить безопасное возобновление при лимите памяти 50 МБ?

    memory
  • 79

    После включения Firebase messaging одновременно в native и Dart слоях 18% пользователей получают каждое уведомление о заказе дважды, а у 2% открываются два checkout routes. Как локализовать и дедуплицировать это?

    queriesdart
  • 80

    Релиз телеметрии на 40% отправил в аналитику 3200 полных поисковых запросов и 74 access tokens до обнаружения, нарушив требования о нуле токенов и удалении за 24 часа. Что вы делаете первым и что меняете?

    queriestokens
  • 81

    Нажатие biometric login замораживает iOS на 4,7 секунды в 6% сессий; handler MethodChannel работает на main и вызывает DispatchQueue.main.sync до ответа. Как устранить риск deadlock?

    lockingsessionsplatform-channels
  • 82

    При раскатке на 15% crash-free users падает с 99,86% до 98,94%; Swift падает на force-cast null аргумента канала, а Kotlin пишет 420 NumberFormatException для того же payload. Что вы исправите первым?

    fundamentals
  • 83

    Обновление Flutter SDK позволяет payment plugin собраться на Android, но 32% iOS archives падают с undefined symbol, а plugin не выпускался 18 месяцев. Вы сделаете fork, замену или rollback?

    flutterfundamentalsrollback
  • 84

    На beta следующей Android OS 28% экранов уходят под системные панели, back gestures закрывают checkout в 4% тестов, а до релиза 21 день. Как вы проводите triage обновления ОС?

    interactionsystem-designtesting
  • 85

    После выхода изменения permission flow на 50% завершение импорта фото падает с 72% до 39%, а 61% сбоев происходят при limited-library access на iOS. Что вы диагностируете и меняете?

  • 86

    Вредоносное приложение перехватило custom scheme и захватило 240 ссылок сброса пароля до остановки Android-раскатки на 10%. Как локализовать deep-link hijack и безопасно восстановиться?

    passwords
  • 87

    Срок iOS distribution certificate истекает через 36 часов, активны 6 релизных веток, и CI больше не подписывает emergency build, потому что provisioning profile ссылается на старый сертификат. Каков план восстановления?

    distributionsrecovery
  • 88

    На 8% phased rollout crash-free sessions падают с 99,91% до 99,28% только на Android 12, а конверсия растёт на 3%. Вы продолжите, остановите или откатите раскатку?

    sessionsrollback
  • 89

    Apple отклоняет версию 7.2 за 12 часов до запуска, потому что 2 SDK используют required-reason APIs без полных privacy manifests, а их удаление ломает attribution. Что вы выпускаете?

    api
  • 90

    Транзитивный Dart package с 4,2 миллиона загрузок объявлен скомпрометированным, lockfile содержит затронутую версию 3.1.4, а 65% production-устройств работают с ней. Что вы делаете в первые 6 часов?

    packagingdart
  • 91

    Миграция одного Flutter-приложения в 14 feature packages удвоила clean build с 11 до 23 минут, создала 37 циклов зависимостей и заблокировала 4 команды. Вы продолжите или откатите её?

    dependenciesrollbackmigrations
  • 92

    Add-to-app checkout на 10% увеличивает cold start нативного приложения на 1,1 секунды, добавляет 96 МБ RSS и ломает первую навигацию в 7% сессий. Как локализовать и решить, остаётся ли Flutter?

    flutternavigationsessions
  • 93

    CI недоступен 5 часов, а после восстановления 18% из 1400 Flutter tests падают случайно, в основном golden с разницей 1-3 пикселя. До релиза 9 часов. Что вы делаете?

    fluttertesting
  • 94

    Design-system package 6.0 дошёл до 5 продуктовых команд и обрезает текст 14% кнопок на немецком, а tap targets уменьшились с 48 до 36 logical pixels на 22 экранах. Как вы координируете восстановление?

    system-designdesign
  • 95

    Checkout-релиз на 25% запирает фокус screen reader в modal, блокирует 100% оплат незрячих пользователей и оставляет 6 controls без labels. Что вы откатываете и как проверяете восстановление?

    rollback
  • 96

    Security обнаруживает, что версия 12.1 пишет refresh tokens в логи при 9% неудачных запросов, затронув около 18 000 пользователей за 3 дня. Какова первая реакция и release gate?

    tokens
  • 97

    RFC предлагает за 6 недель создать кастомный слой Flutter module federation для 4 команд, но prototype добавляет 38 МБ, ломает hot reload и не имеет rollback после активации module. Вы его одобрите?

    rollbacktoolingfederation
  • 98

    Разработчик исправляет 6% double-submit добавлением задержки 2 секунды и глобального Boolean, но 30% оплат обычно занимают 3-8 секунд. Как вы его менторите и заменяете исправление?

    mentoring
  • 99

    У 2 инженеров осталось 4 дня до контрактного запуска, но crash-free sessions равны 98,8% при цели 99,7%, а запланированный offline mode требует 8 инженерных дней. Что вы выпускаете?

    sessions
  • 100

    Мобильный outage на 23 минуты затронул 480 000 сессий, потому что remote config вернул пустой endpoint, тесты использовали default, а rollback занял 17 минут. Какое postmortem action вы приоритизируете?

    prioritizationincidentsconfig