💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На работу отведено 70 минут. После завершения можно посмотреть правильные ответы, объяснения и результат по каждой теме.
Вопрос 5 из 25
Что нельзя вывести из одного удачного примера, но нужно знать о разделе «Жизненный цикл»? Выберите описание, объединяющее механизм и границу раздела «Жизненный цикл».
Механизм и граница раздела «Жизненный цикл» описываются так: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
Механизм и граница раздела «Жизненный цикл» описываются так: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
Механизм и граница раздела «Жизненный цикл» описываются так: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
Механизм и граница раздела «Жизненный цикл» описываются так: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
Механизм и граница раздела «Жизненный цикл» описываются так: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
Вопрос 10 из 25
Какое описание раздела «Слабые таблицы» выдерживает и обычный, и граничный сценарий? Нужна полная формулировка раздела «Слабые таблицы».
Для обычного и граничного сценария раздела «Слабые таблицы» справедливо: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
Для обычного и граничного сценария раздела «Слабые таблицы» справедливо: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
Для обычного и граничного сценария раздела «Слабые таблицы» справедливо: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
Для обычного и граничного сценария раздела «Слабые таблицы» справедливо: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
Для обычного и граничного сценария раздела «Слабые таблицы» справедливо: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
Вопрос 11 из 25
Какое утверждение объясняет результат без скрытых допущений? Нужна именно центральная гарантия раздела «Финализаторы».
Lua Lua · Финализаторы · разбор 1 Копировать
local function resource(id)
return setmetatable({id=id},{__gc=function(self) print("close",self.id) end})
end
local r=resource(3)
r=nil
collectgarbage("collect")
При разборе раздела «Финализаторы» здесь действует условие: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
При разборе раздела «Финализаторы» здесь действует условие: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
При разборе раздела «Финализаторы» здесь действует условие: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
При разборе раздела «Финализаторы» здесь действует условие: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
При разборе раздела «Финализаторы» здесь действует условие: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
Вопрос 12 из 25
Что не видно по одному успешному запуску этого кода? Ищется граничное следствие правила из раздела «Финализаторы».
Lua Lua · Финализаторы · разбор 2 Копировать
local function reproduce_case()
local function resource(id)
return setmetatable({id=id},{__gc=function(self) print("close",self.id) end})
end
local r=resource(3)
r=nil
collectgarbage("collect")
end
reproduce_case()
Для раздела «Финализаторы» отдельным тестом подтверждают: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
Для раздела «Финализаторы» отдельным тестом подтверждают: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
Для раздела «Финализаторы» отдельным тестом подтверждают: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
Для раздела «Финализаторы» отдельным тестом подтверждают: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
Для раздела «Финализаторы» отдельным тестом подтверждают: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
Вопрос 13 из 25
Какой результат обязан подтверждать регрессионный тест после правки? Речь идёт о центральном правиле раздела «Финализаторы».
Lua Lua · Финализаторы · разбор 3 Копировать
do
local function resource(id)
return setmetatable({id=id},{__gc=function(self) print("close",self.id) end})
end
local r=resource(3)
r=nil
collectgarbage("collect")
end
При замене внутренних шагов раздела «Финализаторы» остаётся гарантия: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
При замене внутренних шагов раздела «Финализаторы» остаётся гарантия: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
При замене внутренних шагов раздела «Финализаторы» остаётся гарантия: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
При замене внутренних шагов раздела «Финализаторы» остаётся гарантия: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
При замене внутренних шагов раздела «Финализаторы» остаётся гарантия: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
Вопрос 15 из 25
Какое описание раздела «Финализаторы» выдерживает и обычный, и граничный сценарий? Нужна полная формулировка раздела «Финализаторы».
Рабочее правило всего раздела «Финализаторы»: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
Рабочее правило всего раздела «Финализаторы»: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
Рабочее правило всего раздела «Финализаторы»: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
Рабочее правило всего раздела «Финализаторы»: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
Рабочее правило всего раздела «Финализаторы»: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
Вопрос 16 из 25
Какой механизм показан в строке «collectgarbage("incremental", 120, 200, 13)»? Выберите основное правило раздела «Настройка GC».
Lua Lua · Настройка GC · разбор 1 Копировать
collectgarbage("incremental", 120, 200, 13)
local t={}
for i=1,10000 do t[i]={i,i+1} end
print(collectgarbage("count"))
Для этого кода в разделе «Настройка GC» нужно учитывать: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
Для этого кода в разделе «Настройка GC» нужно учитывать: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
Для этого кода в разделе «Настройка GC» нужно учитывать: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
Для этого кода в разделе «Настройка GC» нужно учитывать: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
Для этого кода в разделе «Настройка GC» нужно учитывать: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
Вопрос 17 из 25
Какой риск останется незамеченным, если выполнить код только один раз? Ищется граничное следствие правила из раздела «Настройка GC».
Lua Lua · Настройка GC · разбор 2 Копировать
local function reproduce_case()
collectgarbage("incremental", 120, 200, 13)
local t={}
for i=1,10000 do t[i]={i,i+1} end
print(collectgarbage("count"))
end
reproduce_case()
На другом входе раздела «Настройка GC» нужно проверить: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
На другом входе раздела «Настройка GC» нужно проверить: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
На другом входе раздела «Настройка GC» нужно проверить: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
На другом входе раздела «Настройка GC» нужно проверить: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
На другом входе раздела «Настройка GC» нужно проверить: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
Вопрос 18 из 25
Внутреннюю реализацию меняют. Что обязано остаться верным снаружи? Выберите гарантию, определяющую раздел «Настройка GC».
Lua Lua · Настройка GC · разбор 3 Копировать
do
collectgarbage("incremental", 120, 200, 13)
local t={}
for i=1,10000 do t[i]={i,i+1} end
print(collectgarbage("count"))
end
Внешнее поведение раздела «Настройка GC» сохраняется при условии: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
Внешнее поведение раздела «Настройка GC» сохраняется при условии: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
Внешнее поведение раздела «Настройка GC» сохраняется при условии: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
Внешнее поведение раздела «Настройка GC» сохраняется при условии: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
Внешнее поведение раздела «Настройка GC» сохраняется при условии: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
Вопрос 20 из 25
Что должен помнить разработчик, впервые работающий с разделом «Настройка GC»? Нужна полная формулировка раздела «Настройка GC».
Точное описание раздела «Настройка GC»: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
Точное описание раздела «Настройка GC»: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
Точное описание раздела «Настройка GC»: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
Точное описание раздела «Настройка GC»: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
Точное описание раздела «Настройка GC»: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
Вопрос 25 из 25
Какой вывод о разделе «Читаемость решения» останется верным после смены реализации? Выберите описание, объединяющее механизм и границу раздела «Читаемость решения».
Механизм и граница раздела «Читаемость решения» описываются так: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
Механизм и граница раздела «Читаемость решения» описываются так: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
Механизм и граница раздела «Читаемость решения» описываются так: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
Механизм и граница раздела «Читаемость решения» описываются так: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
Механизм и граница раздела «Читаемость решения» описываются так: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.