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

Массивы, Hash и Enumerable

Тест «Массивы, Hash и Enumerable» проверяет чтение кода, объяснение причин, поиск скрытых рисков, выбор исправления и работу с граничными сценариями. В нём 20 вопросов, 10 заданий с Ruby-кодом и 4 тематических шкал.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. Время — 55 минут. У каждого задания ровно один правильный вариант. Фрагменты рассчитаны на Ruby 4.0.6; задания Rails — на Rails 8.1.3. После завершения откроются общий процент, 4 тематических результатов и разбор всех ответов.
Вопрос 1 из 20
Разберите выражения по порядку. Как завершится фрагмент из раздела «Коллекции»? Оценивайте ответ целиком: обе части утверждения должны быть точными.
RubyRuby — Коллекции
# Проследите выполнение и выберите точный результат.
rows = Array.new(3, [])
rows[0] << :x
p rows
p rows.map(&:object_id)
Вопрос 2 из 20
Какая трассировка кода по теме «map и select» не теряет важную деталь? Нужен вариант без логического разрыва между первой и второй частью.
RubyRuby — map и select
# Проследите выполнение и выберите точный результат.
values = [1, 2, 3, 4]
result = values.select(&:odd?).map { |n| n * 10 }
p result
Вопрос 3 из 20
Что произойдёт после последней строки в примере по теме «Свёртка коллекции методом reduce»? Верный вариант не содержит частично правильной подмены причины или следствия.
RubyRuby — Свёртка коллекции методом reduce
# Проследите выполнение и выберите точный результат.
letters = %i[a b a]
counts = letters.reduce(Hash.new(0)) do |acc, item|
  acc[item] += 1
  acc
end
p counts
Вопрос 4 из 20
Не запуская пример, выберите точный итог для блока «Ленивые цепочки». Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
RubyRuby — Ленивые цепочки
# Проследите выполнение и выберите точный результат.
result = (1..).lazy
  .select { |n| (n % 7).zero? }
  .map { |n| n * n }
  .first(3)
p result
Вопрос 5 из 20
Почему успешный пример ещё не доказывает надёжность решения «Коллекции»? Проверьте обе половины ответа: частично верный вариант остаётся неверным.
RubyRuby — Коллекции
# Обычный запуск проходит. Найдите скрытый риск.
rows = Array.new(3, [])
rows[0] << :x
p rows
p rows.map(&:object_id)
Вопрос 6 из 20
Что может сломаться при переносе этого решения «map и select» в рабочую систему? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
RubyRuby — map и select
# Обычный запуск проходит. Найдите скрытый риск.
values = [1, 2, 3, 4]
result = values.select(&:odd?).map { |n| n * 10 }
p result
Вопрос 7 из 20
Что может сломаться при переносе этого решения «Свёртка коллекции методом reduce» в рабочую систему? Нужен вариант без логического разрыва между первой и второй частью.
RubyRuby — Свёртка коллекции методом reduce
# Обычный запуск проходит. Найдите скрытый риск.
letters = %i[a b a]
counts = letters.reduce(Hash.new(0)) do |acc, item|
  acc[item] += 1
  acc
end
p counts
Вопрос 8 из 20
Что в реализации по теме «Ленивые цепочки» требует исправления прежде всего? Смотрите на всю причинную связку, а не только на знакомую формулировку.
RubyRuby — Ленивые цепочки
# Обычный запуск проходит. Найдите скрытый риск.
result = (1..).lazy
  .select { |n| (n % 7).zero? }
  .map { |n| n * n }
  .first(3)
p result
Вопрос 9 из 20
Как сформулировать правило блока «Коллекции» без лишних обещаний? Правильным считается только полностью согласованное утверждение.
Вопрос 10 из 20
Какой механизм отделяет верный разбор от похожего, но ошибочного объяснения «map и select»? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
Вопрос 11 из 20
Какой механизм объясняет и обычный, и граничный сценарий «Свёртка коллекции методом reduce»? Смотрите на всю причинную связку, а не только на знакомую формулировку.
Вопрос 12 из 20
На какой контракт языка или библиотеки опирается результат блока «Ленивые цепочки»? Выберите связку, в которой верны и основной вывод, и его обоснование.
Вопрос 13 из 20
Какое инженерное решение лучше всего соответствует механизму «Коллекции»? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
RubyRuby — Коллекции
# Выберите изменение, которое исправляет причину.
rows = Array.new(3, [])
rows[0] << :x
p rows
p rows.map(&:object_id)
Вопрос 14 из 20
Какое исправление уменьшает риск, не скрывая исходное поведение «map и select»? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
RubyRuby — map и select
# Выберите изменение, которое исправляет причину.
values = [1, 2, 3, 4]
result = values.select(&:odd?).map { |n| n * 10 }
p result
Вопрос 15 из 20
Как исправить реализацию «Свёртка коллекции методом reduce» без новой скрытой зависимости? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
Вопрос 16 из 20
Что нужно поменять, чтобы ошибка «Ленивые цепочки» не возвращалась при следующем изменении? Правильным считается только полностью согласованное утверждение.
Вопрос 17 из 20
Какой сценарий должен падать на старой реализации и проходить после исправления «Коллекции»? Выберите связку, в которой верны и основной вывод, и его обоснование.
Вопрос 18 из 20
Какой регрессионный пример обнаружит ошибочное обобщение в теме «map и select»? В правильном ответе вторая часть действительно объясняет или проверяет первую.
Вопрос 19 из 20
Какой регрессионный пример обнаружит ошибочное обобщение в теме «Свёртка коллекции методом reduce»? Оценивайте ответ целиком: обе части утверждения должны быть точными.
Вопрос 20 из 20
Какую проверку стоит добавить, чтобы не ограничиться счастливым путём «Ленивые цепочки»? Нужен вариант без логического разрыва между первой и второй частью.

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

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

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

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