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

Журналирование и наблюдаемость Rails

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. Время — 85 минут. У каждого задания ровно один правильный вариант. Фрагменты рассчитаны на Ruby 4.0.6; задания Rails — на Rails 8.1.3. После завершения откроются общий процент, 6 тематических результатов и разбор всех ответов.
Вопрос 1 из 30
Какой вывод учитывает и возвращаемое значение, и побочный эффект в теме «Структурные журналы»? Оценивайте ответ целиком: обе части утверждения должны быть точными.
RubyRuby — Структурные журналы
# Проследите выполнение и выберите точный результат.
Rails.logger.info(
  event: 'order_paid',
  order_id: order.id,
  amount_cents: order.amount_cents,
  currency: order.currency
)
Вопрос 2 из 30
Какой вариант верно описывает состояние объектов после выполнения кода «Метрики»? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
RubyRuby — Метрики
# Проследите выполнение и выберите точный результат.
METRICS.api_requests.increment(
  labels: {
    route: 'orders#create',
    status: response.status.to_s
  }
)
Вопрос 3 из 30
Проследите выполнение фрагмента. Какой результат верен для темы «Трассировка запроса»? Смотрите на всю причинную связку, а не только на знакомую формулировку.
RubyRuby — Трассировка запроса
# Проследите выполнение и выберите точный результат.
tracer.in_span('payments.authorize') do |span|
  span.set_attribute('payment.provider', provider_name)
  response = client.authorize(payload)
  span.set_attribute('http.status_code', response.status)
end
Вопрос 4 из 30
Какой фактический результат даст этот фрагмент по теме «Корреляция событий»? Одного совпавшего вывода недостаточно — проверьте также вторую часть ответа.
RubyRuby — Корреляция событий
# Проследите выполнение и выберите точный результат.
GenerateReportJob.perform_later(
  report.id,
  source_request_id: request.request_id
)
# worker пишет оба идентификатора в structured log
Вопрос 5 из 30
Какой вывод учитывает и возвращаемое значение, и побочный эффект в теме «Качество данных»? Смотрите на всю причинную связку, а не только на знакомую формулировку.
RubyRuby — Качество данных
# Проследите выполнение и выберите точный результат.
started = Process.clock_gettime(Process::CLOCK_MONOTONIC)
work.call
duration_ms = (Process.clock_gettime(Process::CLOCK_MONOTONIC) - started) * 1_000
Rails.logger.info(event: 'work_done', duration_ms: duration_ms.round(1))
Вопрос 6 из 30
Какое описание результата точно соответствует показанному коду «Воспроизводимость результата»? Оценивайте ответ целиком: обе части утверждения должны быть точными.
RubyRuby — Воспроизводимость результата
# Проследите выполнение и выберите точный результат.
context = {
  release: ENV['APP_REVISION'],
  ruby: RUBY_VERSION,
  rails: Rails.version,
  flags: FeatureFlags.snapshot_for(current_user)
}
ErrorReporter.report(error, context: context)
Вопрос 7 из 30
Какой дефект может проявиться на границе показанного сценария «Структурные журналы»? Правильным считается только полностью согласованное утверждение.
RubyRuby — Структурные журналы
# Обычный запуск проходит. Найдите скрытый риск.
Rails.logger.info(
  event: 'order_paid',
  order_id: order.id,
  amount_cents: order.amount_cents,
  currency: order.currency
)
Вопрос 8 из 30
Какое допущение делает этот код по теме «Метрики» ненадёжным? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
RubyRuby — Метрики
# Обычный запуск проходит. Найдите скрытый риск.
METRICS.api_requests.increment(
  labels: {
    route: 'orders#create',
    status: response.status.to_s
  }
)
Вопрос 9 из 30
Что может сломаться при переносе этого решения «Трассировка запроса» в рабочую систему? Нужен вариант без логического разрыва между первой и второй частью.
RubyRuby — Трассировка запроса
# Обычный запуск проходит. Найдите скрытый риск.
tracer.in_span('payments.authorize') do |span|
  span.set_attribute('payment.provider', provider_name)
  response = client.authorize(payload)
  span.set_attribute('http.status_code', response.status)
