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 — Жизненный цикл фонового задания
# Проследите выполнение и выберите точный результат.
class ReceiptJob < ApplicationJob
  def perform(order_id)
    order = Order.find_by(id: order_id)
    return unless order
    ReceiptSender.call(order)
  end
end
Вопрос 2 из 25
Как следует прочитать результат показанного примера «Повторные попытки»? Правильным считается только полностью согласованное утверждение.
RubyRuby — Повторные попытки
# Проследите выполнение и выберите точный результат.
class SyncJob < ApplicationJob
  retry_on Net::ReadTimeout, wait: :polynomially_longer, attempts: 5
  discard_on ActiveRecord::RecordNotFound

  def perform(id)
    RemoteSync.call(Model.find(id))
  end
end
Вопрос 3 из 25
Какой фактический результат даст этот фрагмент по теме «Идемпотентность»? Верный вариант не содержит частично правильной подмены причины или следствия.
RubyRuby — Идемпотентность
# Проследите выполнение и выберите точный результат.
Delivery.create_or_find_by!(delivery_key: "receipt:#{order.id}") do |d|
  d.order_id = order.id
end
# unique index on deliveries.delivery_key
Вопрос 4 из 25
Не запуская пример, выберите точный итог для блока «Наблюдаемость». Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
RubyRuby — Наблюдаемость
# Проследите выполнение и выберите точный результат.
def perform(order_id)
  Rails.logger.info(
    event: 'receipt_job_started',
    job_id: job_id,
    order_id: order_id,
    executions: executions
  )
end
Вопрос 5 из 25
Какой вывод учитывает и возвращаемое значение, и побочный эффект в теме «Выбор компромисса»? В правильном ответе вторая часть действительно объясняет или проверяет первую.
RubyRuby — Выбор компромисса
# Проследите выполнение и выберите точный результат.
report = Report.create!(status: :pending)
GenerateReportJob.perform_later(report.id)
render json: { id: report.id, status: report.status }, status: :accepted
Вопрос 6 из 25
Какой рабочий сбой вероятнее всего связан именно с механизмом «Жизненный цикл фонового задания»? В правильном ответе вторая часть действительно объясняет или проверяет первую.
RubyRuby — Жизненный цикл фонового задания
# Обычный запуск проходит. Найдите скрытый риск.
class ReceiptJob < ApplicationJob
  def perform(order_id)
    order = Order.find_by(id: order_id)
    return unless order
    ReceiptSender.call(order)
  end
end
Вопрос 7 из 25
Обычный сценарий проходит. Какой риск остаётся в теме «Повторные попытки»? В правильном ответе вторая часть действительно объясняет или проверяет первую.
RubyRuby — Повторные попытки
# Обычный запуск проходит. Найдите скрытый риск.
class SyncJob < ApplicationJob
  retry_on Net::ReadTimeout, wait: :polynomially_longer, attempts: 5
  discard_on ActiveRecord::RecordNotFound

  def perform(id)
    RemoteSync.call(Model.find(id))
  end
end
Вопрос 8 из 25
Базовый пример выглядит корректно. Что всё же нарушает контракт в блоке «Идемпотентность»? Смотрите на всю причинную связку, а не только на знакомую формулировку.
RubyRuby — Идемпотентность
# Обычный запуск проходит. Найдите скрытый риск.
Delivery.create_or_find_by!(delivery_key: "receipt:#{order.id}") do |d|
  d.order_id = order.id
end
# unique index on deliveries.delivery_key
Вопрос 9 из 25
Какое допущение делает этот код по теме «Наблюдаемость» ненадёжным? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
RubyRuby — Наблюдаемость
# Обычный запуск проходит. Найдите скрытый риск.
def perform(order_id)
  Rails.logger.info(
    event: 'receipt_job_started',
    job_id: job_id,
    order_id: order_id,
    executions: executions
  )
end
Вопрос 10 из 25
Какое скрытое условие делает фрагмент «Выбор компромисса» хрупким? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
RubyRuby — Выбор компромисса
# Обычный запуск проходит. Найдите скрытый риск.
report = Report.create!(status: :pending)
GenerateReportJob.perform_later(report.id)
render json: { id: report.id, status: report.status }, status: :accepted
Вопрос 11 из 25
Как сформулировать правило блока «Жизненный цикл фонового задания» без лишних обещаний? Смотрите на всю причинную связку, а не только на знакомую формулировку.
Вопрос 12 из 25
Какой контракт нужно помнить при ревью кода по теме «Повторные попытки»? Оценивайте ответ целиком: обе части утверждения должны быть точными.
Вопрос 13 из 25
Что является технической причиной наблюдаемого поведения «Идемпотентность»? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
Вопрос 14 из 25
Какой механизм объясняет и обычный, и граничный сценарий «Наблюдаемость»? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
Вопрос 15 из 25
На какой контракт языка или библиотеки опирается результат блока «Выбор компромисса»? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
Вопрос 16 из 25
Какое исправление уменьшает риск, не скрывая исходное поведение «Жизненный цикл фонового задания»? Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
RubyRuby — Жизненный цикл фонового задания
# Выберите изменение, которое исправляет причину.
class ReceiptJob < ApplicationJob
  def perform(order_id)
    order = Order.find_by(id: order_id)
    return unless order
    ReceiptSender.call(order)
  end
end
Вопрос 17 из 25
Какой рефакторинг переводит правило «Повторные попытки» из договорённости в проверяемый контракт? Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
RubyRuby — Повторные попытки
# Выберите изменение, которое исправляет причину.
class SyncJob < ApplicationJob
  retry_on Net::ReadTimeout, wait: :polynomially_longer, attempts: 5
  discard_on ActiveRecord::RecordNotFound

  def perform(id)
    RemoteSync.call(Model.find(id))
  end
end
Вопрос 18 из 25
Какое инженерное решение лучше всего соответствует механизму «Идемпотентность»? Правильным считается только полностью согласованное утверждение.
RubyRuby — Идемпотентность
# Выберите изменение, которое исправляет причину.
Delivery.create_or_find_by!(delivery_key: "receipt:#{order.id}") do |d|
  d.order_id = order.id
end
# unique index on deliveries.delivery_key
Вопрос 19 из 25
Какой подход сохраняет намерение кода и устраняет дефект в теме «Наблюдаемость»? Правильным считается только полностью согласованное утверждение.
RubyRuby — Наблюдаемость
# Выберите изменение, которое исправляет причину.
def perform(order_id)
  Rails.logger.info(
    event: 'receipt_job_started',
    job_id: job_id,
    order_id: order_id,
    executions: executions
  )
end
Вопрос 20 из 25
Какой вариант правки выдержит граничный сценарий темы «Выбор компромисса»? Правильным считается только полностью согласованное утверждение.
Вопрос 21 из 25
Какой регрессионный пример обнаружит ошибочное обобщение в теме «Жизненный цикл фонового задания»? Выберите связку, в которой верны и основной вывод, и его обоснование.
Вопрос 22 из 25
Какой контрпример проверит реальную границу механизма «Повторные попытки»? Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
Вопрос 23 из 25
Какую границу контракта «Идемпотентность» нужно закрепить отдельным тестом? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
Вопрос 24 из 25
Что следует добавить в набор проверок по теме «Наблюдаемость», чтобы поймать редкий отказ? Проверьте обе половины ответа: частично верный вариант остаётся неверным.
Вопрос 25 из 25
Какой сценарий должен падать на старой реализации и проходить после исправления «Выбор компромисса»? Нужен вариант без логического разрыва между первой и второй частью.

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

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

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

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