Skip to content

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

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

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

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

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

Вопросы

concurrencyswiftvalue-types

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

  • HTTP, хранилище, часы, локаль и UI останутся за небольшими протоколами адаптеров вне доменного модуля.
  • Деньги будут храниться целым числом минимальных единиц, а правило округления передаваться как зависимость, чтобы все 4 исполняемых файла проходили одни и те же эталонные примеры.
  • Опубликую версионируемый набор из 10 000 фикстур и потребую от каждой платформенной задачи в CI побайтово одинакового результата.

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

spread

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

  • OrderCore хранит координаты как обычные числовые значения и никогда не импортирует CoreLocation.
  • AppleLocationAdapter преобразует CLLocation в доменный тип, а LinuxLocationAdapter использует результат серверного геокодера.
  • О выборе платформы знают только Package.swift и 2 точки сборки зависимостей, поэтому 60 доменных файлов остаются переносимыми.

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

reproducibilityapiserver-side

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

  • Для каждого решения сохраняются ruleSetVersion, нормализованные входные данные и переданное извне время вместо чтения глобального состояния.
  • Исполняемые приложения содержат данные или модули всех поддерживаемых версий правил и выбирают их во время выполнения, потому что SwiftPM не может динамически выбрать историческую версию пакета внутри одного графа зависимостей.
  • Для точного воспроизведения за 7 лет CLI обрабатывает данные ограниченными порциями через архивный бинарный файл или контейнер нужной версии, проверенный общими контрактными фикстурами на всех платформах.

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

dependenciesswift-package-manager

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

  • CI строит граф таргетов и отклоняет циклы и прямые зависимости одной функциональности от другой.
  • Стабильные интерфейсы отделяются от тяжелых реализаций только там, где дополнительный таргет оправдан параллельной сборкой или владением команды.
  • По времени сборки объединю слишком мелкие таргеты, разделю 3 самых дорогих и буду отслеживать p95 чистой и инкрементальной сборки.

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

swiftdependenciesownership

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

  • Checkout зависит от таргетов PaymentsAPI и InventoryAPI, но не от конкретных клиентов или моделей базы данных.
  • У каждого API-таргета есть одна команда-владелец, тесты совместимости и окно устаревания в 2 минорные версии.
  • Корни сборки зависимостей выбирают рабочие, демонстрационные и тестовые реализации, поэтому команды могут выпускать функции без правок общих синглтонов.

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

monorepo

Сначала я уберу зависимость от реализации с большим числом потребителей, а не стану сразу менять систему сборки.

  • По графу зависимостей Swift driver и временной шкале сборки выясню, какие публичные объявления приводят к пересборке нижележащих модулей.
  • Перенесу нестабильные вспомогательные функции за узкий стабильный модуль или продублирую функцию из 5 строк, если связность обходится дороже повторного использования.
  • Установлю порог CI в 105 секунд и сравню 10 прогретых инкрементальных сборок, чтобы не оптимизировать случайный шум.

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

swiftapidesign

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

  • Публичными станут только намеренно выбранные объявления, а сеть, хранилище и сгенерированные модели будут скрыты за собственными типами SDK.
  • Новые параметры добавляются через перегрузки или конфигурацию со значениями по умолчанию, а старые точки входа поддерживаются минимум 2 минорные версии после объявления устаревшими.
  • Перед публикацией пакет компилируется с репрезентативными фикстурами клиентов и проходит проверку различий API.

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

swift

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

  • Библиотека собирается с BUILD_LIBRARY_FOR_DISTRIBUTION и поставляется как проверенный XCFramework с соответствующими интерфейсами модулей.
  • Публичные структуры и enum остаются nonfrozen, чтобы свойства и варианты можно было добавлять без поломки старых бинарных файлов.
  • Каждый еженедельный кандидат проходит тесты старого клиента с новой библиотекой, а предыдущий артефакт хранится для немедленного отката.

Зачем это спрашивают: Вопрос оценивает понимание стабильности ABI, эволюции библиотек и эксплуатационной цены бинарной поставки.

authapi

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

  • Старый символ помечается устаревшим с инструкцией по миграции, но сохраняет поведение до конца текущей мажорной линейки.
  • Опубликую руководство по миграции и проверю оба API на одинаковых 25 контрактных сценариях, чтобы их поведение не разошлось.
  • Буду отслеживать переход репозиториев, выпущу кандидаты мажорной версии и удалю API только после 6-месячного окна и согласования с партнерами.

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

