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

Потоковая обработка данных

Раздел «Потоковая обработка данных» соединяет небольшие фрагменты Scala с ревью и рабочими сценариями. Проверяются: Обратное давление, Граф потока, Ошибки, Материализация, Наблюдаемость и диагностика, Надёжность в эксплуатации.

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом задании верен только один вариант. Фрагменты относятся к Scala 3; внешняя библиотека названа прямо в коде или условии.
Вопрос 1 из 30
Во фрагменте проверяется тема «Обратное давление». Какое правило точнее всего объясняет поведение кода?
ScalaОбратное давление: чтение фрагмента
import akka.stream.scaladsl.Source
val stream = Source(1 to 1000).buffer(32, akka.stream.OverflowStrategy.backpressure)
Вопрос 2 из 30
Для темы «Обратное давление» какого обещания из этого фрагмента делать нельзя?
ScalaОбратное давление: изменившийся контекст
// Дополнительный контекст: Граф разветвили на две ветви с разной скоростью и разными правилами обработки ошибок.
import akka.stream.scaladsl.Source
val stream = Source(1 to 1000).buffer(32, akka.stream.OverflowStrategy.backpressure)
Вопрос 3 из 30
При исправлении темы «Обратное давление» что следует изменить, чтобы следующий рефакторинг не вернул тот же риск?
ScalaОбратное давление: решение на ревью
import akka.stream.scaladsl.Source
val stream = Source(1 to 1000).buffer(32, akka.stream.OverflowStrategy.backpressure)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 4 из 30
В контракте темы «Обратное давление» что следует оставить в проектном решении после этого изменения контекста?
\lambda_{in}\le\mu_{out}
Вопрос 5 из 30
При проверке темы «Обратное давление» какой итог можно проверить автоматически или воспроизводимым примером?
Вопрос 6 из 30
В теме «Граф потока» что в этом примере определяется семантикой Scala, а не соглашением автора?
ScalaГраф потока: чтение фрагмента
import akka.stream.scaladsl.*
val graph = Flow.fromGraph(GraphDSL.create() { implicit b =>
  import GraphDSL.Implicits.*
  val bcast = b.add(Broadcast[Int](2))
  val merge = b.add(Merge[Int](2))
  bcast.out(0) ~> merge.in(0)
  bcast.out(1) ~> Flow[Int].map(_ * 10) ~> merge.in(1)
  FlowShape(bcast.in, merge.out)
})
Вопрос 7 из 30
Для темы «Граф потока» после переноса кода в общий модуль проявилось скрытое допущение. Какое?
ScalaГраф потока: изменившийся контекст
// Дополнительный контекст: Поток перезапустили после ошибки, когда часть элементов уже дошла до внешней системы.
import akka.stream.scaladsl.*
val graph = Flow.fromGraph(GraphDSL.create() { implicit b =>
  import GraphDSL.Implicits.*
  val bcast = b.add(Broadcast[Int](2))
  val merge = b.add(Merge[Int](2))
  bcast.out(0) ~> merge.in(0)
  bcast.out(1) ~> Flow[Int].map(_ * 10) ~> merge.in(1)
  FlowShape(bcast.in, merge.out)
})
Вопрос 8 из 30
Что лучше всего отвечает замечанию ревью по теме «Граф потока»?
ScalaГраф потока: решение на ревью
import akka.stream.scaladsl.*
val graph = Flow.fromGraph(GraphDSL.create() { implicit b =>
  import GraphDSL.Implicits.*
  val bcast = b.add(Broadcast[Int](2))
  val merge = b.add(Merge[Int](2))
  bcast.out(0) ~> merge.in(0)
  bcast.out(1) ~> Flow[Int].map(_ * 10) ~> merge.in(1)
  FlowShape(bcast.in, merge.out)
})
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 9 из 30
В контракте темы «Граф потока» поток перезапустили после ошибки, когда часть элементов уже дошла до внешней системы. Какой вывод одновременно сохраняет правило и учитывает его границу?
B\approx\lambda W
Вопрос 10 из 30
При проверке темы «Граф потока» как сформулировать защиту от регрессии без расплывчатого «работает как раньше»?
Вопрос 11 из 30
В теме «Ошибки» код компилируется и запускается. Какое утверждение о его контракте остаётся верным?
ScalaОшибки: чтение фрагмента
val safe = akka.stream.scaladsl.Flow[String].map(_.toInt).recover { case _: NumberFormatException => 0 }
Вопрос 12 из 30
Для темы «Ошибки» какой пограничный случай относится к контракту, а не только к стилю записи?
ScalaОшибки: изменившийся контекст
// Дополнительный контекст: Поток перезапустили после ошибки, когда часть элементов уже дошла до внешней системы.
val safe = akka.stream.scaladsl.Flow[String].map(_.toInt).recover { case _: NumberFormatException => 0 }
Вопрос 13 из 30
При исправлении темы «Ошибки» что здесь лучше исправить до объединения изменений?
ScalaОшибки: решение на ревью
val safe = akka.stream.scaladsl.Flow[String].map(_.toInt).recover { case _: NumberFormatException => 0 }
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 14 из 30
В контракте темы «Ошибки» условия эксплуатации изменились, но синтаксис остался прежним. Что теперь важно удержать вместе?
Вопрос 15 из 30
При проверке темы «Ошибки» что поможет соседнему модулю не повторить ту же ошибку?
Вопрос 16 из 30
В теме «Материализация» код компилируется и запускается. Какое утверждение о его контракте остаётся верным?
ScalaМатериализация: чтение фрагмента
import akka.stream.scaladsl.*
import akka.stream.*
val runnable = Source(1 to 10).toMat(Sink.seq)(Keep.right)
Вопрос 17 из 30
Для темы «Материализация» какой пограничный случай относится к контракту, а не только к стилю записи?
ScalaМатериализация: изменившийся контекст
// Дополнительный контекст: Производитель ускорился, потребитель замедлился, а между ними появился ограниченный буфер.
import akka.stream.scaladsl.*
import akka.stream.*
val runnable = Source(1 to 10).toMat(Sink.seq)(Keep.right)
Вопрос 18 из 30
При исправлении темы «Материализация» что здесь лучше исправить до объединения изменений?
ScalaМатериализация: решение на ревью
import akka.stream.scaladsl.*
import akka.stream.*
val runnable = Source(1 to 10).toMat(Sink.seq)(Keep.right)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 19 из 30
В контракте темы «Материализация» условия эксплуатации изменились, но синтаксис остался прежним. Что теперь важно удержать вместе?
Вопрос 20 из 30
При проверке темы «Материализация» что поможет соседнему модулю не повторить ту же ошибку?
Вопрос 21 из 30
В теме «Наблюдаемость и диагностика» на ревью спорят о причине наблюдаемого результата. Какое объяснение корректно?
ScalaНаблюдаемость и диагностика: чтение фрагмента
val measured = akka.stream.scaladsl.Flow[Int].wireTap(n => println(s"seen=$n"))
Вопрос 22 из 30
Для темы «Наблюдаемость и диагностика» граф разветвили на две ветви с разной скоростью и разными правилами обработки ошибок. Какой дефект остаётся возможным при корректном синтаксисе?
ScalaНаблюдаемость и диагностика: изменившийся контекст
// Дополнительный контекст: Производитель ускорился, потребитель замедлился, а между ними появился ограниченный буфер.
val measured = akka.stream.scaladsl.Flow[Int].wireTap(n => println(s"seen=$n"))
Вопрос 23 из 30
При исправлении темы «Наблюдаемость и диагностика» на ревью уже воспроизвели проблему: Одного журнала «stream stopped» недостаточно: он не показывает, где появился спрос, задержка или отказ. Какую правку стоит принять?
ScalaНаблюдаемость и диагностика: решение на ревью
val measured = akka.stream.scaladsl.Flow[Int].wireTap(n => println(s"seen=$n"))
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 24 из 30
В контракте темы «Наблюдаемость и диагностика» какое решение не превращает частный успешный случай в общее обещание?
Вопрос 25 из 30
При проверке темы «Наблюдаемость и диагностика» какой контроль остаётся полезным после рефакторинга и переименования кода?
Вопрос 26 из 30
Какая характеристика конструкции «Надёжность в эксплуатации» подтверждается показанным фрагментом?
ScalaНадёжность в эксплуатации: чтение фрагмента
import akka.stream.scaladsl.{RestartSource, Source}
import scala.concurrent.duration.*
val source = Source(1 to 100)
val restarted = RestartSource.withBackoff(
  minBackoff = 1.second,
  maxBackoff = 30.seconds,
  randomFactor = 0.2
)(() => source)
Вопрос 27 из 30
Для темы «Надёжность в эксплуатации» что здесь требует отдельного теста или компиляционного примера?
ScalaНадёжность в эксплуатации: изменившийся контекст
// Дополнительный контекст: Производитель ускорился, потребитель замедлился, а между ними появился ограниченный буфер.
import akka.stream.scaladsl.{RestartSource, Source}
import scala.concurrent.duration.*
val source = Source(1 to 100)
val restarted = RestartSource.withBackoff(
  minBackoff = 1.second,
  maxBackoff = 30.seconds,
  randomFactor = 0.2
)(() => source)
Вопрос 28 из 30
При исправлении темы «Надёжность в эксплуатации» нужно устранить причину, а не замаскировать симптом. Какое изменение подходит лучше?
ScalaНадёжность в эксплуатации: решение на ревью
import akka.stream.scaladsl.{RestartSource, Source}
import scala.concurrent.duration.*
val source = Source(1 to 100)
val restarted = RestartSource.withBackoff(
  minBackoff = 1.second,
  maxBackoff = 30.seconds,
  randomFactor = 0.2
)(() => source)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 29 из 30
В контракте темы «Надёжность в эксплуатации» после изменения окружения команда пересматривает контракт. Какой вариант корректен?
Вопрос 30 из 30
При проверке темы «Надёжность в эксплуатации» какая проверка связывает принятую правку с реальной границей решения?

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

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

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

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