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

Rails: маршруты и контроллеры

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

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. Время — 70 минут. У каждого задания ровно один правильный вариант. Фрагменты рассчитаны на Ruby 4.0.6; задания Rails — на Rails 8.1.3. После завершения откроются общий процент, 5 тематических результатов и разбор всех ответов.
Вопрос 1 из 25
Как следует прочитать результат показанного примера «Маршрутизация Rails»? Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
RubyRuby — Маршрутизация Rails
# Проследите выполнение и выберите точный результат.
Rails.application.routes.draw do
  get '/reports/:id', to: 'reports#show'
  get '/reports/summary', to: 'reports#summary'
end
Вопрос 2 из 25
Проследите выполнение фрагмента. Какой результат верен для темы «Параметры»? Выберите связку, в которой верны и основной вывод, и его обоснование.
RubyRuby — Параметры
# Проследите выполнение и выберите точный результат.
def user_params
  params.require(:user).permit(:email, :name)
end
# params: { user: { email: 'a@b', name: 'A', admin: true } }
Вопрос 3 из 25
Как изменится состояние программы после выполнения кода по теме «Фильтры»? Оценивайте ответ целиком: обе части утверждения должны быть точными.
RubyRuby — Фильтры
# Проследите выполнение и выберите точный результат.
class ReportsController < ApplicationController
  before_action :require_user, only: :show

  def show
    render json: { ok: true }
  end

  private
  def require_user
    return if current_user
    redirect_to('/login')
    AuditLog.create!(event: 'access_denied')
  end
end
Вопрос 4 из 25
Какое описание результата точно соответствует показанному коду «Формирование ответа»? Верный вариант не содержит частично правильной подмены причины или следствия.
RubyRuby — Формирование ответа
# Проследите выполнение и выберите точный результат.
def show
  return render json: { error: 'missing' }, status: :not_found unless record
  render json: record, status: :ok
end
Вопрос 5 из 25
Что произойдёт после последней строки в примере по теме «Контроль состояния»? Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
RubyRuby — Контроль состояния
# Проследите выполнение и выберите точный результат.
resources :sessions, only: [:create, :destroy]

class SessionsController < ApplicationController
  def destroy
    current_session.destroy!
    head :no_content
  end
end
Вопрос 6 из 25
Какой дефект может проявиться на границе показанного сценария «Маршрутизация Rails»? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
RubyRuby — Маршрутизация Rails
# Обычный запуск проходит. Найдите скрытый риск.
Rails.application.routes.draw do
  get '/reports/:id', to: 'reports#show'
  get '/reports/summary', to: 'reports#summary'
end
Вопрос 7 из 25
Какой дефект может проявиться на границе показанного сценария «Параметры»? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
RubyRuby — Параметры
# Обычный запуск проходит. Найдите скрытый риск.
def user_params
  params.require(:user).permit(:email, :name)
end
# params: { user: { email: 'a@b', name: 'A', admin: true } }
Вопрос 8 из 25
Какой отказ связан с причиной в коде, а не с внешним шумом, в теме «Фильтры»? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
RubyRuby — Фильтры
# Обычный запуск проходит. Найдите скрытый риск.
class ReportsController < ApplicationController
  before_action :require_user, only: :show

  def show
    render json: { ok: true }
  end

  private
  def require_user
    return if current_user
    redirect_to('/login')
    AuditLog.create!(event: 'access_denied')
  end
end
Вопрос 9 из 25
Где в показанном решении «Формирование ответа» скрыт дефект, который проявится не на каждом входе? Верный вариант не содержит частично правильной подмены причины или следствия.
RubyRuby — Формирование ответа
# Обычный запуск проходит. Найдите скрытый риск.
def show
  return render json: { error: 'missing' }, status: :not_found unless record
  render json: record, status: :ok
end
Вопрос 10 из 25
Где в показанном решении «Контроль состояния» скрыт дефект, который проявится не на каждом входе? Смотрите на всю причинную связку, а не только на знакомую формулировку.
RubyRuby — Контроль состояния
# Обычный запуск проходит. Найдите скрытый риск.
resources :sessions, only: [:create, :destroy]

class SessionsController < ApplicationController
  def destroy
    current_session.destroy!
    head :no_content
  end
end
Вопрос 11 из 25
Какой контракт нужно помнить при ревью кода по теме «Маршрутизация Rails»? Смотрите на всю причинную связку, а не только на знакомую формулировку.
Вопрос 12 из 25
На какой контракт языка или библиотеки опирается результат блока «Параметры»? Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
Вопрос 13 из 25
На какой контракт языка или библиотеки опирается результат блока «Фильтры»? Смотрите на всю причинную связку, а не только на знакомую формулировку.
Вопрос 14 из 25
Какое правило Ruby или Rails объясняет поведение в теме «Формирование ответа»? Верный вариант не содержит частично правильной подмены причины или следствия.
Вопрос 15 из 25
Какое общее правило связывает результат и риск в разделе «Контроль состояния»? Выберите связку, в которой верны и основной вывод, и его обоснование.
Вопрос 16 из 25
Какое изменение устраняет причину проблемы в теме «Маршрутизация Rails», а не маскирует симптом? Проверьте обе половины ответа: частично верный вариант остаётся неверным.
RubyRuby — Маршрутизация Rails
# Выберите изменение, которое исправляет причину.
Rails.application.routes.draw do
  get '/reports/:id', to: 'reports#show'
  get '/reports/summary', to: 'reports#summary'
end
Вопрос 17 из 25
Какой рефакторинг делает контракт блока «Параметры» явным и проверяемым? Смотрите на всю причинную связку, а не только на знакомую формулировку.
RubyRuby — Параметры
# Выберите изменение, которое исправляет причину.
def user_params
  params.require(:user).permit(:email, :name)
end
# params: { user: { email: 'a@b', name: 'A', admin: true } }
Вопрос 18 из 25
Какое действие добавляет недостающую гарантию в блоке «Фильтры»? Смотрите на всю причинную связку, а не только на знакомую формулировку.
RubyRuby — Фильтры
# Выберите изменение, которое исправляет причину.
class ReportsController < ApplicationController
  before_action :require_user, only: :show

  def show
    render json: { ok: true }
  end

  private
  def require_user
    return if current_user
    redirect_to('/login')
    AuditLog.create!(event: 'access_denied')
  end
end
Вопрос 19 из 25
Какой вариант решения «Формирование ответа» останется понятным при сопровождении? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
RubyRuby — Формирование ответа
# Выберите изменение, которое исправляет причину.
def show
  return render json: { error: 'missing' }, status: :not_found unless record
  render json: record, status: :ok
end
Вопрос 20 из 25
Какой рефакторинг делает контракт блока «Контроль состояния» явным и проверяемым? Проверьте обе половины ответа: частично верный вариант остаётся неверным.
Вопрос 21 из 25
Какую границу контракта «Маршрутизация Rails» нужно закрепить отдельным тестом? Верный вариант не содержит частично правильной подмены причины или следствия.
Вопрос 22 из 25
Какой граничный сценарий лучше всего проверит решение по теме «Параметры»? Правильным считается только полностью согласованное утверждение.
Вопрос 23 из 25
Какую проверку стоит добавить, чтобы не ограничиться счастливым путём «Фильтры»? Правильным считается только полностью согласованное утверждение.
Вопрос 24 из 25
Какую границу контракта «Формирование ответа» нужно закрепить отдельным тестом? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
Вопрос 25 из 25
Какой регрессионный пример обнаружит ошибочное обобщение в теме «Контроль состояния»? Выберите связку, в которой верны и основной вывод, и его обоснование.

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

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

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

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