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

Отладка и debug library

Тест по теме «Отладка и debug library» проверяет чтение кода, поиск скрытых допущений и выбор решения для обычных и граничных сценариев. В нём 25 вопросов, из них 14 содержат фрагменты Lua. Условия отдельно отмечают случаи, зависящие от версии языка или внешней библиотеки.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На работу отведено 70 минут. После завершения можно посмотреть правильные ответы, объяснения и результат по каждой теме.
Вопрос 1 из 25
Какая семантическая деталь определяет поведение фрагмента? Нужна именно центральная гарантия раздела «Отладочные перехватчики».
LuaLua · Отладочные перехватчики · разбор 1
local count=0
debug.sethook(function()
  count=count+1
  if count>1000 then error("instruction limit") end
end, "", 100)
run_task()
Вопрос 2 из 25
Обычный запуск проходит. Какое граничное поведение обязан проверить второй тест? Выберите именно проверяемую границу раздела «Отладочные перехватчики».
LuaLua · Отладочные перехватчики · разбор 2
local function reproduce_case()
  local count=0
  debug.sethook(function()
    count=count+1
    if count>1000 then error("instruction limit") end
  end, "", 100)
  run_task()
end
reproduce_case()
Вопрос 3 из 25
Какая гарантия важнее сохранения точной формы кода? Нужен основной контракт раздела «Отладочные перехватчики».
LuaLua · Отладочные перехватчики · разбор 3
do
  local count=0
  debug.sethook(function()
    count=count+1
    if count>1000 then error("instruction limit") end
  end, "", 100)
  run_task()
end
Вопрос 4 из 25
Команда меняет раздел «Отладочные перехватчики» в рабочем модуле. На какое решение можно опереться при повторном запуске и отказе зависимости? Ответ должен выражать проверяемое следствие раздела «Отладочные перехватчики».
Вопрос 5 из 25
Что в разделе «Отладочные перехватчики» является гарантией, а не привычкой конкретного проекта? Выберите описание, объединяющее механизм и границу раздела «Отладочные перехватчики».
Вопрос 6 из 25
Какое правило Lua нужно применить, чтобы верно прочитать этот фрагмент? Нужна именно центральная гарантия раздела «Сведения о стеке».
LuaLua · Сведения о стеке · разбор 1
local function inspect(level)
  local info=debug.getinfo(level,"nSl")
  return info and {name=info.name,source=info.short_src,line=info.currentline}
end
print(inspect(2))
Вопрос 7 из 25
Какое допущение здесь опасно оставлять без повторного запуска? Нужен отрицательный сценарий для раздела «Сведения о стеке».
LuaLua · Сведения о стеке · разбор 2
local function reproduce_case()
  local function inspect(level)
    local info=debug.getinfo(level,"nSl")
    return info and {name=info.name,source=info.short_src,line=info.currentline}
  end
  print(inspect(2))
end
reproduce_case()
Вопрос 8 из 25
Что здесь является частью контракта, а не случайностью текущей записи? Выберите гарантию, определяющую раздел «Сведения о стеке».
LuaLua · Сведения о стеке · разбор 3
do
  local function inspect(level)
    local info=debug.getinfo(level,"nSl")
    return info and {name=info.name,source=info.short_src,line=info.currentline}
  end
  print(inspect(2))
end
Вопрос 9 из 25
Какой принцип сделает реализацию «Сведения о стеке» устойчивой, а не просто удачной на одном примере? Нужна эксплуатационная граница раздела «Сведения о стеке».
Вопрос 10 из 25
Что нельзя вывести из одного удачного примера, но нужно знать о разделе «Сведения о стеке»? Выберите описание, объединяющее механизм и границу раздела «Сведения о стеке».
Вопрос 11 из 25
Какое утверждение объясняет результат без скрытых допущений? Выберите основное правило раздела «Локальные значения».
LuaLua · Локальные значения · разбор 1
local function snapshot(level)
  local out={}; local i=1
  while true do
    local name,value=debug.getlocal(level,i)
    if not name then break end
    out[name]=type(value); i=i+1
  end
  return out
