Вопросы на собеседовании: Swift-разработчик
100 реальных вопросов с образцовыми ответами и пояснениями для уровня Senior Swift-инженер.
Смотреть пример резюме: Swift-разработчик →Тренировка флешкарточками
Интервальное повторение · Hunter Pass
Вопросы
Я выделю PricingDomain в отдельный пакет с минимальной зависимостью от Foundation, чистыми типами значений на входе и детерминированным результатом.
- HTTP, хранилище, часы, локаль и UI останутся за небольшими протоколами адаптеров вне доменного модуля.
- Деньги будут храниться целым числом минимальных единиц, а правило округления передаваться как зависимость, чтобы все 4 исполняемых файла проходили одни и те же эталонные примеры.
- Опубликую версионируемый набор из 10 000 фикстур и потребую от каждой платформенной задачи в CI побайтово одинакового результата.
Зачем это спрашивают: Вопрос проверяет, умеет ли кандидат сохранить единую доменную модель на платформах Apple и Linux, не смешивая ее с платформенными деталями.
Я отделю стабильные доменные типы от возможности LocationPolicy, которую предоставят платформенные модули-адаптеры.
- OrderCore хранит координаты как обычные числовые значения и никогда не импортирует CoreLocation.
- AppleLocationAdapter преобразует CLLocation в доменный тип, а LinuxLocationAdapter использует результат серверного геокодера.
- О выборе платформы знают только Package.swift и 2 точки сборки зависимостей, поэтому 60 доменных файлов остаются переносимыми.
Зачем это спрашивают: Вопрос оценивает, изолирует ли кандидат платформенные различия на явных границах сборки зависимостей вместо множества флагов компилятора.
Я представлю входные данные, набор правил и результат решения как неизменяемые версионируемые доменные значения, а побочные эффекты оставлю слою оркестрации.
- Для каждого решения сохраняются ruleSetVersion, нормализованные входные данные и переданное извне время вместо чтения глобального состояния.
- Исполняемые приложения содержат данные или модули всех поддерживаемых версий правил и выбирают их во время выполнения, потому что SwiftPM не может динамически выбрать историческую версию пакета внутри одного графа зависимостей.
- Для точного воспроизведения за 7 лет CLI обрабатывает данные ограниченными порциями через архивный бинарный файл или контейнер нужной версии, проверенный общими контрактными фикстурами на всех платформах.
Зачем это спрашивают: Вопрос проверяет поддержку долгосрочного детерминированного воспроизведения, а не только работу с текущим состоянием.
Я сгруппирую таргеты по целостным возможностям и зафиксирую неглубокий ациклический граф с измеряемыми границами сборки.
- CI строит граф таргетов и отклоняет циклы и прямые зависимости одной функциональности от другой.
- Стабильные интерфейсы отделяются от тяжелых реализаций только там, где дополнительный таргет оправдан параллельной сборкой или владением команды.
- По времени сборки объединю слишком мелкие таргеты, разделю 3 самых дорогих и буду отслеживать p95 чистой и инкрементальной сборки.
Зачем это спрашивают: Вопрос проверяет, опирается ли модульность на владение кодом и замеры сборки, а не на количество таргетов.
Я дам каждой возможности отдельный публичный контракт с командой-владельцем, а конкретные реализации буду собирать только в корне приложения или сервиса.
- Checkout зависит от таргетов PaymentsAPI и InventoryAPI, но не от конкретных клиентов или моделей базы данных.
- У каждого API-таргета есть одна команда-владелец, тесты совместимости и окно устаревания в 2 минорные версии.
- Корни сборки зависимостей выбирают рабочие, демонстрационные и тестовые реализации, поэтому команды могут выпускать функции без правок общих синглтонов.
Зачем это спрашивают: Вопрос оценивает, отражены ли автономия команд и релизные контракты в зависимостях на этапе компиляции.
Сначала я уберу зависимость от реализации с большим числом потребителей, а не стану сразу менять систему сборки.
- По графу зависимостей Swift driver и временной шкале сборки выясню, какие публичные объявления приводят к пересборке нижележащих модулей.
- Перенесу нестабильные вспомогательные функции за узкий стабильный модуль или продублирую функцию из 5 строк, если связность обходится дороже повторного использования.
- Установлю порог CI в 105 секунд и сравню 10 прогретых инкрементальных сборок, чтобы не оптимизировать случайный шум.
Зачем это спрашивают: Вопрос проверяет, рассматривает ли кандидат скорость сборки как измеряемую архитектурную проблему зависимостей.
Я сохраню публичный API небольшим и расширяемым без поломок, построив его на стабильных типах значений и не раскрывая внутренние фреймворки.
- Публичными станут только намеренно выбранные объявления, а сеть, хранилище и сгенерированные модели будут скрыты за собственными типами SDK.
- Новые параметры добавляются через перегрузки или конфигурацию со значениями по умолчанию, а старые точки входа поддерживаются минимум 2 минорные версии после объявления устаревшими.
- Перед публикацией пакет компилируется с репрезентативными фикстурами клиентов и проходит проверку различий API.
Зачем это спрашивают: Вопрос проверяет практическую совместимость исходного кода и дисциплину публичного API широко используемого Swift SDK.
Я включу режим эволюции библиотеки на бинарной границе и не буду обещать клиентам неизменную раскладку типов или исчерпывающий набор вариантов enum.
- Библиотека собирается с BUILD_LIBRARY_FOR_DISTRIBUTION и поставляется как проверенный XCFramework с соответствующими интерфейсами модулей.
- Публичные структуры и enum остаются nonfrozen, чтобы свойства и варианты можно было добавлять без поломки старых бинарных файлов.
- Каждый еженедельный кандидат проходит тесты старого клиента с новой библиотекой, а предыдущий артефакт хранится для немедленного отката.
Зачем это спрашивают: Вопрос оценивает понимание стабильности ABI, эволюции библиотек и эксплуатационной цены бинарной поставки.
Я выпущу безопасную замену как совместимое дополнение, измерю переход клиентов и удалю старый API только в следующей мажорной версии.
- Старый символ помечается устаревшим с инструкцией по миграции, но сохраняет поведение до конца текущей мажорной линейки.
- Опубликую руководство по миграции и проверю оба API на одинаковых 25 контрактных сценариях, чтобы их поведение не разошлось.
- Буду отслеживать переход репозиториев, выпущу кандидаты мажорной версии и удалю API только после 6-месячного окна и согласования с партнерами.
Зачем это спрашивают: Вопрос проверяет понимание SemVer как договора о миграции потребителей, а не просто правила нумерации версий.
Я оставлю обобщения внутри горячего типизированного пути, а existential-тип применю только на границе регистрации разнородных обработчиков.
- Обобщенные декодирование и проверка сохраняют статические типы и специализацию на пути с 8 000 запросов в секунду.
- Реестр маршрутизатора хранит any RouteHandler, потому что в одной коллекции должны находиться 12 несвязанных обработчиков.
- На Linux измерю диспетчеризацию и выделения памяти, а явное стирание типов добавлю только если associated types выходят в публичный API.
Зачем это спрашивают: Вопрос оценивает выбор абстракции с учетом удобства API и измеряемых границ времени выполнения.
Я сохраню специализацию только для измеренных горячих операций, а на границах холодных этапов применю стирание типов.
- Профилирование на изображениях производственного размера покажет 2 этапа с основной нагрузкой на CPU, поэтому не придется специализировать каждую комбинацию.
- Необобщенный фасад конвейера не позволит нижележащим модулям создавать 50 полных обобщенных цепочек.
- Небольшая цена динамического вызова вне горячего цикла допустима, а CI будет контролировать и CPU, и время компиляции.
Зачем это спрашивают: Вопрос проверяет, умеет ли кандидат балансировать выигрыш от специализации с размером кода и временем компиляции.
Я применю хранилище с копированием при записи и проверкой уникального владельца буфера, оставив изменение данных за узким API типа-значения.
- Публичный Batch остается структурой, а внутренний final-класс Storage владеет непрерывным массивом записей.
- Каждая изменяющая операция проверяет уникальность перед копированием, поэтому при чтении на всех 6 этапах используется один буфер размером 20 МБ.
- Тесты производительности покрывают изменение общего значения, пиковый RSS и параллельную работу, потому что утечка ссылки нарушит семантику значения.
Зачем это спрашивают: Вопрос проверяет глубокое понимание семантики значений, механики CoW и расхода памяти на больших данных.
Я представлю неизменяемые состояния рабочего процесса как значения, а изменяемую идентичность помещу в одного изолированного владельца-ссылку.
- Снимки состояния в структурах удобно проверять, сравнивать, сохранять и передавать между задачами.
- Actor владеет идентификатором процесса и последовательно выполняет переходы, исключая общий изменяемый граф классов.
- Команды содержат expectedVersion, поэтому устаревшая правка из UI явно отклоняется, а не перезаписывает один из 30 переходов.
Зачем это спрашивают: Вопрос оценивает взвешенный выбор между значениями и ссылками при требованиях к идентичности, параллельной работе и хранению данных.
Я добавлю новую возможность, не заставляя сразу все 25 реализаций выполнять новое обязательное требование.
- Введу уточняющий протокол AuthorizedHandler или дополнительный метод с безопасной реализацией по умолчанию, только если такое поведение действительно корректно.
- Старые реализации адаптируются на границе реестра, а метрики показывают, какие из них еще используют прежнее поведение.
- Старый путь поддерживается 2 минорные версии после объявления устаревшим, затем требование становится обязательным в следующей мажорной версии.
Зачем это спрашивают: Вопрос проверяет эволюцию протокола с сохранением совместимости исходного кода без маскировки небезопасного поведения реализацией по умолчанию.
Я применю peer или member macro только для детерминированной генерации объявлений, а правила проверки оставлю в обычной тестируемой библиотеке.
- Макрос разворачивает явные поля и диагностические сообщения, но не обращается к сети и не зависит от состояния машины разработчика.
- Снимки раскрытия покрывают 40 репрезентативных моделей, а тесты с ожидаемой ошибкой компиляции проверяют понятность диагностики.
- Внедрение начнется с одного пакета, а до миграции всех 300 моделей я измерю время сборки и удобство отладки исходного кода.
Зачем это спрашивают: Вопрос оценивает, уменьшают ли макросы повторение кода, не скрывая бизнес-логику и не делая сборку нестабильной.
Я зафиксирую исходные зависимости на проверенных версиях или ревизиях, проверю контрольные суммы бинарных артефактов и запущу плагин в изолированной среде CI.
- Исходные пакеты загружаются через одобренное зеркало по точной версии или ревизии, а контрольная сумма указывается только для бинарного артефакта, где это применимо.
- Схемы и результаты объявляются для отслеживания сборкой, но доступ к файлам и сети ограничивает системная песочница или контейнер, потому что эти объявления не задают список разрешенных файлов для чтения.
- Задача не получает лишних секретов, сгенерированные изменения проверяются, генерация запускается с нуля, а версия генератора фиксируется в SBOM релиза.
Зачем это спрашивают: Вопрос проверяет, воспринимает ли кандидат расширение сборки как исполняемый код в цепочке поставки, а не как безобидное удобство.
Я разделю actors по владельцам данных и областям конкуренции, а не помещу все изменяемое состояние в один глобальный actor.
- Отдельный actor последовательно обрабатывает каждую учетную запись, а сегментированный кэш использует 64 actors, выбранных по стабильному хешу ключа.
- Записи аудита проходят через actor с ограниченной очередью и пакетной записью каждые 100 мс или 500 записей.
- Метрики показывают задержку почтового ящика и длительность операций каждого actor, чтобы изоляция не скрывала перегрузку.
Зачем это спрашивают: Вопрос проверяет проектирование топологии actors для пропускной способности, владения и наблюдаемости при реальной параллельной нагрузке.
Я дам каждой задаче обработки документа исключительное владение изменяемыми буферами, а между областями буду передавать неизменяемые результаты этапов.
- Actor отдельного документа владеет состоянием разбора и не передает свой изменяемый байтовый буфер другой задаче.
- Индексация на CPU использует дочерние задачи группы над неизменяемыми фрагментами, причем их число ограничено количеством ядер.
- Экспорт получает Sendable-снимок, поэтому отмена одной задачи не повреждает другой документ.
Зачем это спрашивают: Вопрос оценивает, строится ли изоляция вокруг владения данными, а не случайной расстановки аннотаций actor.
Я сделаю сообщения транспорта неизменяемыми Sendable-значениями и проверю владение с учетом точных версий Apple SDK и SwiftNIO.
- Современный URLSession имеет @unchecked Sendable, а актуальные версии NIO содержат проверенные соответствия, поэтому нельзя целиком считать оба фреймворка не-Sendable.
- Ресурсы, привязанные к event loop, остаются на своем цикле; передача Data по 5 МБ документируется, а обертки создаются только для конкретных типов с неясным владением изменяемым состоянием.
- @unchecked Sendable применяется только к узкой проверенной обертке с синхронизацией и стресс-тестами, а не для массового подавления предупреждений.
Зачем это спрашивают: Вопрос проверяет, выражает ли Sendable реальное владение данными между разными адаптерами среды выполнения.
Я использую группу с ограниченным числом задач, где каждая дочерняя задача всегда возвращает 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