JL Julia  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Параметрические типы

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

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На работу отведено 55 минут. После завершения откроются правильные ответы, объяснения и результаты по темам.
Вопрос 1 из 20
Что именно следует из фрагмента с `midpoint(p::PairBox{T}) where {T<:Real} = (p.left + p.right) / 2`?
C\{T\}
JuliaJulia · Параметры
struct PairBox{T}
    left::T
    right::T
end
midpoint(p::PairBox{T}) where {T<:Real} = (p.left + p.right) / 2
@show midpoint(PairBox(1, 4))
Вопрос 2 из 20
Что нужно подтвердить отдельным примером для `midpoint(p::PairBox{T}) where {T<:Real} = (p.left + p.right) / 2`?
JuliaJulia · Параметры
struct PairBox{T}
    left::T
    right::T
end
midpoint(p::PairBox{T}) where {T<:Real} = (p.left + p.right) / 2
@show midpoint(PairBox(1, 4))
Вопрос 3 из 20
Какую гарантию должна сохранить правка участка с `midpoint(p::PairBox{T}) where {T<:Real} = (p.left + p.right) / 2`?
JuliaJulia · Параметры
struct PairBox{T}
    left::T
    right::T
end
midpoint(p::PairBox{T}) where {T<:Real} = (p.left + p.right) / 2
@show midpoint(PairBox(1, 4))
Вопрос 4 из 20
После обновления Julia или пакета поведение участка с `midpoint(p::PairBox{T}) where {T<:Real} = (p.left + p.right) / 2` изменилось. Какой критерий приёмки остаётся корректным?
C\{T\}
Вопрос 5 из 20
Какое утверждение о `midpoint(p::PairBox{T}) where {T<:Real} = (p.left + p.right) / 2` является переносимым правилом, а не особенностью одного запуска?
Вопрос 6 из 20
Какое объяснение для `struct Window{T<:Real}` выдержит проверку на другом допустимом входе?
T<:U
JuliaJulia · Ограничения
struct Window{T<:Real}
    lo::T
    hi::T
end
width(w::Window) = w.hi - w.lo
@show Window(1.0, 2.5)
Вопрос 7 из 20
Какой контрольный тест лучше всего проверит правило, связанное с `struct Window{T<:Real}`?
JuliaJulia · Ограничения
struct Window{T<:Real}
    lo::T
    hi::T
end
width(w::Window) = w.hi - w.lo
@show Window(1.0, 2.5)
Вопрос 8 из 20
Что должно остаться истинным после рефакторинга участка с `struct Window{T<:Real}`?
JuliaJulia · Ограничения
struct Window{T<:Real}
    lo::T
    hi::T
end
width(w::Window) = w.hi - w.lo
@show Window(1.0, 2.5)
Вопрос 9 из 20
После обновления Julia или пакета поведение участка с `struct Window{T<:Real}` изменилось. Какой критерий приёмки остаётся корректным?
T<:U
Вопрос 10 из 20
Какое утверждение о `struct Window{T<:Real}` является переносимым правилом, а не особенностью одного запуска?
Вопрос 11 из 20
Какой механизм Julia определяет поведение строки `accept_exact(x::Vector{Animal}) = length(x)`?
C\{A\}\not<:C\{B\}\;\text{при}\;A<:B
JuliaJulia · Инвариантность
abstract type Animal end
struct Cat <: Animal end
accept_exact(x::Vector{Animal}) = length(x)
accept_family(x::Vector{<:Animal}) = length(x)
@show accept_family([Cat(), Cat()])
Вопрос 12 из 20
Какой эксперимент отличит настоящий механизм `accept_exact(x::Vector{Animal}) = length(x)` от случайного результата одного запуска?
JuliaJulia · Инвариантность
abstract type Animal end
struct Cat <: Animal end
accept_exact(x::Vector{Animal}) = length(x)
accept_family(x::Vector{<:Animal}) = length(x)
@show accept_family([Cat(), Cat()])
Вопрос 13 из 20
Какую гарантию должна сохранить правка участка с `accept_exact(x::Vector{Animal}) = length(x)`?
JuliaJulia · Инвариантность
abstract type Animal end
struct Cat <: Animal end
accept_exact(x::Vector{Animal}) = length(x)
accept_family(x::Vector{<:Animal}) = length(x)
@show accept_family([Cat(), Cat()])
Вопрос 14 из 20
При переносе кода с `accept_exact(x::Vector{Animal}) = length(x)` в библиотеку какой критерий нельзя заменять впечатлением «пример работает»?
C\{A\}\not<:C\{B\}\;\text{при}\;A<:B
Вопрос 15 из 20
Как сформулировать границу механизма `accept_exact(x::Vector{Animal}) = length(x)` без чрезмерного обещания?
Вопрос 16 из 20
Как нужно интерпретировать `return sum(c.values)`, не добавляя к коду лишних гарантий?
f_T\;\text{специализируется по}\;T
JuliaJulia · Специализация
struct StaticConfig{N,T}
    values::NTuple{N,T}
end
function total(c::StaticConfig{N,T}) where {N,T}
    return sum(c.values)
end
@show total(StaticConfig((1, 2, 3)))
Вопрос 17 из 20
Что нужно подтвердить отдельным примером для `return sum(c.values)`?
JuliaJulia · Специализация
struct StaticConfig{N,T}
    values::NTuple{N,T}
end
function total(c::StaticConfig{N,T}) where {N,T}
    return sum(c.values)
end
@show total(StaticConfig((1, 2, 3)))
Вопрос 18 из 20
Какой контракт следует закрепить при переработке строки `return sum(c.values)`?
JuliaJulia · Специализация
struct StaticConfig{N,T}
    values::NTuple{N,T}
end
function total(c::StaticConfig{N,T}) where {N,T}
    return sum(c.values)
end
@show total(StaticConfig((1, 2, 3)))
Вопрос 19 из 20
Какой результат приёмочного теста подтвердит корректность участка с `return sum(c.values)`?
f_T\;\text{специализируется по}\;T
Вопрос 20 из 20
Какое ограничение стоит прямо указать в документации к участку с `return sum(c.values)`?

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

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

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

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