end
Вопрос 10 из 30
Какое скрытое условие делает фрагмент «Корреляция событий» хрупким? Правильным считается только полностью согласованное утверждение.
RubyRuby — Корреляция событий
# Обычный запуск проходит. Найдите скрытый риск.
GenerateReportJob.perform_later(
  report.id,
  source_request_id: request.request_id
)
# worker пишет оба идентификатора в structured log
Вопрос 11 из 30
Какой риск не исчезает после успешного запуска кода «Качество данных»? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
RubyRuby — Качество данных
# Обычный запуск проходит. Найдите скрытый риск.
started = Process.clock_gettime(Process::CLOCK_MONOTONIC)
work.call
duration_ms = (Process.clock_gettime(Process::CLOCK_MONOTONIC) - started) * 1_000
Rails.logger.info(event: 'work_done', duration_ms: duration_ms.round(1))
Вопрос 12 из 30
Почему успешный пример ещё не доказывает надёжность решения «Воспроизводимость результата»? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
RubyRuby — Воспроизводимость результата
# Обычный запуск проходит. Найдите скрытый риск.
context = {
  release: ENV['APP_REVISION'],
  ruby: RUBY_VERSION,
  rails: Rails.version,
  flags: FeatureFlags.snapshot_for(current_user)
}
ErrorReporter.report(error, context: context)
Вопрос 13 из 30
Как сформулировать правило блока «Структурные журналы» без лишних обещаний? Выберите связку, в которой верны и основной вывод, и его обоснование.
Вопрос 14 из 30
Какой механизм объясняет и обычный, и граничный сценарий «Метрики»? Сопоставьте не только итог, но и правило, риск или проверку, которые с ним связаны.
Вопрос 15 из 30
Какой механизм отделяет верный разбор от похожего, но ошибочного объяснения «Трассировка запроса»? В правильном ответе вторая часть действительно объясняет или проверяет первую.
Вопрос 16 из 30
Какое правило Ruby или Rails объясняет поведение в теме «Корреляция событий»? Проверьте обе половины ответа: частично верный вариант остаётся неверным.
Вопрос 17 из 30
Какой принцип темы «Качество данных» переносится на другие примеры того же типа? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
Вопрос 18 из 30
Какое общее правило связывает результат и риск в разделе «Воспроизводимость результата»? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
Вопрос 19 из 30
Какой вариант решения «Структурные журналы» останется понятным при сопровождении? Ищите не знакомые слова, а технически непротиворечивую пару утверждений.
RubyRuby — Структурные журналы
# Выберите изменение, которое исправляет причину.
Rails.logger.info(
  event: 'order_paid',
  order_id: order.id,
  amount_cents: order.amount_cents,
  currency: order.currency
)
Вопрос 20 из 30
Какое действие добавляет недостающую гарантию в блоке «Метрики»? В правильном ответе вторая часть действительно объясняет или проверяет первую.
RubyRuby — Метрики
# Выберите изменение, которое исправляет причину.
METRICS.api_requests.increment(
  labels: {
    route: 'orders#create',
    status: response.status.to_s
  }
)
Вопрос 21 из 30
Что следует изменить в решении «Трассировка запроса», чтобы закрыть исходный риск? Смотрите на всю причинную связку, а не только на знакомую формулировку.
RubyRuby — Трассировка запроса
# Выберите изменение, которое исправляет причину.
tracer.in_span('payments.authorize') do |span|
  span.set_attribute('payment.provider', provider_name)
  response = client.authorize(payload)
  span.set_attribute('http.status_code', response.status)
end
Вопрос 22 из 30
Какой вариант решения «Корреляция событий» останется понятным при сопровождении? Нужен вариант без логического разрыва между первой и второй частью.
RubyRuby — Корреляция событий
# Выберите изменение, которое исправляет причину.
GenerateReportJob.perform_later(
  report.id,
  source_request_id: request.request_id
)
# worker пишет оба идентификатора в structured log
Вопрос 23 из 30
Что следует изменить в решении «Качество данных», чтобы закрыть исходный риск? Не выбирайте ответ по одному точному фрагменту: вся формулировка должна выдерживать проверку.
RubyRuby — Качество данных
# Выберите изменение, которое исправляет причину.
started = Process.clock_gettime(Process::CLOCK_MONOTONIC)
work.call
duration_ms = (Process.clock_gettime(Process::CLOCK_MONOTONIC) - started) * 1_000
Rails.logger.info(event: 'work_done', duration_ms: duration_ms.round(1))
Вопрос 24 из 30
Какое изменение устраняет причину проблемы в теме «Воспроизводимость результата», а не маскирует симптом? Выберите связку, в которой верны и основной вывод, и его обоснование.
RubyRuby — Воспроизводимость результата
# Выберите изменение, которое исправляет причину.
context = {
  release: ENV['APP_REVISION'],
  ruby: RUBY_VERSION,
  rails: Rails.version,
  flags: FeatureFlags.snapshot_for(current_user)
}
ErrorReporter.report(error, context: context)
Вопрос 25 из 30
Какую проверку стоит добавить, чтобы не ограничиться счастливым путём «Структурные журналы»? Смотрите на всю причинную связку, а не только на знакомую формулировку.
Вопрос 26 из 30
Какой сценарий проверит не только результат, но и побочный эффект решения «Метрики»? В правильном ответе вторая часть действительно объясняет или проверяет первую.
Вопрос 27 из 30
Какой тест даст новую информацию о надёжности решения «Трассировка запроса»? Верный вариант не содержит частично правильной подмены причины или следствия.
Вопрос 28 из 30
Что нужно воспроизвести отдельно перед выпуском изменения «Корреляция событий»? Выберите связку, в которой верны и основной вывод, и его обоснование.
Вопрос 29 из 30
Какой сценарий проверит не только результат, но и побочный эффект решения «Качество данных»? Смотрите на всю причинную связку, а не только на знакомую формулировку.
Вопрос 30 из 30
Какой случай покажет, что исправление «Воспроизводимость результата» не держится на удачном входе? Смотрите на всю причинную связку, а не только на знакомую формулировку.

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

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

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

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