Печалби:
- Възможност за разпознаване и проверка, че 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) Промяната на името на файла решава проблема
Обяснение: Записването на тайни като пароли и ключове в обикновен текст в конфигурационния файл крие риск от изтичане на контрол на версиите и неоторизиран достъп. тайни; Той трябва да се пази от променливи на средата или специален мениджър на тайни и никога не трябва да влиза в хранилището като обикновен текст.