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

Взаимодействие с Java и JVM

Раздел «Взаимодействие с Java и JVM» соединяет небольшие фрагменты Scala с ревью и рабочими сценариями. Проверяются: Интерфейсы Java, Функциональные интерфейсы SAM, Коллекции, Исключения границы, Проверка допущений.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. В каждом задании верен только один вариант. Фрагменты относятся к Scala 3; внешняя библиотека названа прямо в коде или условии.
Вопрос 1 из 25
Во фрагменте проверяется тема «Интерфейсы Java». Какое правило точнее всего объясняет поведение кода?
ScalaИнтерфейсы Java: чтение фрагмента
val raw: String = System.getProperty("missing.property")
val safe = Option(raw)
println(safe)
Вопрос 2 из 25
Для темы «Интерфейсы Java» какого обещания из этого фрагмента делать нельзя?
ScalaИнтерфейсы Java: изменившийся контекст
// Дополнительный контекст: Перегруженный Java-метод получил Scala-значение с менее точным типом.
val raw: String = System.getProperty("missing.property")
val safe = Option(raw)
println(safe)
Вопрос 3 из 25
При исправлении темы «Интерфейсы Java» что следует изменить, чтобы следующий рефакторинг не вернул тот же риск?
ScalaИнтерфейсы Java: решение на ревью
val raw: String = System.getProperty("missing.property")
val safe = Option(raw)
println(safe)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 4 из 25
В контракте темы «Интерфейсы Java» что следует оставить в проектном решении после этого изменения контекста?
\text{Scala type}\to\text{JVM erased signature}
Вопрос 5 из 25
При проверке темы «Интерфейсы Java» какой итог можно проверить автоматически или воспроизводимым примером?
Вопрос 6 из 25
В теме «Функциональные интерфейсы SAM» что в этом примере определяется семантикой Scala, а не соглашением автора?
ScalaФункциональные интерфейсы SAM: чтение фрагмента
val r = new Runnable:
  def run() = println("ok")
r.run()
Вопрос 7 из 25
Для темы «Функциональные интерфейсы SAM» после переноса кода в общий модуль проявилось скрытое допущение. Какое?
ScalaФункциональные интерфейсы SAM: изменившийся контекст
// Дополнительный контекст: Перегруженный Java-метод получил Scala-значение с менее точным типом.
val r = new Runnable:
  def run() = println("ok")
r.run()
Вопрос 8 из 25
Что на ревью темы «Функциональные интерфейсы SAM» следует потребовать от автора?
ScalaФункциональные интерфейсы SAM: решение на ревью
val r = new Runnable:
  def run() = println("ok")
r.run()
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 9 из 25
В контракте темы «Функциональные интерфейсы SAM» Java-библиотека вернула коллекцию, которую другой поток продолжает менять. Какой вывод одновременно сохраняет правило и учитывает его границу?
Вопрос 10 из 25
При проверке темы «Функциональные интерфейсы SAM» как сформулировать защиту от регрессии без расплывчатого «работает как раньше»?
Вопрос 11 из 25
Какой вывод о теме «Коллекции» можно сделать без дополнительных допущений?
ScalaКоллекции: чтение фрагмента
import scala.jdk.CollectionConverters.*
val j = new java.util.ArrayList[Int]()
j.add(1)
val s = j.asScala
j.add(2)
println(s.toList)
Вопрос 12 из 25
Для темы «Коллекции» какое последствие нельзя исключить одним успешным запуском?
ScalaКоллекции: изменившийся контекст
// Дополнительный контекст: Java-библиотека вернула коллекцию, которую другой поток продолжает менять.
import scala.jdk.CollectionConverters.*
val j = new java.util.ArrayList[Int]()
j.add(1)
val s = j.asScala
j.add(2)
println(s.toList)
Вопрос 13 из 25
При исправлении темы «Коллекции» какая правка сохраняет полезную семантику и не расширяет обещания API?
ScalaКоллекции: решение на ревью
import scala.jdk.CollectionConverters.*
val j = new java.util.ArrayList[Int]()
j.add(1)
val s = j.asScala
j.add(2)
println(s.toList)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 14 из 25
В контракте темы «Коллекции» локальный пример стал частью более крупной системы. Какая трактовка контракта остаётся полной?
Вопрос 15 из 25
При проверке темы «Коллекции» какой пункт следует добавить в критерии приёмки изменения?
Вопрос 16 из 25
В теме «Исключения границы» код компилируется и запускается. Какое утверждение о его контракте остаётся верным?
ScalaИсключения границы: чтение фрагмента
import scala.util.Try
val n = Try(Integer.parseInt("x"))
println(n)
Вопрос 17 из 25
Для темы «Исключения границы» какой пограничный случай относится к контракту, а не только к стилю записи?
ScalaИсключения границы: изменившийся контекст
// Дополнительный контекст: Java-библиотека вернула коллекцию, которую другой поток продолжает менять.
import scala.util.Try
val n = Try(Integer.parseInt("x"))
println(n)
Вопрос 18 из 25
При исправлении темы «Исключения границы» что здесь лучше исправить до объединения изменений?
ScalaИсключения границы: решение на ревью
import scala.util.Try
val n = Try(Integer.parseInt("x"))
println(n)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 19 из 25
В контракте темы «Исключения границы» условия эксплуатации изменились, но синтаксис остался прежним. Что теперь важно удержать вместе?
Вопрос 20 из 25
При проверке темы «Исключения границы» что поможет соседнему модулю не повторить ту же ошибку?
Вопрос 21 из 25
В теме «Проверка допущений» на ревью спорят о причине наблюдаемого результата. Какое объяснение корректно?
ScalaПроверка допущений: чтение фрагмента
class Api:
  def names(): List[String] = List("a", "b")
// На границе проверяем сгенерированную JVM-сигнатуру.
Вопрос 22 из 25
Для темы «Проверка допущений» перегруженный Java-метод получил Scala-значение с менее точным типом. Какой дефект остаётся возможным при корректном синтаксисе?
Вопрос 23 из 25
При исправлении темы «Проверка допущений» на ревью уже воспроизвели проблему: Код может компилироваться в Scala, но иметь неудобную или несовместимую Java-сигнатуру. Какую правку стоит принять?
ScalaПроверка допущений: решение на ревью
class Api:
  def names(): List[String] = List("a", "b")
// На границе проверяем сгенерированную JVM-сигнатуру.
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 24 из 25
В контракте темы «Проверка допущений» какое решение не превращает частный успешный случай в общее обещание?
Вопрос 25 из 25
При проверке темы «Проверка допущений» какой контроль остаётся полезным после рефакторинга и переименования кода?

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

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

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

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