LU Lua  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Области видимости и замыкания

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

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На работу отведено 55 минут. После завершения можно посмотреть правильные ответы, объяснения и результат по каждой теме.
Вопрос 1 из 20
Какой механизм показан в строке «local total = total + 2»? Выберите основное правило раздела «Локальная область».
LuaLua · Локальная область · разбор 1
local total = 5
do
  local total = total + 2
  print(total)
end
print(total)
Вопрос 2 из 20
Какую границу стоит сделать явной в регрессионной проверке? Выберите именно проверяемую границу раздела «Локальная область».
LuaLua · Локальная область · разбор 2
local function reproduce_case()
  local total = 5
  do
    local total = total + 2
    print(total)
  end
  print(total)
end
reproduce_case()
Вопрос 3 из 20
Какой результат обязан подтверждать регрессионный тест после правки? Речь идёт о центральном правиле раздела «Локальная область».
LuaLua · Локальная область · разбор 3
do
  local total = 5
  do
    local total = total + 2
    print(total)
  end
  print(total)
end
Вопрос 4 из 20
После редкого сбоя команда спорит о разделе «Локальная область». Какой вывод должен попасть в код и тесты? Выберите практическое следствие раздела «Локальная область».
Вопрос 5 из 20
Какой вариант точнее всего передаёт смысл раздела «Локальная область»? Нужна полная формулировка раздела «Локальная область».
Вопрос 6 из 20
Какая семантическая деталь определяет поведение фрагмента? Нужна именно центральная гарантия раздела «Захваченные внешние переменные».
LuaLua · Захваченные внешние переменные · разбор 1
local function make()
  local n = 0
  return function() n = n + 1; return n end,
         function() return n end
end
local inc, read = make()
print(inc(), inc(), read())
Вопрос 7 из 20
Какое допущение здесь опасно оставлять без повторного запуска? Выберите именно проверяемую границу раздела «Захваченные внешние переменные».
LuaLua · Захваченные внешние переменные · разбор 2
local function reproduce_case()
  local function make()
    local n = 0
    return function() n = n + 1; return n end,
           function() return n end
  end
  local inc, read = make()
  print(inc(), inc(), read())
end
reproduce_case()
Вопрос 8 из 20
Что должно пережить замену вспомогательных функций и имён переменных? Речь идёт о центральном правиле раздела «Захваченные внешние переменные».
LuaLua · Захваченные внешние переменные · разбор 3
do
  local function make()
    local n = 0
    return function() n = n + 1; return n end,
           function() return n end
  end
  local inc, read = make()
  print(inc(), inc(), read())
end
Вопрос 9 из 20
Какое решение по разделу «Захваченные внешние переменные» упростит и проверку, и расследование сбоя? Нужна эксплуатационная граница раздела «Захваченные внешние переменные».
Вопрос 10 из 20
Что следует считать рабочим контрактом раздела «Захваченные внешние переменные»? Нужна полная формулировка раздела «Захваченные внешние переменные».
Вопрос 11 из 20
На каком правиле держится поведение этого кода? Нужна именно центральная гарантия раздела «Состояние замыкания».
LuaLua · Состояние замыкания · разбор 1
local function counter(start)
  local n = start
  return function(step) n = n + step; return n end
end
local a, b = counter(0), counter(10)
print(a(2), b(2), a(2))
Вопрос 12 из 20
Что должен поймать отрицательный тест для этого фрагмента? Выберите именно проверяемую границу раздела «Состояние замыкания».
LuaLua · Состояние замыкания · разбор 2
local function reproduce_case()
  local function counter(start)
    local n = start
    return function(step) n = n + step; return n end
  end
  local a, b = counter(0), counter(10)
  print(a(2), b(2), a(2))
end
reproduce_case()
Вопрос 13 из 20
Какое поведение должно совпасть до и после рефакторинга? Выберите гарантию, определяющую раздел «Состояние замыкания».
Вопрос 14 из 20
После редкого сбоя команда спорит о разделе «Состояние замыкания». Какой вывод должен попасть в код и тесты? Ответ должен выражать проверяемое следствие раздела «Состояние замыкания».
Вопрос 15 из 20
Что нельзя вывести из одного удачного примера, но нужно знать о разделе «Состояние замыкания»? Нужна полная формулировка раздела «Состояние замыкания».
Вопрос 16 из 20
Какое утверждение объясняет результат без скрытых допущений? Выберите основное правило раздела «Время связывания».
LuaLua · Время связывания · разбор 1
local fs = {}
for i = 1, 3 do
  local current = i
  fs[i] = function() return current end
end
print(fs[1](), fs[3]())
Вопрос 17 из 20
Где этот код может повести себя иначе на границе? Ищется граничное следствие правила из раздела «Время связывания».
LuaLua · Время связывания · разбор 2
local function reproduce_case()
  local fs = {}
  for i = 1, 3 do
    local current = i
    fs[i] = function() return current end
  end
  print(fs[1](), fs[3]())
end
reproduce_case()
Вопрос 18 из 20
Код переписывают без изменения внешнего поведения. Какой контракт должен сохраниться? Нужен основной контракт раздела «Время связывания».
Вопрос 19 из 20
Для раздела «Время связывания» выбирают между коротким трюком и ясным контрактом. Что предпочтительнее? Нужна эксплуатационная граница раздела «Время связывания».
Вопрос 20 из 20
Какое утверждение о разделе «Время связывания» наиболее полное и точное? Ответ должен охватывать весь раздел «Время связывания».

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

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

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

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