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

UIKit и взаимодействие со старым кодом

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 30 вопросов, на работу отведено 85 минут. В каждом задании верен только один вариант. Часть фрагментов намеренно содержит ошибку: определяйте её по коду, а не по внешнему виду ответа. После завершения откроются общий результат, 6 тематических шкал и подробные объяснения.
Вопрос 1 из 30
Где окажется состояние программы после выполнения всех показанных операций? Важно учесть: контракт загрузки корневого представления.
SwiftКонтроллеры представлений · фрагмент для разбора
import UIKit
final class Detail26: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .systemBackground
    }
}
Вопрос 2 из 30
Не запуская код, восстановите состояние значений после последней строки. Какой вывод верен для «Жизненный цикл экрана»? Проверяется повторяемость событий жизненного цикла.
SwiftЖизненный цикл экрана · фрагмент для разбора
import UIKit
final class Screen26: UIViewController {
    override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) }
    override func viewDidDisappear(_ animated: Bool) { super.viewDidDisappear(animated) }
}
Вопрос 3 из 30
Не запуская код, восстановите состояние значений после последней строки. Какой вывод верен для «Делегаты»? Проверяется невладеющая обратная связь и классовое ограничение.
SwiftДелегаты · фрагмент для разбора
import UIKit
protocol PickerDelegate26: AnyObject { func pickerDidFinish(_ picker: Picker26) }
final class Picker26 { weak var delegate: PickerDelegate26? }
Вопрос 4 из 30
Какой итог даст показанный фрагмент, если применять правила Swift буквально, а не угадывать намерение автора? Сосредоточьтесь на следующем: цена и безопасность взаимодействия с Objective-C типами.
SwiftМост между Swift и Objective-C · фрагмент для разбора
import Foundation
let swift = "hello" as NSString
print(swift.length)
Вопрос 5 из 30
Какой из пяти выводов подтверждается построчной трассировкой? Сосредоточьтесь на следующем: уровень теста и наблюдение жизненного цикла.
SwiftТестирование и диагностика · фрагмент для разбора
import UIKit
final class SpyDelegate26: PickerDelegate26 {
    private(set) var calls = 0
    func pickerDidFinish(_ picker: Picker26) { calls += 1 }
}
Вопрос 6 из 30
Где окажется состояние программы после выполнения всех показанных операций? Важно учесть: жизненный цикл контроллера, задач и обратный вызов.
SwiftПамять и архитектура приложения · фрагмент для разбора
import UIKit
final class ImageController26: UIViewController {
    private var task: Task<Void, Never>?
    deinit { task?.cancel() }
}
Вопрос 7 из 30
Какой диагноз согласуется и с исходным кодом, и с правилами Swift? Проверяется контракт загрузки корневого представления.
SwiftКонтроллеры представлений · фрагмент для разбора
import UIKit
final class Bad26: UIViewController {
    override func loadView() {
        super.loadView()
        view = nil
    }
}
Вопрос 8 из 30
Какую причину стоит указать в отчёте об ошибке, прежде чем предлагать исправление? Не упускайте из виду следующее: повторяемость событий жизненного цикла.
SwiftЖизненный цикл экрана · фрагмент для разбора
import UIKit
final class Once26: UIViewController {
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        installObservers()
    }
}
Вопрос 9 из 30
На проверку кода принесли этот фрагмент. Какой диагноз точнее всего объясняет проблему в части «Делегаты»? Здесь оценивается невладеющая обратная связь и классовое ограничение.
SwiftДелегаты · фрагмент для разбора
protocol ValueDelegate26 { func changed() }
final class Owner26 { weak var delegate: (any ValueDelegate26)? }
Вопрос 10 из 30
Разработчик видит симптом, но ищет первопричину. Какое объяснение выдерживает проверку кодом? Проверяется цена и безопасность взаимодействия с Objective-C типами.
SwiftМост между Swift и Objective-C · фрагмент для разбора
import Foundation
let values: [Any] = [1, "2"]
let ints = values as! [Int]
Вопрос 11 из 30
Почему этот код не выполняет заявленный контракт? Сосредоточьтесь на следующем: уровень теста и наблюдение жизненного цикла.
SwiftТестирование и диагностика · фрагмент для разбора
import UIKit
func testLifecycle26() {
    let vc = Screen26()
    vc.viewWillAppear(false)
}
Вопрос 12 из 30
На проверку кода принесли этот фрагмент. Какой диагноз точнее всего объясняет проблему в части «Владение контроллером и задачами»? Здесь оценивается жизненный цикл контроллера, задач и обратный вызов.
SwiftПамять и архитектура приложения · фрагмент для разбора
import UIKit
final class LeakyController26: UIViewController {
    var completion: (() -> Void)?
    override func viewDidLoad() { super.viewDidLoad(); completion = { self.view.setNeedsLayout() } }
}
Вопрос 13 из 30
Какая правка делает намерение кода явным и проверяемым? Проверяется контракт загрузки корневого представления.
SwiftКонтроллеры представлений · фрагмент для разбора
import UIKit
final class Bad26: UIViewController {
    override func loadView() {
        super.loadView()
        view = nil
    }
}
Вопрос 14 из 30
Какое решение одновременно исправляет код и оставляет понятную границу для дальнейших изменений? Здесь оценивается повторяемость событий жизненного цикла.
SwiftЖизненный цикл экрана · фрагмент для разбора
import UIKit
final class Once26: UIViewController {
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        installObservers()
    }
}
Вопрос 15 из 30
Выберите правку, после которой дефект исчезает не только в удачном примере. Здесь оценивается невладеющая обратная связь и классовое ограничение.
SwiftДелегаты · фрагмент для разбора
protocol ValueDelegate26 { func changed() }
final class Owner26 { weak var delegate: (any ValueDelegate26)? }
Вопрос 16 из 30
Что нужно поменять в реализации или сигнатуре, чтобы отрицательный сценарий стал корректным? Важно учесть: цена и безопасность взаимодействия с Objective-C типами.
SwiftМост между Swift и Objective-C · фрагмент для разбора
import Foundation
let values: [Any] = [1, "2"]
let ints = values as! [Int]
Вопрос 17 из 30
Какая правка решает проблему на том уровне, где она возникла? Проверяется уровень теста и наблюдение жизненного цикла.
SwiftТестирование и диагностика · фрагмент для разбора
import UIKit
func testLifecycle26() {
    let vc = Screen26()
    vc.viewWillAppear(false)
}
Вопрос 18 из 30
Выберите правку, после которой дефект исчезает не только в удачном примере. Проверяется жизненный цикл контроллера, задач и обратный вызов.
SwiftПамять и архитектура приложения · фрагмент для разбора
import UIKit
final class LeakyController26: UIViewController {
    var completion: (() -> Void)?
    override func viewDidLoad() { super.viewDidLoad(); completion = { self.view.setNeedsLayout() } }
}
Вопрос 19 из 30
Какое условие отличает надёжное обобщение от случайно удачного запуска? Сосредоточьтесь на следующем: контракт загрузки корневого представления.
Вопрос 20 из 30
Какую предпосылку стоит явно записать в документации и тестах? Важно учесть: повторяемость событий жизненного цикла.
Вопрос 21 из 30
Какую предпосылку стоит явно записать в документации и тестах? Сосредоточьтесь на следующем: невладеющая обратная связь и классовое ограничение.
Вопрос 22 из 30
Какое условие отличает надёжное обобщение от случайно удачного запуска? Проверяется цена и безопасность взаимодействия с Objective-C типами.
Вопрос 23 из 30
Какую предпосылку стоит явно записать в документации и тестах? Здесь оценивается уровень теста и наблюдение жизненного цикла.
Вопрос 24 из 30
Какое условие отличает надёжное обобщение от случайно удачного запуска? Не упускайте из виду следующее: жизненный цикл контроллера, задач и обратный вызов.
Вопрос 25 из 30
Команда выбирает не просто рабочую строку, а устойчивое устройство решения. Какой подход сильнее? Здесь оценивается контракт загрузки корневого представления.
Вопрос 26 из 30
Как организовать этот механизм, чтобы владение и отказ оставались понятными после расширения проекта? Не упускайте из виду следующее: повторяемость событий жизненного цикла.
Вопрос 27 из 30
Какой выбор лучше удерживает баланс между ясностью, проверяемостью и стоимостью выполнения? Важно учесть: невладеющая обратная связь и классовое ограничение.
Вопрос 28 из 30
Что должно определять архитектуру этого участка, когда появятся новые входы и владельцы? Сосредоточьтесь на следующем: цена и безопасность взаимодействия с Objective-C типами.
Вопрос 29 из 30
Какой подход делает неправильное использование заметным раньше? Сосредоточьтесь на следующем: уровень теста и наблюдение жизненного цикла.
Вопрос 30 из 30
Какое решение уменьшит число скрытых состояний и упростит расследование следующего сбоя? Здесь оценивается жизненный цикл контроллера, задач и обратный вызов.

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

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

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

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