genericstypingprotocols

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

  • Обобщенные декодирование и проверка сохраняют статические типы и специализацию на пути с 8 000 запросов в секунду.
  • Реестр маршрутизатора хранит any RouteHandler, потому что в одной коллекции должны находиться 12 несвязанных обработчиков.
  • На Linux измерю диспетчеризацию и выделения памяти, а явное стирание типов добавлю только если associated types выходят в публичный API.

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

genericsdesignci-cd

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

  • Профилирование на изображениях производственного размера покажет 2 этапа с основной нагрузкой на CPU, поэтому не придется специализировать каждую комбинацию.
  • Необобщенный фасад конвейера не позволит нижележащим модулям создавать 50 полных обобщенных цепочек.
  • Небольшая цена динамического вызова вне горячего цикла допустима, а CI будет контролировать и CPU, и время компиляции.

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

concurrencyswiftvalue-types

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

  • Публичный Batch остается структурой, а внутренний final-класс Storage владеет непрерывным массивом записей.
  • Каждая изменяющая операция проверяет уникальность перед копированием, поэтому при чтении на всех 6 этапах используется один буфер размером 20 МБ.
  • Тесты производительности покрывают изменение общего значения, пиковый RSS и параллельную работу, потому что утечка ссылки нарушит семантику значения.

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

architecture-patternsserver-sideconcurrency

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

  • Снимки состояния в структурах удобно проверять, сравнивать, сохранять и передавать между задачами.
  • Actor владеет идентификатором процесса и последовательно выполняет переходы, исключая общий изменяемый граф классов.
  • Команды содержат expectedVersion, поэтому устаревшая правка из UI явно отклоняется, а не перезаписывает один из 30 переходов.

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

typingprotocolsauth

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

  • Введу уточняющий протокол AuthorizedHandler или дополнительный метод с безопасной реализацией по умолчанию, только если такое поведение действительно корректно.
  • Старые реализации адаптируются на границе реестра, а метрики показывают, какие из них еще используют прежнее поведение.
  • Старый путь поддерживается 2 минорные версии после объявления устаревшим, затем требование становится обязательным в следующей мажорной версии.

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

swiftcodableserialization

Я применю peer или member macro только для детерминированной генерации объявлений, а правила проверки оставлю в обычной тестируемой библиотеке.

  • Макрос разворачивает явные поля и диагностические сообщения, но не обращается к сети и не зависит от состояния машины разработчика.
  • Снимки раскрытия покрывают 40 репрезентативных моделей, а тесты с ожидаемой ошибкой компиляции проверяют понятность диагностики.
  • Внедрение начнется с одного пакета, а до миграции всех 300 моделей я измерю время сборки и удобство отладки исходного кода.

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

api

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

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

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

concurrencyswiftcaching

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

  • Отдельный actor последовательно обрабатывает каждую учетную запись, а сегментированный кэш использует 64 actors, выбранных по стабильному хешу ключа.
  • Записи аудита проходят через actor с ограниченной очередью и пакетной записью каждые 100 мс или 500 записей.
  • Метрики показывают задержку почтового ящика и длительность операций каждого actor, чтобы изоляция не скрывала перегрузку.

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

concurrencyindexes

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

  • Actor отдельного документа владеет состоянием разбора и не передает свой изменяемый байтовый буфер другой задаче.
  • Индексация на CPU использует дочерние задачи группы над неизменяемыми фрагментами, причем их число ограничено количеством ядер.
  • Экспорт получает Sendable-снимок, поэтому отмена одной задачи не повреждает другой документ.

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

concurrencyswiftswift-concurrency

Я сделаю сообщения транспорта неизменяемыми Sendable-значениями и проверю владение с учетом точных версий Apple SDK и SwiftNIO.

  • Современный URLSession имеет @unchecked Sendable, а актуальные версии NIO содержат проверенные соответствия, поэтому нельзя целиком считать оба фреймворка не-Sendable.
  • Ресурсы, привязанные к event loop, остаются на своем цикле; передача Data по 5 МБ документируется, а обертки создаются только для конкретных типов с неясным владением изменяемым состоянием.
  • @unchecked Sendable применяется только к узкой проверенной обертке с синхронизацией и стресс-тестами, а не для массового подавления предупреждений.

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

