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

Модули и require

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

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На работу отведено 70 минут. После завершения можно посмотреть правильные ответы, объяснения и результат по каждой теме.
Вопрос 1 из 25
Результат здесь задаёт не соглашение проекта, а правило языка. Какое? Выберите основное правило раздела «Пути поиска package.path».
LuaLua · Пути поиска package.path · разбор 1
package.path = "./lib/?.lua;./lib/?/init.lua;" .. package.path
local name = "tools.format"
local file = package.searchpath(name, package.path)
print(file)
Вопрос 2 из 25
Какая проверка отделит устойчивый контракт от удачного совпадения? Ищется граничное следствие правила из раздела «Пути поиска package.path».
LuaLua · Пути поиска package.path · разбор 2
local function reproduce_case()
  package.path = "./lib/?.lua;./lib/?/init.lua;" .. package.path
  local name = "tools.format"
  local file = package.searchpath(name, package.path)
  print(file)
end
reproduce_case()
Вопрос 3 из 25
Какое поведение должно совпасть до и после рефакторинга? Нужен основной контракт раздела «Пути поиска package.path».
LuaLua · Пути поиска package.path · разбор 3
do
  package.path = "./lib/?.lua;./lib/?/init.lua;" .. package.path
  local name = "tools.format"
  local file = package.searchpath(name, package.path)
  print(file)
end
Вопрос 4 из 25
Для раздела «Пути поиска package.path» выбирают между коротким трюком и ясным контрактом. Что предпочтительнее? Выберите практическое следствие раздела «Пути поиска package.path».
Вопрос 5 из 25
Что нельзя вывести из одного удачного примера, но нужно знать о разделе «Пути поиска package.path»? Выберите описание, объединяющее механизм и границу раздела «Пути поиска package.path».
Вопрос 6 из 25
Что нужно знать о Lua, прежде чем предсказывать результат этого кода? Ответ должен описывать основной механизм раздела «Кэш модулей».
LuaLua · Кэш модулей · разбор 1
package.preload.demo = function()
  print("loading")
  return {value=1}
end
local a=require("demo")
local b=require("demo")
print(a==b)
Вопрос 7 из 25
Обычный запуск проходит. Какое граничное поведение обязан проверить второй тест? Нужен отрицательный сценарий для раздела «Кэш модулей».
LuaLua · Кэш модулей · разбор 2
local function reproduce_case()
  package.preload.demo = function()
    print("loading")
    return {value=1}
  end
  local a=require("demo")
  local b=require("demo")
  print(a==b)
end
reproduce_case()
Вопрос 8 из 25
Какая гарантия важнее сохранения точной формы кода? Выберите гарантию, определяющую раздел «Кэш модулей».
LuaLua · Кэш модулей · разбор 3
do
  package.preload.demo = function()
    print("loading")
    return {value=1}
  end
  local a=require("demo")
  local b=require("demo")
  print(a==b)
end
Вопрос 9 из 25
Нужно сделать поведение «Кэш модулей» предсказуемым для следующего разработчика. Что выбрать? Ответ должен выражать проверяемое следствие раздела «Кэш модулей».
Вопрос 10 из 25
Какой вариант точнее всего передаёт смысл раздела «Кэш модулей»? Выберите описание, объединяющее механизм и границу раздела «Кэш модулей».
Вопрос 11 из 25
Какое правило Lua нужно применить, чтобы верно прочитать этот фрагмент? Нужна именно центральная гарантия раздела «Возвращаемое значение».
LuaLua · Возвращаемое значение · разбор 1
package.preload.flag = function()
  local x = 7
  -- нет return
end
local m=require("flag")
print(m, package.loaded.flag)
Вопрос 12 из 25
Какой отказ должен быть воспроизводимым в тесте? Нужен отрицательный сценарий для раздела «Возвращаемое значение».
LuaLua · Возвращаемое значение · разбор 2
local function reproduce_case()
  package.preload.flag = function()
    local x = 7
    -- нет return
  end
  local m=require("flag")
  print(m, package.loaded.flag)
