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

Структуры и классы

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

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 20 вопросов, на работу отведено 55 минут. В каждом задании верен только один вариант. Часть фрагментов намеренно содержит ошибку: определяйте её по коду, а не по внешнему виду ответа. После завершения откроются общий результат, 4 тематические шкалы и подробные объяснения.
Вопрос 1 из 20
Какой итог даст показанный фрагмент, если применять правила Swift буквально, а не угадывать намерение автора? Сосредоточьтесь на следующем: семантика значения и влияние let на изменяемые свойства.
SwiftСтруктуры · фрагмент для разбора
struct Counter { var value = 0; mutating func inc() { value += 1 } }
var a = Counter()
var b = a
b.inc()
print(a.value, b.value)
Вопрос 2 из 20
Какой из пяти выводов подтверждается построчной трассировкой? Сосредоточьтесь на следующем: ссылочная идентичность и двухфазная инициализация.
SwiftКлассы · фрагмент для разбора
final class Box { var value: Int; init(_ value: Int) { self.value = value } }
let a = Box(1)
let b = a
b.value = 9
print(a.value)
Вопрос 3 из 20
Как поведёт себя программа в этом коротком сценарии, связанном с «Инициализация»? Здесь оценивается полная инициализация и место проверки инвариантов.
SwiftИнициализация · фрагмент для разбора
struct Point {
    let x: Int
    let y: Int
    init(_ both: Int) { x = both; y = both }
}
print(Point(3))
Вопрос 4 из 20
Разберите строки в порядке выполнения. Какой результат получит фрагмент, посвящённый теме «Выбор семантики»? Сосредоточьтесь на следующем: инженерный выбор между независимым значением и общей идентичностью.
SwiftВыбор семантики · фрагмент для разбора
struct Money { let cents: Int }
var invoice = Money(cents: 100)
var copy = invoice
copy = Money(cents: 250)
print(invoice.cents)
Вопрос 5 из 20
На проверку кода принесли этот фрагмент. Какой диагноз точнее всего объясняет проблему в части «Структуры»? Проверяется семантика значения и влияние let на изменяемые свойства.
SwiftСтруктуры · фрагмент для разбора
struct User { var name: String }
let user = User(name: "A")
user.name = "B"
Вопрос 6 из 20
Какой разбор отличает реальную причину от сопутствующего риска? Здесь оценивается ссылочная идентичность и двухфазная инициализация.
SwiftКлассы · фрагмент для разбора
class Parent {
    let id: Int
    init(id: Int) { self.id = id }
}

class Child: Parent {
    let name: String
    init(name: String) { self.name = name }
}

_ = Child(name: "Ada")
Вопрос 7 из 20
Какой диагноз согласуется и с исходным кодом, и с правилами Swift? Сосредоточьтесь на следующем: полная инициализация и место проверки инвариантов.
SwiftИнициализация · фрагмент для разбора
struct Account {
    let id: Int
    var name: String
    init(name: String) { self.name = name }
}

_ = Account(name: "Main")
Вопрос 8 из 20
Какую причину стоит указать в отчёте об ошибке, прежде чем предлагать исправление? Важно учесть: инженерный выбор между независимым значением и общей идентичностью.
SwiftВыбор семантики · фрагмент для разбора
final class Settings { var theme = "light" }
func preview(_ settings: Settings) {
    settings.theme = "dark"
}
Вопрос 9 из 20
Какое решение одновременно исправляет код и оставляет понятную границу для дальнейших изменений? Проверяется семантика значения и влияние let на изменяемые свойства.
SwiftСтруктуры · фрагмент для разбора
struct User { var name: String }
let user = User(name: "A")
user.name = "B"
Вопрос 10 из 20
Какая правка решает проблему на том уровне, где она возникла? Сосредоточьтесь на следующем: ссылочная идентичность и двухфазная инициализация.
SwiftКлассы · фрагмент для разбора
class Parent {
    let id: Int
    init(id: Int) { self.id = id }
}

class Child: Parent {
    let name: String
    init(name: String) { self.name = name }
}

_ = Child(name: "Ada")
Вопрос 11 из 20
Какая правка делает намерение кода явным и проверяемым? Важно учесть: полная инициализация и место проверки инвариантов.
SwiftИнициализация · фрагмент для разбора
struct Account {
    let id: Int
    var name: String
    init(name: String) { self.name = name }
}

_ = Account(name: "Main")
Вопрос 12 из 20
Какая правка решает проблему на том уровне, где она возникла? Не упускайте из виду следующее: инженерный выбор между независимым значением и общей идентичностью.
SwiftВыбор семантики · фрагмент для разбора
final class Settings { var theme = "light" }
func preview(_ settings: Settings) {
    settings.theme = "dark"
}
Вопрос 13 из 20
На какой границе входов, владения или времени жизни результат может стать другим? Проверяется семантика значения и влияние let на изменяемые свойства.
Вопрос 14 из 20
Где заканчивается гарантия, продемонстрированная в обычном примере «Классы»? Сосредоточьтесь на следующем: ссылочная идентичность и двухфазная инициализация.
Вопрос 15 из 20
Какой пограничный случай способен изменить вывод, хотя синтаксис останется почти тем же? Здесь оценивается полная инициализация и место проверки инвариантов.
Вопрос 16 из 20
Какую предпосылку стоит явно записать в документации и тестах? Сосредоточьтесь на следующем: инженерный выбор между независимым значением и общей идентичностью.
Вопрос 17 из 20
Команда выбирает не просто рабочую строку, а устойчивое устройство решения. Какой подход сильнее? Сосредоточьтесь на следующем: семантика значения и влияние let на изменяемые свойства.
Вопрос 18 из 20
Какое замечание на проверке кода поможет предотвратить повторение такого дефекта? Важно учесть: ссылочная идентичность и двухфазная инициализация.
Вопрос 19 из 20
Какое решение уменьшит число скрытых состояний и упростит расследование следующего сбоя? Не упускайте из виду следующее: полная инициализация и место проверки инвариантов.
Вопрос 20 из 20
Как организовать этот механизм, чтобы владение и отказ оставались понятными после расширения проекта? Здесь оценивается инженерный выбор между независимым значением и общей идентичностью.

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

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

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

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