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

Численная воспроизводимость

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 85 минут. После завершения откроются правильные ответы, объяснения и результаты по темам.
Вопрос 1 из 30
Какое объяснение для `x = [1e16, 1.0, -1e16]` выдержит проверку на другом допустимом входе?
(a+b)+c\neq a+(b+c)
JuliaJulia · Порядок операций
x = [1e16, 1.0, -1e16]
left = (x[1] + x[2]) + x[3]
right = x[1] + (x[2] + x[3])
@show left right sum(x)
Вопрос 2 из 30
Какую проверку стоит добавить для участка с `x = [1e16, 1.0, -1e16]`?
JuliaJulia · Порядок операций
x = [1e16, 1.0, -1e16]
left = (x[1] + x[2]) + x[3]
right = x[1] + (x[2] + x[3])
@show left right sum(x)
Вопрос 3 из 30
Что должно остаться истинным после рефакторинга участка с `x = [1e16, 1.0, -1e16]`?
JuliaJulia · Порядок операций
x = [1e16, 1.0, -1e16]
left = (x[1] + x[2]) + x[3]
right = x[1] + (x[2] + x[3])
@show left right sum(x)
Вопрос 4 из 30
Две реализации участка с `x = [1e16, 1.0, -1e16]` совпадают на обычных данных. Что необходимо проверить перед выпуском?
(a+b)+c\neq a+(b+c)
Вопрос 5 из 30
Какое ограничение стоит прямо указать в документации к участку с `x = [1e16, 1.0, -1e16]`?
Вопрос 6 из 30
Какой механизм Julia определяет поведение строки `rng_stable = StableRNG(123)`?
x_i=RNG(s,i)
JuliaJulia · Случайные генераторы
using Random, StableRNGs
rng_std = Xoshiro(123)
rng_stable = StableRNG(123)
@show rand(rng_std, 3) rand(rng_stable, 3)
Вопрос 7 из 30
Что нужно подтвердить отдельным примером для `rng_stable = StableRNG(123)`?
JuliaJulia · Случайные генераторы
using Random, StableRNGs
rng_std = Xoshiro(123)
rng_stable = StableRNG(123)
@show rand(rng_std, 3) rand(rng_stable, 3)
Вопрос 8 из 30
Какое решение устраняет риск вокруг `rng_stable = StableRNG(123)`, не меняя поведение на допустимых данных?
JuliaJulia · Случайные генераторы
using Random, StableRNGs
rng_std = Xoshiro(123)
rng_stable = StableRNG(123)
@show rand(rng_std, 3) rand(rng_stable, 3)
Вопрос 9 из 30
При переносе кода с `rng_stable = StableRNG(123)` в библиотеку какой критерий нельзя заменять впечатлением «пример работает»?
x_i=RNG(s,i)
Вопрос 10 из 30
Какой тезис о `rng_stable = StableRNG(123)` можно честно закрепить в справке?
Вопрос 11 из 30
Какое объяснение для `report = (` выдержит проверку на другом допустимом входе?
R=R(v_J,v_P,v_{BLAS})
JuliaJulia · Версии библиотек
using LinearAlgebra, Pkg
report = (
    julia=string(VERSION),
    blas=BLAS.get_config(),
    project=Base.active_project(),
)
@show report
Вопрос 12 из 30
Какую проверку стоит добавить для участка с `report = (`?
JuliaJulia · Версии библиотек
using LinearAlgebra, Pkg
report = (
    julia=string(VERSION),
    blas=BLAS.get_config(),
    project=Base.active_project(),
)
@show report
Вопрос 13 из 30
Какое решение устраняет риск вокруг `report = (`, не меняя поведение на допустимых данных?
JuliaJulia · Версии библиотек
using LinearAlgebra, Pkg
report = (
    julia=string(VERSION),
    blas=BLAS.get_config(),
    project=Base.active_project(),
)
@show report
Вопрос 14 из 30
Как проверить, что новая реализация `report = (` не изменила обещанное пользователю поведение?
R=R(v_J,v_P,v_{BLAS})
Вопрос 15 из 30
Какое ограничение стоит прямо указать в документации к участку с `report = (`?
Вопрос 16 из 30
Как нужно интерпретировать `@test isapprox(observed, reference; rtol=1e-9, atol=1e-14)`, не добавляя к коду лишних гарантий?
|x-y|\le atol+rtol|y|
JuliaJulia · Допуски
using Test
reference = [1e-12, 1.0, 1e8]
observed = reference .* (1 .+ [1e-3, 1e-10, 1e-12])
@test isapprox(observed, reference; rtol=1e-9, atol=1e-14)
Вопрос 17 из 30
Какую проверку стоит добавить для участка с `@test isapprox(observed, reference; rtol=1e-9, atol=1e-14)`?
JuliaJulia · Допуски
using Test
reference = [1e-12, 1.0, 1e8]
observed = reference .* (1 .+ [1e-3, 1e-10, 1e-12])
@test isapprox(observed, reference; rtol=1e-9, atol=1e-14)
Вопрос 18 из 30
Какой контракт следует закрепить при переработке строки `@test isapprox(observed, reference; rtol=1e-9, atol=1e-14)`?
JuliaJulia · Допуски
using Test
reference = [1e-12, 1.0, 1e8]
observed = reference .* (1 .+ [1e-3, 1e-10, 1e-12])
@test isapprox(observed, reference; rtol=1e-9, atol=1e-14)
Вопрос 19 из 30
После обновления Julia или пакета поведение участка с `@test isapprox(observed, reference; rtol=1e-9, atol=1e-14)` изменилось. Какой критерий приёмки остаётся корректным?
|x-y|\le atol+rtol|y|
Вопрос 20 из 30
Какое ограничение стоит прямо указать в документации к участку с `@test isapprox(observed, reference; rtol=1e-9, atol=1e-14)`?
Вопрос 21 из 30
Какое объяснение для `any(ismissing, x) && throw(ArgumentError("missing measurement"))` выдержит проверку на другом допустимом входе?
Q(data)=Q(unit,range,missing,source)
JuliaJulia · Качество данных
function validate_measurements(x; unit)
    unit in (:m, :cm) || throw(ArgumentError("unsupported unit"))
    any(ismissing, x) && throw(ArgumentError("missing measurement"))
    all(isfinite, x) || throw(ArgumentError("non-finite measurement"))
    return unit === :cm ? x ./ 100 : x
