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

Управление эффектами с ZIO или Cats Effect

Тест по теме «Управление эффектами с ZIO или Cats Effect» проверяет Описание эффекта, Ресурсы, Конкурентность, Обработка отказов и Тестовый сценарий. Здесь нужно читать код, различать близкие технические объяснения и замечать границы гарантий.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. В каждом задании верен только один вариант. Фрагменты относятся к Scala 3; внешняя библиотека названа прямо в коде или условии.
Вопрос 1 из 25
Во фрагменте проверяется тема «Описание эффекта». Какое правило точнее всего объясняет поведение кода?
ScalaОписание эффекта: чтение фрагмента
import cats.effect.IO
val program = IO.println("started").as(42)
Вопрос 2 из 25
Для темы «Описание эффекта» какого обещания из этого фрагмента делать нельзя?
ScalaОписание эффекта: изменившийся контекст
// Дополнительный контекст: Операцию повторили после ошибки, когда внешний эффект мог уже произойти.
import cats.effect.IO
val program = IO.println("started").as(42)
Вопрос 3 из 25
При исправлении темы «Описание эффекта» что следует изменить, чтобы следующий рефакторинг не вернул тот же риск?
ScalaОписание эффекта: решение на ревью
import cats.effect.IO
val program = IO.println("started").as(42)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 4 из 25
В контракте темы «Описание эффекта» что следует оставить в проектном решении после этого изменения контекста?
acquire\to use\to release
Вопрос 5 из 25
При проверке темы «Описание эффекта» какой итог можно проверить автоматически или воспроизводимым примером?
Вопрос 6 из 25
В теме «Ресурсы» что в этом примере определяется семантикой Scala, а не соглашением автора?
ScalaРесурсы: чтение фрагмента
import cats.effect.{IO, Resource}
val r = Resource.make(IO.println("open"))(_ => IO.println("close"))
Вопрос 7 из 25
Для темы «Ресурсы» после переноса кода в общий модуль проявилось скрытое допущение. Какое?
ScalaРесурсы: изменившийся контекст
// Дополнительный контекст: Вычисление отменили после получения ресурса, но до публикации результата.
import cats.effect.{IO, Resource}
val r = Resource.make(IO.println("open"))(_ => IO.println("close"))
Вопрос 8 из 25
Какой вывод ревью по теме «Ресурсы» наиболее обоснован?
ScalaРесурсы: решение на ревью
import cats.effect.{IO, Resource}
val r = Resource.make(IO.println("open"))(_ => IO.println("close"))
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 9 из 25
В контракте темы «Ресурсы» вычисление отменили после получения ресурса, но до публикации результата. Какой вывод одновременно сохраняет правило и учитывает его границу?
Вопрос 10 из 25
При проверке темы «Ресурсы» как сформулировать защиту от регрессии без расплывчатого «работает как раньше»?
Вопрос 11 из 25
Какой вывод о теме «Конкурентность» можно сделать без дополнительных допущений?
ScalaКонкурентность: чтение фрагмента
import cats.effect.IO
import cats.syntax.all.*
import scala.concurrent.duration.*
val left = IO.sleep(1.second) *> IO.pure(1)
val right = IO.pure(2)
val fastest = IO.race(left, right)
Вопрос 12 из 25
Для темы «Конкурентность» какое последствие нельзя исключить одним успешным запуском?
ScalaКонкурентность: изменившийся контекст
// Дополнительный контекст: Дочернее волокно продолжило работу после выхода из родительской области.
import cats.effect.IO
import cats.syntax.all.*
import scala.concurrent.duration.*
val left = IO.sleep(1.second) *> IO.pure(1)
val right = IO.pure(2)
val fastest = IO.race(left, right)
Вопрос 13 из 25
При исправлении темы «Конкурентность» какая правка сохраняет полезную семантику и не расширяет обещания API?
ScalaКонкурентность: решение на ревью
import cats.effect.IO
import cats.syntax.all.*
import scala.concurrent.duration.*
val left = IO.sleep(1.second) *> IO.pure(1)
val right = IO.pure(2)
val fastest = IO.race(left, right)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 14 из 25
В контракте темы «Конкурентность» локальный пример стал частью более крупной системы. Какая трактовка контракта остаётся полной?
Вопрос 15 из 25
При проверке темы «Конкурентность» какой пункт следует добавить в критерии приёмки изменения?
Вопрос 16 из 25
В теме «Обработка отказов» код компилируется и запускается. Какое утверждение о его контракте остаётся верным?
ScalaОбработка отказов: чтение фрагмента
import cats.effect.IO
val parsed: IO[Int] = IO("x".toInt).handleErrorWith {
  case _: NumberFormatException => IO.pure(0)
  case e => IO.raiseError(e)
}
Вопрос 17 из 25
Для темы «Обработка отказов» какой пограничный случай относится к контракту, а не только к стилю записи?
ScalaОбработка отказов: изменившийся контекст
// Дополнительный контекст: Дочернее волокно продолжило работу после выхода из родительской области.
import cats.effect.IO
val parsed: IO[Int] = IO("x".toInt).handleErrorWith {
  case _: NumberFormatException => IO.pure(0)
  case e => IO.raiseError(e)
}
Вопрос 18 из 25
При исправлении темы «Обработка отказов» что здесь лучше исправить до объединения изменений?
ScalaОбработка отказов: решение на ревью
import cats.effect.IO
val parsed: IO[Int] = IO("x".toInt).handleErrorWith {
  case _: NumberFormatException => IO.pure(0)
  case e => IO.raiseError(e)
}
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 19 из 25
В контракте темы «Обработка отказов» условия эксплуатации изменились, но синтаксис остался прежним. Что теперь важно удержать вместе?
Вопрос 20 из 25
При проверке темы «Обработка отказов» что поможет соседнему модулю не повторить ту же ошибку?
Вопрос 21 из 25
В теме «Тестовый сценарий» на ревью спорят о причине наблюдаемого результата. Какое объяснение корректно?
ScalaТестовый сценарий: чтение фрагмента
import cats.effect.IO
import cats.syntax.all.*
import scala.concurrent.duration.*
val delayed = IO.sleep(1.second) *> IO.pure(42)
// В тесте используют управляемые часы, а не реальное ожидание.
Вопрос 22 из 25
Для темы «Тестовый сценарий» дочернее волокно продолжило работу после выхода из родительской области. Какой дефект остаётся возможным при корректном синтаксисе?
Вопрос 23 из 25
При исправлении темы «Тестовый сценарий» на ревью уже воспроизвели проблему: Подмена самой программы на готовое значение не проверяет порядок ресурсов, отмену и повторные попытки. Какую правку стоит принять?
ScalaТестовый сценарий: решение на ревью
import cats.effect.IO
import cats.syntax.all.*
import scala.concurrent.duration.*
val delayed = IO.sleep(1.second) *> IO.pure(42)
// В тесте используют управляемые часы, а не реальное ожидание.
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 24 из 25
В контракте темы «Тестовый сценарий» какое решение не превращает частный успешный случай в общее обещание?
Вопрос 25 из 25
При проверке темы «Тестовый сценарий» какой контроль остаётся полезным после рефакторинга и переименования кода?

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

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

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

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