LU Lua  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

Архитектура встраиваемой подсистемы

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На работу отведено 85 минут. После завершения можно посмотреть правильные ответы, объяснения и результат по каждой теме.
Вопрос 1 из 30
Какое правило Lua нужно применить, чтобы верно прочитать этот фрагмент? Выберите основное правило раздела «Граница API».
LuaLua · Граница API · разбор 1
local api={}
function api.get_user(id)
  assert_integer(id,1,2^31-1)
  local row,err=host_call("user.get",{id=id,api=2})
  if not row then return nil,normalize_error(err) end
  return validate_user(row)
end
Вопрос 2 из 30
Что следует изменить во входе, чтобы проверить скрытое ограничение? Ищется граничное следствие правила из раздела «Граница API».
LuaLua · Граница API · разбор 2
local function reproduce_case()
  local api={}
  function api.get_user(id)
    assert_integer(id,1,2^31-1)
    local row,err=host_call("user.get",{id=id,api=2})
    if not row then return nil,normalize_error(err) end
    return validate_user(row)
  end
end
reproduce_case()
Вопрос 3 из 30
Что нельзя считать деталью реализации в этом коде? Нужен основной контракт раздела «Граница API».
LuaLua · Граница API · разбор 3
do
  local api={}
  function api.get_user(id)
    assert_integer(id,1,2^31-1)
    local row,err=host_call("user.get",{id=id,api=2})
    if not row then return nil,normalize_error(err) end
    return validate_user(row)
  end
end
Вопрос 4 из 30
В ревью обсуждают «Граница API». Какое утверждение действительно влияет на надёжность решения? Выберите практическое следствие раздела «Граница API».
Вопрос 5 из 30
Какой вариант точнее всего передаёт смысл раздела «Граница API»? Нужна полная формулировка раздела «Граница API».
Вопрос 6 из 30
В чём ключ к разбору строки «register_callbacks(L,host_context)»? Выберите основное правило раздела «Жизненный цикл VM».
LuaLua · Жизненный цикл VM · разбор 1
local L=create_state(allocator)
open_safe_libraries(L)
load_bootstrap(L,release)
register_callbacks(L,host_context)
local ok,err=run_entry(L,input)
release_registry_refs(L)
close_state(L)
Вопрос 7 из 30
Что здесь важнее проверить, чем само отсутствие ошибки? Выберите именно проверяемую границу раздела «Жизненный цикл VM».
LuaLua · Жизненный цикл VM · разбор 2
local function reproduce_case()
  local L=create_state(allocator)
  open_safe_libraries(L)
  load_bootstrap(L,release)
  register_callbacks(L,host_context)
  local ok,err=run_entry(L,input)
  release_registry_refs(L)
  close_state(L)
end
reproduce_case()
Вопрос 8 из 30
Какой результат обязан подтверждать регрессионный тест после правки? Выберите гарантию, определяющую раздел «Жизненный цикл VM».
LuaLua · Жизненный цикл VM · разбор 3
do
  local L=create_state(allocator)
  open_safe_libraries(L)
  load_bootstrap(L,release)
  register_callbacks(L,host_context)
  local ok,err=run_entry(L,input)
  release_registry_refs(L)
  close_state(L)
end
Вопрос 9 из 30
В модуле меняют «Жизненный цикл VM» и хотят сохранить диагностируемость. Какой подход надёжнее? Нужна эксплуатационная граница раздела «Жизненный цикл VM».
Вопрос 10 из 30
Какой вариант точнее всего передаёт смысл раздела «Жизненный цикл VM»? Нужна полная формулировка раздела «Жизненный цикл VM».
Вопрос 11 из 30
Что нужно знать о Lua, прежде чем предсказывать результат этого кода? Выберите основное правило раздела «Пулы состояний».
LuaLua · Пулы состояний · разбор 1
local L=pool:acquire()
local ok,result=run_request(L,request)
if ok and reset_state(L) then pool:release(L) else pool:discard(L) end
return ok,result
Вопрос 12 из 30
Какой крайний случай важнее всего добавить к проверке? Ищется граничное следствие правила из раздела «Пулы состояний».
LuaLua · Пулы состояний · разбор 2
local function reproduce_case()
  local L=pool:acquire()
  local ok,result=run_request(L,request)
  if ok and reset_state(L) then pool:release(L) else pool:discard(L) end
  return ok,result
end
reproduce_case()
Вопрос 13 из 30
Какое поведение должно совпасть до и после рефакторинга? Выберите гарантию, определяющую раздел «Пулы состояний».
LuaLua · Пулы состояний · разбор 3
do
  local L=pool:acquire()
  local ok,result=run_request(L,request)
  if ok and reset_state(L) then pool:release(L) else pool:discard(L) end
  return ok,result
