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

Файлы, потоки и работа с путями

Тест «Файлы, потоки и работа с путями» проверяет чтение кода, объяснение причин, поиск скрытых рисков, выбор исправления и работу с граничными сценариями. В нём 25 вопросов, 14 заданий с Ruby-кодом и 5 тематических шкал.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. Время — 70 минут. У каждого задания ровно один правильный вариант. Фрагменты рассчитаны на Ruby 4.0.6; задания Rails — на Rails 8.1.3. После завершения откроются общий процент, 5 тематических результатов и разбор всех ответов.
Вопрос 1 из 25
Какой вывод учитывает и возвращаемое значение, и побочный эффект в теме «Режимы открытия»? Оценивайте ответ целиком: обе части утверждения должны быть точными.
RubyRuby — Режимы открытия
# Проследите выполнение и выберите точный результат.
path = 'sample.txt'
File.write(path, 'old')
File.open(path, 'w') { |f| f.write('new') }
p File.read(path)
File.delete(path)
Вопрос 2 из 25
Разберите выражения по порядку. Как завершится фрагмент из раздела «Блоковое закрытие»? В правильном ответе вторая часть действительно объясняет или проверяет первую.
RubyRuby — Блоковое закрытие
# Проследите выполнение и выберите точный результат.
path = 'sample.txt'
File.write(path, "a
b
")
file = nil
File.open(path, 'r') do |f|
  file = f
  p f.gets.chomp
end
p file.closed?
File.delete(path)
Вопрос 3 из 25
Какой фактический результат даст этот фрагмент по теме «Работа с путями через Pathname»? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
RubyRuby — Работа с путями через Pathname
# Проследите выполнение и выберите точный результат.
require 'pathname'
root = Pathname('/srv/app')
path = root.join('logs', '..', 'data.json')
p path.cleanpath.to_s
p path.absolute?
Вопрос 4 из 25
Как изменится состояние программы после выполнения кода по теме «Потоковая обработка»? В правильном ответе вторая часть действительно объясняет или проверяет первую.
RubyRuby — Потоковая обработка
# Проследите выполнение и выберите точный результат.
path = 'numbers.txt'
File.write(path, "10
20
30
")
sum = File.open(path) do |io|
  io.each_line.sum { |line| Integer(line, 10) }
end
p sum
File.delete(path)
Вопрос 5 из 25
Что произойдёт после последней строки в примере по теме «Ошибки интеграции»? Правильным считается только полностью согласованное утверждение.
RubyRuby — Ошибки интеграции
# Проследите выполнение и выберите точный результат.
path = 'sample.txt'
File.write(path, 'data')
io = File.open(path)
io.close
begin
  io.read
rescue IOError => e
  p [e.class, e.message]
end
File.delete(path)
Вопрос 6 из 25
Какое скрытое условие делает фрагмент «Режимы открытия» хрупким? В правильном ответе вторая часть действительно объясняет или проверяет первую.
RubyRuby — Режимы открытия
# Обычный запуск проходит. Найдите скрытый риск.
path = 'sample.txt'
File.write(path, 'old')
File.open(path, 'w') { |f| f.write('new') }
p File.read(path)
File.delete(path)
Вопрос 7 из 25
Какое допущение делает этот код по теме «Блоковое закрытие» ненадёжным? Верный вариант не содержит частично правильной подмены причины или следствия.
RubyRuby — Блоковое закрытие
# Обычный запуск проходит. Найдите скрытый риск.
path = 'sample.txt'
File.write(path, "a
b
")
file = nil
File.open(path, 'r') do |f|
  file = f
  p f.gets.chomp
end
p file.closed?
File.delete(path)
Вопрос 8 из 25
Базовый пример выглядит корректно. Что всё же нарушает контракт в блоке «Работа с путями через Pathname»? Верный вариант не содержит частично правильной подмены причины или следствия.
RubyRuby — Работа с путями через Pathname
# Обычный запуск проходит. Найдите скрытый риск.
require 'pathname'
root = Pathname('/srv/app')
path = root.join('logs', '..', 'data.json')
p path.cleanpath.to_s
p path.absolute?
Вопрос 9 из 25
Что в реализации по теме «Потоковая обработка» требует исправления прежде всего? Оценивайте ответ целиком: обе части утверждения должны быть точными.
RubyRuby — Потоковая обработка
# Обычный запуск проходит. Найдите скрытый риск.
path = 'numbers.txt'
File.write(path, "10
20
30
")
sum = File.open(path) do |io|
  io.each_line.sum { |line| Integer(line, 10) }
end
p sum
File.delete(path)
Вопрос 10 из 25
Что может сломаться при переносе этого решения «Ошибки интеграции» в рабочую систему? Оценивайте ответ целиком: обе части утверждения должны быть точными.
RubyRuby — Ошибки интеграции
# Обычный запуск проходит. Найдите скрытый риск.
path = 'sample.txt'
File.write(path, 'data')
io = File.open(path)
io.close
begin
  io.read
rescue IOError => e
  p [e.class, e.message]
end
File.delete(path)
Вопрос 11 из 25
Что является технической причиной наблюдаемого поведения «Режимы открытия»? Выберите связку, в которой верны и основной вывод, и его обоснование.
Вопрос 12 из 25
Какое общее правило связывает результат и риск в разделе «Блоковое закрытие»? Нужен вариант без логического разрыва между первой и второй частью.
Вопрос 13 из 25
Какой механизм отделяет верный разбор от похожего, но ошибочного объяснения «Работа с путями через Pathname»? Выберите связку, в которой верны и основной вывод, и его обоснование.
Вопрос 14 из 25
Какое правило остаётся верным, даже если вход и порядок вызовов изменятся, в теме «Потоковая обработка»? Смотрите на всю причинную связку, а не только на знакомую формулировку.
Вопрос 15 из 25
Какое свойство Ruby или Rails определяет результат примера «Ошибки интеграции»? Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
Вопрос 16 из 25
Какое изменение устраняет причину проблемы в теме «Режимы открытия», а не маскирует симптом? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
RubyRuby — Режимы открытия
# Выберите изменение, которое исправляет причину.
path = 'sample.txt'
File.write(path, 'old')
File.open(path, 'w') { |f| f.write('new') }
p File.read(path)
File.delete(path)
Вопрос 17 из 25
Что следует изменить в решении «Блоковое закрытие», чтобы закрыть исходный риск? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
RubyRuby — Блоковое закрытие
# Выберите изменение, которое исправляет причину.
path = 'sample.txt'
File.write(path, "a
b
")
file = nil
File.open(path, 'r') do |f|
  file = f
  p f.gets.chomp
end
p file.closed?
File.delete(path)
Вопрос 18 из 25
Что нужно поменять, чтобы ошибка «Работа с путями через Pathname» не возвращалась при следующем изменении? Оценивайте ответ целиком: обе части утверждения должны быть точными.
RubyRuby — Работа с путями через Pathname
# Выберите изменение, которое исправляет причину.
require 'pathname'
root = Pathname('/srv/app')
path = root.join('logs', '..', 'data.json')
p path.cleanpath.to_s
p path.absolute?
Вопрос 19 из 25
Какой рефакторинг делает контракт блока «Потоковая обработка» явным и проверяемым? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
RubyRuby — Потоковая обработка
# Выберите изменение, которое исправляет причину.
path = 'numbers.txt'
File.write(path, "10
20
30
")
sum = File.open(path) do |io|
  io.each_line.sum { |line| Integer(line, 10) }
end
p sum
File.delete(path)
Вопрос 20 из 25
Какое инженерное решение лучше всего соответствует механизму «Ошибки интеграции»? Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
Вопрос 21 из 25
Какой сценарий должен падать на старой реализации и проходить после исправления «Режимы открытия»? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
Вопрос 22 из 25
Какой случай покажет, что исправление «Блоковое закрытие» не держится на удачном входе? Верный вариант не содержит частично правильной подмены причины или следствия.
Вопрос 23 из 25
Какой тест даст новую информацию о надёжности решения «Работа с путями через Pathname»? Правильным считается только полностью согласованное утверждение.
Вопрос 24 из 25
Какой контрпример проверит реальную границу механизма «Потоковая обработка»? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
Вопрос 25 из 25
Какую границу контракта «Ошибки интеграции» нужно закрепить отдельным тестом? Верный вариант не содержит частично правильной подмены причины или следствия.

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

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

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

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