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

Корутины

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

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На работу отведено 70 минут. После завершения можно посмотреть правильные ответы, объяснения и результат по каждой теме.
Вопрос 1 из 25
Какое утверждение объясняет результат без скрытых допущений? Выберите основное правило раздела «Создание».
LuaLua · Создание · разбор 1
local co = coroutine.create(function(a,b) return a+b end)
print(coroutine.status(co))
local ok, value = coroutine.resume(co, 2, 5)
print(ok, value, coroutine.status(co))
Вопрос 2 из 25
Что не видно по одному успешному запуску этого кода? Выберите именно проверяемую границу раздела «Создание».
LuaLua · Создание · разбор 2
local function reproduce_case()
  local co = coroutine.create(function(a,b) return a+b end)
  print(coroutine.status(co))
  local ok, value = coroutine.resume(co, 2, 5)
  print(ok, value, coroutine.status(co))
end
reproduce_case()
Вопрос 3 из 25
Что должно пережить замену вспомогательных функций и имён переменных? Речь идёт о центральном правиле раздела «Создание».
LuaLua · Создание · разбор 3
do
  local co = coroutine.create(function(a,b) return a+b end)
  print(coroutine.status(co))
  local ok, value = coroutine.resume(co, 2, 5)
  print(ok, value, coroutine.status(co))
end
Вопрос 4 из 25
Код по разделу «Создание» уходит в эксплуатацию. Какое ограничение нельзя прятать внутри реализации? Выберите практическое следствие раздела «Создание».
Вопрос 5 из 25
Что помогает не переносить в раздел «Создание» привычки из другого языка или среды? Ответ должен охватывать весь раздел «Создание».
Вопрос 6 из 25
Какой механизм показан в строке «local co=coroutine.create(function()»? Нужна именно центральная гарантия раздела «Приостановка и возобновление».
LuaLua · Приостановка и возобновление · разбор 1
local co=coroutine.create(function()
  local x = coroutine.yield("ready")
  return x * 2
end)
print(coroutine.resume(co))
print(coroutine.resume(co, 6))
Вопрос 7 из 25
Какой отказ должен быть воспроизводимым в тесте? Выберите именно проверяемую границу раздела «Приостановка и возобновление».
LuaLua · Приостановка и возобновление · разбор 2
local function reproduce_case()
  local co=coroutine.create(function()
    local x = coroutine.yield("ready")
    return x * 2
  end)
  print(coroutine.resume(co))
  print(coroutine.resume(co, 6))
end
reproduce_case()
Вопрос 8 из 25
Внутреннюю реализацию меняют. Что обязано остаться верным снаружи? Выберите гарантию, определяющую раздел «Приостановка и возобновление».
LuaLua · Приостановка и возобновление · разбор 3
do
  local co=coroutine.create(function()
    local x = coroutine.yield("ready")
    return x * 2
  end)
  print(coroutine.resume(co))
  print(coroutine.resume(co, 6))
end
Вопрос 9 из 25
Код по разделу «Приостановка и возобновление» уходит в эксплуатацию. Какое ограничение нельзя прятать внутри реализации? Выберите практическое следствие раздела «Приостановка и возобновление».
Вопрос 10 из 25
Какое утверждение о разделе «Приостановка и возобновление» полезно и при чтении кода, и при ревью? Ответ должен охватывать весь раздел «Приостановка и возобновление».
Вопрос 11 из 25
Результат здесь задаёт не соглашение проекта, а правило языка. Какое? Ответ должен описывать основной механизм раздела «Передача значений».
LuaLua · Передача значений · разбор 1
local co=coroutine.create(function(first)
  local second = coroutine.yield(first+1)
  return first, second
end)
print(coroutine.resume(co,10))
print(coroutine.resume(co,20))
Вопрос 12 из 25
Какое наблюдение нужно зафиксировать при повторном вызове? Нужен отрицательный сценарий для раздела «Передача значений».
LuaLua · Передача значений · разбор 2
local function reproduce_case()
  local co=coroutine.create(function(first)
    local second = coroutine.yield(first+1)
    return first, second
  end)
  print(coroutine.resume(co,10))
  print(coroutine.resume(co,20))
end
reproduce_case()
Вопрос 13 из 25
Какое поведение должно совпасть до и после рефакторинга? Нужен основной контракт раздела «Передача значений».
LuaLua · Передача значений · разбор 3
do
  local co=coroutine.create(function(first)
    local second = coroutine.yield(first+1)
    return first, second
  end)
  print(coroutine.resume(co,10))
  print(coroutine.resume(co,20))
end
Вопрос 14 из 25
Команда меняет раздел «Передача значений» в рабочем модуле. На какое решение можно опереться при повторном запуске и отказе зависимости? Выберите практическое следствие раздела «Передача значений».
Вопрос 15 из 25
Что отличает корректное понимание раздела «Передача значений» от правдоподобного заблуждения? Ответ должен охватывать весь раздел «Передача значений».
Вопрос 16 из 25
На каком правиле держится поведение этого кода? Нужна именно центральная гарантия раздела «Состояния».
LuaLua · Состояния · разбор 1
local co=coroutine.create(function() return 1 end)
print(coroutine.resume(co))
print(coroutine.resume(co))
Вопрос 17 из 25
Какое допущение здесь опасно оставлять без повторного запуска? Ищется граничное следствие правила из раздела «Состояния».
LuaLua · Состояния · разбор 2
local function reproduce_case()
  local co=coroutine.create(function() return 1 end)
  print(coroutine.resume(co))
  print(coroutine.resume(co))
end
reproduce_case()
Вопрос 18 из 25
Что нужно проверить после замены реализации? Выберите гарантию, определяющую раздел «Состояния».
LuaLua · Состояния · разбор 3
do
  local co=coroutine.create(function() return 1 end)
  print(coroutine.resume(co))
  print(coroutine.resume(co))
end
Вопрос 19 из 25
В модуле меняют «Состояния» и хотят сохранить диагностируемость. Какой подход надёжнее? Ответ должен выражать проверяемое следствие раздела «Состояния».
Вопрос 20 из 25
Какое правило раздела «Состояния» стоит закрепить в тестах? Ответ должен охватывать весь раздел «Состояния».
Вопрос 21 из 25
Что именно объясняет поведение строки «local co=coroutine.create(function()»? Нужна именно центральная гарантия раздела «Диагностика результата».
LuaLua · Диагностика результата · разбор 1
local co=coroutine.create(function()
  coroutine.yield("step")
  error("broken")
end)
local ok,v=coroutine.resume(co)
local ok2,err=coroutine.resume(co)
print(ok,v,ok2,err)
Вопрос 22 из 25
Что не видно по одному успешному запуску этого кода? Ищется граничное следствие правила из раздела «Диагностика результата».
LuaLua · Диагностика результата · разбор 2
local function reproduce_case()
  local co=coroutine.create(function()
    coroutine.yield("step")
    error("broken")
  end)
  local ok,v=coroutine.resume(co)
  local ok2,err=coroutine.resume(co)
  print(ok,v,ok2,err)
end
reproduce_case()
Вопрос 23 из 25
После рефакторинга тесты должны защищать одно правило. Какое? Нужен основной контракт раздела «Диагностика результата».
Вопрос 24 из 25
Какое решение по разделу «Диагностика результата» упростит и проверку, и расследование сбоя? Нужна эксплуатационная граница раздела «Диагностика результата».
Вопрос 25 из 25
Какой вывод о разделе «Диагностика результата» останется верным после смены реализации? Нужна полная формулировка раздела «Диагностика результата».

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

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

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

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