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

Case class и алгебраические типы

Тест по теме «Case class и алгебраические типы» проверяет Классы-образцы, Закрытая иерархия, Копирование и Моделирование состояний. Здесь нужно читать код, различать близкие технические объяснения и замечать границы гарантий.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В каждом задании верен только один вариант. Фрагменты относятся к Scala 3; внешняя библиотека названа прямо в коде или условии.
Вопрос 1 из 20
В теме «Классы-образцы» на ревью спорят о причине наблюдаемого результата. Какое объяснение корректно?
ScalaКлассы-образцы: чтение фрагмента
case class User(name: String, tags: List[String])
val a = User("Ada", List("admin"))
val b = a.copy(name = "Grace")
println(a.tags eq b.tags)
Вопрос 2 из 20
Для темы «Классы-образцы» фрагмент вынесли из локальной функции в общий модуль и добавили новый вариант входных данных. Какой дефект остаётся возможным при корректном синтаксисе?
ScalaКлассы-образцы: изменившийся контекст
// Дополнительный контекст: Публичную сигнатуру слегка изменили, но большая часть вызывающего кода осталась прежней.
case class User(name: String, tags: List[String])
val a = User("Ada", List("admin"))
val b = a.copy(name = "Grace")
println(a.tags eq b.tags)
Вопрос 3 из 20
При исправлении темы «Классы-образцы» на ревью уже воспроизвели проблему: Копирование не выполняет глубокую копию вложенных изменяемых объектов: обе версии могут разделять одну и ту же ссылку. Какую правку стоит принять?
ScalaКлассы-образцы: решение на ревью
case class User(name: String, tags: List[String])
val a = User("Ada", List("admin"))
val b = a.copy(name = "Grace")
println(a.tags eq b.tags)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 4 из 20
В контракте темы «Классы-образцы» какое решение не превращает частный успешный случай в общее обещание?
Вопрос 5 из 20
При проверке темы «Классы-образцы» какой контроль остаётся полезным после рефакторинга и переименования кода?
Вопрос 6 из 20
Какая характеристика конструкции «Закрытая иерархия» подтверждается показанным фрагментом?
ScalaЗакрытая иерархия: чтение фрагмента
sealed trait Payment
case class Card(last4: String) extends Payment
case object Cash extends Payment
def label(p: Payment) = p match
  case Card(n) => n
  case Cash => "cash"
Вопрос 7 из 20
Для темы «Закрытая иерархия» что здесь требует отдельного теста или компиляционного примера?
ScalaЗакрытая иерархия: изменившийся контекст
// Дополнительный контекст: После рефакторинга код по-прежнему компилируется, однако его статический тип стал шире.
sealed trait Payment
case class Card(last4: String) extends Payment
case object Cash extends Payment
def label(p: Payment) = p match
  case Card(n) => n
  case Cash => "cash"
Вопрос 8 из 20
При исправлении темы «Закрытая иерархия» нужно устранить причину, а не замаскировать симптом. Какое изменение подходит лучше?
ScalaЗакрытая иерархия: решение на ревью
sealed trait Payment
case class Card(last4: String) extends Payment
case object Cash extends Payment
def label(p: Payment) = p match
  case Card(n) => n
  case Cash => "cash"
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 9 из 20
В контракте темы «Закрытая иерархия» после изменения окружения команда пересматривает контракт. Какой вариант корректен?
Вопрос 10 из 20
При проверке темы «Закрытая иерархия» какая проверка связывает принятую правку с реальной границей решения?
Вопрос 11 из 20
В теме «Копирование» проследите типы и порядок вычисления. Какой вывод выдерживает такую проверку?
ScalaКопирование: чтение фрагмента
case class Order(status: String, paid: Boolean)
val draft = Order("draft", false)
val broken = draft.copy(status = "shipped")
println(broken)
Вопрос 12 из 20
Какое ограничение действительно связано с «Копирование»?
Вопрос 13 из 20
Как исправить пример по теме «Копирование», сохранив его обещания?
ScalaКопирование: решение на ревью
case class Order(status: String, paid: Boolean)
val draft = Order("draft", false)
val broken = draft.copy(status = "shipped")
println(broken)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 14 из 20
В контракте темы «Копирование» какая формулировка учитывает и семантику конструкции, и реальный риск?
Вопрос 15 из 20
При проверке темы «Копирование» какой итог ревью содержит и действие, и способ заметить возврат риска?
Вопрос 16 из 20
В теме «Моделирование состояний» какое утверждение не переносит в Scala правило из другого языка или другой конструкции?
ScalaМоделирование состояний: чтение фрагмента
enum Result:
  case Success(value: Int)
  case Failure(message: String)
val r = Result.Success(7)
println(r)
Вопрос 17 из 20
Фрагмент вынесли из локальной функции в общий модуль и добавили новый вариант входных данных. Какое ограничение темы «Моделирование состояний» становится существенным?
Вопрос 18 из 20
При исправлении темы «Моделирование состояний» какое решение уменьшает вероятность повторения обнаруженного дефекта?
ScalaМоделирование состояний: решение на ревью
enum Result:
  case Success(value: Int)
  case Failure(message: String)
val r = Result.Success(7)
println(r)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 19 из 20
В контракте темы «Моделирование состояний» новый сценарий не отменяет основное правило, но делает заметной его границу. Какой ответ это отражает?
Вопрос 20 из 20
При проверке темы «Моделирование состояний» что нужно оставить после исправления, кроме комментария в исходном файле?

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

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

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

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