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

Аудит вычислительной модели Julia

Профессиональные сценарии по теме «Аудит вычислительной модели Julia» проверяют диагностику, производительность, безопасность и способность защитить архитектурное решение. Вопросы требуют читать код, находить границу применимости, выбирать проверяемую правку и отличать свойства Julia от поведения конкретного пакета. В тесте 30 вопросов: 18 заданий с кодом и 12 заданий с математической записью. Все формулировки рассчитаны на Julia 1.12.6; для сторонних библиотек используется явно названный API.

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 85 минут. После завершения откроются правильные ответы, объяснения и результаты по темам.
Вопрос 1 из 30
Какой механизм Julia определяет поведение строки `a.unit in (:s, :ms) || throw(ArgumentError("unit"))`?
A=\{domain,units,independence,smoothness\}
JuliaJulia · Математические допущения
struct ModelAssumptions
    unit::Symbol
    independent::Bool
    smooth::Bool
    domain::Tuple{Float64,Float64}
end
function validate(a::ModelAssumptions)
    a.unit in (:s, :ms) || throw(ArgumentError("unit"))
    first(a.domain) < last(a.domain) || throw(ArgumentError("domain"))
    return a
end
Вопрос 2 из 30
Что нужно подтвердить отдельным примером для `a.unit in (:s, :ms) || throw(ArgumentError("unit"))`?
JuliaJulia · Математические допущения
struct ModelAssumptions
    unit::Symbol
    independent::Bool
    smooth::Bool
    domain::Tuple{Float64,Float64}
end
function validate(a::ModelAssumptions)
    a.unit in (:s, :ms) || throw(ArgumentError("unit"))
    first(a.domain) < last(a.domain) || throw(ArgumentError("domain"))
    return a
end
Вопрос 3 из 30
Какой контракт следует закрепить при переработке строки `a.unit in (:s, :ms) || throw(ArgumentError("unit"))`?
JuliaJulia · Математические допущения
struct ModelAssumptions
    unit::Symbol
    independent::Bool
    smooth::Bool
    domain::Tuple{Float64,Float64}
end
function validate(a::ModelAssumptions)
    a.unit in (:s, :ms) || throw(ArgumentError("unit"))
    first(a.domain) < last(a.domain) || throw(ArgumentError("domain"))
    return a
end
Вопрос 4 из 30
Две реализации участка с `a.unit in (:s, :ms) || throw(ArgumentError("unit"))` совпадают на обычных данных. Что необходимо проверить перед выпуском?
A=\{domain,units,independence,smoothness\}
Вопрос 5 из 30
Какое утверждение о `a.unit in (:s, :ms) || throw(ArgumentError("unit"))` является переносимым правилом, а не особенностью одного запуска?
Вопрос 6 из 30
Что именно следует из фрагмента с `n > 0 || throw(ArgumentError("n"))`?
\lVert y-y_{ref}\rVert\le\tau
JuliaJulia · Корректность кода
function trapezoid(f, a, b, n)
    n > 0 || throw(ArgumentError("n"))
    h = (b-a)/n
    s = (f(a)+f(b))/2
    for i in 1:n-1
        s += f(a+i*h)
    end
    return h*s
end
@show trapezoid(sin, 0.0, π, 1000)
Вопрос 7 из 30
Какой контрольный тест лучше всего проверит правило, связанное с `n > 0 || throw(ArgumentError("n"))`?
JuliaJulia · Корректность кода
function trapezoid(f, a, b, n)
    n > 0 || throw(ArgumentError("n"))
    h = (b-a)/n
    s = (f(a)+f(b))/2
    for i in 1:n-1
        s += f(a+i*h)
    end
    return h*s
end
@show trapezoid(sin, 0.0, π, 1000)
Вопрос 8 из 30
Какую гарантию должна сохранить правка участка с `n > 0 || throw(ArgumentError("n"))`?
JuliaJulia · Корректность кода
function trapezoid(f, a, b, n)
    n > 0 || throw(ArgumentError("n"))
    h = (b-a)/n
    s = (f(a)+f(b))/2
    for i in 1:n-1
        s += f(a+i*h)
    end
    return h*s
