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

Регулярные выражения Ruby

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

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. Время — 70 минут. У каждого задания ровно один правильный вариант. Фрагменты рассчитаны на Ruby 4.0.6; задания Rails — на Rails 8.1.3. После завершения откроются общий процент, 5 тематических результатов и разбор всех ответов.
Вопрос 1 из 25
Какой вывод учитывает и возвращаемое значение, и побочный эффект в теме «Группы»? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
RubyRuby — Группы
# Проследите выполнение и выберите точный результат.
pattern = /\A\+(\d{1,3})-(\d+)\z/
match = pattern.match('+372-5551234')
p match&.captures
Вопрос 2 из 25
Проследите выполнение фрагмента. Какой результат верен для темы «Контекстные проверки lookaround»? Выберите связку, в которой верны и основной вывод, и его обоснование.
RubyRuby — Контекстные проверки lookaround
# Проследите выполнение и выберите точный результат.
text = 'mass=42kg, count=7'
match = text.match(/\d+(?=kg)/)
p [match[0], match.begin(0), match.end(0)]
Вопрос 3 из 25
Что произойдёт после последней строки в примере по теме «Именованные захваты»? Выберите связку, в которой верны и основной вывод, и его обоснование.
RubyRuby — Именованные захваты
# Проследите выполнение и выберите точный результат.
pattern = /\A(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})\z/
match = pattern.match('2026-07-16')
p match.named_captures
Вопрос 4 из 25
Что покажет выполнение этого фрагмента из раздела «Безопасность шаблона»? Выберите связку, в которой верны и основной вывод, и его обоснование.
RubyRuby — Безопасность шаблона
# Проследите выполнение и выберите точный результат.
needle = 'a+b'
pattern = /\A#{Regexp.escape(needle)}\z/
p [pattern.match?('a+b'), pattern.match?('aaab')]
Вопрос 5 из 25
Какой вывод учитывает и возвращаемое значение, и побочный эффект в теме «Проверка допущений»? Нужен вариант без логического разрыва между первой и второй частью.
RubyRuby — Проверка допущений
# Проследите выполнение и выберите точный результат.
text = "SAFE
DROP"
p(/^SAFE$/.match?(text))
p(/\ASAFE\z/.match?(text))
Вопрос 6 из 25
Базовый пример выглядит корректно. Что всё же нарушает контракт в блоке «Группы»? Проверьте обе половины ответа: частично верный вариант остаётся неверным.
RubyRuby — Группы
# Обычный запуск проходит. Найдите скрытый риск.
pattern = /\A\+(\d{1,3})-(\d+)\z/
match = pattern.match('+372-5551234')
p match&.captures
Вопрос 7 из 25
Какой дефект может проявиться на границе показанного сценария «Контекстные проверки lookaround»? Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
RubyRuby — Контекстные проверки lookaround
# Обычный запуск проходит. Найдите скрытый риск.
text = 'mass=42kg, count=7'
match = text.match(/\d+(?=kg)/)
p [match[0], match.begin(0), match.end(0)]
Вопрос 8 из 25
Какое скрытое условие делает фрагмент «Именованные захваты» хрупким? Проверьте обе половины ответа: частично верный вариант остаётся неверным.
RubyRuby — Именованные захваты
# Обычный запуск проходит. Найдите скрытый риск.
pattern = /\A(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})\z/
match = pattern.match('2026-07-16')
p match.named_captures
Вопрос 9 из 25
Какой рабочий сбой вероятнее всего связан именно с механизмом «Безопасность шаблона»? Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
RubyRuby — Безопасность шаблона
# Обычный запуск проходит. Найдите скрытый риск.
needle = 'a+b'
pattern = /\A#{Regexp.escape(needle)}\z/
p [pattern.match?('a+b'), pattern.match?('aaab')]
Вопрос 10 из 25
Какой риск не исчезает после успешного запуска кода «Проверка допущений»? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
RubyRuby — Проверка допущений
# Обычный запуск проходит. Найдите скрытый риск.
text = "SAFE
DROP"
p(/^SAFE$/.match?(text))
p(/\ASAFE\z/.match?(text))
Вопрос 11 из 25
Что является технической причиной наблюдаемого поведения «Группы»? Оценивайте ответ целиком: обе части утверждения должны быть точными.
Вопрос 12 из 25
Какое общее правило связывает результат и риск в разделе «Контекстные проверки lookaround»? Смотрите на всю причинную связку, а не только на знакомую формулировку.
Вопрос 13 из 25
Какой механизм отделяет верный разбор от похожего, но ошибочного объяснения «Именованные захваты»? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
Вопрос 14 из 25
Какое правило Ruby или Rails объясняет поведение в теме «Безопасность шаблона»? Оценивайте ответ целиком: обе части утверждения должны быть точными.
Вопрос 15 из 25
Какое правило остаётся верным, даже если вход и порядок вызовов изменятся, в теме «Проверка допущений»? Оценивайте ответ целиком: обе части утверждения должны быть точными.
Вопрос 16 из 25
Какой вариант правки выдержит граничный сценарий темы «Группы»? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
RubyRuby — Группы
# Выберите изменение, которое исправляет причину.
pattern = /\A\+(\d{1,3})-(\d+)\z/
match = pattern.match('+372-5551234')
p match&.captures
Вопрос 17 из 25
Какое изменение устраняет причину проблемы в теме «Контекстные проверки lookaround», а не маскирует симптом? В правильном ответе вторая часть действительно объясняет или проверяет первую.
RubyRuby — Контекстные проверки lookaround
# Выберите изменение, которое исправляет причину.
text = 'mass=42kg, count=7'
match = text.match(/\d+(?=kg)/)
p [match[0], match.begin(0), match.end(0)]
Вопрос 18 из 25
Какой вариант решения «Именованные захваты» останется понятным при сопровождении? Верный вариант не содержит частично правильной подмены причины или следствия.
RubyRuby — Именованные захваты
# Выберите изменение, которое исправляет причину.
pattern = /\A(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})\z/
match = pattern.match('2026-07-16')
p match.named_captures
Вопрос 19 из 25
Какое изменение устраняет причину проблемы в теме «Безопасность шаблона», а не маскирует симптом? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
RubyRuby — Безопасность шаблона
# Выберите изменение, которое исправляет причину.
needle = 'a+b'
pattern = /\A#{Regexp.escape(needle)}\z/
p [pattern.match?('a+b'), pattern.match?('aaab')]
Вопрос 20 из 25
Какой рефакторинг переводит правило «Проверка допущений» из договорённости в проверяемый контракт? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
Вопрос 21 из 25
Какой тест даст новую информацию о надёжности решения «Группы»? Смотрите на всю причинную связку, а не только на знакомую формулировку.
Вопрос 22 из 25
Какую границу контракта «Контекстные проверки lookaround» нужно закрепить отдельным тестом? Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
Вопрос 23 из 25
Какой сценарий проверит не только результат, но и побочный эффект решения «Именованные захваты»? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
Вопрос 24 из 25
Какую границу контракта «Безопасность шаблона» нужно закрепить отдельным тестом? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
Вопрос 25 из 25
Какой тест даст новую информацию о надёжности решения «Проверка допущений»? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.

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

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

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

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