одиниця 12 / 12

Межі: безпека, конфіденційність, ліцензія та етика

Прибуток:

  • Здатність розпізнавати та перевіряти, що штучний інтелект може створювати підроблені API, незахищений код і вміст, захищений авторським правом
  • Можливість керувати використанням ШІ в межах конфіденційності вихідного коду, персональних даних і корпоративної політики
  • Розуміння того, що остаточна відповідальність за відповідність ліцензії, безпеку та етику залишається за інженером.

Модульний екзамен

1. Як комп’ютерний інженер, під час роботи з інструментом генерації коду штучного інтелекту остаточна відповідальність за що з наведеного завжди повинна залишатися на людині?

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

Опис: ШІ; Це може пришвидшити такі завдання, як скелет коду, чернетка тесту та документація. Проте інженер відповідає за перегляд, тестування та затвердження згенерованого коду, щоб переконатися, що він правильний, безпечний і відповідає вимогам, а також запустити його у виробництво; це не можна делегувати ШІ без незалежної перевірки.

2. ШІ створив для вас функцію, і, здається, вона працює успішно. Який найкращий крок перед запуском у виробництво?

  • A) Оскільки функція, здається, працює, запустіть її безпосередньо у виробництво
  • B) Перевірте поведінку, написавши та запустивши невеликі модульні тести, які включають крайні випадки ✔
  • C) Просто дивлячись на кількість рядків функції
  • D) Зробити назву функції більш описовою

Пояснення: виглядати так, щоб працювати, не означає мати рацію. Написання та запуск невеликих модульних тестів, які охоплюють граничні випадки, такі як порожній вхід, нуль, негативне значення, дуже велике значення та невідповідність, перевіряють фактичну поведінку функції, не переміщуючи її в живе середовище.

3. AI запропонував метод під назвою 'array.sortStable()', який не існує вашою мовою, і пояснив це чітко. Яку першу правильну дію слід зробити?

  • A) Використання методу безпосередньо, тому що ШІ здається впевненим
  • B) Визначте метод самостійно та використовуйте його назву
  • C) Перевірка існування методу з офіційної документації мови/бібліотеки ✔
  • D) Закрийте попередження компілятора та продовжуйте

Пояснення: мовні моделі можуть правдоподібно створювати імена бібліотек, пакетів або методів, які насправді не існують (галюцинації). Кожен запропонований API має бути дослівно перевірений на відповідність офіційній та поточній документації мови чи бібліотеки; Якщо його немає в документі, його не слід використовувати.

4. Ви хочете вставити конфіденційний вихідний код вашої компанії та вбудований ключ API у загальнодоступний інструмент ШІ та попросити допомоги. Який підхід найбільш правильний?

  • A) Вставте код як є з ключем API для швидкості
  • B) Досить просто видалити назву компанії та поділитися всім іншим
  • C) Надання спільного доступу до коду з проханням ШІ видалити його
  • D) Видалення секретів і прихованої логіки та зведення проблеми до репрезентативного прикладу або використання інституційного інструменту ✔

Опис: секретний вихідний код і облікові дані (ключ API, пароль, рядок підключення); Це ризиковано з точки зору секретності компанії та безпеки. Необхідно видалити секрети та приховану бізнес-логіку та звести проблему до анонімного/репрезентативного прикладу або використати корпоративний/інструмент обміну даними.

5. AI сказав, що складність пошукової функції, яку він написав, дорівнює O(n); але в коді є два вкладені цикли. Що таке правильна інженерна поведінка?

  • A) Проаналізуйте код вручну та витягніть складність самостійно та виміряйте її, якщо необхідно ✔
  • B) Прийняти O(n) і продовжити, оскільки AI сказав
  • C) Припущення, що кількість циклів не має нічого спільного з продуктивністю
  • D) Просто змініть назву функції

Пояснення: часова складність (Big-O) показує, як збільшується кількість операцій із зростанням вхідних даних. Два вкладених цикли зазвичай означають O(n^2). Твердження про складність штучного інтелекту слід перевірити шляхом ручного аналізу коду та вимірювання зі збільшенням вхідних даних, якщо необхідно; Покладання на претензію породжує хибне припущення про виконання.

6. Згенерований ШІ код, який безпосередньо вставляє введені користувачем дані в SQL-запит шляхом об’єднання тексту. У чому тут головна проблема і правильне рішення?

  • А) Без проблем; об'єднання тексту є найшвидшим способом
  • B) Існує ризик впровадження SQL; Слід використовувати параметризований запит (підготовлений оператор), який розділяє вхідні дані ✔
  • C) Достатньо лише перевести запит у верхній регістр
  • D) Написання запиту коротше вирішить проблему

Опис: додавання введених користувачем даних безпосередньо до тексту запиту створює вразливість SQL-ін’єкції; Зловмисник може змінити запит за допомогою введення. Правильним рішенням є використання параметризованого запиту (підготовленого оператора), який відокремлює вхідні дані від тексту запиту. Це одна з найпоширеніших помилок безпеки в коді ШІ.

7. Ви маєте обмежений час на перегляд фрагмента коду, створеного ШІ. Які проблеми краще віддати пріоритет?

  • A) Форматуйте лише такі деталі, як відступи та інтервали
  • Б) Тільки довжина імен змінних
  • C) Логічна коректність, уразливості та поведінка крайнього випадку ✔
  • Г) Тільки загальна кількість рядків файлу

