SW Swift  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Обобщения

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

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 25 вопросов, на работу отведено 70 минут. В каждом задании верен только один вариант. Часть фрагментов намеренно содержит ошибку: определяйте её по коду, а не по внешнему виду ответа. После завершения откроются общий результат, 5 тематических шкал и подробные объяснения.
Вопрос 1 из 25
Какой из пяти выводов подтверждается построчной трассировкой? Не упускайте из виду следующее: вывод параметра типа и смысл повторного использования T.
SwiftОбобщённые функции · фрагмент для разбора
func first<T>(_ values: [T]) -> T? { values.first }
print(first(["a", "b"]) as Any)
Вопрос 2 из 25
Определите не предполагаемое, а фактическое поведение примера «Ограничения типов». Проверяется связь доступных операций с требованиями протокола.
SwiftОграничения типов · фрагмент для разбора
func contains<T: Equatable>(_ values: [T], _ value: T) -> Bool {
    values.contains(value)
}
print(contains([1, 2, 3], 2))
Вопрос 3 из 25
Какой из пяти выводов подтверждается построчной трассировкой? Важно учесть: выражение отношений между несколькими типами.
SwiftУсловия where · фрагмент для разбора
func equalStarts<C1: Collection, C2: Collection>(_ a: C1, _ b: C2) -> Bool
where C1.Element == C2.Element, C1.Element: Equatable {
    a.first == b.first
}
print(equalStarts([1, 2], [1, 9]))
Вопрос 4 из 25
Проследите типы, изменения состояния и порядок вызовов. Какое описание результата совпадает с кодом? Здесь оценивается единый скрытый тип и различие some/any.
SwiftНепрозрачные типы some · фрагмент для разбора
protocol Shape { func area() -> Double }
struct Square: Shape { let side: Double; func area() -> Double { side * side } }
func makeShape() -> some Shape { Square(side: 3) }
print(makeShape().area())
Вопрос 5 из 25
Какой итог даст показанный фрагмент, если применять правила Swift буквально, а не угадывать намерение автора? Здесь оценивается чтение сообщений вывода типов и построение минимального воспроизводимого примера.
SwiftТестирование и диагностика · фрагмент для разбора
func identity<T>(_ value: T) -> T { value }
let x: Int = identity(3)
let y: String = identity("3")
print(x, y)
Вопрос 6 из 25
Что в этом фрагменте нужно объяснить первым, чтобы дальнейшая правка не оказалась случайной? Здесь оценивается вывод параметра типа и смысл повторного использования T.
SwiftОбобщённые функции · фрагмент для разбора
func same<T>(_ a: T, _ b: T) -> Bool { true }
let integer: Int = 1
let fraction: Double = 2.0
let ok = same(integer, fraction)
Вопрос 7 из 25
Какой диагноз согласуется и с исходным кодом, и с правилами Swift? Сосредоточьтесь на следующем: связь доступных операций с требованиями протокола.
SwiftОграничения типов · фрагмент для разбора
func maxValue<T>(_ a: T, _ b: T) -> T {
    a > b ? a : b
}
Вопрос 8 из 25
Что в этом фрагменте нужно объяснить первым, чтобы дальнейшая правка не оказалась случайной? Здесь оценивается выражение отношений между несколькими типами.
SwiftУсловия where · фрагмент для разбора
func merge<C1: Collection, C2: Collection>(_ a: C1, _ b: C2) -> [C1.Element]
where C1.Element: Hashable {
    Array(a) + Array(b)
}
Вопрос 9 из 25
Почему этот код не выполняет заявленный контракт? Проверяется единый скрытый тип и различие some/any.
SwiftНепрозрачные типы some · фрагмент для разбора
protocol P4 {}
struct A4: P4 {}
struct B4: P4 {}
func make(_ flag: Bool) -> some P4 {
    flag ? A4() : B4()
}
Вопрос 10 из 25
Разработчик видит симптом, но ищет первопричину. Какое объяснение выдерживает проверку кодом? Сосредоточьтесь на следующем: чтение сообщений вывода типов и построение минимального воспроизводимого примера.
SwiftТестирование и диагностика · фрагмент для разбора
func load<T>() -> T { fatalError() }
let value = load()
Вопрос 11 из 25
Какая правка решает проблему на том уровне, где она возникла? Проверяется вывод параметра типа и смысл повторного использования T.
SwiftОбобщённые функции · фрагмент для разбора
func same<T>(_ a: T, _ b: T) -> Bool { true }
let integer: Int = 1
let fraction: Double = 2.0
let ok = same(integer, fraction)
Вопрос 12 из 25
Какое изменение устраняет именно показанную причину и сохраняет ясный контракт «Ограничения типов»? Сосредоточьтесь на следующем: связь доступных операций с требованиями протокола.
SwiftОграничения типов · фрагмент для разбора
func maxValue<T>(_ a: T, _ b: T) -> T {
    a > b ? a : b
}
Вопрос 13 из 25
Какой вариант ремонта вы бы приняли после содержательной проверки кода? Важно учесть: выражение отношений между несколькими типами.
SwiftУсловия where · фрагмент для разбора
func merge<C1: Collection, C2: Collection>(_ a: C1, _ b: C2) -> [C1.Element]
where C1.Element: Hashable {
    Array(a) + Array(b)
}
Вопрос 14 из 25
Какое решение одновременно исправляет код и оставляет понятную границу для дальнейших изменений? Не упускайте из виду следующее: единый скрытый тип и различие some/any.
SwiftНепрозрачные типы some · фрагмент для разбора
protocol P4 {}
struct A4: P4 {}
struct B4: P4 {}
func make(_ flag: Bool) -> some P4 {
    flag ? A4() : B4()
}
Вопрос 15 из 25
Какое исправление соответствует правилам Swift и не прячет сбой за обходным значением? Проверяется чтение сообщений вывода типов и построение минимального воспроизводимого примера.
SwiftТестирование и диагностика · фрагмент для разбора
func load<T>() -> T { fatalError() }
let value = load()
Вопрос 16 из 25
Какой пограничный случай способен изменить вывод, хотя синтаксис останется почти тем же? Проверяется вывод параметра типа и смысл повторного использования T.
Вопрос 17 из 25
Какую предпосылку стоит явно записать в документации и тестах? Важно учесть: связь доступных операций с требованиями протокола.
Вопрос 18 из 25
Какой пограничный случай способен изменить вывод, хотя синтаксис останется почти тем же? Проверяется выражение отношений между несколькими типами.
Вопрос 19 из 25
Какой отрицательный сценарий лучше всего проверяет предел применимости этого механизма? Не упускайте из виду следующее: единый скрытый тип и различие some/any.
Вопрос 20 из 25
Какой контрпример показывает, что рабочий сценарий нельзя безусловно переносить на все похожие случаи? Важно учесть: чтение сообщений вывода типов и построение минимального воспроизводимого примера.
Вопрос 21 из 25
Как организовать этот механизм, чтобы владение и отказ оставались понятными после расширения проекта? Здесь оценивается вывод параметра типа и смысл повторного использования T.
Вопрос 22 из 25
Команда выбирает не просто рабочую строку, а устойчивое устройство решения. Какой подход сильнее? Здесь оценивается связь доступных операций с требованиями протокола.
Вопрос 23 из 25
Какое замечание на проверке кода поможет предотвратить повторение такого дефекта? Не упускайте из виду следующее: выражение отношений между несколькими типами.
Вопрос 24 из 25
Что должно определять архитектуру этого участка, когда появятся новые входы и владельцы? Важно учесть: единый скрытый тип и различие some/any.
Вопрос 25 из 25
Команда выбирает не просто рабочую строку, а устойчивое устройство решения. Какой подход сильнее? Важно учесть: чтение сообщений вывода типов и построение минимального воспроизводимого примера.

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

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

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

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