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

Сериализация и совместимость сообщений

Тест по теме «Сериализация и совместимость сообщений» проверяет Форматы, Эволюция схем, Версионирование, Безопасное чтение, Качество данных и Воспроизводимость результата. Здесь нужно читать код, различать близкие технические объяснения и замечать границы гарантий.

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом задании верен только один вариант. Фрагменты относятся к Scala 3; внешняя библиотека названа прямо в коде или условии.
Вопрос 1 из 30
Какой вывод о теме «Форматы» можно сделать без дополнительных допущений?
ScalaФорматы: чтение фрагмента
import io.circe.generic.auto.*
import io.circe.syntax.*
case class Event(id: String, amount: BigDecimal)
val event = Event("e-1", BigDecimal("12.50"))
val json = event.asJson
println(json.noSpaces)
Вопрос 2 из 30
Для темы «Форматы» какое последствие нельзя исключить одним успешным запуском?
ScalaФорматы: изменившийся контекст
// Дополнительный контекст: Подпись сообщения начали проверять в другой библиотеке с иным порядком сериализации.
import io.circe.generic.auto.*
import io.circe.syntax.*
case class Event(id: String, amount: BigDecimal)
val event = Event("e-1", BigDecimal("12.50"))
val json = event.asJson
println(json.noSpaces)
Вопрос 3 из 30
При исправлении темы «Форматы» какая правка сохраняет полезную семантику и не расширяет обещания API?
ScalaФорматы: решение на ревью
import io.circe.generic.auto.*
import io.circe.syntax.*
case class Event(id: String, amount: BigDecimal)
val event = Event("e-1", BigDecimal("12.50"))
val json = event.asJson
println(json.noSpaces)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 4 из 30
В контракте темы «Форматы» локальный пример стал частью более крупной системы. Какая трактовка контракта остаётся полной?
reader_{new}(writer_{old})
Вопрос 5 из 30
При проверке темы «Форматы» какой пункт следует добавить в критерии приёмки изменения?
Вопрос 6 из 30
В теме «Эволюция схем» код компилируется и запускается. Какое утверждение о его контракте остаётся верным?
ScalaЭволюция схем: чтение фрагмента
case class OrderV1(id: String, legacyNote: Option[String])
case class OrderV2(id: String, note: Option[String], source: Option[String])
def migrate(old: OrderV1): OrderV2 =
  OrderV2(old.id, old.legacyNote, None)
println(migrate(OrderV1("o-1", Some("gift"))))
Вопрос 7 из 30
Для темы «Эволюция схем» какой пограничный случай относится к контракту, а не только к стилю записи?
ScalaЭволюция схем: изменившийся контекст
// Дополнительный контекст: Новую версию сообщения прочитал старый потребитель, а доставку повторили после сбоя.
case class OrderV1(id: String, legacyNote: Option[String])
case class OrderV2(id: String, note: Option[String], source: Option[String])
def migrate(old: OrderV1): OrderV2 =
  OrderV2(old.id, old.legacyNote, None)
println(migrate(OrderV1("o-1", Some("gift"))))
Вопрос 8 из 30
При исправлении темы «Эволюция схем» что здесь лучше исправить до объединения изменений?
ScalaЭволюция схем: решение на ревью
case class OrderV1(id: String, legacyNote: Option[String])
case class OrderV2(id: String, note: Option[String], source: Option[String])
def migrate(old: OrderV1): OrderV2 =
  OrderV2(old.id, old.legacyNote, None)
