RB Ruby  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

API на Ruby on Rails

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. Время — 85 минут. У каждого задания ровно один правильный вариант. Фрагменты рассчитаны на Ruby 4.0.6; задания Rails — на Rails 8.1.3. После завершения откроются общий процент, 6 тематических результатов и разбор всех ответов.
Вопрос 1 из 30
Что произойдёт после последней строки в примере по теме «Сериализация»? Выберите связку, в которой верны и основной вывод, и его обоснование.
RubyRuby — Сериализация
# Проследите выполнение и выберите точный результат.
payload = {
  id: user.id,
  name: user.name,
  created_at: user.created_at.iso8601
}
render json: payload
Вопрос 2 из 30
Какое описание результата точно соответствует показанному коду «Версионирование»? Выберите связку, в которой верны и основной вывод, и его обоснование.
RubyRuby — Версионирование
# Проследите выполнение и выберите точный результат.
namespace :api do
  namespace :v1 do
    resources :orders, only: :index
  end
  namespace :v2 do
    resources :orders, only: :index
  end
end
Вопрос 3 из 30
Проследите выполнение фрагмента. Какой результат верен для темы «Аутентификация»? Проверьте обе половины ответа: частично верный вариант остаётся неверным.
RubyRuby — Аутентификация
# Проследите выполнение и выберите точный результат.
def show
  order = current_user.orders.find(params[:id])
  render json: OrderSerializer.new(order)
end
Вопрос 4 из 30
Не запуская пример, выберите точный итог для блока «Ошибки протокола». Нужен вариант без логического разрыва между первой и второй частью.
RubyRuby — Ошибки протокола
# Проследите выполнение и выберите точный результат.
rescue_from ActiveRecord::RecordInvalid do |error|
  render json: {
    error: 'validation_failed',
    fields: error.record.errors.to_hash
  }, status: :unprocessable_entity
end
Вопрос 5 из 30
Разберите выражения по порядку. Как завершится фрагмент из раздела «Наблюдаемость и диагностика»? Выберите связку, в которой верны и основной вывод, и его обоснование.
RubyRuby — Наблюдаемость и диагностика
# Проследите выполнение и выберите точный результат.
Rails.logger.info(
  event: 'api_request_finished',
  request_id: request.request_id,
  route: request.path_parameters[:controller],
  status: response.status,
  duration_ms: elapsed_ms
)
Вопрос 6 из 30
Какой вариант верно описывает состояние объектов после выполнения кода «Надёжность в эксплуатации»? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
RubyRuby — Надёжность в эксплуатации
# Проследите выполнение и выберите точный результат.
result = PaymentCommand.call(
  user: current_user,
  amount: params[:amount],
  idempotency_key: request.headers['Idempotency-Key']
)
render json: result, status: result.created? ? :created : :ok
Вопрос 7 из 30
Какой отказ связан с причиной в коде, а не с внешним шумом, в теме «Сериализация»? Нужен вариант без логического разрыва между первой и второй частью.
RubyRuby — Сериализация
# Обычный запуск проходит. Найдите скрытый риск.
payload = {
  id: user.id,
  name: user.name,
  created_at: user.created_at.iso8601
}
render json: payload
Вопрос 8 из 30
Какой отказ связан с причиной в коде, а не с внешним шумом, в теме «Версионирование»? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
RubyRuby — Версионирование
# Обычный запуск проходит. Найдите скрытый риск.
namespace :api do
  namespace :v1 do
    resources :orders, only: :index
  end
  namespace :v2 do
    resources :orders, only: :index
  end
end
Вопрос 9 из 30
Что может сломаться при переносе этого решения «Аутентификация» в рабочую систему? В правильном ответе вторая часть действительно объясняет или проверяет первую.
RubyRuby — Аутентификация
# Обычный запуск проходит. Найдите скрытый риск.
def show
  order = current_user.orders.find(params[:id])
  render json: OrderSerializer.new(order)
end
Вопрос 10 из 30
Какое допущение делает этот код по теме «Ошибки протокола» ненадёжным? Проверьте обе половины ответа: частично верный вариант остаётся неверным.
RubyRuby — Ошибки протокола
# Обычный запуск проходит. Найдите скрытый риск.
rescue_from ActiveRecord::RecordInvalid do |error|
  render json: {
    error: 'validation_failed',
    fields: error.record.errors.to_hash
  }, status: :unprocessable_entity
