💡 Инструкция: Выберите один ответ из пяти. На работу отведено 70 минут. После завершения откроются правильные ответы, объяснения и результаты по темам.
Вопрос 1 из 25
Какой механизм Julia определяет поведение строки `project = Dict(`?
D_{direct}\subseteq\mathrm{Project}
Julia Julia · Описание проекта в Project.toml Копировать
using TOML
project = Dict(
"name" => "SignalLab",
"uuid" => "11111111-2222-3333-4444-555555555555",
"version" => "0.3.0",
"deps" => Dict("DataFrames" => "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"),
"compat" => Dict("julia" => "1.10, 1.11, 1.12", "DataFrames" => "1.6"),
)
io = IOBuffer()
TOML.print(io, project)
seekstart(io)
roundtrip = TOML.parse(read(io, String))
@show roundtrip["name"] roundtrip["compat"]
Сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
`Project.toml` хранит полный граф разрешённых транзитивных зависимостей и тем самым заменяет manifest.
Manifest библиотеки следует передавать потребителю как часть контракта, чтобы закрепить разрешённые версии зависимостей его приложения.
Раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
`Project.toml` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Вопрос 2 из 25
Какой эксперимент отличит настоящий механизм `project = Dict(` от случайного результата одного запуска?
Julia Julia · Описание проекта в Project.toml Копировать
using TOML
project = Dict(
"name" => "SignalLab",
"uuid" => "11111111-2222-3333-4444-555555555555",
"version" => "0.3.0",
"deps" => Dict("DataFrames" => "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"),
"compat" => Dict("julia" => "1.10, 1.11, 1.12", "DataFrames" => "1.6"),
)
io = IOBuffer()
TOML.print(io, project)
seekstart(io)
roundtrip = TOML.parse(read(io, String))
@show roundtrip["name"] roundtrip["compat"]
Проверить на отдельном примере, что `Project.toml` хранит полный граф разрешённых транзитивных зависимостей и тем самым заменяет manifest.
Проверить на отдельном примере, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Проверить на отдельном примере, что `Project.toml` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Проверить на отдельном примере, что manifest библиотеки следует передавать потребителю как часть контракта, чтобы закрепить разрешённые версии зависимостей его приложения.
Проверить на отдельном примере, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Вопрос 3 из 25
Какую гарантию должна сохранить правка участка с `project = Dict(`?
Julia Julia · Описание проекта в Project.toml Копировать
using TOML
project = Dict(
"name" => "SignalLab",
"uuid" => "11111111-2222-3333-4444-555555555555",
"version" => "0.3.0",
"deps" => Dict("DataFrames" => "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"),
"compat" => Dict("julia" => "1.10, 1.11, 1.12", "DataFrames" => "1.6"),
)
io = IOBuffer()
TOML.print(io, project)
seekstart(io)
roundtrip = TOML.parse(read(io, String))
@show roundtrip["name"] roundtrip["compat"]
Сохранить в реализации правило: Сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Сохранить в реализации правило: Manifest библиотеки следует передавать потребителю как часть контракта, чтобы закрепить разрешённые версии зависимостей его приложения.
Сохранить в реализации правило: Раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Сохранить в реализации правило: `Project.toml` хранит полный граф разрешённых транзитивных зависимостей и тем самым заменяет manifest.
Сохранить в реализации правило: `Project.toml` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Вопрос 4 из 25
Какой результат приёмочного теста подтвердит корректность участка с `project = Dict(`?
D_{direct}\subseteq\mathrm{Project}
Приёмка должна подтвердить, что `Project.toml` хранит полный граф разрешённых транзитивных зависимостей и тем самым заменяет manifest.
Приёмка должна подтвердить, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Приёмка должна подтвердить, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Приёмка должна подтвердить, что manifest библиотеки следует передавать потребителю как часть контракта, чтобы закрепить разрешённые версии зависимостей его приложения.
Приёмка должна подтвердить, что `Project.toml` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Вопрос 7 из 25
Что нужно подтвердить отдельным примером для `Pkg.activate(@__DIR__)`?
Julia Julia · Фиксация окружения в Manifest.toml Копировать
using Pkg
Pkg.activate(@__DIR__)
Pkg.instantiate()
status = Pkg.status(; mode=Pkg.PKGMODE_MANIFEST)
@show Base.active_project()
Проверить на отдельном примере, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Проверить на отдельном примере, что manifest библиотеки следует передавать потребителю как часть контракта, чтобы закрепить разрешённые версии зависимостей его приложения.
Проверить на отдельном примере, что `dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Проверить на отдельном примере, что `Manifest.toml` фиксирует полный разрешённый граф и источники пакетов, поэтому приложение обычно хранит его для воспроизводимости, а библиотека не навязывает его потребителям.
Проверить на отдельном примере, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Вопрос 9 из 25
Какой результат приёмочного теста подтвердит корректность участка с `Pkg.activate(@__DIR__)`?
G_{resolved}=\mathrm{Manifest}
Приёмка должна подтвердить, что `Manifest.toml` фиксирует полный разрешённый граф и источники пакетов, поэтому приложение обычно хранит его для воспроизводимости, а библиотека не навязывает его потребителям.
Приёмка должна подтвердить, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Приёмка должна подтвердить, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Приёмка должна подтвердить, что `dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Приёмка должна подтвердить, что manifest библиотеки следует передавать потребителю как часть контракта, чтобы закрепить разрешённые версии зависимостей его приложения.
Вопрос 11 из 25
Какое утверждение точнее всего объясняет участок с `compat = TOML.parse(read(io, String))["compat"]`?
V\in[\ell,u)
Julia Julia · Совместимость Копировать
using TOML
project = Dict(
"compat" => Dict("julia" => "1.10", "CSV" => "0.10", "DataFrames" => "1"),
)
io = IOBuffer()
TOML.print(io, project)
seekstart(io)
compat = TOML.parse(read(io, String))["compat"]
ci_versions = (v"1.10", v"1.12")
@show compat ci_versions
Сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
`dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
`Project.toml` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Раздел `[compat]` нужен только реестру пакетов и не участвует в выборе версии при `Pkg.resolve`.
Вопрос 12 из 25
Какой контрольный тест лучше всего проверит правило, связанное с `compat = TOML.parse(read(io, String))["compat"]`?
Julia Julia · Совместимость Копировать
using TOML
project = Dict(
"compat" => Dict("julia" => "1.10", "CSV" => "0.10", "DataFrames" => "1"),
)
io = IOBuffer()
TOML.print(io, project)
seekstart(io)
compat = TOML.parse(read(io, String))["compat"]
ci_versions = (v"1.10", v"1.12")
@show compat ci_versions
Проверить на отдельном примере, что `Project.toml` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Проверить на отдельном примере, что раздел `[compat]` нужен только реестру пакетов и не участвует в выборе версии при `Pkg.resolve`.
Проверить на отдельном примере, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Проверить на отдельном примере, что `dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Проверить на отдельном примере, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Вопрос 13 из 25
Какой контракт следует закрепить при переработке строки `compat = TOML.parse(read(io, String))["compat"]`?
Julia Julia · Совместимость Копировать
using TOML
project = Dict(
"compat" => Dict("julia" => "1.10", "CSV" => "0.10", "DataFrames" => "1"),
)
io = IOBuffer()
TOML.print(io, project)
seekstart(io)
compat = TOML.parse(read(io, String))["compat"]
ci_versions = (v"1.10", v"1.12")
@show compat ci_versions
Сохранить в реализации правило: `dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Сохранить в реализации правило: Сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Сохранить в реализации правило: Раздел `[compat]` нужен только реестру пакетов и не участвует в выборе версии при `Pkg.resolve`.
Сохранить в реализации правило: `Project.toml` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Сохранить в реализации правило: Раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Вопрос 14 из 25
Как проверить, что новая реализация `compat = TOML.parse(read(io, String))["compat"]` не изменила обещанное пользователю поведение?
V\in[\ell,u)
Приёмка должна подтвердить, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Приёмка должна подтвердить, что `Project.toml` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Приёмка должна подтвердить, что `dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Приёмка должна подтвердить, что раздел `[compat]` нужен только реестру пакетов и не участвует в выборе версии при `Pkg.resolve`.
Приёмка должна подтвердить, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Вопрос 16 из 25
Как нужно интерпретировать `Pkg.develop(path=joinpath(@__DIR__, "..", "LocalSolver"))`, не добавляя к коду лишних гарантий?
P_{dev}=\operatorname{path}(P)
Julia Julia · Локальная разработка Копировать
using Pkg
Pkg.activate(temp=true)
Pkg.develop(path=joinpath(@__DIR__, "..", "LocalSolver"))
Pkg.instantiate()
@show Base.active_project()
`dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Запись о локальном `dev`-пути в manifest переносит состояние рабочего каталога вместе с окружением на другую машину.
Раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
`Manifest.toml` фиксирует полный разрешённый граф и источники пакетов, поэтому приложение обычно хранит его для воспроизводимости, а библиотека не навязывает его потребителям.
Вопрос 17 из 25
Какой эксперимент отличит настоящий механизм `Pkg.develop(path=joinpath(@__DIR__, "..", "LocalSolver"))` от случайного результата одного запуска?
Julia Julia · Локальная разработка Копировать
using Pkg
Pkg.activate(temp=true)
Pkg.develop(path=joinpath(@__DIR__, "..", "LocalSolver"))
Pkg.instantiate()
@show Base.active_project()
Проверить на отдельном примере, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Проверить на отдельном примере, что `dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Проверить на отдельном примере, что `Manifest.toml` фиксирует полный разрешённый граф и источники пакетов, поэтому приложение обычно хранит его для воспроизводимости, а библиотека не навязывает его потребителям.
Проверить на отдельном примере, что запись о локальном `dev`-пути в manifest переносит состояние рабочего каталога вместе с окружением на другую машину.
Проверить на отдельном примере, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Вопрос 19 из 25
Как проверить, что новая реализация `Pkg.develop(path=joinpath(@__DIR__, "..", "LocalSolver"))` не изменила обещанное пользователю поведение?
P_{dev}=\operatorname{path}(P)
Приёмка должна подтвердить, что `Manifest.toml` фиксирует полный разрешённый граф и источники пакетов, поэтому приложение обычно хранит его для воспроизводимости, а библиотека не навязывает его потребителям.
Приёмка должна подтвердить, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Приёмка должна подтвердить, что запись о локальном `dev`-пути в manifest переносит состояние рабочего каталога вместе с окружением на другую машину.
Приёмка должна подтвердить, что `dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Приёмка должна подтвердить, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Вопрос 22 из 25
Что нужно подтвердить отдельным примером для `rethrow()`?
Julia Julia · Пограничные случаи Копировать
using Pkg
try
Pkg.instantiate()
catch err
@error "environment restore failed" project=Base.active_project() exception=(err, catch_backtrace())
rethrow()
end
Проверить на отдельном примере, что `dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Проверить на отдельном примере, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Проверить на отдельном примере, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Проверить на отдельном примере, что `Project.toml` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Проверить на отдельном примере, что при сбое разрешения зависимостей практичнее удалить Manifest.toml и повторить установку; различать конфликт версий, отсутствие артефакта и неподдерживаемую платформу не обязательно.
Вопрос 24 из 25
Как проверить, что новая реализация `rethrow()` не изменила обещанное пользователю поведение?
\operatorname{resolve}(G,C)
Приёмка должна подтвердить, что `Project.toml` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Приёмка должна подтвердить, что `dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Приёмка должна подтвердить, что при сбое разрешения зависимостей практичнее удалить Manifest.toml и повторить установку; различать конфликт версий, отсутствие артефакта и неподдерживаемую платформу не обязательно.
Приёмка должна подтвердить, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Приёмка должна подтвердить, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.