💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В каждом задании верен только один вариант. Фрагменты относятся к Scala 3; внешняя библиотека названа прямо в коде или условии.
Вопрос 9 из 20
В контракте темы «Map и Set» условия эксплуатации изменились, но синтаксис остался прежним. Что теперь важно удержать вместе?
Опираться на семантику «неизменяемые `Map` и `Set` возвращают новое значение после добавления или удаления; исходная коллекция остаётся доступной без изменений», но отдельно проверять ограничение «штатный пример доказывает корректность порядка событий при любой нагрузке».
Опираться на семантику «`List` оптимальна для добавления и снятия элемента с головы, а `Vector` даёт более ровный доступ и обновление по индексу», но отдельно проверять ограничение «игнорирование результата `updated` или `+` создаёт видимость изменения, хотя фактически новое значение потеряно».
Опираться на семантику «`map`, `filter`, `collect` и `flatMap` создают преобразованный результат и не меняют исходную неизменяемую коллекцию», но отдельно проверять ограничение «частое добавление в конец `List` через `:+` приводит к повторным проходам и квадратичной работе на растущем наборе».
Опираться на семантику «неизменяемые `Map` и `Set` возвращают новое значение после добавления или удаления; исходная коллекция остаётся доступной без изменений», но отдельно проверять ограничение «цепочка из многих промежуточных коллекций может дать лишние выделения памяти, хотя логика остаётся корректной».
Опираться на семантику «неизменяемые `Map` и `Set` возвращают новое значение после добавления или удаления; исходная коллекция остаётся доступной без изменений», но отдельно проверять ограничение «игнорирование результата `updated` или `+` создаёт видимость изменения, хотя фактически новое значение потеряно».
Вопрос 13 из 20
При исправлении темы «Преобразования» на ревью уже воспроизвели проблему: Цепочка из многих промежуточных коллекций может дать лишние выделения памяти, хотя логика остаётся корректной. Какую правку стоит принять?
Scala Преобразования: решение на ревью Копировать
val result = List(1,2,3,4).filter(_ % 2 == 0).map(_ * 10)
println(result.mkString("/"))
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Всегда присваивайте результат преобразования или возвращайте его из функции; имя старой версии сохраняйте, если оно ещё нужно.
Хранить один `Iterator` в поле и выдавать его каждому потребителю, чтобы не создавать новые обходы.
Сначала добивайтесь ясности, затем измеряйте; для длинной цепочки над большим набором рассмотрите `view` или `iterator`.
Использовать `lazy val` для любого дорогого вычисления, не проверяя срок жизни результата и объём удерживаемых объектов.
В горячем участке проверяйте фактический тип коллекции и сложность используемых операций, а не только удобство метода.
Вопрос 14 из 20
В контракте темы «Преобразования» какое решение не превращает частный успешный случай в общее обещание?
Опираться на семантику «неизменяемые `Map` и `Set` возвращают новое значение после добавления или удаления; исходная коллекция остаётся доступной без изменений», но отдельно проверять ограничение «цепочка из многих промежуточных коллекций может дать лишние выделения памяти, хотя логика остаётся корректной».
Опираться на семантику «`map`, `filter`, `collect` и `flatMap` создают преобразованный результат и не меняют исходную неизменяемую коллекцию», но отдельно проверять ограничение «цепочка из многих промежуточных коллекций может дать лишние выделения памяти, хотя логика остаётся корректной».
Опираться на семантику «`map`, `filter`, `collect` и `flatMap` создают преобразованный результат и не меняют исходную неизменяемую коллекцию», но отдельно проверять ограничение «игнорирование результата `updated` или `+` создаёт видимость изменения, хотя фактически новое значение потеряно».
Опираться на семантику «`List` оптимальна для добавления и снятия элемента с головы, а `Vector` даёт более ровный доступ и обновление по индексу», но отдельно проверять ограничение «частое добавление в конец `List` через `:+` приводит к повторным проходам и квадратичной работе на растущем наборе».
Опираться на семантику «`map`, `filter`, `collect` и `flatMap` создают преобразованный результат и не меняют исходную неизменяемую коллекцию», но отдельно проверять ограничение «успешная обработка одного значения подтверждает совместимость всех вариантов модели».