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

Codable и эволюция форматов

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 30 вопросов, на работу отведено 85 минут. В каждом задании верен только один вариант. Часть фрагментов намеренно содержит ошибку: определяйте её по коду, а не по внешнему виду ответа. После завершения откроются общий результат, 6 тематических шкал и подробные объяснения.
Вопрос 1 из 30
Проследите типы, изменения состояния и порядок вызовов. Какое описание результата совпадает с кодом? Проверяется синтез и граница сериализуемых данных.
SwiftКодирование Encodable · фрагмент для разбора
import Foundation
struct User22: Encodable { let id: Int; let name: String }
let data22 = try JSONEncoder().encode(User22(id: 1, name: "Ada"))
print(data22.isEmpty)
Вопрос 2 из 30
Какой итог даст показанный фрагмент, если применять правила Swift буквально, а не угадывать намерение автора? Сосредоточьтесь на следующем: обязательность полей и смысл отсутствия.
SwiftДекодирование Decodable · фрагмент для разбора
import Foundation
struct Item22: Decodable { let id: Int; let note: String? }
let json22 = #"{"id":1}"#.data(using: .utf8)!
print(try JSONDecoder().decode(Item22.self, from: json22))
Вопрос 3 из 30
Как поведёт себя программа в этом коротком сценарии, связанном с «Ключи CodingKeys»? Здесь оценивается влияние списка ключей на синтез.
SwiftКлючи CodingKeys · фрагмент для разбора
import Foundation
struct Product22: Codable {
    let productID: Int
    enum CodingKeys: String, CodingKey { case productID = "product_id" }
}
Вопрос 4 из 30
Не запуская код, восстановите состояние значений после последней строки. Какой вывод верен для «Совместимость»? Сосредоточьтесь на следующем: эволюция схемы и значения по умолчанию.
SwiftСовместимость · фрагмент для разбора
import Foundation
struct V222: Decodable {
    let name: String
    let enabled: Bool
    enum CodingKeys: String, CodingKey { case name, enabled }
    init(from decoder: Decoder) throws {
        let c = try decoder.container(keyedBy: CodingKeys.self)
        name = try c.decode(String.self, forKey: .name)
        enabled = try c.decodeIfPresent(Bool.self, forKey: .enabled) ?? true
    }
}
Вопрос 5 из 30
Определите не предполагаемое, а фактическое поведение примера «Цикл кодирование—декодирование и образцы формата». Здесь оценивается предел round-trip и работа с реальными контрактами.
SwiftТестирование и диагностика · фрагмент для разбора
import Foundation
let decoder22 = JSONDecoder()
decoder22.keyDecodingStrategy = .convertFromSnakeCase
Вопрос 6 из 30
Какой итог даст показанный фрагмент, если применять правила Swift буквально, а не угадывать намерение автора? Проверяется стоимость материализации и разделение форматов по слоям.
SwiftПамять и архитектура приложения · фрагмент для разбора
import Foundation
struct Payload22: Decodable { let values: [Int] }
let decoderShared22 = JSONDecoder()
Вопрос 7 из 30
Ожидаемое поведение не совпало с фактическим. В чём первая нарушенная гарантия? Не упускайте из виду следующее: синтез и граница сериализуемых данных.
SwiftКодирование Encodable · фрагмент для разбора
import Foundation
struct Broken22: Encodable { let callback: () -> Void }
Вопрос 8 из 30
Разработчик видит симптом, но ищет первопричину. Какое объяснение выдерживает проверку кодом? Важно учесть: обязательность полей и смысл отсутствия.
SwiftДекодирование Decodable · фрагмент для разбора
import Foundation
struct Required22: Decodable { let id: Int; let name: String }
let jsonReq22 = #"{"id":1}"#.data(using: .utf8)!
_ = try JSONDecoder().decode(Required22.self, from: jsonReq22)
Вопрос 9 из 30
Какую причину стоит указать в отчёте об ошибке, прежде чем предлагать исправление? Сосредоточьтесь на следующем: влияние списка ключей на синтез.
SwiftКлючи CodingKeys · фрагмент для разбора
import Foundation
struct Partial22: Codable {
    let id: Int
    let name: String
    enum CodingKeys: String, CodingKey { case id }
}
Вопрос 10 из 30
Какой разбор отличает реальную причину от сопутствующего риска? Сосредоточьтесь на следующем: эволюция схемы и значения по умолчанию.
SwiftСовместимость · фрагмент для разбора
import Foundation
struct Status22: Codable { let code: Int }
// новая версия меняет code с Int на String без миграции
Вопрос 11 из 30
Какую причину стоит указать в отчёте об ошибке, прежде чем предлагать исправление? Не упускайте из виду следующее: предел round-trip и работа с реальными контрактами.
SwiftТестирование и диагностика · фрагмент для разбора
import Foundation
func roundTrip22<T: Codable & Equatable>(_ value: T) throws -> Bool {
    let data = try JSONEncoder().encode(value)
    return try JSONDecoder().decode(T.self, from: data) == value
}
Вопрос 12 из 30
Какой диагноз согласуется и с исходным кодом, и с правилами Swift? Не упускайте из виду следующее: стоимость материализации и разделение форматов по слоям.
SwiftПамять и архитектура приложения · фрагмент для разбора
import Foundation
func decodeMany22(_ chunks: [Data]) throws -> [[Int]] {
    try chunks.map { try JSONDecoder().decode([Int].self, from: $0) }
}
Вопрос 13 из 30
Как восстановить заявленный контракт с наименьшим числом новых скрытых предположений? Проверяется синтез и граница сериализуемых данных.
SwiftКодирование Encodable · фрагмент для разбора
import Foundation
struct Broken22: Encodable { let callback: () -> Void }
Вопрос 14 из 30
Какое исправление соответствует правилам Swift и не прячет сбой за обходным значением? Важно учесть: обязательность полей и смысл отсутствия.
SwiftДекодирование Decodable · фрагмент для разбора
import Foundation
struct Required22: Decodable { let id: Int; let name: String }
let jsonReq22 = #"{"id":1}"#.data(using: .utf8)!
_ = try JSONDecoder().decode(Required22.self, from: jsonReq22)
Вопрос 15 из 30
Что нужно поменять в реализации или сигнатуре, чтобы отрицательный сценарий стал корректным? Сосредоточьтесь на следующем: влияние списка ключей на синтез.
SwiftКлючи CodingKeys · фрагмент для разбора
import Foundation
struct Partial22: Codable {
    let id: Int
    let name: String
    enum CodingKeys: String, CodingKey { case id }
}
Вопрос 16 из 30
Какое решение одновременно исправляет код и оставляет понятную границу для дальнейших изменений? Важно учесть: эволюция схемы и значения по умолчанию.
SwiftСовместимость · фрагмент для разбора
import Foundation
struct Status22: Codable { let code: Int }
// новая версия меняет code с Int на String без миграции
Вопрос 17 из 30
Как восстановить заявленный контракт с наименьшим числом новых скрытых предположений? Проверяется предел round-trip и работа с реальными контрактами.
SwiftТестирование и диагностика · фрагмент для разбора
import Foundation
func roundTrip22<T: Codable & Equatable>(_ value: T) throws -> Bool {
    let data = try JSONEncoder().encode(value)
    return try JSONDecoder().decode(T.self, from: data) == value
}
Вопрос 18 из 30
Что нужно поменять в реализации или сигнатуре, чтобы отрицательный сценарий стал корректным? Проверяется стоимость материализации и разделение форматов по слоям.
SwiftПамять и архитектура приложения · фрагмент для разбора
import Foundation
func decodeMany22(_ chunks: [Data]) throws -> [[Int]] {
    try chunks.map { try JSONDecoder().decode([Int].self, from: $0) }
}
Вопрос 19 из 30
Какое ограничение темы «Кодирование Encodable» обязательно проверить отдельным граничным тестом? Не упускайте из виду следующее: синтез и граница сериализуемых данных.
Вопрос 20 из 30
Какую предпосылку стоит явно записать в документации и тестах? Не упускайте из виду следующее: обязательность полей и смысл отсутствия.
Вопрос 21 из 30
Какой контрпример показывает, что рабочий сценарий нельзя безусловно переносить на все похожие случаи? Проверяется влияние списка ключей на синтез.
Вопрос 22 из 30
Что нужно учесть, прежде чем объявлять найденное правило универсальным? Важно учесть: эволюция схемы и значения по умолчанию.
Вопрос 23 из 30
Что нужно учесть, прежде чем объявлять найденное правило универсальным? Проверяется предел round-trip и работа с реальными контрактами.
Вопрос 24 из 30
Какую предпосылку стоит явно записать в документации и тестах? Проверяется стоимость материализации и разделение форматов по слоям.
Вопрос 25 из 30
Какой инженерный принцип лучше всего подходит для долгосрочного сопровождения части «Кодирование Encodable»? Сосредоточьтесь на следующем: синтез и граница сериализуемых данных.
Вопрос 26 из 30
Какой подход делает неправильное использование заметным раньше? Сосредоточьтесь на следующем: обязательность полей и смысл отсутствия.
Вопрос 27 из 30
Команда выбирает не просто рабочую строку, а устойчивое устройство решения. Какой подход сильнее? Сосредоточьтесь на следующем: влияние списка ключей на синтез.
Вопрос 28 из 30
Какой подход делает неправильное использование заметным раньше? Проверяется эволюция схемы и значения по умолчанию.
Вопрос 29 из 30
Какое замечание на проверке кода поможет предотвратить повторение такого дефекта? Важно учесть: предел round-trip и работа с реальными контрактами.
Вопрос 30 из 30
Какой выбор лучше удерживает баланс между ясностью, проверяемостью и стоимостью выполнения? Проверяется стоимость материализации и разделение форматов по слоям.

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

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

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

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