end
@show trapezoid(sin, 0.0, π, 1000)
Вопрос 9 из 30
Какой результат приёмочного теста подтвердит корректность участка с `n > 0 || throw(ArgumentError("n"))`?
\lVert y-y_{ref}\rVert\le\tau
Вопрос 10 из 30
Как сформулировать границу механизма `n > 0 || throw(ArgumentError("n"))` без чрезмерного обещания?
Вопрос 11 из 30
Какое объяснение для `haskey(row, :id) || throw(ArgumentError("row $i: no id"))` выдержит проверку на другом допустимом входе?
D\models S
JuliaJulia · Проверка данных
function load_rows(rows)
    out = NamedTuple[]
    for (i,row) in pairs(rows)
        haskey(row, :id) || throw(ArgumentError("row $i: no id"))
        haskey(row, :value) || throw(ArgumentError("row $i: no value"))
        isfinite(row.value) || throw(ArgumentError("row $i: non-finite"))
        push!(out, row)
    end
    return out
end
Вопрос 12 из 30
Какой тест точнее всего зафиксирует границу поведения `haskey(row, :id) || throw(ArgumentError("row $i: no id"))`?
JuliaJulia · Проверка данных
function load_rows(rows)
    out = NamedTuple[]
    for (i,row) in pairs(rows)
        haskey(row, :id) || throw(ArgumentError("row $i: no id"))
        haskey(row, :value) || throw(ArgumentError("row $i: no value"))
        isfinite(row.value) || throw(ArgumentError("row $i: non-finite"))
        push!(out, row)
    end
    return out
end
Вопрос 13 из 30
Какой контракт следует закрепить при переработке строки `haskey(row, :id) || throw(ArgumentError("row $i: no id"))`?
JuliaJulia · Проверка данных
function load_rows(rows)
    out = NamedTuple[]
    for (i,row) in pairs(rows)
        haskey(row, :id) || throw(ArgumentError("row $i: no id"))
        haskey(row, :value) || throw(ArgumentError("row $i: no value"))
        isfinite(row.value) || throw(ArgumentError("row $i: non-finite"))
        push!(out, row)
    end
    return out
end
Вопрос 14 из 30
Как проверить, что новая реализация `haskey(row, :id) || throw(ArgumentError("row $i: no id"))` не изменила обещанное пользователю поведение?
D\models S
Вопрос 15 из 30
Как сформулировать границу механизма `haskey(row, :id) || throw(ArgumentError("row $i: no id"))` без чрезмерного обещания?
Вопрос 16 из 30
Какое объяснение для `residual = y .- yhat` выдержит проверку на другом допустимом входе?
U_{total}=U_{data}+U_{model}+U_{numeric}
JuliaJulia · Достоверность вывода
function audit_result(y, yhat; numerical_error, data_sd)
    residual = y .- yhat
    return (
        rmse=sqrt(sum(abs2, residual)/length(residual)),
        numerical_error=numerical_error,
        data_sd=data_sd,
        max_residual=maximum(abs, residual),
    )
end
Вопрос 17 из 30
Какой эксперимент отличит настоящий механизм `residual = y .- yhat` от случайного результата одного запуска?
JuliaJulia · Достоверность вывода
function audit_result(y, yhat; numerical_error, data_sd)
    residual = y .- yhat
    return (
        rmse=sqrt(sum(abs2, residual)/length(residual)),
        numerical_error=numerical_error,
        data_sd=data_sd,
        max_residual=maximum(abs, residual),
    )
end
Вопрос 18 из 30
Какое требование к `residual = y .- yhat` важнее удобной детали текущей реализации?
JuliaJulia · Достоверность вывода
function audit_result(y, yhat; numerical_error, data_sd)
    residual = y .- yhat
    return (
        rmse=sqrt(sum(abs2, residual)/length(residual)),
        numerical_error=numerical_error,
        data_sd=data_sd,
        max_residual=maximum(abs, residual),
    )