end
Вопрос 22 из 30
Какой тест точнее всего зафиксирует границу поведения `any(ismissing, x) && throw(ArgumentError("missing measurement"))`?
JuliaJulia · Качество данных
function validate_measurements(x; unit)
    unit in (:m, :cm) || throw(ArgumentError("unsupported unit"))
    any(ismissing, x) && throw(ArgumentError("missing measurement"))
    all(isfinite, x) || throw(ArgumentError("non-finite measurement"))
    return unit === :cm ? x ./ 100 : x
end
Вопрос 23 из 30
Какую гарантию должна сохранить правка участка с `any(ismissing, x) && throw(ArgumentError("missing measurement"))`?
JuliaJulia · Качество данных
function validate_measurements(x; unit)
    unit in (:m, :cm) || throw(ArgumentError("unsupported unit"))
    any(ismissing, x) && throw(ArgumentError("missing measurement"))
    all(isfinite, x) || throw(ArgumentError("non-finite measurement"))
    return unit === :cm ? x ./ 100 : x
end
Вопрос 24 из 30
Две реализации участка с `any(ismissing, x) && throw(ArgumentError("missing measurement"))` совпадают на обычных данных. Что необходимо проверить перед выпуском?
Q(data)=Q(unit,range,missing,source)
Вопрос 25 из 30
Какой тезис о `any(ismissing, x) && throw(ArgumentError("missing measurement"))` можно честно закрепить в справке?
Вопрос 26 из 30
Какое объяснение для `config = Dict("seed"=>42, "rtol"=>1e-8)` выдержит проверку на другом допустимом входе?
H=hash(code,env,data,config)
JuliaJulia · Воспроизводимость результата
using SHA, TOML
config = Dict("seed"=>42, "rtol"=>1e-8)
data = rand(10)
report = Dict(
    "julia"=>string(VERSION),
    "project"=>Base.active_project(),
    "data_sha256"=>bytes2hex(sha256(reinterpret(UInt8, data))),
    "config"=>config,
)
TOML.print(stdout, report)
Вопрос 27 из 30
Какой контрольный тест лучше всего проверит правило, связанное с `config = Dict("seed"=>42, "rtol"=>1e-8)`?
JuliaJulia · Воспроизводимость результата
using SHA, TOML
config = Dict("seed"=>42, "rtol"=>1e-8)
data = rand(10)
report = Dict(
    "julia"=>string(VERSION),
    "project"=>Base.active_project(),
    "data_sha256"=>bytes2hex(sha256(reinterpret(UInt8, data))),
    "config"=>config,
)
TOML.print(stdout, report)
Вопрос 28 из 30
Какую гарантию должна сохранить правка участка с `config = Dict("seed"=>42, "rtol"=>1e-8)`?
JuliaJulia · Воспроизводимость результата
using SHA, TOML
config = Dict("seed"=>42, "rtol"=>1e-8)
data = rand(10)
report = Dict(
    "julia"=>string(VERSION),
    "project"=>Base.active_project(),
    "data_sha256"=>bytes2hex(sha256(reinterpret(UInt8, data))),
    "config"=>config,
)
TOML.print(stdout, report)
Вопрос 29 из 30
После обновления Julia или пакета поведение участка с `config = Dict("seed"=>42, "rtol"=>1e-8)` изменилось. Какой критерий приёмки остаётся корректным?
H=hash(code,env,data,config)
Вопрос 30 из 30
Что следует сообщить пользователю библиотеки о поведении `config = Dict("seed"=>42, "rtol"=>1e-8)`?

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

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

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

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