end
reproduce_case()
Вопрос 13 из 25
Какое поведение должно совпасть до и после рефакторинга? Выберите гарантию, определяющую раздел «Возвращаемое значение».
LuaLua · Возвращаемое значение · разбор 3
do
  package.preload.flag = function()
    local x = 7
    -- нет return
  end
  local m=require("flag")
  print(m, package.loaded.flag)
end
Вопрос 14 из 25
Решение по разделу «Возвращаемое значение» должно пережить обновление зависимости. Что фиксировать в контракте? Ответ должен выражать проверяемое следствие раздела «Возвращаемое значение».
Вопрос 15 из 25
Какое описание раздела «Возвращаемое значение» выдерживает и обычный, и граничный сценарий? Нужна полная формулировка раздела «Возвращаемое значение».
Вопрос 16 из 25
Почему этот фрагмент ведёт себя именно так? Нужна именно центральная гарантия раздела «Циклические зависимости».
LuaLua · Циклические зависимости · разбор 1
package.preload.a=function() local b=require("b"); return {b=b} end
package.preload.b=function() local a=require("a"); return {a=a} end
local ok,err=pcall(require,"a")
print(ok, err)
Вопрос 17 из 25
Первый пример подтверждает основной путь. Что проверить отдельно? Выберите именно проверяемую границу раздела «Циклические зависимости».
LuaLua · Циклические зависимости · разбор 2
local function reproduce_case()
  package.preload.a=function() local b=require("b"); return {b=b} end
  package.preload.b=function() local a=require("a"); return {a=a} end
  local ok,err=pcall(require,"a")
  print(ok, err)
end
reproduce_case()
Вопрос 18 из 25
Что должно пережить замену вспомогательных функций и имён переменных? Речь идёт о центральном правиле раздела «Циклические зависимости».
LuaLua · Циклические зависимости · разбор 3
do
  package.preload.a=function() local b=require("b"); return {b=b} end
  package.preload.b=function() local a=require("a"); return {a=a} end
  local ok,err=pcall(require,"a")
  print(ok, err)
end
Вопрос 19 из 25
После редкого сбоя команда спорит о разделе «Циклические зависимости». Какой вывод должен попасть в код и тесты? Ответ должен выражать проверяемое следствие раздела «Циклические зависимости».
Вопрос 20 из 25
На какое утверждение можно опереться при проектировании раздела «Циклические зависимости»? Нужна полная формулировка раздела «Циклические зависимости».
Вопрос 21 из 25
Результат здесь задаёт не соглашение проекта, а правило языка. Какое? Выберите основное правило раздела «Пограничные случаи».
LuaLua · Пограничные случаи · разбор 1
local loaders = package.searchers or package.loaders
for i, searcher in ipairs(loaders) do
  local loader, extra = searcher("missing.module")
  print(i, type(loader), extra)
end
Вопрос 22 из 25
Первый пример подтверждает основной путь. Что проверить отдельно? Ищется граничное следствие правила из раздела «Пограничные случаи».
LuaLua · Пограничные случаи · разбор 2
local function reproduce_case()
  local loaders = package.searchers or package.loaders
  for i, searcher in ipairs(loaders) do
    local loader, extra = searcher("missing.module")
    print(i, type(loader), extra)
  end
end
reproduce_case()
Вопрос 23 из 25
Что должно пережить замену вспомогательных функций и имён переменных? Речь идёт о центральном правиле раздела «Пограничные случаи».
Вопрос 24 из 25
Какое решение по разделу «Пограничные случаи» упростит и проверку, и расследование сбоя? Ответ должен выражать проверяемое следствие раздела «Пограничные случаи».
Вопрос 25 из 25
Что помогает не переносить в раздел «Пограничные случаи» привычки из другого языка или среды? Нужна полная формулировка раздела «Пограничные случаи».

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

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

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

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