end
Вопрос 19 из 30
При переносе кода с `residual = y .- yhat` в библиотеку какой критерий нельзя заменять впечатлением «пример работает»?
U_{total}=U_{data}+U_{model}+U_{numeric}
Вопрос 20 из 30
Какое утверждение о `residual = y .- yhat` является переносимым правилом, а не особенностью одного запуска?
Вопрос 21 из 30
Какое утверждение точнее всего объясняет участок с `item = DebtItem("legacy solver", "different boundary rule", ["golden_01"], "dual-run", "3…`?
Debt=(risk,scope,migration,exit)
JuliaJulia · Технический долг
struct DebtItem
    component::String
    risk::String
    affected_tests::Vector{String}
    migration_step::String
    removal_condition::String
end
item = DebtItem("legacy solver", "different boundary rule", ["golden_01"], "dual-run", "30 days equal results")
@show item
Вопрос 22 из 30
Какой контрольный тест лучше всего проверит правило, связанное с `item = DebtItem("legacy solver", "different boundary rule", ["golden_01"], "dual-run", "3…`?
JuliaJulia · Технический долг
struct DebtItem
    component::String
    risk::String
    affected_tests::Vector{String}
    migration_step::String
    removal_condition::String
end
item = DebtItem("legacy solver", "different boundary rule", ["golden_01"], "dual-run", "30 days equal results")
@show item
Вопрос 23 из 30
Какое требование к `item = DebtItem("legacy solver", "different boundary rule", ["golden_01"], "dual-run", "3…` важнее удобной детали текущей реализации?
JuliaJulia · Технический долг
struct DebtItem
    component::String
    risk::String
    affected_tests::Vector{String}
    migration_step::String
    removal_condition::String
end
item = DebtItem("legacy solver", "different boundary rule", ["golden_01"], "dual-run", "30 days equal results")
@show item
Вопрос 24 из 30
Две реализации участка с `item = DebtItem("legacy solver", "different boundary rule", ["golden_01"], "dual-run", "3…` совпадают на обычных данных. Что необходимо проверить перед выпуском?
Debt=(risk,scope,migration,exit)
Вопрос 25 из 30
Что следует сообщить пользователю библиотеки о поведении `item = DebtItem("legacy solver", "different boundary rule", ["golden_01"], "dual-run", "3…`?
Вопрос 26 из 30
Какое утверждение точнее всего объясняет участок с `function run_model(problem, backend::ModelBackend; format_version=v"2.0.0")`?
v_{in}\xrightarrow{adapter}v_{out}
JuliaJulia · Эволюция архитектуры
abstract type ModelBackend end
struct StableBackend <: ModelBackend end
struct ExperimentalBackend <: ModelBackend end
function run_model(problem, backend::ModelBackend; format_version=v"2.0.0")
    validated = validate_input(problem, format_version)
    result = execute(backend, validated)
    return encode_result(result, format_version)
end
Вопрос 27 из 30
Какой эксперимент отличит настоящий механизм `function run_model(problem, backend::ModelBackend; format_version=v"2.0.0")` от случайного результата одного запуска?
JuliaJulia · Эволюция архитектуры
abstract type ModelBackend end
struct StableBackend <: ModelBackend end
struct ExperimentalBackend <: ModelBackend end
function run_model(problem, backend::ModelBackend; format_version=v"2.0.0")
    validated = validate_input(problem, format_version)
    result = execute(backend, validated)
    return encode_result(result, format_version)
end
Вопрос 28 из 30
Какой контракт следует закрепить при переработке строки `function run_model(problem, backend::ModelBackend; format_version=v"2.0.0")`?
JuliaJulia · Эволюция архитектуры
abstract type ModelBackend end
struct StableBackend <: ModelBackend end
struct ExperimentalBackend <: ModelBackend end
function run_model(problem, backend::ModelBackend; format_version=v"2.0.0")
    validated = validate_input(problem, format_version)
    result = execute(backend, validated)
    return encode_result(result, format_version)
end
Вопрос 29 из 30
Две реализации участка с `function run_model(problem, backend::ModelBackend; format_version=v"2.0.0")` совпадают на обычных данных. Что необходимо проверить перед выпуском?
v_{in}\xrightarrow{adapter}v_{out}
Вопрос 30 из 30
Какой тезис о `function run_model(problem, backend::ModelBackend; format_version=v"2.0.0")` можно честно закрепить в справке?

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

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

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

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