end
Вопрос 14 из 30
Код по разделу «Пулы состояний» уходит в эксплуатацию. Какое ограничение нельзя прятать внутри реализации? Выберите практическое следствие раздела «Пулы состояний».
Вопрос 15 из 30
Какое утверждение о разделе «Пулы состояний» наиболее полное и точное? Ответ должен охватывать весь раздел «Пулы состояний».
Вопрос 16 из 30
Какой механизм показан в строке «local release=registry:load(version)»? Ответ должен описывать основной механизм раздела «Обновление сценариев».
LuaLua · Обновление сценариев · разбор 1
local release=registry:load(version)
local next_vm=build_vm(release)
assert(run_smoke(next_vm))
registry:publish(version,next_vm)
drain_old_vms()
Вопрос 17 из 30
Что должен поймать отрицательный тест для этого фрагмента? Нужен отрицательный сценарий для раздела «Обновление сценариев».
LuaLua · Обновление сценариев · разбор 2
local function reproduce_case()
  local release=registry:load(version)
  local next_vm=build_vm(release)
  assert(run_smoke(next_vm))
  registry:publish(version,next_vm)
  drain_old_vms()
end
reproduce_case()
Вопрос 18 из 30
Какое правило должно остаться наблюдаемым после правки? Нужен основной контракт раздела «Обновление сценариев».
LuaLua · Обновление сценариев · разбор 3
do
  local release=registry:load(version)
  local next_vm=build_vm(release)
  assert(run_smoke(next_vm))
  registry:publish(version,next_vm)
  drain_old_vms()
end
Вопрос 19 из 30
В модуле меняют «Обновление сценариев» и хотят сохранить диагностируемость. Какой подход надёжнее? Выберите практическое следствие раздела «Обновление сценариев».
Вопрос 20 из 30
На какое утверждение можно опереться при проектировании раздела «Обновление сценариев»? Выберите описание, объединяющее механизм и границу раздела «Обновление сценариев».
Вопрос 21 из 30
Какое правило Lua нужно применить, чтобы верно прочитать этот фрагмент? Ответ должен описывать основной механизм раздела «Качество данных».
LuaLua · Качество данных · разбор 1
local input=decode_message(bytes)
assert(#bytes<=MAX_MESSAGE)
local clean=validate_schema(input,request_schema)
local result=call_lua(clean)
return encode_message(validate_schema(result,response_schema))
Вопрос 22 из 30
Какую границу стоит сделать явной в регрессионной проверке? Ищется граничное следствие правила из раздела «Качество данных».
LuaLua · Качество данных · разбор 2
local function reproduce_case()
  local input=decode_message(bytes)
  assert(#bytes<=MAX_MESSAGE)
  local clean=validate_schema(input,request_schema)
  local result=call_lua(clean)
  return encode_message(validate_schema(result,response_schema))
end
reproduce_case()
Вопрос 23 из 30
Какой смысл фрагмента нельзя спрятать в комментарии вместо проверки? Нужен основной контракт раздела «Качество данных».
LuaLua · Качество данных · разбор 3
do
  local input=decode_message(bytes)
  assert(#bytes<=MAX_MESSAGE)
  local clean=validate_schema(input,request_schema)
  local result=call_lua(clean)
  return encode_message(validate_schema(result,response_schema))
end
Вопрос 24 из 30
Какое решение по разделу «Качество данных» упростит и проверку, и расследование сбоя? Выберите практическое следствие раздела «Качество данных».
Вопрос 25 из 30
На какое утверждение можно опереться при проектировании раздела «Качество данных»? Нужна полная формулировка раздела «Качество данных».
Вопрос 26 из 30
Что именно объясняет поведение строки «local context={runtime_hash=runtime_hash(),script_hash=script_hash,»? Нужна именно центральная гарантия раздела «Воспроизводимость результата».
LuaLua · Воспроизводимость результата · разбор 1
local context={runtime_hash=runtime_hash(),script_hash=script_hash,
 dependency_lock=lock_hash,request_id=request.id}
local result=run(request,context)
audit:write(context,result.status)
Вопрос 27 из 30
Где этот код может повести себя иначе на границе? Ищется граничное следствие правила из раздела «Воспроизводимость результата».
LuaLua · Воспроизводимость результата · разбор 2
local function reproduce_case()
  local context={runtime_hash=runtime_hash(),script_hash=script_hash,
   dependency_lock=lock_hash,request_id=request.id}
  local result=run(request,context)
  audit:write(context,result.status)
end
reproduce_case()
Вопрос 28 из 30
Код переписывают без изменения внешнего поведения. Какой контракт должен сохраниться? Выберите гарантию, определяющую раздел «Воспроизводимость результата».
LuaLua · Воспроизводимость результата · разбор 3
do
  local context={runtime_hash=runtime_hash(),script_hash=script_hash,
   dependency_lock=lock_hash,request_id=request.id}
  local result=run(request,context)
  audit:write(context,result.status)
end
Вопрос 29 из 30
Что стоит зафиксировать до расширения функциональности раздела «Воспроизводимость результата»? Выберите практическое следствие раздела «Воспроизводимость результата».
Вопрос 30 из 30
Какое утверждение о разделе «Воспроизводимость результата» полезно и при чтении кода, и при ревью? Нужна полная формулировка раздела «Воспроизводимость результата».

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

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

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

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