println(migrate(OrderV1("o-1", Some("gift"))))
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 9 из 30
В контракте темы «Эволюция схем» условия эксплуатации изменились, но синтаксис остался прежним. Что теперь важно удержать вместе?
hash(canonical(x))
Вопрос 10 из 30
При проверке темы «Эволюция схем» что поможет соседнему модулю не повторить ту же ошибку?
Вопрос 11 из 30
В теме «Версионирование» на ревью спорят о причине наблюдаемого результата. Какое объяснение корректно?
ScalaВерсионирование: чтение фрагмента
sealed trait EventV
case class V1(id: String) extends EventV
case class V2(id: String, source: String) extends EventV
Вопрос 12 из 30
Для темы «Версионирование» новую версию сообщения прочитал старый потребитель, а доставку повторили после сбоя. Какой дефект остаётся возможным при корректном синтаксисе?
ScalaВерсионирование: изменившийся контекст
// Дополнительный контекст: Подпись сообщения начали проверять в другой библиотеке с иным порядком сериализации.
sealed trait EventV
case class V1(id: String) extends EventV
case class V2(id: String, source: String) extends EventV
Вопрос 13 из 30
При исправлении темы «Версионирование» на ревью уже воспроизвели проблему: Одна строка `version=2` без мигратора не объясняет, как читать старые события и что делать с неизвестной версией. Какую правку стоит принять?
ScalaВерсионирование: решение на ревью
sealed trait EventV
case class V1(id: String) extends EventV
case class V2(id: String, source: String) extends EventV
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 14 из 30
В контракте темы «Версионирование» какое решение не превращает частный успешный случай в общее обещание?
Вопрос 15 из 30
При проверке темы «Версионирование» какой контроль остаётся полезным после рефакторинга и переименования кода?
Вопрос 16 из 30
Какая характеристика конструкции «Безопасное чтение» подтверждается показанным фрагментом?
ScalaБезопасное чтение: чтение фрагмента
val maxBytes = 1024
val body = Array.fill[Byte](1500)(1)
val accepted = body.take(maxBytes)
val truncated = body.length > accepted.length
println(accepted.length -> truncated)
Вопрос 17 из 30
Для темы «Безопасное чтение» что здесь требует отдельного теста или компиляционного примера?
ScalaБезопасное чтение: изменившийся контекст
// Дополнительный контекст: Новую версию сообщения прочитал старый потребитель, а доставку повторили после сбоя.
val maxBytes = 1024
val body = Array.fill[Byte](1500)(1)
val accepted = body.take(maxBytes)
val truncated = body.length > accepted.length
println(accepted.length -> truncated)
Вопрос 18 из 30
При исправлении темы «Безопасное чтение» нужно устранить причину, а не замаскировать симптом. Какое изменение подходит лучше?
ScalaБезопасное чтение: решение на ревью
val maxBytes = 1024
val body = Array.fill[Byte](1500)(1)
val accepted = body.take(maxBytes)
val truncated = body.length > accepted.length
println(accepted.length -> truncated)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 19 из 30
В контракте темы «Безопасное чтение» после изменения окружения команда пересматривает контракт. Какой вариант корректен?
Вопрос 20 из 30
При проверке темы «Безопасное чтение» какая проверка связывает принятую правку с реальной границей решения?
Вопрос 21 из 30
В теме «Качество данных» проследите типы и порядок вычисления. Какой вывод выдерживает такую проверку?
ScalaКачество данных: чтение фрагмента
case class Temperature(value: BigDecimal, unit: String)
val msg = Temperature(BigDecimal("21.5"), "C")
require(Set("C", "F").contains(msg.unit))
println(msg)
Вопрос 22 из 30
Какая проблема относится к семантике «Качество данных», а не к стилю кода?
ScalaКачество данных: изменившийся контекст
// Дополнительный контекст: Новую версию сообщения прочитал старый потребитель, а доставку повторили после сбоя.
case class Temperature(value: BigDecimal, unit: String)
val msg = Temperature(BigDecimal("21.5"), "C")
require(Set("C", "F").contains(msg.unit))
println(msg)
Вопрос 23 из 30
Как следует устранить дефект в реализации «Качество данных»?
ScalaКачество данных: решение на ревью
case class Temperature(value: BigDecimal, unit: String)
val msg = Temperature(BigDecimal("21.5"), "C")
require(Set("C", "F").contains(msg.unit))
println(msg)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 24 из 30
В контракте темы «Качество данных» какая формулировка учитывает и семантику конструкции, и реальный риск?
Вопрос 25 из 30
При проверке темы «Качество данных» какой итог ревью содержит и действие, и способ заметить возврат риска?
Вопрос 26 из 30
В теме «Воспроизводимость результата» какое утверждение не переносит в Scala правило из другого языка или другой конструкции?
ScalaВоспроизводимость результата: чтение фрагмента
val fields = Map("amount" -> "12.50", "id" -> "e-1")
val canonical = fields.toVector
  .sortBy(_._1)
  .map((k, v) => s"$k=$v")
  .mkString("&")
println(canonical)
Вопрос 27 из 30
Новую версию сообщения прочитал старый потребитель, а доставку повторили после сбоя. Какое ограничение темы «Воспроизводимость результата» становится существенным?
ScalaВоспроизводимость результата: изменившийся контекст
// Дополнительный контекст: Подпись сообщения начали проверять в другой библиотеке с иным порядком сериализации.
val fields = Map("amount" -> "12.50", "id" -> "e-1")
val canonical = fields.toVector
  .sortBy(_._1)
  .map((k, v) => s"$k=$v")
  .mkString("&")
println(canonical)
Вопрос 28 из 30
При исправлении темы «Воспроизводимость результата» какое решение уменьшает вероятность повторения обнаруженного дефекта?
ScalaВоспроизводимость результата: решение на ревью
val fields = Map("amount" -> "12.50", "id" -> "e-1")
val canonical = fields.toVector
  .sortBy(_._1)
  .map((k, v) => s"$k=$v")
  .mkString("&")
println(canonical)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 29 из 30
В контракте темы «Воспроизводимость результата» новый сценарий не отменяет основное правило, но делает заметной его границу. Какой ответ это отражает?
Вопрос 30 из 30
При проверке темы «Воспроизводимость результата» что нужно оставить после исправления, кроме комментария в исходном файле?

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

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

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

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