единица 12 / 12

Граници: сигурност, поверителност, лиценз и етика

Печалби:

  • Възможност за разпознаване и проверка, че AI може да създаде фалшиви API, несигурен код и защитено с авторски права съдържание
  • Възможност за управление на използването на AI в границите на поверителността на изходния код, личните данни и корпоративната политика
  • Разбиране, че крайната отговорност за спазването на лиценза, сигурността и етиката остава на инженера.

Изпит по модул

1. Като компютърен инженер, когато работите с инструмент за генериране на AI код, крайната отговорност за кое от следните трябва винаги да остава на човека?

  • A) Окончателно одобрение на коректността, сигурността и преглед и тестване на кода, пуснат в производство ✔
  • B) Създаване на първия кодов скелет за функция
  • C) Създаване на списък с предложения за имена на променливи
  • Г) Подготовка на чернова на текст за коментари по кода

Описание: AI; Може да ускори задачи като кодов скелет, тестова чернова и документация. Отговорност на инженера обаче е да прегледа, тества и одобри генерирания код, за да гарантира, че е правилен, безопасен и в съответствие с изискванията, и да го пусне в производство; това не може да бъде делегирано на AI без независима проверка.

2. AI е създал функция за вас и изглежда, че работи по щастливия път. Коя е най-добрата стъпка преди пускането му в производство?

  • A) Тъй като функцията изглежда работи, пуснете я директно в производство
  • B) Проверете поведението, като напишете и стартирате малки модулни тестове, които включват крайни случаи ✔
  • В) Просто гледам броя на редовете на функцията
  • Г) Направете името на функцията по-описателно

Обяснение: Да изглеждаш работещ не означава да си прав. Писането и изпълнението на малки модулни тестове, които покриват крайни случаи като празен вход, нула, отрицателна, много голяма стойност и несъответствие, проверяват действителното поведение на функцията, без да я преместват в живата среда.

3. AI предложи метод, наречен „array.sortStable()“, който не съществува на вашия език, и го обясни по ясен начин. Кое е първото правилно действие, което трябва да предприемете?

  • A) Използване на метода директно, защото AI изглежда уверен
  • B) Дефинирайте метода сами и използвайте точно името му
  • C) Проверка на съществуването на метода от официалната документация на езика/библиотеката ✔
  • D) Затворете предупреждението на компилатора и продължете

Обяснение: Езиковите модели могат правдоподобно да съставят имена на библиотеки, пакети или методи, които всъщност не съществуват (халюцинират). Всеки предложен API трябва да бъде проверен дословно спрямо официалната и текуща документация на езика или библиотеката; Ако не е включено в документа, не трябва да се използва.

4. Искате да поставите поверителния изходен код на вашата компания и вграден API ключ в публичен AI инструмент и да поискате помощ. Кой е най-правилният подход?

  • A) Поставяне на кода както е с API ключа за скорост
  • Б) Достатъчно е просто да изтриете името на фирмата и да споделите всичко останало
  • C) Споделяне на кода и след това искане от AI да го изтрие
  • D) Премахване на тайни и скрита логика и намаляване на проблема до представителен пример или използване на институционален инструмент ✔

Описание: Таен изходен код и идентификационни данни (API ключ, парола, низ за връзка); Рисковано е от гледна точка на фирмената тайна и сигурност. Необходимо е да се премахнат тайните и скритата бизнес логика и да се намали проблемът до анонимен/представителен пример или да се използва инструмент за споделяне на корпоративни/неданни.

5. AI каза, че сложността на функцията за търсене, която е написал, е O(n); но има два вложени цикъла в кода. Какво е правилното инженерно поведение?

  • A) Анализирайте кода ръчно и сами извлечете сложността и я измерете, ако е необходимо ✔
  • B) Приемете O(n) и продължете, защото AI каза
  • В) Приемането на броя на циклите няма нищо общо с производителността
  • Г) Просто сменете името на функцията

Обяснение: Времевата сложност (Big-O) показва как броят на операциите се увеличава с нарастването на входа. Два вложени цикъла обикновено означават O(n^2). Твърдението за сложност на AI трябва да бъде проверено чрез ръчно анализиране на кода и измерване с нарастващи входове, ако е необходимо; Доверяването на иска води до невярно предположение за изпълнение.

6. AI генериран код, който директно вмъква въведени от потребителя данни в SQL заявка чрез свързване на текст. Какъв е основният проблем и правилното решение тук?

  • А) Няма проблем; обединяването на текст е най-бързият метод
  • B) Съществува риск от SQL инжектиране; Трябва да се използва параметризирана заявка (подготвен оператор), която разделя входа ✔
  • В) Достатъчно е само преобразуване на заявката в главни букви
  • Г) Написването на заявката по-кратко ще реши проблема

Описание: Добавянето на потребителско въвеждане директно към текста на заявката създава уязвимост при инжектиране на SQL; Нападателят може да промени заявката с въведените данни. Правилното решение е да се използва параметризирана заявка (подготвен оператор), която разделя входа от текста на заявката. Това е една от най-често пропусканите грешки в сигурността в AI кода.

7. Имате ограничено време, когато преглеждате част от кода, създаден от AI. Кои въпроси е най-добре да дадете приоритет?

  • A) Форматирайте само детайли като отстъп и интервал
  • B) Само дължината на имената на променливите
  • C) Логическа коректност, уязвимости и поведение в крайни случаи ✔
  • D) Само общият брой редове на файла

