SW Swift  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Свойства и методы

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

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 20 вопросов, на работу отведено 55 минут. В каждом задании верен только один вариант. Часть фрагментов намеренно содержит ошибку: определяйте её по коду, а не по внешнему виду ответа. После завершения откроются общий результат, 4 тематические шкалы и подробные объяснения.
Вопрос 1 из 20
Как поведёт себя программа в этом коротком сценарии, связанном с «Хранимые свойства»? Важно учесть: различие свойств экземпляра и типа, а также мутация value type.
SwiftХранимые свойства · фрагмент для разбора
@MainActor
struct Cache {
    static var hits = 0
    var key: String
}

var cache = Cache(key: "x")
Cache.hits += 1
print(cache.key, Cache.hits)
Вопрос 2 из 20
Где окажется состояние программы после выполнения всех показанных операций? Не упускайте из виду следующее: отсутствие отдельного хранилища и контракт get/set.
SwiftВычисляемые свойства · фрагмент для разбора
struct Rectangle {
    var width: Double
    var height: Double
    var area: Double { width * height }
}
var r = Rectangle(width: 3, height: 4)
r.width = 5
print(r.area)
Вопрос 3 из 20
Какой итог даст показанный фрагмент, если применять правила Swift буквально, а не угадывать намерение автора? Сосредоточьтесь на следующем: порядок willSet/didSet и границы побочных эффектов.
SwiftНаблюдатели свойств · фрагмент для разбора
struct Meter {
    var value = 0 {
        willSet { print("next", newValue) }
        didSet { print("old", oldValue) }
    }
}
var m = Meter()
m.value = 2
Вопрос 4 из 20
Какой итог даст показанный фрагмент, если применять правила Swift буквально, а не угадывать намерение автора? Не упускайте из виду следующее: диспетчеризация методов типа и цена общего состояния.
SwiftМетоды типа · фрагмент для разбора
@MainActor
struct ID {
    private static var next = 0
    static func make() -> Int {
        next += 1
        return next
    }
}

print(ID.make(), ID.make())
Вопрос 5 из 20
Какой разбор отличает реальную причину от сопутствующего риска? Не упускайте из виду следующее: различие свойств экземпляра и типа, а также мутация value type.
SwiftХранимые свойства · фрагмент для разбора
struct Session {
    let id: Int
    var token: String
}
let s = Session(id: 1, token: "a")
s.token = "b"
Вопрос 6 из 20
Разработчик видит симптом, но ищет первопричину. Какое объяснение выдерживает проверку кодом? Важно учесть: отсутствие отдельного хранилища и контракт get/set.
SwiftВычисляемые свойства · фрагмент для разбора
struct Temperature {
    var celsius: Double
    var fahrenheit: Double {
        get { celsius * 9 / 5 + 32 }
    }
}
var t = Temperature(celsius: 0)
t.fahrenheit = 68
Вопрос 7 из 20
Какой разбор отличает реальную причину от сопутствующего риска? Здесь оценивается порядок willSet/didSet и границы побочных эффектов.
SwiftНаблюдатели свойств · фрагмент для разбора
struct Clamped {
    var value = 0 {
        didSet { if value < 0 { value = 0 } }
    }
}
var c = Clamped()
c.value = -1
print(c.value)
Вопрос 8 из 20
Что именно делает этот фрагмент неверным или неочевидным с точки зрения «Методы типа»? Важно учесть: диспетчеризация методов типа и цена общего состояния.
SwiftМетоды типа · фрагмент для разбора
class Base {
    static func label() -> String { "base" }
}

class Child: Base {
    override class func label() -> String { "child" }
}

_ = Child.label()
Вопрос 9 из 20
Какое исправление соответствует правилам Swift и не прячет сбой за обходным значением? Сосредоточьтесь на следующем: различие свойств экземпляра и типа, а также мутация value type.
SwiftХранимые свойства · фрагмент для разбора
struct Session {
    let id: Int
    var token: String
}
let s = Session(id: 1, token: "a")
s.token = "b"
Вопрос 10 из 20
Что следует изменить, чтобы исправить первопричину, а не подогнать ожидаемый результат? Сосредоточьтесь на следующем: отсутствие отдельного хранилища и контракт get/set.
SwiftВычисляемые свойства · фрагмент для разбора
struct Temperature {
    var celsius: Double
    var fahrenheit: Double {
        get { celsius * 9 / 5 + 32 }
    }
}
var t = Temperature(celsius: 0)
t.fahrenheit = 68
Вопрос 11 из 20
Как восстановить заявленный контракт с наименьшим числом новых скрытых предположений? Важно учесть: порядок willSet/didSet и границы побочных эффектов.
SwiftНаблюдатели свойств · фрагмент для разбора
struct Clamped {
    var value = 0 {
        didSet { if value < 0 { value = 0 } }
    }
}
var c = Clamped()
c.value = -1
print(c.value)
Вопрос 12 из 20
Что нужно поменять в реализации или сигнатуре, чтобы отрицательный сценарий стал корректным? Важно учесть: диспетчеризация методов типа и цена общего состояния.
SwiftМетоды типа · фрагмент для разбора
class Base {
    static func label() -> String { "base" }
}

class Child: Base {
    override class func label() -> String { "child" }
}

_ = Child.label()
Вопрос 13 из 20
Какой пограничный случай способен изменить вывод, хотя синтаксис останется почти тем же? Важно учесть: различие свойств экземпляра и типа, а также мутация value type.
Вопрос 14 из 20
Какой отрицательный сценарий лучше всего проверяет предел применимости этого механизма? Не упускайте из виду следующее: отсутствие отдельного хранилища и контракт get/set.
Вопрос 15 из 20
На какой границе входов, владения или времени жизни результат может стать другим? Проверяется порядок willSet/didSet и границы побочных эффектов.
Вопрос 16 из 20
Какое условие отличает надёжное обобщение от случайно удачного запуска? Важно учесть: диспетчеризация методов типа и цена общего состояния.
Вопрос 17 из 20
Что должно определять архитектуру этого участка, когда появятся новые входы и владельцы? Важно учесть: различие свойств экземпляра и типа, а также мутация value type.
Вопрос 18 из 20
Что должно определять архитектуру этого участка, когда появятся новые входы и владельцы? Здесь оценивается отсутствие отдельного хранилища и контракт get/set.
Вопрос 19 из 20
Какой выбор лучше удерживает баланс между ясностью, проверяемостью и стоимостью выполнения? Сосредоточьтесь на следующем: порядок willSet/didSet и границы побочных эффектов.
Вопрос 20 из 20
Что стоит закрепить в типах или API, а не оставлять устной договорённостью? Сосредоточьтесь на следующем: диспетчеризация методов типа и цена общего состояния.

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

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

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

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