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

Производительность Lua

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На работу отведено 85 минут. После завершения можно посмотреть правильные ответы, объяснения и результат по каждой теме.
Вопрос 1 из 30
Что нужно знать о Lua, прежде чем предсказывать результат этого кода? Нужна именно центральная гарантия раздела «Профилирование».
LuaLua · Профилирование · разбор 1
local profiler=require("profiler")
profiler.start()
for _=1,1000 do process_batch(batch) end
local report=profiler.stop()
print(report:top(10))
Вопрос 2 из 30
Какое последствие проявится только при другом входе или повторном вызове? Выберите именно проверяемую границу раздела «Профилирование».
LuaLua · Профилирование · разбор 2
local function reproduce_case()
  local profiler=require("profiler")
  profiler.start()
  for _=1,1000 do process_batch(batch) end
  local report=profiler.stop()
  print(report:top(10))
end
reproduce_case()
Вопрос 3 из 30
Что здесь является частью контракта, а не случайностью текущей записи? Нужен основной контракт раздела «Профилирование».
LuaLua · Профилирование · разбор 3
do
  local profiler=require("profiler")
  profiler.start()
  for _=1,1000 do process_batch(batch) end
  local report=profiler.stop()
  print(report:top(10))
end
Вопрос 4 из 30
Новый интерфейс скрывает детали раздела «Профилирование». Что всё равно должно быть явно проверяемо? Ответ должен выражать проверяемое следствие раздела «Профилирование».
Вопрос 5 из 30
Какое утверждение о разделе «Профилирование» наиболее полное и точное? Выберите описание, объединяющее механизм и границу раздела «Профилирование».
Вопрос 6 из 30
Что нельзя заменить привычкой из другого языка при чтении этого кода? Нужна именно центральная гарантия раздела «Аллокации».
LuaLua · Аллокации · разбор 1
local function parse(rows)
  local out={}
  for i,row in ipairs(rows) do out[i]={id=row.id,value=normalize(row.value)} end
  return out
end
collectgarbage("collect")
local before=collectgarbage("count")
parse(rows)
print(collectgarbage("count")-before)
Вопрос 7 из 30
Первый пример подтверждает основной путь. Что проверить отдельно? Выберите именно проверяемую границу раздела «Аллокации».
LuaLua · Аллокации · разбор 2
local function reproduce_case()
  local function parse(rows)
    local out={}
    for i,row in ipairs(rows) do out[i]={id=row.id,value=normalize(row.value)} end
    return out
  end
  collectgarbage("collect")
  local before=collectgarbage("count")
  parse(rows)
  print(collectgarbage("count")-before)
end
reproduce_case()
Вопрос 8 из 30
Что нужно проверить после замены реализации? Выберите гарантию, определяющую раздел «Аллокации».
LuaLua · Аллокации · разбор 3
do
  local function parse(rows)
    local out={}
    for i,row in ipairs(rows) do out[i]={id=row.id,value=normalize(row.value)} end
    return out
  end
  collectgarbage("collect")
  local before=collectgarbage("count")
  parse(rows)
  print(collectgarbage("count")-before)
end
Вопрос 9 из 30
В модуле меняют «Аллокации» и хотят сохранить диагностируемость. Какой подход надёжнее? Нужна эксплуатационная граница раздела «Аллокации».
Вопрос 10 из 30
Какое утверждение о разделе «Аллокации» наиболее полное и точное? Выберите описание, объединяющее механизм и границу раздела «Аллокации».
Вопрос 11 из 30
Какой контракт языка проявляется в этом примере? Ответ должен описывать основной механизм раздела «Локальные ссылки».
LuaLua · Локальные ссылки · разбор 1
local sin=math.sin
local total=0
for i=1,1000000 do total=total+sin(i) end
print(total)
Вопрос 12 из 30
Что здесь важнее проверить, чем само отсутствие ошибки? Ищется граничное следствие правила из раздела «Локальные ссылки».
LuaLua · Локальные ссылки · разбор 2
local function reproduce_case()
  local sin=math.sin
  local total=0
  for i=1,1000000 do total=total+sin(i) end
  print(total)
end
reproduce_case()
Вопрос 13 из 30
После рефакторинга тесты должны защищать одно правило. Какое? Выберите гарантию, определяющую раздел «Локальные ссылки».
LuaLua · Локальные ссылки · разбор 3
do
  local sin=math.sin
  local total=0
  for i=1,1000000 do total=total+sin(i) end
  print(total)