Описание: Най-висок риск при преглед на кода; Това са проблеми, които причиняват сериозна вреда, като логически грешки, уязвимости в сигурността и изтичане на поверителна информация. Проблемите с формата и стила се коригират с автоматични инструменти; Основното човешко внимание трябва да бъде посветено на точността, сигурността и поведението на крайния случай.

8. Искате AI да разреши грешка. Кой вход най-добре би помогнал на AI да открие първопричината?

  • A) Просто казвам „кодът не работи, поправете го“
  • B) Просто дайте името на файла
  • В) Просто казване на очаквания резултат, без текста за грешка
  • D) Предоставете пълно съобщение за грешка, проследяване на стека, подходящ код и пример за минимално възпроизвеждане ✔

Обяснение: За ефективно отстраняване на грешки е необходимо да се даде на AI пълното съобщение за грешка, проследяване на стека, съответен кодов фрагмент и най-малката възпроизводима проба, която генерира грешката. Неясното твърдение „не работи“ принуждава изкуствения интелект да предполага и да прави общи препоръки.

9. Всички модулни тестове, произведени от AI, преминават при първото изпълнение. Кой риск не трябва да се пренебрегва в тази ситуация?

  • A) Тестовете може да потвърдят текущото състояние на кода, но не и действителното/очакваното поведение ✔
  • B) Кодът е абсолютно без грешки, защото всички тестове са преминали
  • В) Качеството е гарантирано, ако броят на тестовете е голям
  • Г) Преминаването на теста доказва, че покритието е пълно

Обяснение: Тестовете може да валидират текущото (може би бъгово) поведение на кода, а не планираното му поведение; или може да не съдържа никакво смислено твърдение и винаги се предава. За да видите, че тестовете проверяват реалното очакване, е необходимо съзнателно да разбиете кода и да потвърдите, че тестът става червен.

10. AI ви е създал готов блок от код за проблем. Подозирате, че кодът може да е копиран дословно от проект с отворен код. Кой е правилният подход?

  • A) Използване на лиценза, без да се замисля, защото кодът работи
  • B) Проверка на източника/лиценза на кода, пренаписване, ако е необходимо и спазване на корпоративната политика ✔
  • C) Просто променете имената на променливите и считайте проблема за разрешен
  • Г) Ако приемем, че лицензирането се отнася само за големи компании

Описание: AI може да възпроизвежда защитения с авторски права/лицензиран код в данните за обучение дословно. Нарушаването на лиценза в търговски продукт създава сериозни правни рискове. Необходимо е да проверите източника и лиценза на кода, да го пренапишете със свои думи, ако е необходимо, и да спазвате лицензионната политика на институцията.

11. AI предложи незабавно да преминете към архитектура на микроуслуги за вашия проект. Какъв е най-подходящият инженерен подход при оценката на това предложение?

  • А) Незабавно разделете цялата система на микроуслуги, защото AI предлага
  • Б) Да приемем, че микроуслугата винаги е най-добрият избор
  • В) Оценете предложението според реалната нужда, натоварване, структура на екипа и баланс плюс-минус ✔
  • Г) Вземане на решение въз основа единствено на популярността на архитектурата

Обяснение: Архитектурните решения зависят от контекста; Микроуслугите добавят стойност към нужди като мащаб и разделяне на екипи, но идват с разходи като оперативна сложност, разпределено отстраняване на грешки и разходи. Оценете предложението според действителната нужда, натоварване, структура на екипа и баланс плюсове и минуси; Общите съвети не трябва да се следват сляпо.

12. AI създаде рационализиран README и API документация за вашия код; но някои крайни точки и параметри не съвпадат в кода. Какво е правилното поведение?

  • A) Публикуване на документа такъв, какъвто е, защото текстът е свободен
  • B) Просто коригирайте заглавието и оставете останалото както е
  • В) Добавяне на документа в склада, без да се чете
  • D) Сравнете всяка крайна точка и параметър с действителния код и коригирайте всички, които не съвпадат ✔

Описание: Документацията трябва да отразява точно действителния код; Грешният документ кара разработчиците, които го четат, да го използват неправилно. Всяка крайна точка, параметър и върната стойност трябва да бъдат проверени спрямо действителния код и всички несъответствия трябва да бъдат коригирани.

13. Кой входен подход е подходящ за най-висококачествен изход, когато се иска код от AI?

  • A) Ясно предоставяне на език/версия, входно-изходен договор, ограничения и ситуации на грешка ✔
  • B) Просто казвам „напиши ми някакъв работещ код“
  • В) Напишете най-кратката заявка, без да давате никакъв контекст
  • D) Само уточняване на колко реда код ще има

Описание: Мощна подкана; Той включва използвания език и версия, входно-изходния договор, ограничения на производителността и стила, условия за грешка и инструкцията „останете само в рамките на заявения обхват“. Безконтекстната заявка „напишете ми функция“ е обща и често създава неподходящ код.

14. AI генерира конфигурация за вашия CI/CD (непрекъснато интегриране/разгръщане) конвейер и вгради паролата на базата данни в нея в обикновен текст. Кое е правилното решение?

  • A) Оставете паролата като обикновен текст, защото работи
  • B) Преместване на тайни чрез променлива на средата или инструмент за управление на тайни, без поставяне на обикновен текст в хранилището ✔
  • C) Преместете паролата само в реда за коментари
  • D) Промяната на името на файла решава проблема

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