💡 Инструкция: Выберите один ответ из пяти. На работу отведено 55 минут. После завершения откроются правильные ответы, объяснения и результаты по темам.
Вопрос 1 из 20
Какой механизм Julia определяет поведение строки `@show f.(x, y)`?
Y_{ij}=f(X_i,Z_j)
Julia Julia · Точечная запись Копировать
f(x, y) = x^2 + y
x = [1, 2, 3]
y = reshape([10, 20], 1, 2)
@show f.(x, y)
Пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Точечная запись меняет только синтаксис цикла, но не правила согласования размерностей и не может создавать расширение singleton-осей.
Точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
В broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Вопрос 2 из 20
Какую проверку стоит добавить для участка с `@show f.(x, y)`?
Julia Julia · Точечная запись Копировать
f(x, y) = x^2 + y
x = [1, 2, 3]
y = reshape([10, 20], 1, 2)
@show f.(x, y)
Проверить на отдельном примере, что в broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Проверить на отдельном примере, что точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Проверить на отдельном примере, что точечная запись меняет только синтаксис цикла, но не правила согласования размерностей и не может создавать расширение singleton-осей.
Проверить на отдельном примере, что пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Проверить на отдельном примере, что цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Вопрос 3 из 20
Что должно остаться истинным после рефакторинга участка с `@show f.(x, y)`?
Julia Julia · Точечная запись Копировать
f(x, y) = x^2 + y
x = [1, 2, 3]
y = reshape([10, 20], 1, 2)
@show f.(x, y)
Сохранить в реализации правило: Точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Сохранить в реализации правило: Цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Сохранить в реализации правило: Пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Сохранить в реализации правило: Точечная запись меняет только синтаксис цикла, но не правила согласования размерностей и не может создавать расширение singleton-осей.
Сохранить в реализации правило: В broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Вопрос 4 из 20
После обновления Julia или пакета поведение участка с `@show f.(x, y)` изменилось. Какой критерий приёмки остаётся корректным?
Y_{ij}=f(X_i,Z_j)
Приёмка должна подтвердить, что пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Приёмка должна подтвердить, что точечная запись меняет только синтаксис цикла, но не правила согласования размерностей и не может создавать расширение singleton-осей.
Приёмка должна подтвердить, что точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Приёмка должна подтвердить, что цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Приёмка должна подтвердить, что в broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Вопрос 7 из 20
Какую проверку стоит добавить для участка с `y .= @. sin(x)^2 + cos(x)^2`?
Julia Julia · Слияние точечных операций Копировать
x = rand(1000)
y = similar(x)
y .= @. sin(x)^2 + cos(x)^2
@show maximum(abs.(y .- 1))
Проверить на отдельном примере, что broadcast сопоставляет размерности по правилам расширения singleton-осей; несовместимые оси не исправляются автоматическим транспонированием.
Проверить на отдельном примере, что пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Проверить на отдельном примере, что точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Проверить на отдельном примере, что цепочка точечных операций обычно сливается в один broadcast-цикл, однако присваивание без точки или явный материализующий вызов может разорвать fusion.
Проверить на отдельном примере, что цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Вопрос 9 из 20
Как проверить, что новая реализация `y .= @. sin(x)^2 + cos(x)^2` не изменила обещанное пользователю поведение?
y_i=g(h(x_i))
Приёмка должна подтвердить, что broadcast сопоставляет размерности по правилам расширения singleton-осей; несовместимые оси не исправляются автоматическим транспонированием.
Приёмка должна подтвердить, что точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Приёмка должна подтвердить, что пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Приёмка должна подтвердить, что цепочка точечных операций обычно сливается в один broadcast-цикл, однако присваивание без точки или явный материализующий вызов может разорвать fusion.
Приёмка должна подтвердить, что цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Вопрос 11 из 20
Какой механизм Julia определяет поведение строки `A = reshape(1:6, 3, 2)`?
(m,1)\oplus(1,n)\to(m,n)
Julia Julia · Размерности Копировать
A = reshape(1:6, 3, 2)
b = [10, 20, 30]
c = reshape([100, 200], 1, 2)
@show A .+ b A .+ c
Broadcast сопоставляет размерности по правилам расширения singleton-осей; несовместимые оси не исправляются автоматическим транспонированием.
В broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Вопрос 12 из 20
Какую проверку стоит добавить для участка с `A = reshape(1:6, 3, 2)`?
Julia Julia · Размерности Копировать
A = reshape(1:6, 3, 2)
b = [10, 20, 30]
c = reshape([100, 200], 1, 2)
@show A .+ b A .+ c
Проверить на отдельном примере, что цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Проверить на отдельном примере, что broadcast сопоставляет размерности по правилам расширения singleton-осей; несовместимые оси не исправляются автоматическим транспонированием.
Проверить на отдельном примере, что пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Проверить на отдельном примере, что в broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Проверить на отдельном примере, что точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Вопрос 13 из 20
Что должно остаться истинным после рефакторинга участка с `A = reshape(1:6, 3, 2)`?
Julia Julia · Размерности Копировать
A = reshape(1:6, 3, 2)
b = [10, 20, 30]
c = reshape([100, 200], 1, 2)
@show A .+ b A .+ c
Сохранить в реализации правило: Broadcast сопоставляет размерности по правилам расширения singleton-осей; несовместимые оси не исправляются автоматическим транспонированием.
Сохранить в реализации правило: Пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Сохранить в реализации правило: Точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Сохранить в реализации правило: Цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Сохранить в реализации правило: В broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Вопрос 14 из 20
Какой результат приёмочного теста подтвердит корректность участка с `A = reshape(1:6, 3, 2)`?
(m,1)\oplus(1,n)\to(m,n)
Приёмка должна подтвердить, что точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Приёмка должна подтвердить, что цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Приёмка должна подтвердить, что broadcast сопоставляет размерности по правилам расширения singleton-осей; несовместимые оси не исправляются автоматическим транспонированием.
Приёмка должна подтвердить, что пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Приёмка должна подтвердить, что в broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Вопрос 16 из 20
Какое объяснение для `Base.broadcastable(b::Batch) = Ref(b)` выдержит проверку на другом допустимом входе?
\operatorname{axes}(\operatorname{broadcast}(f,x))=\mathcal{A}
Julia Julia · Пользовательский broadcast Копировать
struct Batch{T}
rows::Vector{T}
end
Base.broadcastable(b::Batch) = Ref(b)
combine(b::Batch, x) = length(b.rows) + x
@show combine.(Batch([1, 2, 3]), 10:12)
В broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Определение `broadcastable` добавляет пользовательскому типу обычный метод и не влияет на оси или материализацию результата.
Точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Вопрос 17 из 20
Какую проверку стоит добавить для участка с `Base.broadcastable(b::Batch) = Ref(b)`?
Julia Julia · Пользовательский broadcast Копировать
struct Batch{T}
rows::Vector{T}
end
Base.broadcastable(b::Batch) = Ref(b)
combine(b::Batch, x) = length(b.rows) + x
@show combine.(Batch([1, 2, 3]), 10:12)
Проверить на отдельном примере, что цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.
Проверить на отдельном примере, что точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Проверить на отдельном примере, что в broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Проверить на отдельном примере, что определение `broadcastable` добавляет пользовательскому типу обычный метод и не влияет на оси или материализацию результата.
Проверить на отдельном примере, что пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Вопрос 19 из 20
После обновления Julia или пакета поведение участка с `Base.broadcastable(b::Batch) = Ref(b)` изменилось. Какой критерий приёмки остаётся корректным?
\operatorname{axes}(\operatorname{broadcast}(f,x))=\mathcal{A}
Приёмка должна подтвердить, что пользовательский тип может задавать `broadcastable`, стиль и материализацию, но контракт должен сохранять форму, оси и смысл скалярности.
Приёмка должна подтвердить, что точка у вызова и оператора включает broadcasting: `f.(x)` и `x.+ y` применяют операцию по согласованным размерностям без ручного цикла.
Приёмка должна подтвердить, что в broadcasting вектор получает ориентацию строки или столбца из соседней матрицы, поэтому дополнительное изменение формы не требуется.
Приёмка должна подтвердить, что определение `broadcastable` добавляет пользовательскому типу обычный метод и не влияет на оси или материализацию результата.
Приёмка должна подтвердить, что цепочка точечных вызовов выполняется единым циклом, если внешне каждый оператор помечен точкой; обычный вызов внутри на слияние не влияет.