end
Вопрос 14 из 30
В проекте пересматривают «Локальные ссылки». Какое правило лучше выразить в интерфейсе, а не оставлять устной договорённостью? Ответ должен выражать проверяемое следствие раздела «Локальные ссылки».
Вопрос 15 из 30
Что в разделе «Локальные ссылки» является гарантией, а не привычкой конкретного проекта? Ответ должен охватывать весь раздел «Локальные ссылки».
Вопрос 16 из 30
Какая семантическая деталь определяет поведение фрагмента? Выберите основное правило раздела «Структура таблиц».
LuaLua · Структура таблиц · разбор 1
local dense={}
for i=1,100000 do dense[i]=i end
local sparse={}
for i=1,100000 do sparse[i*10]=i end
benchmark(dense,sparse)
Вопрос 17 из 30
Какой крайний случай важнее всего добавить к проверке? Ищется граничное следствие правила из раздела «Структура таблиц».
LuaLua · Структура таблиц · разбор 2
local function reproduce_case()
  local dense={}
  for i=1,100000 do dense[i]=i end
  local sparse={}
  for i=1,100000 do sparse[i*10]=i end
  benchmark(dense,sparse)
end
reproduce_case()
Вопрос 18 из 30
Какое требование стоит закрепить тестом до начала рефакторинга? Выберите гарантию, определяющую раздел «Структура таблиц».
LuaLua · Структура таблиц · разбор 3
do
  local dense={}
  for i=1,100000 do dense[i]=i end
  local sparse={}
  for i=1,100000 do sparse[i*10]=i end
  benchmark(dense,sparse)
end
Вопрос 19 из 30
Код по разделу «Структура таблиц» уходит в эксплуатацию. Какое ограничение нельзя прятать внутри реализации? Нужна эксплуатационная граница раздела «Структура таблиц».
Вопрос 20 из 30
Что помогает не переносить в раздел «Структура таблиц» привычки из другого языка или среды? Ответ должен охватывать весь раздел «Структура таблиц».
Вопрос 21 из 30
На каком правиле держится поведение этого кода? Ответ должен описывать основной механизм раздела «Наблюдаемость и диагностика».
LuaLua · Наблюдаемость и диагностика · разбор 1
metrics.observe("lua_request_seconds",elapsed,{script=version})
metrics.observe("lua_gc_kb",collectgarbage("count"))
metrics.count("lua_errors_total",1,{kind=error_kind})
Вопрос 22 из 30
Что здесь важнее проверить, чем само отсутствие ошибки? Нужен отрицательный сценарий для раздела «Наблюдаемость и диагностика».
LuaLua · Наблюдаемость и диагностика · разбор 2
local function reproduce_case()
  metrics.observe("lua_request_seconds",elapsed,{script=version})
  metrics.observe("lua_gc_kb",collectgarbage("count"))
  metrics.count("lua_errors_total",1,{kind=error_kind})
end
reproduce_case()
Вопрос 23 из 30
Какое поведение должно совпасть до и после рефакторинга? Нужен основной контракт раздела «Наблюдаемость и диагностика».
LuaLua · Наблюдаемость и диагностика · разбор 3
do
  metrics.observe("lua_request_seconds",elapsed,{script=version})
  metrics.observe("lua_gc_kb",collectgarbage("count"))
  metrics.count("lua_errors_total",1,{kind=error_kind})
end
Вопрос 24 из 30
Какой принцип сделает реализацию «Наблюдаемость и диагностика» устойчивой, а не просто удачной на одном примере? Ответ должен выражать проверяемое следствие раздела «Наблюдаемость и диагностика».
Вопрос 25 из 30
Что нельзя вывести из одного удачного примера, но нужно знать о разделе «Наблюдаемость и диагностика»? Нужна полная формулировка раздела «Наблюдаемость и диагностика».
Вопрос 26 из 30
Результат здесь задаёт не соглашение проекта, а правило языка. Какое? Ответ должен описывать основной механизм раздела «Надёжность в эксплуатации».
LuaLua · Надёжность в эксплуатации · разбор 1
local ok,result=pcall(run_request,input)
if not ok then
  circuit:record_failure()
  logger:error({err=result,script=version,request=id})
  return fallback()
end
Вопрос 27 из 30
Какая проверка отделит устойчивый контракт от удачного совпадения? Ищется граничное следствие правила из раздела «Надёжность в эксплуатации».
LuaLua · Надёжность в эксплуатации · разбор 2
local function reproduce_case()
  local ok,result=pcall(run_request,input)
  if not ok then
    circuit:record_failure()
    logger:error({err=result,script=version,request=id})
    return fallback()
  end
end
reproduce_case()
Вопрос 28 из 30
После рефакторинга тесты должны защищать одно правило. Какое? Речь идёт о центральном правиле раздела «Надёжность в эксплуатации».
LuaLua · Надёжность в эксплуатации · разбор 3
do
  local ok,result=pcall(run_request,input)
  if not ok then
    circuit:record_failure()
    logger:error({err=result,script=version,request=id})
    return fallback()
  end
end
Вопрос 29 из 30
В проекте пересматривают «Надёжность в эксплуатации». Какое правило лучше выразить в интерфейсе, а не оставлять устной договорённостью? Ответ должен выражать проверяемое следствие раздела «Надёжность в эксплуатации».
Вопрос 30 из 30
Что помогает не переносить в раздел «Надёжность в эксплуатации» привычки из другого языка или среды? Ответ должен охватывать весь раздел «Надёжность в эксплуатации».

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

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

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

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