concurrencyswiftvalue-types

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

  • Одновременно запускаются не более 6 запросов к сегментам, чтобы не перегружать пулы соединений; новые добавляются по мере завершения предыдущих.
  • Каждая задача сама перехватывает ошибку или тайм-аут 120 мс и возвращает данные об успехе или сбое, поэтому ошибка сегмента не прерывает группу и не уничтожает частичные результаты.
  • Через общий срок 180 мс оставшаяся работа отменяется, завершенные результаты объединяются, а весь запрос считается неуспешным только при ответе менее 8 сегментов.

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

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

  • 21

    Экспорт медиафайла может длиться 20 минут и запускает 40 дочерних задач. Какой договор об отмене вы зададите для вызывающего кода в приложении, на сервере и в CLI?

    designresilience
  • 22

    Конвейер приема журналов получает 50 000 событий в секунду, но хранилище выдерживает только 30 000. Как выразить обратное давление средствами Swift concurrency?

    concurrencyswiftbackpressure
  • 23

    Устаревший C API с callback завершается один раз в частной очереди и имеет тайм-аут 5 секунд. Как представить его как async без утечек и зависаний?

    asynccallbacksdata-structures
  • 24

    Делегат Objective-C выдает 2 000 обновлений датчика в секунду и может вызвать callback после остановки. Как связать его со Swift concurrency?

    concurrencyswiftprotocols
  • 25

    Движок синхронизации создает задачи, которые могут жить на 30 секунд дольше экрана, и сообщает о ходе работы через делегат. Как определить владение в ARC?

    ownershipdelegationprotocols
  • 26

    Событие Codable записывают Linux-сервисы, а читают версии приложений возрастом до 18 месяцев. Как развивать общий контракт?

    codableserialization
  • 27

    4 Swift-клиента и Vapor-сервис используют общий контракт из 120 точек API, который меняется еженедельно. Генерировать модели или поддерживать их вручную?

    swiftendpointsserver-side
  • 28

    Вы проектируете Vapor API на 15 000 запросов в секунду с доступностью 99,95% и 3 независимо управляемыми доменами. Какую форму сервиса выбрать?

    designserver-sideapi
  • 29

    Точка API Vapor выполняет разбор на CPU за 20 мс и 2 обращения к базе при целевом p99 в 120 мс. Как защитить циклы событий NIO?

    databaseendpointsevent-loop
  • 30

    Мультитенантный Vapor-сервис обрабатывает 6 000 одновременных запросов, и изменяемый контекст запроса не должен переходить между тенантами. Как изолировать состояние запроса?

    multi-tenancyserver-sideconcurrency
  • 31

    У Vapor-сервиса 120 соединений с базой, а трафик подскакивает до 4 000 запросов в секунду. Как подобрать параллелизм Fluent и размеры пулов?

    databaseconcurrencyserver-side
  • 32

    Создание заказа затрагивает остатки, намерение платежа и запись аудита при SLA 300 мс. Где провести границы транзакций Fluent?

    transactions
  • 33

    Публичный Vapor API обслуживает 3 миллиона пользователей и внутренних операторов с расширенными правами. Как построить аутентификацию и авторизацию?

    authswiftvalue-types
  • 34

    API должен ограничивать каждого пользователя 100 запросами в минуту на 20 экземплярах Vapor, разрешая всплеск до 10 запросов. Какой ограничитель вы спроектируете?

    designserver-sideapi
  • 35

    Мобильный клиент может повторять создание заказа в течение 24 часов по нестабильной сети, а сервис обрабатывает 2 000 заказов в секунду. Как гарантировать идемпотентность?

    resilienceidempotency
  • 36

    Точка API Vapor потоково отдает файлы по 8 ГБ для 500 одновременных клиентов при лимите памяти 256 МБ на экземпляр. Как ее спроектировать?

    designserver-sideendpoints
  • 37

    Сервис совместной работы держит 80 000 WebSocket-соединений и рассылает документы в комнаты до 2 000 пользователей. Какую архитектуру на Swift вы выберете?

    swiftwebsocketsarchitecture
  • 38

    Развертыванию Vapor дают 30 секунд на остановку, запросы длятся до 10 секунд, а фоновые задачи до 2 минут. Как реализовать корректное завершение?

    lifecyclejobsserver-side
  • 39

    Linux-сервис на Swift имеет SLO 99,9% и целевой p99 в 150 мс для 60 точек API. Какой договор наблюдаемости встроить в общие пакеты?

    swiftendpointsobservability
  • 40

    Swift CLI за ночь преобразует 1 ТБ данных на 200 узлах, а операторам нужно продолжать упавшие запуски. Какую наблюдаемость вы предоставите?

    swiftobservability
  • 41

    Пакет должен поддерживать macOS и Ubuntu 5 лет, но сейчас импортирует Darwin и предполагает регистронезависимые пути. Как сделать переносимость обязательной?

  • 42

    Экран торгов на SwiftUI получает 500 обновлений цен в секунду, а тот же доменный пакет обслуживает CLI. Где провести границы состояния?

    swiftuiswift
  • 43

    Редактор UIKit встроен в SwiftUI-приложение для 4 миллионов пользователей, и оба фреймворка сейчас владеют состоянием документа. Как убрать двойное владение?

    uikitswiftuiswift
  • 44

    У кроссплатформенной системы на Swift 600 тестов, но ошибки контрактов все равно ежемесячно попадают в релизы. Какую пирамиду тестов вы построите?

    pyramidswift
  • 45

    Swift SDK и сервер Vapor выпускаются независимо, поддерживаются 10 версий клиентов, а схема меняется еженедельно. Как построить контрактное тестирование?

    contractswiftschema
  • 46

    Реестр на actor должен сохранять порядок при 5 000 одновременных тестовых операциях. Как проверить это без sleep?

    concurrency
  • 47

    Пакет поддерживает Swift 5.10 и Swift 6 на macOS и Ubuntu, а также 2 минимальные версии iOS, при этом CI должен завершаться за 18 минут. Какую матрицу запускать?

    swiftdeployment
  • 48

    8 команд ежедневно теряют 35 инженерных часов на сборки Swift. Как расставить приоритеты работы над скоростью сборки на квартал?

    swiftperformanceprioritization
  • 49

    Swift-пакет обрабатывает OAuth-токены для 6 приложений и 3 Linux-сервиса, и скомпрометированная зависимость не должна получить к ним доступ. Как спроектировать границу безопасности?

    oauthtokensdependencies
  • 50

    Публичный Swift SDK разбирает недоверенные архивы размером 25 МБ на клиентских устройствах и Linux-воркерах. Какие меры защиты нужны в архитектуре?

    swiftarchitecture
  • 51

    При миграции на строгую параллельность Swift 6 число предупреждений выросло с 40 до 2 800 в 70 таргетах, а релиз через 6 недель. Как провести миграцию поэтапно?

    concurrencyswiftmigrations
  • 52

    После включения строгой проверки параллельности и одновременной обработки запросов Linux-сервис искажает 0,03% балансов при 6 000 запросов в секунду, хотя модульные тесты проходят. Как диагностировать гонку?

    unitconcurrency
  • 53

    Проверка остатков на actor продала лишние 17 товаров во время распродажи, потому что между чтением и записью ожидала цену. Какие данные подтвердят повторный вход и что вы измените?

    asyncconcurrencyactor-reentrancy
  • 54

    После аннотации модели представления телеметрии как @MainActor доля пропущенных кадров выросла с 1% до 17%, а загрузка главного потока достигла 91% при декодировании 2 400 показаний датчиков в секунду. Как исправить?

    concurrencyactor-isolation
  • 55

    После развертывания Vapor число живых задач выросло с 4 000 до 240 000, а память с 700 МБ до 9 ГБ за 8 минут. Что проверить первым?

    server-sidedeploymentmemory
  • 56

    Клиенты отменяют 35% поисков, но CPU базы остается на 92% еще 40 секунд. Как проследить и исправить распространение отмены?

    databasetracingresilience
  • 57

    Обертка над callback для фотографий зависает в 1 из 20 000 запросов, всегда около тайм-аута в 10 секунд. Как доказать, что continuation ни разу не возобновляется?

    resiliencecallbacks
  • 58

    Продакшен падает с SWIFT TASK CONTINUATION MISUSE 2 раза на 1 миллион запросов после добавления тайм-аута. Как найти двойной resume?

    swiftstructured-concurrencyresilience
  • 59

    Запущенный пользователем экспорт ждет 12 секунд за фоновой индексацией, хотя у его задачи высокий приоритет. Как диагностировать инверсию приоритетов?

    indexesstructured-concurrency
  • 60

    Потребитель AsyncSequence обрабатывает 8 000 сообщений в секунду, производители отправляют 25 000, а RSS растет на 400 МБ в минуту. Какие данные и исправление нужны?

    asyncconcurrency
  • 61

    Сессия синхронизации iOS остается в памяти после выхода, удерживая 600 МБ и 18 дочерних задач. Как локализовать утечку ARC?

    memorymemory-leakssessions
  • 62

    Контроллер macOS и делегат Objective-C переживают закрытие окна в 4% сессий. Какой цикл искать и как доказать исправление?

    closuresprotocolssessions
  • 63

    Обработка документа-типа значения размером 120 МБ внезапно достигает пика 1,8 ГБ после одного этапа изменения. Как подтвердить регрессию CoW?

    concurrency
  • 64

    Замена конкретного парсера обобщенным конвейером снизила CPU на 8%, но увеличила бинарный файл Linux с 80 до 310 МБ и холодный запуск на 900 мс. Что делать?

    genericsci-cd
  • 65

    Перенос 30 обработчиков в реестр any Handler поднял p99 с 75 до 104 мс и число выделений памяти на 38%. Как понять, виноваты ли existential-типы?

    registries
  • 66

    После добавления 2 зависимостей разрешение пакетов занимает 11 минут и выбирает разные версии на машинах разработчиков. Как это стабилизировать?

    dependencies
  • 67

    2 общих пакета требуют несовместимые мажорные версии библиотеки журналирования и блокируют 14 команд. Как разрешить конфликт SPM?

    loggingswift-package-manager
  • 68

    Инкрементальная сборка выросла с 70 секунд до 9 минут после добавления одного associated type в общий протокол. Какие данные определят исправление?

    typingprotocols
  • 69

    После релиза макроса маршрутов доля попаданий в кэш CI упала с 82% до 21%, а 7 из 50 чистых сборок дали разные раскрытия для одних и тех же 180 маршрутов. Откатывать или чинить?

    cachingrollback
  • 70

    Плагин сборки работал в 18 репозиториях, неожиданно вышел в интернет, а секреты CI были доступны в окружении его дочернего процесса 27 минут. Как вы отреагируете на инцидент?

    incidentssecretsconcurrency
  • 71

    Обновление XCFramework падает только на устройствах с самой старой поддерживаемой ОС и затрагивает 6% пользователей. Как вести инцидент с бинарным артефактом?

    soft-skillsincidentsartifacts
  • 72

    Сервер изменил retryAfterSeconds с JSON-числа на String, и декодирование Codable ломается у 12% активных клиентов. Какой откат выполнить?

    codableserializationresilience
  • 73

    Новый вариант enum с сервера заставляет 80 000 ежедневных задач CLI завершаться до обработки. Как восстановиться, не скрывая смысловые ошибки?

    concurrencyenums
  • 74

    У точки API Vapor p99 вырос с 90 мс до 4,2 секунды, а задержка event loop достигла 1,8 секунды после добавления разбора PDF. Что делать в первые 15 минут?

    server-sideendpoints
  • 75

    После развертывания p99 сервиса удвоился со 140 до 290 мс, а CPU, память и частота ошибок не изменились. Как сузить причину?

    memorydeployment
  • 76

    Один NIO event loop загружен на 95%, 7 остальных ниже 25%, и медленными стали только долгоживущие соединения. Что исследовать?

    event-loop
  • 77

    Точка API списка выросла с 12 до 1 201 SQL-запроса, а p99 достиг 2,6 секунды для 100 записей. Как подтвердить и исправить Fluent N+1?

    sqln+1queries
  • 78

    p95 получения соединения из пула Fluent вырос до 3 секунд, 18% запросов завершаются по тайм-ауту, но PostgreSQL использует только 35% CPU. Что проверить?

    postgres
  • 79

    2 транзакции Fluent попадают во взаимную блокировку 40 раз в час после запуска пакетной функции. Как найти и убрать цикл?

    transactionslockingbatch
  • 80

    Миграция Fluent добавляет индекс, блокирует таблицу на 400 миллионов строк, и задержка записи превышает 30 секунд. Как восстановиться и провести изменение безопаснее?

    indexesmigrationslatency
  • 81

    После оптимизации кэша авторизации 23 запроса за 1 час вернули данные чужого тенанта. Как локализовать инцидент и провести диагностику?

    cachingoptimization
  • 82

    Платежная точка API создала 31 повторное списание за 20-минутный сетевой инцидент, несмотря на ключи идемпотентности. Где искать?

    endpointsidempotencyincidents
  • 83

    Глобальный ограничитель должен пропускать 5 000 запросов в секунду, но во время переключения Redis пропускает 8 700. Как изменить аварийный режим?

    redisrate-limiting
  • 84

    Комната WebSocket на 2 000 участников заставляет одно событие потреблять 1,4 CPU-секунды, а задержка рассылки достигает 9 секунд. Как реагировать?

    latencywebsockets
  • 85

    5% клиентов WebSocket читают в 20 раз медленнее, и очереди соединений растут, пока экземпляры не перезапускаются. Какую политику внедрить?

    websocketsdata-structures
  • 86

    Linux-сервис на Swift получает OOM kill при 12 ГБ каждые 6 часов, а снимки кучи не показывают одной главной утечки. Как исследовать?

    data-structuresswiftsnapshot
  • 87

    Во время развертывания 2% активных загрузок обрываются, потому что экземпляры выходят через 14 секунд после SIGTERM. Как исправить корректное завершение?

    lifecycledeployment
  • 88

    Swift CLI сортирует файл размером 300 ГБ, достигает RSS 64 ГБ и завершается по памяти на середине. Какие изменения и доказательства нужны?

    algorithmsswift
  • 89

    CLI получает SIGINT во время 40-минутного импорта, выходит через 90 секунд и оставляет 12 дочерних процессов. Как исправить обработку сигнала?

    concurrency
  • 90

    CLI форматтера прерывается при замене 18 000 файлов и оставляет 73 файла нулевого размера. Как исключить частичное повреждение?

  • 91

    Панель SwiftUI перерисовывает 4 500 строк каждую секунду, а энергопотребление удвоилось. Как локализовать источник инвалидизации?

    swiftuiswift
  • 92

    Редактор UIKit внутри SwiftUI дублирует команды сохранения в 0,4% сессий после навигации. Как диагностировать владение?

    uikitswiftuinavigation
  • 93

    Продукт на 900 000 строк Objective-C должен перенести сетевой слой на Swift без изменения поведения для 8 миллионов пользователей. Какую последовательность выбрать?

    swift
  • 94

    Нужно включить строгую параллельность в пакете из 45 таргетов, пока 3 команды выпускаются еженедельно и не могут остановить работу над функциями. Как избежать одновременной миграции?

    concurrencyswift-concurrencymigrations
  • 95

    Публичная библиотека должна заменить API с callback на async/await, поддерживая клиентов 12 месяцев. Как мигрировать без ломающего релиза?

    asynccallbacksconcurrency
  • 96

    На проверке кода инженер предлагает @unchecked Sendable для изменяемого кэша, которым пользуются 30 задач, и говорит, что тесты проходят. Как помочь ему принять решение?

    mentoringcachingtesting
  • 97

    Сотрудник поместил Data(contentsOf:) в маршрут Vapor, и p99 на стенде вырос со 100 мс до 1,6 секунды при 200 одновременных запросах. Как провести проверку кода и обучение?

    soft-skillsconcurrencyserver-side
  • 98

    Во время исчерпания пула младший инженер хочет немедленно увеличить число соединений PostgreSQL со 120 до 500. Как направить действия?

    incidentspostgres
  • 99

    При проверке кода добавлен отладочный снимок, который удерживает каждый CoW-буфер по 50 МБ для отмены действий, и пиковая память достигает 2,4 ГБ. Как помочь выбрать лучший вариант?

    code-reviewdesignsnapshot
  • 100

    Команда хочет убрать интеграционные тесты Linux, чтобы сократить CI с 22 до 14 минут, хотя за квартал было 3 регрессии переносимости. Как провести обсуждение?

    integration