💡 Инструкция: Выберите один ответ из пяти. На работу отведено 55 минут. После завершения откроются правильные ответы, объяснения и результаты по темам.
Вопрос 1 из 20
Что именно следует из фрагмента с `return (x, typeof(x))`?
T=\operatorname{promote\_type}(T_1,T_2)
Julia Julia · Числовые типы Копировать
function mixed(a::Int8, b::UInt8)
x = a + b
return (x, typeof(x))
end
@show mixed(Int8(120), UInt8(10))
`convert(T, x)` выражает преобразование к типу `T`, а конструктор `T(x)` может иметь собственную предметную семантику; не каждое преобразование обязано быть без потерь.
`typeof` показывает фактический тип значения, а вывод типов компилятора зависит от потока управления; стабильная функция возвращает предсказуемый тип для каждого набора типов аргументов.
Смешанная арифметика сохраняет тип левого операнда, поэтому тип правого значения не влияет на результат и диапазон представления.
`const` закрепляет привязку глобального имени, но не превращает изменяемый объект в неизменяемый; содержимое массива под константным именем можно менять.
Литералы и операции Julia участвуют в продвижении типов: смешанные числовые аргументы обычно приводятся к общему типу, но точность и переполнение по-прежнему зависят от конкретного представления.
Вопрос 2 из 20
Какую проверку стоит добавить для участка с `return (x, typeof(x))`?
Julia Julia · Числовые типы Копировать
function mixed(a::Int8, b::UInt8)
x = a + b
return (x, typeof(x))
end
@show mixed(Int8(120), UInt8(10))
Проверить на отдельном примере, что `convert(T, x)` выражает преобразование к типу `T`, а конструктор `T(x)` может иметь собственную предметную семантику; не каждое преобразование обязано быть без потерь.
Проверить на отдельном примере, что литералы и операции Julia участвуют в продвижении типов: смешанные числовые аргументы обычно приводятся к общему типу, но точность и переполнение по-прежнему зависят от конкретного представления.
Проверить на отдельном примере, что `const` закрепляет привязку глобального имени, но не превращает изменяемый объект в неизменяемый; содержимое массива под константным именем можно менять.
Проверить на отдельном примере, что смешанная арифметика сохраняет тип левого операнда, поэтому тип правого значения не влияет на результат и диапазон представления.
Проверить на отдельном примере, что `typeof` показывает фактический тип значения, а вывод типов компилятора зависит от потока управления; стабильная функция возвращает предсказуемый тип для каждого набора типов аргументов.
Вопрос 3 из 20
Какое требование к `return (x, typeof(x))` важнее удобной детали текущей реализации?
Julia Julia · Числовые типы Копировать
function mixed(a::Int8, b::UInt8)
x = a + b
return (x, typeof(x))
end
@show mixed(Int8(120), UInt8(10))
Сохранить в реализации правило: Литералы и операции Julia участвуют в продвижении типов: смешанные числовые аргументы обычно приводятся к общему типу, но точность и переполнение по-прежнему зависят от конкретного представления.
Сохранить в реализации правило: `const` закрепляет привязку глобального имени, но не превращает изменяемый объект в неизменяемый; содержимое массива под константным именем можно менять.
Сохранить в реализации правило: Смешанная арифметика сохраняет тип левого операнда, поэтому тип правого значения не влияет на результат и диапазон представления.
Сохранить в реализации правило: `convert(T, x)` выражает преобразование к типу `T`, а конструктор `T(x)` может иметь собственную предметную семантику; не каждое преобразование обязано быть без потерь.
Сохранить в реализации правило: `typeof` показывает фактический тип значения, а вывод типов компилятора зависит от потока управления; стабильная функция возвращает предсказуемый тип для каждого набора типов аргументов.
Вопрос 4 из 20
Две реализации участка с `return (x, typeof(x))` совпадают на обычных данных. Что необходимо проверить перед выпуском?
T=\operatorname{promote\_type}(T_1,T_2)
Приёмка должна подтвердить, что `convert(T, x)` выражает преобразование к типу `T`, а конструктор `T(x)` может иметь собственную предметную семантику; не каждое преобразование обязано быть без потерь.
Приёмка должна подтвердить, что литералы и операции Julia участвуют в продвижении типов: смешанные числовые аргументы обычно приводятся к общему типу, но точность и переполнение по-прежнему зависят от конкретного представления.
Приёмка должна подтвердить, что `const` закрепляет привязку глобального имени, но не превращает изменяемый объект в неизменяемый; содержимое массива под константным именем можно менять.
Приёмка должна подтвердить, что смешанная арифметика сохраняет тип левого операнда, поэтому тип правого значения не влияет на результат и диапазон представления.
Приёмка должна подтвердить, что `typeof` показывает фактический тип значения, а вывод типов компилятора зависит от потока управления; стабильная функция возвращает предсказуемый тип для каждого набора типов аргументов.
Вопрос 6 из 20
Какой механизм Julia определяет поведение строки `y = convert(Float32, x)`?
y=\operatorname{convert}(T,x)
Julia Julia · Преобразования Копировать
function normalize(x)
y = convert(Float32, x)
z = BigFloat(y)
return (y, z, y == z)
end
@show normalize(1//10)
Вызов конструктора числового типа скорее обеспечивает точное преобразование и не способен округлить значение или завершиться ошибкой.
`const` закрепляет привязку глобального имени, но не превращает изменяемый объект в неизменяемый; содержимое массива под константным именем можно менять.
`convert(T, x)` выражает преобразование к типу `T`, а конструктор `T(x)` может иметь собственную предметную семантику; не каждое преобразование обязано быть без потерь.
`typeof` показывает фактический тип значения, а вывод типов компилятора зависит от потока управления; стабильная функция возвращает предсказуемый тип для каждого набора типов аргументов.
Литералы и операции Julia участвуют в продвижении типов: смешанные числовые аргументы обычно приводятся к общему типу, но точность и переполнение по-прежнему зависят от конкретного представления.
Вопрос 7 из 20
Какую проверку стоит добавить для участка с `y = convert(Float32, x)`?
Julia Julia · Преобразования Копировать
function normalize(x)
y = convert(Float32, x)
z = BigFloat(y)
return (y, z, y == z)
end
@show normalize(1//10)
Проверить на отдельном примере, что литералы и операции Julia участвуют в продвижении типов: смешанные числовые аргументы обычно приводятся к общему типу, но точность и переполнение по-прежнему зависят от конкретного представления.
Проверить на отдельном примере, что `convert(T, x)` выражает преобразование к типу `T`, а конструктор `T(x)` может иметь собственную предметную семантику; не каждое преобразование обязано быть без потерь.
Проверить на отдельном примере, что вызов конструктора числового типа скорее обеспечивает точное преобразование и не способен округлить значение или завершиться ошибкой.
Проверить на отдельном примере, что `const` закрепляет привязку глобального имени, но не превращает изменяемый объект в неизменяемый; содержимое массива под константным именем можно менять.
Проверить на отдельном примере, что `typeof` показывает фактический тип значения, а вывод типов компилятора зависит от потока управления; стабильная функция возвращает предсказуемый тип для каждого набора типов аргументов.
Вопрос 9 из 20
Как проверить, что новая реализация `y = convert(Float32, x)` не изменила обещанное пользователю поведение?
y=\operatorname{convert}(T,x)
Приёмка должна подтвердить, что `convert(T, x)` выражает преобразование к типу `T`, а конструктор `T(x)` может иметь собственную предметную семантику; не каждое преобразование обязано быть без потерь.
Приёмка должна подтвердить, что вызов конструктора числового типа скорее обеспечивает точное преобразование и не способен округлить значение или завершиться ошибкой.
Приёмка должна подтвердить, что литералы и операции Julia участвуют в продвижении типов: смешанные числовые аргументы обычно приводятся к общему типу, но точность и переполнение по-прежнему зависят от конкретного представления.
Приёмка должна подтвердить, что `const` закрепляет привязку глобального имени, но не превращает изменяемый объект в неизменяемый; содержимое массива под константным именем можно менять.
Приёмка должна подтвердить, что `typeof` показывает фактический тип значения, а вывод типов компилятора зависит от потока управления; стабильная функция возвращает предсказуемый тип для каждого набора типов аргументов.
Вопрос 11 из 20
Какое утверждение точнее всего объясняет участок с `const CACHE = Dict{String,Vector{Float64}}()`?
\texttt{const }n\Rightarrow n\text{ не перепривязывается}
Julia Julia · Константы Копировать
const CACHE = Dict{String,Vector{Float64}}()
CACHE["train"] = [1.0, 2.0]
push!(CACHE["train"], 3.0)
@show CACHE
`const` закрепляет привязку глобального имени, но не превращает изменяемый объект в неизменяемый; содержимое массива под константным именем можно менять.
`convert(T, x)` выражает преобразование к типу `T`, а конструктор `T(x)` может иметь собственную предметную семантику; не каждое преобразование обязано быть без потерь.
Смешанная арифметика сохраняет тип левого операнда, поэтому тип правого значения не влияет на результат и диапазон представления.
Глобальное имя с `const` запрещает любые изменения объекта, на который оно указывает, включая запись в словарь или массив.
Вызов конструктора числового типа скорее обеспечивает точное преобразование и не способен округлить значение или завершиться ошибкой.
Вопрос 12 из 20
Какой тест точнее всего зафиксирует границу поведения `const CACHE = Dict{String,Vector{Float64}}()`?
Julia Julia · Константы Копировать
const CACHE = Dict{String,Vector{Float64}}()
CACHE["train"] = [1.0, 2.0]
push!(CACHE["train"], 3.0)
@show CACHE
Проверить на отдельном примере, что глобальное имя с `const` запрещает любые изменения объекта, на который оно указывает, включая запись в словарь или массив.
Проверить на отдельном примере, что смешанная арифметика сохраняет тип левого операнда, поэтому тип правого значения не влияет на результат и диапазон представления.
Проверить на отдельном примере, что вызов конструктора числового типа скорее обеспечивает точное преобразование и не способен округлить значение или завершиться ошибкой.
Проверить на отдельном примере, что `const` закрепляет привязку глобального имени, но не превращает изменяемый объект в неизменяемый; содержимое массива под константным именем можно менять.
Проверить на отдельном примере, что `convert(T, x)` выражает преобразование к типу `T`, а конструктор `T(x)` может иметь собственную предметную семантику; не каждое преобразование обязано быть без потерь.
Вопрос 13 из 20
Какое решение устраняет риск вокруг `const`, не меняя поведение на допустимых данных?
Julia Julia · Константы Копировать
const CACHE = Dict{String,Vector{Float64}}()
CACHE["train"] = [1.0, 2.0]
push!(CACHE["train"], 3.0)
@show CACHE
Сохранить в реализации правило: `convert(T, x)` выражает преобразование к типу `T`, а конструктор `T(x)` может иметь собственную предметную семантику; не каждое преобразование обязано быть без потерь.
Сохранить в реализации правило: Глобальное имя с `const` запрещает любые изменения объекта, на который оно указывает, включая запись в словарь или массив.
Сохранить в реализации правило: Вызов конструктора числового типа скорее обеспечивает точное преобразование и не способен округлить значение или завершиться ошибкой.
Сохранить в реализации правило: `const` закрепляет привязку глобального имени, но не превращает изменяемый объект в неизменяемый; содержимое массива под константным именем можно менять.
Сохранить в реализации правило: Смешанная арифметика сохраняет тип левого операнда, поэтому тип правого значения не влияет на результат и диапазон представления.
Вопрос 14 из 20
Как проверить, что новая реализация `const` не изменила обещанное пользователю поведение?
\texttt{const }n\Rightarrow n\text{ не перепривязывается}
Приёмка должна подтвердить, что вызов конструктора числового типа скорее обеспечивает точное преобразование и не способен округлить значение или завершиться ошибкой.
Приёмка должна подтвердить, что `const` закрепляет привязку глобального имени, но не превращает изменяемый объект в неизменяемый; содержимое массива под константным именем можно менять.
Приёмка должна подтвердить, что глобальное имя с `const` запрещает любые изменения объекта, на который оно указывает, включая запись в словарь или массив.
Приёмка должна подтвердить, что `convert(T, x)` выражает преобразование к типу `T`, а конструктор `T(x)` может иметь собственную предметную семантику; не каждое преобразование обязано быть без потерь.
Приёмка должна подтвердить, что смешанная арифметика сохраняет тип левого операнда, поэтому тип правого значения не влияет на результат и диапазон представления.
Вопрос 17 из 20
Какой эксперимент отличит настоящий механизм `y = x > 0 ? x : 0.0` от случайного результата одного запуска?
Julia Julia · Вывод типа Копировать
function score(x)
y = x > 0 ? x : 0.0
return y + one(x)
end
@show score(2) score(-2)
Проверить на отдельном примере, что `const` закрепляет привязку глобального имени, но не превращает изменяемый объект в неизменяемый; содержимое массива под константным именем можно менять.
Проверить на отдельном примере, что `convert(T, x)` выражает преобразование к типу `T`, а конструктор `T(x)` может иметь собственную предметную семантику; не каждое преобразование обязано быть без потерь.
Проверить на отдельном примере, что литералы и операции Julia участвуют в продвижении типов: смешанные числовые аргументы обычно приводятся к общему типу, но точность и переполнение по-прежнему зависят от конкретного представления.
Проверить на отдельном примере, что `typeof` показывает фактический тип значения, а вывод типов компилятора зависит от потока управления; стабильная функция возвращает предсказуемый тип для каждого набора типов аргументов.
Проверить на отдельном примере, что если два запуска функции вернули числа, компилятор считает тип результата одинаковым независимо от ветвей и типов аргументов.
Вопрос 19 из 20
Две реализации участка с `y = x > 0 ? x : 0.0` совпадают на обычных данных. Что необходимо проверить перед выпуском?
x::T\mapsto f(x)::R(T)
Приёмка должна подтвердить, что если два запуска функции вернули числа, компилятор считает тип результата одинаковым независимо от ветвей и типов аргументов.
Приёмка должна подтвердить, что `typeof` показывает фактический тип значения, а вывод типов компилятора зависит от потока управления; стабильная функция возвращает предсказуемый тип для каждого набора типов аргументов.
Приёмка должна подтвердить, что `convert(T, x)` выражает преобразование к типу `T`, а конструктор `T(x)` может иметь собственную предметную семантику; не каждое преобразование обязано быть без потерь.
Приёмка должна подтвердить, что литералы и операции Julia участвуют в продвижении типов: смешанные числовые аргументы обычно приводятся к общему типу, но точность и переполнение по-прежнему зависят от конкретного представления.
Приёмка должна подтвердить, что `const` закрепляет привязку глобального имени, но не превращает изменяемый объект в неизменяемый; содержимое массива под константным именем можно менять.