SW Swift  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

Профилирование и утечки памяти

Профессиональный тест по теме «Профилирование и утечки памяти»: сложные фрагменты кода, архитектурные компромиссы, диагностика и надёжность. Вопросы требуют не только узнать конструкцию, но и проследить выполнение, найти причину дефекта, выбрать исправление и оценить пограничный сценарий. Языковые примеры рассчитаны на Swift 6; задания с Apple SDK рассматриваются в контексте современных платформенных контрактов.

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 30 вопросов, на работу отведено 85 минут. В каждом задании верен только один вариант. Часть фрагментов намеренно содержит ошибку: определяйте её по коду, а не по внешнему виду ответа. После завершения откроются общий результат, 6 тематических шкал и подробные объяснения.
Вопрос 1 из 30
Time Profiler показывает много вызовов короткого метода и один тяжёлый стек. На что смотреть при поиске вычислительного узкого места?
SwiftПрофилирование в Instruments · фрагмент для разбора
// Time Profiler показывает стек выборок CPU, а Points of Interest отмечают границы пользовательской операции.
Вопрос 2 из 30
В Allocations выросло общее число созданных объектов, но число живых после сценария вернулось почти к исходному. Как это трактовать?
SwiftВыделение памяти · фрагмент для разбора
// Allocations показывает число живых и созданных объектов по типам во время сценария.
Вопрос 3 из 30
Определите не предполагаемое, а фактическое поведение примера «Циклы удержания». Здесь оценивается поиск и осмысленное размыкание strong-cycle.
SwiftЦиклы удержания · фрагмент для разбора
final class A29 { var b: B29? }
final class B29 { weak var a: A29? }
Вопрос 4 из 30
Во время прокрутки Core Animation отмечает пропущенные кадры. Как связать этот симптом с конкретной причиной?
SwiftПроизводительность UI · фрагмент для разбора
// Core Animation показывает dropped frames, а Time Profiler — работу главного потока во время прокрутки.
Вопрос 5 из 30
Что делает измерение XCTest полезным, а не случайной цифрой с одной машины?
SwiftТестирование и диагностика · фрагмент для разбора
// XCTest measure запускает один и тот же блок несколько раз и сообщает статистику метрики.
Вопрос 6 из 30
Где окажется состояние программы после выполнения всех показанных операций? Важно учесть: архитектура ограниченного кеша и жизненный цикл ресурсов.
SwiftПамять и архитектура приложения · фрагмент для разбора
import Foundation
final class ImageCache29 {
    private let cache = NSCache<NSString, NSData>()
    init() { cache.totalCostLimit = 50 * 1024 * 1024 }
}
Вопрос 7 из 30
Один запуск Debug-сборки показал медленную функцию. Почему этого недостаточно для изменения алгоритма?
SwiftПрофилирование в Instruments · фрагмент для разбора
// Один запуск в Debug показывает медленную функцию, после чего меняют алгоритм.
Вопрос 8 из 30
После закрытия экрана total allocations вырос, а live bytes вернулись почти к базе. Какой вывод об утечке обоснован?
SwiftВыделение памяти · фрагмент для разбора
// После закрытия экрана live bytes возвращаются почти к базе, но total allocations вырос.
Вопрос 9 из 30
Ожидаемое поведение не совпало с фактическим. В чём первая нарушенная гарантия? Важно учесть: поиск и осмысленное размыкание цикла сильных ссылок.
SwiftЦиклы удержания · фрагмент для разбора
import Foundation
final class TimerOwner29: @unchecked Sendable {
    var timer: Timer?
    func start() { timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { _ in self.tick() } }
    func tick() {}
}
Вопрос 10 из 30
В `cellForRow` синхронно декодируется большое изображение. Что точнее всего объясняет пропущенные кадры?
SwiftПроизводительность UI · фрагмент для разбора
// В cellForRow каждый раз синхронно декодируется большое изображение с диска.
Вопрос 11 из 30
Тест требует, чтобы операция всегда укладывалась в 0,001 секунды на любом CI. В чём дефект такой проверки?
SwiftТестирование и диагностика · фрагмент для разбора
// Тест утверждает, что операция всегда быстрее 0.001 секунды на любом CI.
Вопрос 12 из 30
Какой вывод о типах, владении или порядке выполнения следует из показанного дефекта? Здесь оценивается архитектура ограниченного кеша и жизненный цикл ресурсов.
SwiftПамять и архитектура приложения · фрагмент для разбора
import Foundation
var globalImages29: [String: Data] = [:]
Вопрос 13 из 30
Как превратить одиночный медленный запуск Debug-сборки в проверяемую гипотезу о производительности?
SwiftПрофилирование в Instruments · фрагмент для разбора
// Один запуск в Debug показывает медленную функцию, после чего меняют алгоритм.
Вопрос 14 из 30
Как отличить временный поток выделений от памяти, которая действительно остаётся удержанной?
SwiftВыделение памяти · фрагмент для разбора
// После закрытия экрана live bytes возвращаются почти к базе, но total allocations вырос.
Вопрос 15 из 30
Как восстановить заявленный контракт с наименьшим числом новых скрытых предположений? Сосредоточьтесь на следующем: поиск и осмысленное размыкание цикла сильных ссылок.
SwiftЦиклы удержания · фрагмент для разбора
import Foundation
final class TimerOwner29: @unchecked Sendable {
    var timer: Timer?
    func start() { timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { _ in self.tick() } }
    func tick() {}
}
Вопрос 16 из 30
Как убрать синхронное декодирование из пути прокрутки, не перенеся рывки в другое место?
SwiftПроизводительность UI · фрагмент для разбора
// В cellForRow каждый раз синхронно декодируется большое изображение с диска.
Вопрос 17 из 30
Как переписать жёсткий порог производительности, чтобы тест ловил регрессию, а не различия машин?
SwiftТестирование и диагностика · фрагмент для разбора
// Тест утверждает, что операция всегда быстрее 0.001 секунды на любом CI.
Вопрос 18 из 30
Какое решение одновременно исправляет код и оставляет понятную границу для дальнейших изменений? Здесь оценивается архитектура ограниченного кеша и жизненный цикл ресурсов.
SwiftПамять и архитектура приложения · фрагмент для разбора
import Foundation
var globalImages29: [String: Data] = [:]
Вопрос 19 из 30
Какое условие отличает надёжное обобщение от случайно удачного запуска? Важно учесть: выбор инструмента и интерпретация выборок.
Вопрос 20 из 30
Какой отрицательный сценарий лучше всего проверяет предел применимости этого механизма? Важно учесть: различие потока выделений и удерживаемой памяти.
Вопрос 21 из 30
Какой отрицательный сценарий лучше всего проверяет предел применимости этого механизма? Проверяется поиск и осмысленное размыкание strong-cycle.
Вопрос 22 из 30
Какое уточнение защищает решение от слишком широкого толкования? Здесь оценивается причинная связь между главным потоком и пропущенными кадрами.
Вопрос 23 из 30
Какое уточнение защищает решение от слишком широкого толкования? Важно учесть: постановка производительного теста.
Вопрос 24 из 30
Какой пограничный случай способен изменить вывод, хотя синтаксис останется почти тем же? Проверяется архитектура ограниченного кеша и жизненный цикл ресурсов.
Вопрос 25 из 30
Что стоит закрепить в типах или API, а не оставлять устной договорённостью? Проверяется выбор инструмента и интерпретация выборок.
Вопрос 26 из 30
Что стоит закрепить в типах или API, а не оставлять устной договорённостью? Сосредоточьтесь на следующем: различие потока выделений и удерживаемой памяти.
Вопрос 27 из 30
Как организовать этот механизм, чтобы владение и отказ оставались понятными после расширения проекта? Здесь оценивается поиск и осмысленное размыкание strong-cycle.
Вопрос 28 из 30
Какое замечание на проверке кода поможет предотвратить повторение такого дефекта? Проверяется причинная связь между главным потоком и пропущенными кадрами.
Вопрос 29 из 30
Какой принцип важнее локальной красоты синтаксиса в рабочем приложении? Не упускайте из виду следующее: постановка производительного теста.
Вопрос 30 из 30
Что стоит закрепить в типах или API, а не оставлять устной договорённостью? Сосредоточьтесь на следующем: архитектура ограниченного кеша и жизненный цикл ресурсов.

Ответьте на все 30 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу