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

Игровые сценарии на Lua

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

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На работу отведено 70 минут. После завершения можно посмотреть правильные ответы, объяснения и результат по каждой теме.
Вопрос 1 из 25
В чём ключ к разбору строки «accumulator=accumulator-1/60»? Нужна именно центральная гарантия раздела «Игровой цикл».
LuaLua · Игровой цикл · разбор 1
local accumulator=0
function update(dt)
  accumulator=accumulator+dt
  while accumulator>=1/60 do
    simulate(1/60)
    accumulator=accumulator-1/60
  end
  render(accumulator/(1/60))
end
Вопрос 2 из 25
Какой отказ должен быть воспроизводимым в тесте? Ищется граничное следствие правила из раздела «Игровой цикл».
LuaLua · Игровой цикл · разбор 2
local function reproduce_case()
  local accumulator=0
  function update(dt)
    accumulator=accumulator+dt
    while accumulator>=1/60 do
      simulate(1/60)
      accumulator=accumulator-1/60
    end
    render(accumulator/(1/60))
  end
end
reproduce_case()
Вопрос 3 из 25
Какое правило должно остаться наблюдаемым после правки? Нужен основной контракт раздела «Игровой цикл».
LuaLua · Игровой цикл · разбор 3
do
  local accumulator=0
  function update(dt)
    accumulator=accumulator+dt
    while accumulator>=1/60 do
      simulate(1/60)
      accumulator=accumulator-1/60
    end
    render(accumulator/(1/60))
  end
end
Вопрос 4 из 25
После редкого сбоя команда спорит о разделе «Игровой цикл». Какой вывод должен попасть в код и тесты? Нужна эксплуатационная граница раздела «Игровой цикл».
Вопрос 5 из 25
Что в разделе «Игровой цикл» является гарантией, а не привычкой конкретного проекта? Ответ должен охватывать весь раздел «Игровой цикл».
Вопрос 6 из 25
Что нельзя заменить привычкой из другого языка при чтении этого кода? Выберите основное правило раздела «Сущности».
LuaLua · Сущности · разбор 1
local entities={}
entities[17]={position={x=1,y=2},health=100}
local function damage(id,value)
  local e=assert(entities[id])
  e.health=math.max(0,e.health-value)
end
Вопрос 7 из 25
Какой отказ должен быть воспроизводимым в тесте? Выберите именно проверяемую границу раздела «Сущности».
LuaLua · Сущности · разбор 2
local function reproduce_case()
  local entities={}
  entities[17]={position={x=1,y=2},health=100}
  local function damage(id,value)
    local e=assert(entities[id])
    e.health=math.max(0,e.health-value)
  end
end
reproduce_case()
Вопрос 8 из 25
Что здесь является частью контракта, а не случайностью текущей записи? Речь идёт о центральном правиле раздела «Сущности».
LuaLua · Сущности · разбор 3
do
  local entities={}
  entities[17]={position={x=1,y=2},health=100}
  local function damage(id,value)
    local e=assert(entities[id])
    e.health=math.max(0,e.health-value)
  end
end
Вопрос 9 из 25
Для раздела «Сущности» выбирают между коротким трюком и ясным контрактом. Что предпочтительнее? Выберите практическое следствие раздела «Сущности».
Вопрос 10 из 25
Что следует считать рабочим контрактом раздела «Сущности»? Ответ должен охватывать весь раздел «Сущности».
Вопрос 11 из 25
Результат здесь задаёт не соглашение проекта, а правило языка. Какое? Нужна именно центральная гарантия раздела «События».
LuaLua · События · разбор 1
local listeners={}
local function emit(event)
  local snapshot={table.unpack(listeners[event] or {})}
  for _,fn in ipairs(snapshot) do fn(event) end
end
Вопрос 12 из 25
Какое наблюдение нужно зафиксировать при повторном вызове? Нужен отрицательный сценарий для раздела «События».
LuaLua · События · разбор 2
local function reproduce_case()
  local listeners={}
  local function emit(event)
    local snapshot={table.unpack(listeners[event] or {})}
    for _,fn in ipairs(snapshot) do fn(event) end
  end
end
reproduce_case()
Вопрос 13 из 25
Какой результат обязан подтверждать регрессионный тест после правки? Выберите гарантию, определяющую раздел «События».
LuaLua · События · разбор 3
do
  local listeners={}
  local function emit(event)
    local snapshot={table.unpack(listeners[event] or {})}
    for _,fn in ipairs(snapshot) do fn(event) end
  end
end
Вопрос 14 из 25
В модуле меняют «События» и хотят сохранить диагностируемость. Какой подход надёжнее? Ответ должен выражать проверяемое следствие раздела «События».
Вопрос 15 из 25
Что следует считать рабочим контрактом раздела «События»? Выберите описание, объединяющее механизм и границу раздела «События».
Вопрос 16 из 25
Какое правило Lua нужно применить, чтобы верно прочитать этот фрагмент? Ответ должен описывать основной механизм раздела «Горячая перезагрузка».
LuaLua · Горячая перезагрузка · разбор 1
local current=require("enemy_logic")
local function reload()
  package.loaded.enemy_logic=nil
  local next_version=require("enemy_logic")
  current.migrate(next_version)
  current=next_version
end
Вопрос 17 из 25
Что не видно по одному успешному запуску этого кода? Нужен отрицательный сценарий для раздела «Горячая перезагрузка».
LuaLua · Горячая перезагрузка · разбор 2
local function reproduce_case()
  local current=require("enemy_logic")
  local function reload()
    package.loaded.enemy_logic=nil
    local next_version=require("enemy_logic")
    current.migrate(next_version)
    current=next_version
  end
end
reproduce_case()
Вопрос 18 из 25
Какое поведение должно совпасть до и после рефакторинга? Речь идёт о центральном правиле раздела «Горячая перезагрузка».
LuaLua · Горячая перезагрузка · разбор 3
do
  local current=require("enemy_logic")
  local function reload()
    package.loaded.enemy_logic=nil
    local next_version=require("enemy_logic")
    current.migrate(next_version)
    current=next_version
  end
end
Вопрос 19 из 25
После редкого сбоя команда спорит о разделе «Горячая перезагрузка». Какой вывод должен попасть в код и тесты? Выберите практическое следствие раздела «Горячая перезагрузка».
Вопрос 20 из 25
Какое описание раздела «Горячая перезагрузка» выдерживает и обычный, и граничный сценарий? Нужна полная формулировка раздела «Горячая перезагрузка».
Вопрос 21 из 25
Какой механизм показан в строке «for _,item in ipairs(level.spawn) do spawn(item) end»? Ответ должен описывать основной механизм раздела «Проверка допущений».
LuaLua · Проверка допущений · разбор 1
local function run_level(level)
  assert(type(level.spawn)=="table")
  reset_world()
  for _,item in ipairs(level.spawn) do spawn(item) end
  return simulate_frames(600)
end
Вопрос 22 из 25
Что здесь важнее проверить, чем само отсутствие ошибки? Выберите именно проверяемую границу раздела «Проверка допущений».
LuaLua · Проверка допущений · разбор 2
local function reproduce_case()
  local function run_level(level)
    assert(type(level.spawn)=="table")
    reset_world()
    for _,item in ipairs(level.spawn) do spawn(item) end
    return simulate_frames(600)
  end
end
reproduce_case()
Вопрос 23 из 25
Что здесь является частью контракта, а не случайностью текущей записи? Речь идёт о центральном правиле раздела «Проверка допущений».
Вопрос 24 из 25
Нужно сделать поведение «Проверка допущений» предсказуемым для следующего разработчика. Что выбрать? Выберите практическое следствие раздела «Проверка допущений».
Вопрос 25 из 25
Какое утверждение о разделе «Проверка допущений» полезно и при чтении кода, и при ревью? Нужна полная формулировка раздела «Проверка допущений».

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

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

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

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