💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На работу отведено 70 минут. После завершения можно посмотреть правильные ответы, объяснения и результат по каждой теме.
Вопрос 5 из 25
Что нельзя вывести из одного удачного примера, но нужно знать о разделе «Жизненный цикл»? Выберите описание, объединяющее механизм и границу раздела «Жизненный цикл».
Механизм и граница раздела «Жизненный цикл» описываются так: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
Механизм и граница раздела «Жизненный цикл» описываются так: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
Механизм и граница раздела «Жизненный цикл» описываются так: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
Механизм и граница раздела «Жизненный цикл» описываются так: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
Механизм и граница раздела «Жизненный цикл» описываются так: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
Вопрос 10 из 25
Какое описание раздела «Слабые таблицы» выдерживает и обычный, и граничный сценарий? Нужна полная формулировка раздела «Слабые таблицы».
Для обычного и граничного сценария раздела «Слабые таблицы» справедливо: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
Для обычного и граничного сценария раздела «Слабые таблицы» справедливо: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
Для обычного и граничного сценария раздела «Слабые таблицы» справедливо: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
Для обычного и граничного сценария раздела «Слабые таблицы» справедливо: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
Для обычного и граничного сценария раздела «Слабые таблицы» справедливо: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
Вопрос 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")
При разборе раздела «Финализаторы» здесь действует условие: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
При разборе раздела «Финализаторы» здесь действует условие: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
При разборе раздела «Финализаторы» здесь действует условие: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
При разборе раздела «Финализаторы» здесь действует условие: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
При разборе раздела «Финализаторы» здесь действует условие: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
Вопрос 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()
Для раздела «Финализаторы» отдельным тестом подтверждают: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
Для раздела «Финализаторы» отдельным тестом подтверждают: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
Для раздела «Финализаторы» отдельным тестом подтверждают: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
Для раздела «Финализаторы» отдельным тестом подтверждают: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
Для раздела «Финализаторы» отдельным тестом подтверждают: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных 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
При замене внутренних шагов раздела «Финализаторы» остаётся гарантия: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
При замене внутренних шагов раздела «Финализаторы» остаётся гарантия: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
При замене внутренних шагов раздела «Финализаторы» остаётся гарантия: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
При замене внутренних шагов раздела «Финализаторы» остаётся гарантия: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
При замене внутренних шагов раздела «Финализаторы» остаётся гарантия: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
Вопрос 15 из 25
Какое описание раздела «Финализаторы» выдерживает и обычный, и граничный сценарий? Нужна полная формулировка раздела «Финализаторы».
Рабочее правило всего раздела «Финализаторы»: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
Рабочее правило всего раздела «Финализаторы»: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
Рабочее правило всего раздела «Финализаторы»: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
Рабочее правило всего раздела «Финализаторы»: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
Рабочее правило всего раздела «Финализаторы»: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
Вопрос 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» нужно учитывать: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
Для этого кода в разделе «Настройка GC» нужно учитывать: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
Для этого кода в разделе «Настройка GC» нужно учитывать: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
Для этого кода в разделе «Настройка GC» нужно учитывать: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
Для этого кода в разделе «Настройка GC» нужно учитывать: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
Вопрос 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» нужно проверить: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
На другом входе раздела «Настройка GC» нужно проверить: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
На другом входе раздела «Настройка GC» нужно проверить: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
На другом входе раздела «Настройка GC» нужно проверить: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
На другом входе раздела «Настройка GC» нужно проверить: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
Вопрос 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» сохраняется при условии: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
Внешнее поведение раздела «Настройка GC» сохраняется при условии: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
Внешнее поведение раздела «Настройка GC» сохраняется при условии: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
Внешнее поведение раздела «Настройка GC» сохраняется при условии: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
Внешнее поведение раздела «Настройка GC» сохраняется при условии: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
Вопрос 20 из 25
Что должен помнить разработчик, впервые работающий с разделом «Настройка GC»? Нужна полная формулировка раздела «Настройка GC».
Точное описание раздела «Настройка GC»: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
Точное описание раздела «Настройка GC»: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
Точное описание раздела «Настройка GC»: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.
Точное описание раздела «Настройка GC»: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
Точное описание раздела «Настройка GC»: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
Вопрос 25 из 25
Какой вывод о разделе «Читаемость решения» останется верным после смены реализации? Выберите описание, объединяющее механизм и границу раздела «Читаемость решения».
Механизм и граница раздела «Читаемость решения» описываются так: Объект остаётся жив, пока достижим из Lua, реестра C API или финализатора; локальная переменная может перестать удерживать объект раньше конца текстового блока, если больше не используется.
Механизм и граница раздела «Читаемость решения» описываются так: Понятное владение ресурсами, короткоживущие таблицы и явное закрытие важнее ручных collectgarbage в каждом кадре; настройка GC не исправляет сохранённые ссылки.
Механизм и граница раздела «Читаемость решения» описываются так: Финализатор __gc предназначен для освобождения внешнего ресурса как последней страховки; порядок и момент вызова не подходят для основной логики, а ошибка финализатора опасна.
Механизм и граница раздела «Читаемость решения» описываются так: В Lua 5.4 доступны инкрементальный и поколенческий режимы GC; параметры подбирают измерениями на целевой нагрузке, потому что меньше пауз может означать больше общей работы.
Механизм и граница раздела «Читаемость решения» описываются так: Слабость таблицы задаётся __mode: k ослабляет ключи, v значения, kv оба; строки и некоторые другие значения имеют особые ограничения, а слабая ссылка не гарантирует момент удаления.