Прибыль:
- Способность распознавать и проверять, что ИИ может создавать поддельные API, небезопасный код и контент, защищенный авторским правом.
- Возможность управлять использованием ИИ в рамках конфиденциальности исходного кода, личных данных и корпоративной политики.
- Понимая, что основная ответственность за соблюдение лицензий, безопасность и этику лежит на инженере.
Модульный экзамен
1. Как компьютерный инженер, работая с инструментом генерации кода искусственного интеллекта, основная ответственность за что из следующего всегда должна лежать на человеке?
- А) Окончательное утверждение правильности, безопасности, а также проверка и тестирование кода, запущенного в производство ✔
- Б) Создание первого скелета кода функции
- В) Создание списка предложений по именам переменных.
- Г) Подготовка черновика текста для комментариев к коду
Описание: ИИ; Это может ускорить такие задачи, как создание скелета кода, тестовый проект и документация. Однако в обязанности инженера входит проверка, тестирование и утверждение сгенерированного кода, чтобы убедиться в его правильности, безопасности и соответствии требованиям, а также внедрение его в производство; это нельзя делегировать ИИ без независимой проверки.
2. ИИ создал для вас функцию, и, похоже, она работает в правильном направлении. Каков наилучший шаг перед запуском в производство?
- А) Поскольку функция вроде работает, внедрите ее непосредственно в производство
- Б) Проверьте поведение, написав и запустив небольшие модульные тесты, включающие крайние случаи ✔
- В) Просто глядя на количество строк функции
- Г) Сделать имя функции более информативным
Пояснение: Делать вид, что работает, не значит быть правым. Написание и выполнение небольших модульных тестов, охватывающих крайние случаи, такие как пустой ввод, ноль, отрицательное значение, очень большое значение и несоответствие, проверяют фактическое поведение функции, не перемещая ее в живую среду.
3. ИИ предложил метод Array.sortStable(), которого нет на вашем языке, и объяснил его в понятной форме. Какое первое правильное действие следует предпринять?
- А) Использование метода напрямую, потому что ИИ кажется уверенным
- Б) Определите метод самостоятельно и точно используйте его имя.
- В) Проверка существования метода из официальной документации языка/библиотеки ✔
- D) Закройте предупреждение компилятора и продолжайте.
Объяснение: Языковые модели могут правдоподобно составлять имена библиотек, пакетов или методов, которые на самом деле не существуют (галлюцинации). Каждый предлагаемый API должен быть дословно проверен на соответствие официальной и текущей документации языка или библиотеки; Если он не включен в документ, его не следует использовать.
4. Вы хотите вставить конфиденциальный исходный код вашей компании и встроенный ключ API в общедоступный инструмент искусственного интеллекта и обратиться за помощью. Какой подход наиболее правильный?
- А) Вставка кода как есть с ключом API для скорости
- Б) Достаточно просто удалить название компании и поделиться всем остальным
- В) Поделиться кодом, а затем попросить ИИ удалить его.
- Г) Удаление секретов и скрытой логики и сведение проблемы к репрезентативному примеру или использованию институционального инструмента ✔
Описание: Секретный исходный код и учетные данные (ключ API, пароль, строка подключения); Это рискованно с точки зрения корпоративной тайны и безопасности. Необходимо раскрыть секреты и скрытую бизнес-логику и свести проблему к анонимному/репрезентативному примеру или использовать инструмент совместного использования корпоративных/неданных.
5. AI сказал, что сложность написанной им функции поиска равна O(n); но в коде есть два вложенных цикла. Каково правильное инженерное поведение?
- А) Анализируйте код вручную и самостоятельно извлекайте сложность и измеряйте ее при необходимости ✔
- Б) Примите O(n) и продолжайте, потому что ИИ сказал
- В) Предполагая, что количество циклов не имеет ничего общего с производительностью.
- D) Просто измените имя функции
Пояснение: Временная сложность (Big-O) показывает, как количество операций увеличивается по мере увеличения входных данных. Два вложенных цикла обычно означают O(n^2). Заявление ИИ о сложности должно быть проверено путем ручного анализа кода и измерений с увеличением входных данных, если это необходимо; Опора на утверждение приводит к ложному предположению о производительности.
6. Код, сгенерированный ИИ, который напрямую вставляет пользовательский ввод в запрос SQL путем объединения текста. В чем здесь главная проблема и правильное решение?
- А) Нет проблем; объединение текста — самый быстрый метод
- Б) Существует риск SQL-инъекции; Следует использовать параметризованный запрос (подготовленный оператор), который разделяет входные данные ✔
- В) Достаточно просто преобразовать запрос в верхний регистр
- D) Написание запроса короче решит проблему.
Описание. Добавление пользовательского ввода непосредственно в текст запроса создает уязвимость SQL-инъекции; Злоумышленник может изменить запрос с помощью входных данных. Правильным решением является использование параметризованного запроса (подготовленного оператора), который отделяет входные данные от текста запроса. Это одна из наиболее часто упускаемых ошибок безопасности в коде ИИ.
7. У вас есть ограниченное время при просмотре фрагмента кода, созданного ИИ. Каким вопросам лучше всего отдать приоритет?
- А) Только такие детали формата, как отступы и интервалы.
- Б) Только длина имен переменных
- C) Логическая корректность, уязвимости и поведение в крайних случаях ✔
- Г) Только общее количество строк файла
Описание: Самый высокий риск при проверке кода; Это проблемы, которые причиняют серьезный вред, такие как логические ошибки, уязвимости безопасности и утечки конфиденциальной информации. Проблемы формата и стиля устраняются автоматическими средствами; Основное внимание человека должно быть уделено точности, безопасности и поведению в крайних случаях.
8. Вы хотите, чтобы ИИ исправил ошибку. Какой ввод лучше всего поможет ИИ найти первопричину?
- А) Просто говорю: «Код не работает, исправьте его»
- Б) Просто укажите имя файла
- В) Просто сообщаем ожидаемый результат, без текста ошибки
- D) Предоставьте полное сообщение об ошибке, трассировку стека, соответствующий код и пример минимального воспроизведения ✔
Объяснение: Для эффективной отладки необходимо предоставить ИИ полное сообщение об ошибке, трассировку стека, соответствующий фрагмент кода и наименьший воспроизводимый образец, вызывающий ошибку. Расплывчатое заявление «не работает» заставляет ИИ гадать и давать общие рекомендации.
9. Все модульные тесты, созданные ИИ, проходят при первом запуске. Какой риск не следует игнорировать в данной ситуации?
- А) Тесты могут подтвердить текущее состояние кода, но не фактическое/ожидаемое поведение ✔
- Б) Код абсолютно безошибочный, поскольку все тесты пройдены.
- В) Качество гарантировано, если количество тестов велико
- D) Прохождение теста доказывает, что покрытие является полным.
Объяснение: Тесты могут проверять текущее (возможно, ошибочное) поведение кода, а не его предполагаемое поведение; или оно может не содержать какого-либо значимого утверждения и всегда передается. Чтобы увидеть, что тесты проверяют реальное ожидание, необходимо сознательно взломать код и подтвердить, что тест становится красным.
10. ИИ предоставил вам готовый блок кода задачи. Вы подозреваете, что код мог быть дословно скопирован из проекта с открытым исходным кодом. Какой подход правильный?
- А) Использование лицензии без раздумий, потому что код работает
- Б) Проверка исходного кода/лицензии кода, переписывание при необходимости и соответствие корпоративной политике ✔
- В) Просто измените имена переменных и считайте проблему решенной
- Г) Предполагая, что лицензирование касается только крупных компаний
Описание: ИИ может дословно воспроизводить защищенный авторским правом/лицензированный код в обучающих данных. Нарушение лицензии в коммерческом продукте создает серьезные юридические риски. Необходимо проверить исходный код и лицензию кода, при необходимости переписать его своими словами и соблюдать лицензионную политику заведения.
11. ИИ предложил вам немедленно перейти на микросервисную архитектуру вашего проекта. Какой инженерный подход является наиболее подходящим при оценке этого предложения?
- А) Сразу разделить всю систему на микросервисы, потому что ИИ предлагает
- Б) Предполагается, что микросервис — всегда лучший выбор.
- В) Оценивать предложение по реальной потребности, нагрузке, составу команды и плюс-минус балансу ✔
- Г) Принятие решения исключительно на основе популярности архитектуры.
Пояснение: Архитектурные решения зависят от контекста; Микросервисы повышают ценность таких потребностей, как масштабирование и разделение команд, но сопряжены с такими затратами, как сложность эксплуатации, распределенная отладка и стоимость. Оценить предложение согласно реальной потребности, нагрузке, структуре команды и балансу плюсов и минусов; Не следует слепо следовать общим советам.
12. ИИ создал упрощенный README и документацию по API для вашего кода; но некоторые конечные точки и параметры в коде не совпадают. Каково правильное поведение?
- А) Публикация документа в том виде, в каком он есть, поскольку текст беглый
- Б) Просто исправьте заголовок, а остальное оставьте как есть.
- В) Добавление документа на склад без его прочтения
- D) Сравните каждую конечную точку и параметр с реальным кодом и исправьте все, что не соответствует ✔
Описание. Документация должна точно отражать реальный код; Неправильный документ подталкивает прочитавших его разработчиков использовать его неправильно. Каждая конечная точка, параметр и возвращаемое значение должны быть проверены на соответствие реальному коду, а любые несоответствия должны быть исправлены.
13. Какой подход к вводу подходит для получения максимально качественного результата при запросе кода у ИИ?
- А) Четкое указание языка/версии, контракта ввода-вывода, ограничений и ошибок ✔
- Б) Просто говорю: «Напишите мне рабочий код»
- В) Напишите кратчайший запрос без указания контекста.
- Г) Просто указываем, сколько строк кода будет
Описание: Мощная подсказка; Он включает в себя используемый язык и версию, контракт ввода-вывода, ограничения производительности и стиля, условия ошибки и инструкцию «оставаться только в запрошенной области». Бесконтекстный запрос «напишите мне функцию» является универсальным и часто создает неподходящий код.
14. ИИ сгенерировал конфигурацию вашего конвейера CI/CD (непрерывная интеграция/развертывание) и встроил в нее пароль базы данных в виде обычного текста. Какое исправление является правильным?
- А) Оставить пароль в виде обычного текста, потому что он работает
- Б) Перемещение секретов с помощью переменной среды или инструмента управления секретами без помещения открытого текста в хранилище ✔
- В) Перенести пароль только в строку комментария
- D) Изменение имени файла решает проблему.
Объяснение: Запись секретных данных, таких как пароли и ключи, в виде обычного текста в файл конфигурации создает риск утечки информации из системы контроля версий и несанкционированного доступа. Секреты; Его следует скрывать с помощью переменных среды или специального менеджера секретов, и он никогда не должен попадать в репозиторий в виде обычного текста.