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

Классы, объекты и companion object

В тесте «Классы, объекты и companion object» недостаточно узнать термин: потребуется проследить типы и выполнение, найти риск соседнего случая и выбрать проверяемую правку. Шкалы: Конструкторы, Объекты `object`, Объекты-компаньоны, Члены класса.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В каждом задании верен только один вариант. Фрагменты относятся к Scala 3; внешняя библиотека названа прямо в коде или условии.
Вопрос 1 из 20
В теме «Конструкторы» проследите типы и порядок вычисления. Какой вывод выдерживает такую проверку?
ScalaКонструкторы: чтение фрагмента
class User(name: String, val id: Long):
  val label = s"$name#$id"
val u = User("Ada", 7)
println(u.label)
Вопрос 2 из 20
Какой дефект наиболее характерен для неверного применения «Конструкторы»?
ScalaКонструкторы: изменившийся контекст
// Дополнительный контекст: После рефакторинга код по-прежнему компилируется, однако его статический тип стал шире.
class User(name: String, val id: Long):
  val label = s"$name#$id"
val u = User("Ada", 7)
println(u.label)
Вопрос 3 из 20
Какая доработка сохраняет точную семантику «Конструкторы»?
ScalaКонструкторы: решение на ревью
class User(name: String, val id: Long):
  val label = s"$name#$id"
val u = User("Ada", 7)
println(u.label)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 4 из 20
В контракте темы «Конструкторы» какая формулировка учитывает и семантику конструкции, и реальный риск?
Вопрос 5 из 20
При проверке темы «Конструкторы» какой итог ревью содержит и действие, и способ заметить возврат риска?
Вопрос 6 из 20
В теме «Объекты `object`» какое утверждение не переносит в Scala правило из другого языка или другой конструкции?
ScalaОбъекты `object`: чтение фрагмента
object Ids:
  private var next = 0
  def fresh() = { next += 1; next }
println(Ids.fresh() -> Ids.fresh())
Вопрос 7 из 20
Публичную сигнатуру слегка изменили, но большая часть вызывающего кода осталась прежней. Какое ограничение темы «Объекты `object`» становится существенным?
ScalaОбъекты `object`: изменившийся контекст
// Дополнительный контекст: После рефакторинга код по-прежнему компилируется, однако его статический тип стал шире.
object Ids:
  private var next = 0
  def fresh() = { next += 1; next }
println(Ids.fresh() -> Ids.fresh())
Вопрос 8 из 20
При исправлении темы «Объекты `object`» какое решение уменьшает вероятность повторения обнаруженного дефекта?
ScalaОбъекты `object`: решение на ревью
object Ids:
  private var next = 0
  def fresh() = { next += 1; next }
println(Ids.fresh() -> Ids.fresh())
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 9 из 20
В контракте темы «Объекты `object`» новый сценарий не отменяет основное правило, но делает заметной его границу. Какой ответ это отражает?
Вопрос 10 из 20
При проверке темы «Объекты `object`» что нужно оставить после исправления, кроме комментария в исходном файле?
Вопрос 11 из 20
В теме «Объекты-компаньоны» какое утверждение о контракте фрагмента остаётся точным?
ScalaОбъекты-компаньоны: чтение фрагмента
class Port private (val value: Int)
object Port:
  def from(n: Int): Option[Port] = Option.when(n >= 1 && n <= 65535)(Port(n))
println(Port.from(8080).map(_.value))
Вопрос 12 из 20
Для темы «Объекты-компаньоны» обычный пример прошёл, затем изменились условия использования. Какой риск нужно проверить первым?
Вопрос 13 из 20
При исправлении темы «Объекты-компаньоны» команда сравнивает несколько правок. Какая из них делает допущение явным и проверяемым?
ScalaОбъекты-компаньоны: решение на ревью
class Port private (val value: Int)
object Port:
  def from(n: Int): Option[Port] = Option.when(n >= 1 && n <= 65535)(Port(n))
println(Port.from(8080).map(_.value))
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 14 из 20
В контракте темы «Объекты-компаньоны» публичную сигнатуру слегка изменили, но большая часть вызывающего кода осталась прежней. Какой анализ пригоден для публичного API?
Вопрос 15 из 20
Какой критерий готовности по теме «Объекты-компаньоны» действительно поймает повтор прежнего дефекта?
Вопрос 16 из 20
В теме «Члены класса» как сформулировать семантику примера так, чтобы она сохранилась после переименования переменных?
ScalaЧлены класса: чтение фрагмента
class Counter:
  private var n = 0
  def inc() = { n += 1; n }
val a, b = Counter()
println(a.inc() -> b.inc())
Вопрос 17 из 20
Какой пограничный случай противоречит ожидаемому поведению «Члены класса»?
Вопрос 18 из 20
При исправлении темы «Члены класса» какой вариант не переносит проблему в вызывающий код?
ScalaЧлены класса: решение на ревью
class Counter:
  private var n = 0
  def inc() = { n += 1; n }
val a, b = Counter()
println(a.inc() -> b.inc())
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 19 из 20
В контракте темы «Члены класса» какой вариант не теряет существенную часть технической картины?
Вопрос 20 из 20
При проверке темы «Члены класса» что лучше не оставлять только в устной договорённости?

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

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

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

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