end
Вопрос 11 из 30
Какое допущение делает этот код по теме «Наблюдаемость и диагностика» ненадёжным? Нужен вариант без логического разрыва между первой и второй частью.
RubyRuby — Наблюдаемость и диагностика
# Обычный запуск проходит. Найдите скрытый риск.
Rails.logger.info(
  event: 'api_request_finished',
  request_id: request.request_id,
  route: request.path_parameters[:controller],
  status: response.status,
  duration_ms: elapsed_ms
)
Вопрос 12 из 30
Какое допущение делает этот код по теме «Надёжность в эксплуатации» ненадёжным? Нужен вариант без логического разрыва между первой и второй частью.
RubyRuby — Надёжность в эксплуатации
# Обычный запуск проходит. Найдите скрытый риск.
result = PaymentCommand.call(
  user: current_user,
  amount: params[:amount],
  idempotency_key: request.headers['Idempotency-Key']
)
render json: result, status: result.created? ? :created : :ok
Вопрос 13 из 30
Какой контракт нужно помнить при ревью кода по теме «Сериализация»? В правильном ответе вторая часть действительно объясняет или проверяет первую.
Вопрос 14 из 30
Какое общее правило связывает результат и риск в разделе «Версионирование»? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
Вопрос 15 из 30
На какой контракт языка или библиотеки опирается результат блока «Аутентификация»? Нужен вариант без логического разрыва между первой и второй частью.
Вопрос 16 из 30
Какой механизм отделяет верный разбор от похожего, но ошибочного объяснения «Ошибки протокола»? Проверьте обе половины ответа: частично верный вариант остаётся неверным.
Вопрос 17 из 30
Как сформулировать правило блока «Наблюдаемость и диагностика» без лишних обещаний? Смотрите на всю причинную связку, а не только на знакомую формулировку.
Вопрос 18 из 30
Как сформулировать правило блока «Надёжность в эксплуатации» без лишних обещаний? Верный вариант не содержит частично правильной подмены причины или следствия.
Вопрос 19 из 30
Какой рефакторинг переводит правило «Сериализация» из договорённости в проверяемый контракт? Правильным считается только полностью согласованное утверждение.
RubyRuby — Сериализация
# Выберите изменение, которое исправляет причину.
payload = {
  id: user.id,
  name: user.name,
  created_at: user.created_at.iso8601
}
render json: payload
Вопрос 20 из 30
Какой рефакторинг делает контракт блока «Версионирование» явным и проверяемым? Верный вариант не содержит частично правильной подмены причины или следствия.
RubyRuby — Версионирование
# Выберите изменение, которое исправляет причину.
namespace :api do
  namespace :v1 do
    resources :orders, only: :index
  end
  namespace :v2 do
    resources :orders, only: :index
  end
end
Вопрос 21 из 30
Какое действие добавляет недостающую гарантию в блоке «Аутентификация»? Верный вариант не содержит частично правильной подмены причины или следствия.
RubyRuby — Аутентификация
# Выберите изменение, которое исправляет причину.
def show
  order = current_user.orders.find(params[:id])
  render json: OrderSerializer.new(order)
end
Вопрос 22 из 30
Что следует изменить в решении «Ошибки протокола», чтобы закрыть исходный риск? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
RubyRuby — Ошибки протокола
# Выберите изменение, которое исправляет причину.
rescue_from ActiveRecord::RecordInvalid do |error|
  render json: {
    error: 'validation_failed',
    fields: error.record.errors.to_hash
  }, status: :unprocessable_entity
end
Вопрос 23 из 30
Что следует изменить в решении «Наблюдаемость и диагностика», чтобы закрыть исходный риск? Выберите связку, в которой верны и основной вывод, и его обоснование.
RubyRuby — Наблюдаемость и диагностика
# Выберите изменение, которое исправляет причину.
Rails.logger.info(
  event: 'api_request_finished',
  request_id: request.request_id,
  route: request.path_parameters[:controller],
  status: response.status,
  duration_ms: elapsed_ms
)
Вопрос 24 из 30
Какое изменение устраняет причину проблемы в теме «Надёжность в эксплуатации», а не маскирует симптом? Оценивайте ответ целиком: обе части утверждения должны быть точными.
RubyRuby — Надёжность в эксплуатации
# Выберите изменение, которое исправляет причину.
result = PaymentCommand.call(
  user: current_user,
  amount: params[:amount],
  idempotency_key: request.headers['Idempotency-Key']
)
render json: result, status: result.created? ? :created : :ok
Вопрос 25 из 30
Какой контрпример проверит реальную границу механизма «Сериализация»? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
Вопрос 26 из 30
Какой сценарий должен падать на старой реализации и проходить после исправления «Версионирование»? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
Вопрос 27 из 30
Какой случай покажет, что исправление «Аутентификация» не держится на удачном входе? Проверьте обе половины ответа: частично верный вариант остаётся неверным.
Вопрос 28 из 30
Что нужно воспроизвести отдельно перед выпуском изменения «Ошибки протокола»? Верный вариант не содержит частично правильной подмены причины или следствия.
Вопрос 29 из 30
Какую границу контракта «Наблюдаемость и диагностика» нужно закрепить отдельным тестом? Верный вариант не содержит частично правильной подмены причины или следствия.
Вопрос 30 из 30
Что нужно воспроизвести отдельно перед выпуском изменения «Надёжность в эксплуатации»? Проверьте обе половины ответа: частично верный вариант остаётся неверным.

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

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

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

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