💡 Инструкция: Выберите один ответ из пяти. Время — 70 минут. Верный вариант в каждом вопросе один; после завершения доступны общий результат, профиль по 5 темам и объяснения.
Вопрос 1 из 25
Фрагмент должен проверить функцию normalize на наборе обычных и граничных входов в табличном тесте. Какая запись соответствует условию на заявленных входах?
% Предусловия задачи выполнены; результат каждого фрагмента затем сверяется с независимым эталоном.
verifyEqual(tc, normalize(rand(1,3)), [0 .5 1]);
% Предусловия задачи выполнены; результат каждого фрагмента затем сверяется с независимым эталоном.
cases = { [1 2 3], [0 .5 1]; [-2 2], [0 1] };
for k=1:size(cases,1)
verifyEqual(tc, normalize(cases{k,1}), cases{k,2}, AbsTol=1e-12);
end
% Предусловия задачи выполнены; результат каждого фрагмента затем сверяется с независимым эталоном.
assert(normalize(cases));
% Предусловия задачи выполнены; результат каждого фрагмента затем сверяется с независимым эталоном.
verifyEqual(tc, normalize([1 2 3]), [0 .5 1]);
% Предусловия задачи выполнены; результат каждого фрагмента затем сверяется с независимым эталоном.
for x = cases, verifyTrue(tc, normalize(x)); end
Вопрос 2 из 25
Показанный код из темы «Матрица примеров» не соответствует постановке. Какая редакция восстанавливает вычислительный договор?
MATLAB Фрагмент для рецензии Копировать
verifyEqual(tc, normalize(rand(1,3)), [0 .5 1]);
Заменить исходный блок этой реализацией. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. Для темы «Матрица примеров» также сверить класс данных и сохранение ожидаемой структуры выхода. % Предусловия задачи выполнены; результат каждого фрагмента затем сверяется с независимым эталоном.
verifyEqual(tc, normalize(rand(1,3)), [0 .5 1]);
Принять эту редакцию как полную замену текущего блока. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Контрольный пример должен воспроизводиться на чистом запуске проекта. % Предусловия задачи выполнены; результат каждого фрагмента затем сверяется с независимым эталоном.
cases = { [1 2 3], [0 .5 1]; [-2 2], [0 1] };
for k=1:size(cases,1)
verifyEqual(tc, normalize(cases{k,1}), cases{k,2}, AbsTol=1e-12);
end
Переписать вычислительный шаг следующим образом. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. Для темы «Матрица примеров» также сверить класс данных и сохранение ожидаемой структуры выхода. % Предусловия задачи выполнены; результат каждого фрагмента затем сверяется с независимым эталоном.
assert(normalize(cases));
Использовать показанный вариант вместо дефектного фрагмента. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Допуск и критерий принятия зафиксировать до просмотра результата. Для темы «Матрица примеров» также сверить класс данных и сохранение ожидаемой структуры выхода. % Предусловия задачи выполнены; результат каждого фрагмента затем сверяется с независимым эталоном.
verifyEqual(tc, normalize([1 2 3]), [0 .5 1]);
Внести показанную замену без изменения входного контракта. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. Для темы «Матрица примеров» также сверить класс данных и сохранение ожидаемой структуры выхода. % Предусловия задачи выполнены; результат каждого фрагмента затем сверяется с независимым эталоном.
for x = cases, verifyTrue(tc, normalize(x)); end
Вопрос 3 из 25
Результат фрагмента по теме «Матрица примеров» нужно принять перед включением в расчёт. Какая проверка даст независимое основание?
\mathcal{T}=\{(x^{(k)},y^{(k)}_{expected})\}
MATLAB Код и модель Копировать
cases = { [1 2 3], [0 .5 1]; [-2 2], [0 1] };
for k=1:size(cases,1)
verifyEqual(tc, normalize(cases{k,1}), cases{k,2}, AbsTol=1e-12);
end
Выполнить расчёт с повышенной численной точностью и использовать совпадение округлённых значений как контроль темы «Матрица примеров».
Запустить несколько случайных наборов одинакового масштаба и сопоставить время выполнения и форму результата для темы «Матрица примеров».
Увеличить размер входа и проверить ожидаемый рост времени и памяти, сохранив исходный способ вычисления по теме «Матрица примеров».
Перед написанием кода перечислите эквивалентные классы входов и выберите по одному минимальному примеру из каждого.
Проверить только один сводный показатель результата — сумму, среднее или норму — на двух обычных входах из темы «Матрица примеров».
Вопрос 6 из 25
Разработчик переносит в MATLAB требование: сравнить вычисленный и эталонный массивы с абсолютным допуском. Какая запись соответствует условию на заявленных входах?
verifyLessThan(tc, actual-expected, 1e-10);
verifyEqual(tc, actual, expected);
verifyEqual(tc, actual, expected, AbsTol=1e-10);
verifyTrue(tc, actual == expected);
verifyEqual(tc, round(actual,10), expected);
Вопрос 7 из 25
Рецензент разбирает фрагмент по теме «Допуски» в тесте «Тестирование вычислительных функций». Какой вариант исправляет саму операцию?
MATLAB Фрагмент для рецензии Копировать
verifyEqual(tc, round(actual,10), expected);
Принять эту редакцию как полную замену текущего блока. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. verifyEqual(tc, actual, expected);
Внести показанную замену без изменения входного контракта. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Допуск и критерий принятия зафиксировать до просмотра результата. verifyTrue(tc, actual == expected);
Переписать вычислительный шаг следующим образом. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. verifyLessThan(tc, actual-expected, 1e-10);
Заменить исходный блок этой реализацией. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. verifyEqual(tc, round(actual,10), expected);
Использовать показанный вариант вместо дефектного фрагмента. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Контрольный пример должен воспроизводиться на чистом запуске проекта. verifyEqual(tc, actual, expected, AbsTol=1e-10);
Вопрос 11 из 25
В проекте появился шаг: проверить, что функция rejectNegative выдаёт ошибку с идентификатором My:NegativeInput. Какая запись соответствует условию на заявленных входах?
verifyError(tc, @() rejectNegative(-1), "My:NegativeInput");
verifyError(tc, rejectNegative(-1), "My:NegativeInput");
verifyEqual(tc, rejectNegative(-1), error("My:NegativeInput"));
try rejectNegative(-1); verifyTrue(tc,true); end
verifyWarning(tc, @() rejectNegative(-1), "My:NegativeInput");
Вопрос 12 из 25
В расчёте по теме «Проверка исключений» обнаружено содержательное расхождение. Какую замену следует принять после проверки?
MATLAB Фрагмент для рецензии Копировать
verifyWarning(tc, @() rejectNegative(-1), "My:NegativeInput");
Принять эту редакцию как полную замену текущего блока. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. verifyEqual(tc, rejectNegative(-1), error("My:NegativeInput"));
Внести показанную замену без изменения входного контракта. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Контрольный пример должен воспроизводиться на чистом запуске проекта. try rejectNegative(-1); verifyTrue(tc,true); end
Использовать показанный вариант вместо дефектного фрагмента. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. verifyWarning(tc, @() rejectNegative(-1), "My:NegativeInput");
Заменить исходный блок этой реализацией. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. verifyError(tc, rejectNegative(-1), "My:NegativeInput");
Переписать вычислительный шаг следующим образом. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Допуск и критерий принятия зафиксировать до просмотра результата. verifyError(tc, @() rejectNegative(-1), "My:NegativeInput");
Вопрос 16 из 25
Нужно выбрать код для действия: сравнить текущий результат с сохранёнными регрессионными данными, не обновляя эталон автоматически при каждом запуске. Какая запись соответствует условию на заявленных входах?
baseline = load("baseline_v3.mat");
verifyEqual(tc, actual, baseline.expected, RelTol=1e-8);
verifyTrue(tc, isfile("baseline_v3.mat"));
verifyEqual(tc, actual, load("latest.mat"));
baseline.expected = actual;
verifyEqual(tc, actual, baseline.expected);
save("baseline_v3.mat","actual");
verifyEqual(tc, actual, actual);
Вопрос 17 из 25
Ниже приведена неудачная реализация из темы «Регрессионные данные». Какая редакция возвращает требуемый результат и оставляет независимый контроль?
MATLAB Фрагмент для рецензии Копировать
verifyTrue(tc, isfile("baseline_v3.mat"));
Заменить исходный блок этой реализацией. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Допуск и критерий принятия зафиксировать до просмотра результата. Для темы «Регрессионные данные» также сверить класс данных и сохранение ожидаемой структуры выхода. verifyEqual(tc, actual, load("latest.mat"));
Использовать показанный вариант вместо дефектного фрагмента. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. verifyTrue(tc, isfile("baseline_v3.mat"));
Принять эту редакцию как полную замену текущего блока. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. save("baseline_v3.mat","actual");
verifyEqual(tc, actual, actual);
Внести показанную замену без изменения входного контракта. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. baseline.expected = actual;
verifyEqual(tc, actual, baseline.expected);
Переписать вычислительный шаг следующим образом. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Контрольный пример должен воспроизводиться на чистом запуске проекта. baseline = load("baseline_v3.mat");
verifyEqual(tc, actual, baseline.expected, RelTol=1e-8);
Вопрос 21 из 25
Проверяется реализация операции: выбрать разумный набор проверок для функции решения линейной системы. Какая запись соответствует условию на заявленных входах?
verifyEqual(tc,x,inv(A)*b);
verifySize(tc,x,[n 1]);
verifyLessThan(tc,norm(A*x-b)/max(1,norm(b)),tol);
verifyTrue(tc,all(isfinite(x)));
verifyEqual(tc,length(x),n);
verifyLessThan(tc,norm(x),1e6);
verifyTrue(tc,~isempty(x));
Вопрос 22 из 25
В тесте «Тестирование вычислительных функций» показанный фрагмент нарушает правило из темы «Выбор компромисса». Какая редакция исправляет причину, а не только её проявление?
MATLAB Фрагмент для рецензии Копировать
verifyEqual(tc,length(x),n);
Использовать показанный вариант вместо дефектного фрагмента. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. verifySize(tc,x,[n 1]);
verifyLessThan(tc,norm(A*x-b)/max(1,norm(b)),tol);
verifyTrue(tc,all(isfinite(x)));
Принять эту редакцию как полную замену текущего блока. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Допуск и критерий принятия зафиксировать до просмотра результата. Для темы «Выбор компромисса» также сверить класс данных и сохранение ожидаемой структуры выхода. verifyLessThan(tc,norm(x),1e6);
Заменить исходный блок этой реализацией. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Контрольный пример должен воспроизводиться на чистом запуске проекта. Для темы «Выбор компромисса» также сверить класс данных и сохранение ожидаемой структуры выхода. verifyTrue(tc,~isempty(x));
Переписать вычислительный шаг следующим образом. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. Для темы «Выбор компромисса» также сверить класс данных и сохранение ожидаемой структуры выхода. verifyEqual(tc,length(x),n);
Внести показанную замену без изменения входного контракта. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. Для темы «Выбор компромисса» также сверить класс данных и сохранение ожидаемой структуры выхода. verifyEqual(tc,x,inv(A)*b);
Вопрос 23 из 25
Фрагмент по теме «Выбор компромисса» выглядит правдоподобно. Какая проверка действительно подтвердит заявленное свойство, а не только отсутствие сбоя?
\rho=\frac{\|Ax-b\|}{\max(1,\|b\|)}<tol
MATLAB Код и модель Копировать
verifySize(tc,x,[n 1]);
verifyLessThan(tc,norm(A*x-b)/max(1,norm(b)),tol);
verifyTrue(tc,all(isfinite(x)));
Повторить вычисление в отдельной функции, сохранив ту же формулу, и сравнить два полученных ответа по теме «Выбор компромисса».
Сравнить ответ с сохранённым выводом предыдущей версии на рабочем наборе данных по теме «Выбор компромисса».
На одном типичном наборе сверить размер, класс и отсутствие `NaN` или `Inf` в результате по теме «Выбор компромисса».
Для одной вычислительной функции разделите тесты на контракт, численную точность, ошибки входа и регрессию производительности.
Сравнить два близких входа и убедиться, что результат меняется плавно и без предупреждений в задаче по теме «Выбор компромисса».