end
Вопрос 12 из 25
Какой крайний случай важнее всего добавить к проверке? Нужен отрицательный сценарий для раздела «Локальные значения».
LuaLua · Локальные значения · разбор 2
local function reproduce_case()
  local function snapshot(level)
    local out={}; local i=1
    while true do
      local name,value=debug.getlocal(level,i)
      if not name then break end
      out[name]=type(value); i=i+1
    end
    return out
  end
end
reproduce_case()
Вопрос 13 из 25
После рефакторинга тесты должны защищать одно правило. Какое? Нужен основной контракт раздела «Локальные значения».
LuaLua · Локальные значения · разбор 3
do
  local function snapshot(level)
    local out={}; local i=1
    while true do
      local name,value=debug.getlocal(level,i)
      if not name then break end
      out[name]=type(value); i=i+1
    end
    return out
  end
end
Вопрос 14 из 25
В проекте пересматривают «Локальные значения». Какое правило лучше выразить в интерфейсе, а не оставлять устной договорённостью? Нужна эксплуатационная граница раздела «Локальные значения».
Вопрос 15 из 25
Какое утверждение о разделе «Локальные значения» точно и не обещает лишнего? Нужна полная формулировка раздела «Локальные значения».
Вопрос 16 из 25
Какой контракт языка проявляется в этом примере? Ответ должен описывать основной механизм раздела «Ограничения применения».
LuaLua · Ограничения применения · разбор 1
local sandbox={print=print,math=math}
local chunk=assert(load(source,"user","t",sandbox))
-- debug не передаётся в sandbox
return chunk()
Вопрос 17 из 25
Какое последствие проявится только при другом входе или повторном вызове? Нужен отрицательный сценарий для раздела «Ограничения применения».
LuaLua · Ограничения применения · разбор 2
local function reproduce_case()
  local sandbox={print=print,math=math}
  local chunk=assert(load(source,"user","t",sandbox))
  -- debug не передаётся в sandbox
  return chunk()
end
reproduce_case()
Вопрос 18 из 25
Какое требование стоит закрепить тестом до начала рефакторинга? Выберите гарантию, определяющую раздел «Ограничения применения».
LuaLua · Ограничения применения · разбор 3
do
  local sandbox={print=print,math=math}
  local chunk=assert(load(source,"user","t",sandbox))
  -- debug не передаётся в sandbox
  return chunk()
end
Вопрос 19 из 25
Команда меняет раздел «Ограничения применения» в рабочем модуле. На какое решение можно опереться при повторном запуске и отказе зависимости? Ответ должен выражать проверяемое следствие раздела «Ограничения применения».
Вопрос 20 из 25
Что нельзя вывести из одного удачного примера, но нужно знать о разделе «Ограничения применения»? Ответ должен охватывать весь раздел «Ограничения применения».
Вопрос 21 из 25
Какой контракт языка проявляется в этом примере? Выберите основное правило раздела «Контроль состояния».
LuaLua · Контроль состояния · разбор 1
local function safe_value(v,depth)
  if depth>3 then return "<depth>" end
  if type(v)=="string" and #v>200 then return v:sub(1,200).."…" end
  return type(v)
end
Вопрос 22 из 25
Какую границу стоит сделать явной в регрессионной проверке? Ищется граничное следствие правила из раздела «Контроль состояния».
LuaLua · Контроль состояния · разбор 2
local function reproduce_case()
  local function safe_value(v,depth)
    if depth>3 then return "<depth>" end
    if type(v)=="string" and #v>200 then return v:sub(1,200).."…" end
    return type(v)
  end
end
reproduce_case()
Вопрос 23 из 25
Какое поведение должно совпасть до и после рефакторинга? Выберите гарантию, определяющую раздел «Контроль состояния».
Вопрос 24 из 25
Новый интерфейс скрывает детали раздела «Контроль состояния». Что всё равно должно быть явно проверяемо? Ответ должен выражать проверяемое следствие раздела «Контроль состояния».
Вопрос 25 из 25
Какое утверждение о разделе «Контроль состояния» полезно и при чтении кода, и при ревью? Нужна полная формулировка раздела «Контроль состояния».

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

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

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

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