💡 Инструкция: Выберите один ответ из пяти. На работу отведено 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` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
`Project.toml` хранит полный граф разрешённых транзитивных зависимостей и тем самым заменяет manifest.
Вопрос 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"]
Проверить на отдельном примере, что manifest библиотеки следует передавать потребителю как часть контракта, чтобы закрепить разрешённые версии зависимостей его приложения.
Проверить на отдельном примере, что `Project.toml` хранит полный граф разрешённых транзитивных зависимостей и тем самым заменяет manifest.
Проверить на отдельном примере, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Проверить на отдельном примере, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Проверить на отдельном примере, что `Project.toml` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Вопрос 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"]
Сохранить в реализации правило: `Project.toml` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Сохранить в реализации правило: Manifest библиотеки следует передавать потребителю как часть контракта, чтобы закрепить разрешённые версии зависимостей его приложения.
Сохранить в реализации правило: `Project.toml` хранит полный граф разрешённых транзитивных зависимостей и тем самым заменяет manifest.
Сохранить в реализации правило: Сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Сохранить в реализации правило: Раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Вопрос 4 из 25
Какой результат приёмочного теста подтвердит корректность участка с `project = Dict(`?
D_{direct}\subseteq\mathrm{Project}
Приёмка должна подтвердить, что `Project.toml` хранит полный граф разрешённых транзитивных зависимостей и тем самым заменяет manifest.
Приёмка должна подтвердить, что manifest библиотеки следует передавать потребителю как часть контракта, чтобы закрепить разрешённые версии зависимостей его приложения.
Приёмка должна подтвердить, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Приёмка должна подтвердить, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление 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 не является универсальным исправлением.
Проверить на отдельном примере, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Проверить на отдельном примере, что `dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Проверить на отдельном примере, что `Manifest.toml` фиксирует полный разрешённый граф и источники пакетов, поэтому приложение обычно хранит его для воспроизводимости, а библиотека не навязывает его потребителям.
Проверить на отдельном примере, что manifest библиотеки следует передавать потребителю как часть контракта, чтобы закрепить разрешённые версии зависимостей его приложения.
Вопрос 9 из 25
Какой результат приёмочного теста подтвердит корректность участка с `Pkg.activate(@__DIR__)`?
G_{resolved}=\mathrm{Manifest}
Приёмка должна подтвердить, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Приёмка должна подтвердить, что `Manifest.toml` фиксирует полный разрешённый граф и источники пакетов, поэтому приложение обычно хранит его для воспроизводимости, а библиотека не навязывает его потребителям.
Приёмка должна подтвердить, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Приёмка должна подтвердить, что `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
Раздел `[compat]` нужен только реестру пакетов и не участвует в выборе версии при `Pkg.resolve`.
Раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
`dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
`Project.toml` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Вопрос 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
Проверить на отдельном примере, что раздел `[compat]` нужен только реестру пакетов и не участвует в выборе версии при `Pkg.resolve`.
Проверить на отдельном примере, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Проверить на отдельном примере, что `Project.toml` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Проверить на отдельном примере, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Проверить на отдельном примере, что `dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Вопрос 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 делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Сохранить в реализации правило: `Project.toml` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Сохранить в реализации правило: Раздел `[compat]` нужен только реестру пакетов и не участвует в выборе версии при `Pkg.resolve`.
Сохранить в реализации правило: Сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Сохранить в реализации правило: Раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Вопрос 14 из 25
Как проверить, что новая реализация `compat = TOML.parse(read(io, String))["compat"]` не изменила обещанное пользователю поведение?
V\in[\ell,u)
Приёмка должна подтвердить, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Приёмка должна подтвердить, что раздел `[compat]` нужен только реестру пакетов и не участвует в выборе версии при `Pkg.resolve`.
Приёмка должна подтвердить, что `Project.toml` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Приёмка должна подтвердить, что `dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Приёмка должна подтвердить, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Вопрос 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()
Сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
`Manifest.toml` фиксирует полный разрешённый граф и источники пакетов, поэтому приложение обычно хранит его для воспроизводимости, а библиотека не навязывает его потребителям.
Раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
`dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Запись о локальном `dev`-пути в manifest переносит состояние рабочего каталога вместе с окружением на другую машину.
Вопрос 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` фиксирует полный разрешённый граф и источники пакетов, поэтому приложение обычно хранит его для воспроизводимости, а библиотека не навязывает его потребителям.
Проверить на отдельном примере, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Проверить на отдельном примере, что `dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Вопрос 19 из 25
Как проверить, что новая реализация `Pkg.develop(path=joinpath(@__DIR__, "..", "LocalSolver"))` не изменила обещанное пользователю поведение?
P_{dev}=\operatorname{path}(P)
Приёмка должна подтвердить, что запись о локальном `dev`-пути в manifest переносит состояние рабочего каталога вместе с окружением на другую машину.
Приёмка должна подтвердить, что `dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Приёмка должна подтвердить, что `Manifest.toml` фиксирует полный разрешённый граф и источники пакетов, поэтому приложение обычно хранит его для воспроизводимости, а библиотека не навязывает его потребителям.
Приёмка должна подтвердить, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Приёмка должна подтвердить, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление 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
Проверить на отдельном примере, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Проверить на отдельном примере, что при сбое разрешения зависимостей практичнее удалить Manifest.toml и повторить установку; различать конфликт версий, отсутствие артефакта и неподдерживаемую платформу не обязательно.
Проверить на отдельном примере, что `Project.toml` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Проверить на отдельном примере, что `dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Проверить на отдельном примере, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Вопрос 24 из 25
Как проверить, что новая реализация `rethrow()` не изменила обещанное пользователю поведение?
\operatorname{resolve}(G,C)
Приёмка должна подтвердить, что `dev` подключает локальную рабочую копию пакета, но путь в manifest делает окружение зависимым от файловой системы; перед выпуском проверяют чистое воспроизведение.
Приёмка должна подтвердить, что `Project.toml` описывает прямые зависимости, совместимость и метаданные проекта; активное окружение определяет, какие зависимости видит загрузчик.
Приёмка должна подтвердить, что раздел `[compat]` ограничивает поддерживаемые версии Julia и пакетов; совместимость подтверждают тестами, а не только успешным разрешением зависимостей.
Приёмка должна подтвердить, что сбой разрешения версий, отсутствие артефакта и несовместимая платформа требуют разных действий; удаление manifest не является универсальным исправлением.
Приёмка должна подтвердить, что при сбое разрешения зависимостей практичнее удалить Manifest.toml и повторить установку; различать конфликт версий, отсутствие артефакта и неподдерживаемую платформу не обязательно.