Единица 12 / 12

Границы: безопасность, конфиденциальность, лицензия и этика

Прибыль:

  • Способность распознавать и проверять, что ИИ может создавать поддельные 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) Изменение имени файла решает проблему.

Объяснение: Запись секретных данных, таких как пароли и ключи, в виде обычного текста в файл конфигурации создает риск утечки информации из системы контроля версий и несанкционированного доступа. Секреты; Его следует скрывать с помощью переменных среды или специального менеджера секретов, и он никогда не должен попадать в репозиторий в виде обычного текста.