Опис: найвищий ризик під час перевірки коду; Це проблеми, які завдають серйозної шкоди, як-от логічні помилки, уразливості безпеки та витік конфіденційної інформації. Проблеми формату та стилю вирішуються за допомогою автоматичних інструментів; Основна увага людини повинна бути приділена точності, безпеці та поведінці крайнього випадку.

8. Ви хочете, щоб ШІ вирішив помилку. Який вхід найкраще допоможе ШІ знайти першопричину?

  • A) Просто сказати "код не працює, виправте"
  • B) Просто дайте назву файлу
  • C) Просто вказати очікуваний результат без тексту помилки
  • D) Надайте повне повідомлення про помилку, трасування стека, відповідний код і мінімальний приклад відтворення ✔

Пояснення: для ефективного налагодження необхідно надати штучному інтелекту повне повідомлення про помилку, трасування стека, відповідний фрагмент коду та найменший відтворюваний зразок, який викликає помилку. Розпливчасте твердження «не працює» змушує ШІ здогадуватися та давати загальні рекомендації.

9. Усі модульні тести, створені ШІ, проходять під час першого запуску. Який ризик не слід ігнорувати в цій ситуації?

  • A) Тести можуть підтвердити поточний стан коду, але не фактичну/очікувану поведінку ✔
  • B) Код абсолютно без помилок, оскільки всі тести пройшли
  • C) Якість гарантована, якщо кількість тестів велика
  • D) Проходження тесту підтверджує повне покриття

Пояснення: тести можуть перевіряти поточну (можливо, помилкову) поведінку коду, а не його заплановану поведінку; або він може не містити жодних значущих тверджень і завжди передається. Щоб побачити, що тести перевіряють реальне очікування, необхідно свідомо зламати код і підтвердити, що тест став червоним.

10. AI створив вам готовий блок коду для проблеми. Ви підозрюєте, що код міг бути дослівно скопійований із проекту з відкритим кодом. Який підхід правильний?

  • A) Використання ліцензії без роздумів, оскільки код працює
  • Б) Перевірка вихідного коду/ліцензії коду, переписування, якщо необхідно, і відповідність корпоративній політиці ✔
  • C) Просто змініть імена змінних і вважайте проблему вирішеною
  • D) Якщо припустити, що ліцензування стосується лише великих компаній

Опис: ШІ може дослівно відтворювати захищений авторським правом/ліцензійний код у навчальних даних. Порушення ліцензії на комерційний продукт створює серйозні правові ризики. Необхідно перевірити джерело та ліцензію коду, за потреби переписати його своїми словами та дотримуватися ліцензійної політики установи.

11. AI запропонував вам негайно перейти на архітектуру мікросервісів для вашого проекту. Який найбільш відповідний інженерний підхід під час оцінки цієї пропозиції?

  • A) Негайно розділіть всю систему на мікросервіси, тому що пропонує ШІ
  • Б) Припущення, що мікросервіс завжди є найкращим вибором
  • C) Оцініть пропозицію відповідно до реальних потреб, навантаження, структури команди та балансу плюс-мінус ✔
  • D) Прийняття рішення виключно на основі популярності архітектури

Пояснення: архітектурні рішення залежать від контексту; Мікросервіси додають цінність у таких потребах, як масштаб і поділ команди, але супроводжуються такими витратами, як операційна складність, розподілене налагодження та вартість. Оцініть пропозицію відповідно до фактичної потреби, навантаження, структури команди та балансу плюсів і мінусів; Загальні поради не слід дотримуватися сліпо.

12. AI створив оптимізовану документацію README та API для вашого коду; але деякі кінцеві точки та параметри не збігаються в коді. Що таке правильна поведінка?

  • A) Публікація документа таким, яким він є, оскільки текст вільний
  • B) Просто виправте назву, а решту залиште як є
  • В) Додавання документа на склад без його читання
  • D) Порівняйте кожну кінцеву точку та параметр із фактичним кодом і виправте будь-які невідповідності ✔

Опис: документація має точно відображати фактичний код; Неправильний документ штовхає розробників, які його прочитали, використовувати його неправильно. Кожну кінцеву точку, параметр і значення, що повертається, слід перевірити на фактичний код, а будь-які невідповідності слід виправити.

13. Який підхід до введення є правильним для виведення найвищої якості під час запиту коду від ШІ?

  • A) Чітке надання мови/версії, контракту введення-виведення, обмежень і помилкових ситуацій ✔
  • B) Просто кажу "напишіть мені робочий код"
  • C) Напишіть найкоротший запит без вказівки контексту
  • D) Просто вказівка кількості рядків коду

Опис: потужна підказка; Він включає мову та версію, що використовується, договір введення-виведення, обмеження продуктивності та стилю, умови помилок та інструкцію «залишатися лише в межах запитаної області». Безконтекстний запит «напишіть мені функцію» є загальним і часто створює невідповідний код.

14. AI створив конфігурацію для вашого конвеєра CI/CD (безперервна інтеграція/розгортання) і вставив у неї пароль бази даних у вигляді звичайного тексту. Яке виправлення є правильним?

  • A) Залиште пароль у вигляді звичайного тексту, оскільки він працює
  • B) Переміщення секретів через змінну середовища або інструмент керування секретами, не розміщуючи відкритий текст у сховищі ✔
  • В) Перемістіть пароль лише в рядок коментаря
  • D) Зміна імені файлу вирішує проблему

Пояснення: запис у файл конфігурації секретів, таких як паролі та ключі, у вигляді звичайного тексту створює ризик витоку контролю версій і несанкціонованого доступу. секрети; Він повинен бути закритий змінними середовища або спеціальним менеджером секретів і ніколи не повинен надходити до сховища у вигляді звичайного тексту.