Jednostka 12 / 12

Granice: bezpieczeństwo, prywatność, licencja i etyka

Zyski:

  • Umiejętność rozpoznawania i weryfikowania, czy sztuczna inteligencja może tworzyć fałszywe interfejsy API, niepewny kod i treści chronione prawem autorskim
  • Możliwość zarządzania wykorzystaniem AI w granicach poufności kodu źródłowego, danych osobowych i polityki korporacyjnej
  • Zrozumienie, że ostateczna odpowiedzialność za zgodność z licencją, bezpieczeństwo i etykę spoczywa na inżynierze.

Egzamin modułowy

1. Jako inżynier komputerowy pracujący z narzędziem do generowania kodu AI, ostateczną odpowiedzialność za które z poniższych elementów powinien zawsze ponosić człowiek?

  • A) Ostateczne zatwierdzenie poprawności, bezpieczeństwa oraz sprawdzenie i przetestowanie kodu wprowadzonego do produkcji ✔
  • B) Stworzenie pierwszego szkieletu kodu dla funkcji
  • C) Stworzenie listy sugestii dotyczących nazw zmiennych
  • D) Przygotowanie projektu tekstu do komentarzy do kodu

Opis: sztuczna inteligencja; Może przyspieszyć zadania takie jak szkielet kodu, wersja testowa i dokumentacja. Jednakże obowiązkiem inżyniera jest sprawdzenie, przetestowanie i zatwierdzenie wygenerowanego kodu, aby upewnić się, że jest on poprawny, bezpieczny i zgodny z wymaganiami, a także wdrożenie go do produkcji; nie można tego przekazać AI bez niezależnej weryfikacji.

2. Sztuczna inteligencja stworzyła dla Ciebie funkcję i wydaje się, że działa ona pomyślnie. Jaki jest najlepszy krok przed wprowadzeniem go do produkcji?

  • A) Ponieważ funkcja wydaje się działać, umieść ją bezpośrednio w środowisku produkcyjnym
  • B) Zweryfikuj zachowanie, pisząc i uruchamiając małe testy jednostkowe, które obejmują przypadki brzegowe ✔
  • C) Patrząc tylko na liczbę linii funkcji
  • D) Uczynienie nazwy funkcji bardziej opisową

Wyjaśnienie: Wydawać się, że pracujesz, nie oznacza, że masz rację. Pisanie i uruchamianie małych testów jednostkowych, które obejmują przypadki skrajne, takie jak puste dane wejściowe, zero, ujemna, bardzo duża wartość i niedopasowanie, weryfikują rzeczywiste zachowanie funkcji bez przenoszenia jej do środowiska na żywo.

3. AI zaproponowała metodę o nazwie „array.sortStable()”, która nie istnieje w Twoim języku i wyjaśniła ją w jasny sposób. Jakie jest pierwsze prawidłowe działanie?

  • A) Bezpośrednie użycie metody, ponieważ sztuczna inteligencja wydaje się pewna
  • B) Zdefiniuj samodzielnie metodę i użyj dokładnie jej nazwy
  • C) Sprawdzenie istnienia metody na podstawie oficjalnej dokumentacji języka/biblioteki ✔
  • D) Zamknij ostrzeżenie kompilatora i kontynuuj

Objaśnienie: Modele językowe mogą w przekonujący sposób tworzyć nazwy bibliotek, pakietów lub metod, które w rzeczywistości nie istnieją (halucynacje). Każdy proponowany interfejs API powinien zostać dosłownie zweryfikowany w oparciu o oficjalną i aktualną dokumentację języka lub biblioteki; Jeżeli nie ma go w dokumencie, nie należy go używać.

4. Chcesz wkleić poufny kod źródłowy swojej firmy i osadzony klucz API do publicznego narzędzia AI i poprosić o pomoc. Które podejście jest najwłaściwsze?

  • A) Wklejenie kodu w niezmienionej postaci z kluczem API w celu zwiększenia szybkości
  • B) Wystarczy usunąć nazwę firmy i udostępnić całą resztę
  • C) Udostępnienie kodu, a następnie poproszenie AI o jego usunięcie
  • D) Usunięcie tajemnic i ukrytej logiki oraz sprowadzenie problemu do reprezentatywnego przykładu lub wykorzystanie narzędzia instytucjonalnego ✔

Opis: tajny kod źródłowy i dane uwierzytelniające (klucz API, hasło, parametry połączenia); Jest to ryzykowne z punktu widzenia tajemnicy przedsiębiorstwa i bezpieczeństwa. Konieczne jest pozbycie się tajemnic i ukrytej logiki biznesowej i zredukowanie problemu do anonimowego/reprezentatywnego przykładu lub skorzystanie z narzędzia do udostępniania danych korporacyjnych/innych.

5. AI stwierdził, że złożoność napisanej przez niego funkcji wyszukiwania wynosi O(n); ale w kodzie są dwie zagnieżdżone pętle. Jakie jest prawidłowe zachowanie inżyniera?

  • A) Przeanalizuj kod ręcznie i samodzielnie wyodrębnij złożoność i zmierz ją, jeśli to konieczne ✔
  • B) Zaakceptuj O(n) i kontynuuj, ponieważ AI powiedziała
  • C) Zakładając, że liczba cykli nie ma nic wspólnego z wydajnością
  • D) Po prostu zmień nazwę funkcji

Objaśnienie: Złożoność czasowa (Big-O) pokazuje, jak liczba operacji rośnie wraz ze wzrostem danych wejściowych. Dwie zagnieżdżone pętle zwykle oznaczają O(n^2). Twierdzenie o złożoności sztucznej inteligencji należy zweryfikować, ręcznie analizując kod i, jeśli to konieczne, mierząc przy rosnących danych wejściowych; Opieranie się na twierdzeniu prowadzi do fałszywego założenia dotyczącego wydajności.

6. Kod wygenerowany przez sztuczną inteligencję, który bezpośrednio wstawia dane wejściowe użytkownika do zapytania SQL poprzez łączenie tekstu. Jaki jest główny problem i właściwe rozwiązanie?

  • A) Nie ma problemu; łączenie tekstu jest najszybszą metodą
  • B) Istnieje ryzyko wstrzyknięcia SQL; Należy zastosować sparametryzowane zapytanie (przygotowana instrukcja), które oddziela wejście ✔
  • C) Wystarczy przekonwertować zapytanie na wielkie litery
  • D) Napisanie krótszego zapytania rozwiąże problem

Opis: dodanie danych wejściowych użytkownika bezpośrednio do tekstu zapytania powoduje powstanie luki w zabezpieczeniach umożliwiającej iniekcję SQL; Osoba atakująca może zmodyfikować zapytanie za pomocą danych wejściowych. Prawidłowym rozwiązaniem jest użycie zapytania sparametryzowanego (przygotowanej instrukcji), które oddziela dane wejściowe od tekstu zapytania. Jest to jeden z najczęściej pomijanych błędów bezpieczeństwa w kodzie AI.

7. Masz ograniczony czas na przeglądanie fragmentu kodu stworzonego przez sztuczną inteligencję. Którym kwestiom najlepiej nadać priorytet?

  • A) Tylko szczegóły formatu, takie jak wcięcia i odstępy
  • B) Tylko długość nazw zmiennych
  • C) Poprawność logiczna, luki w zabezpieczeniach i zachowanie przypadków brzegowych ✔
  • D) Tylko całkowita liczba linii pliku

Opis: Najwyższe ryzyko podczas przeglądu kodu; Są to kwestie powodujące poważne szkody, takie jak błędy logiczne, luki w zabezpieczeniach i wycieki poufnych informacji. Problemy z formatem i stylem rozwiązywane są za pomocą automatycznych narzędzi; Główną uwagę człowieka należy poświęcić dokładności, bezpieczeństwu i zachowaniu przypadków brzegowych.

8. Chcesz, aby sztuczna inteligencja rozwiązała błąd. Które dane wejściowe najlepiej pomogą sztucznej inteligencji znaleźć pierwotną przyczynę?

  • A) Po prostu mówię „kod nie działa, napraw to”
  • B) Wystarczy podać nazwę pliku
  • C) Po prostu mówię oczekiwany wynik, bez tekstu błędu
  • D) Podaj pełny komunikat o błędzie, ślad stosu, odpowiedni kod i przykład minimalnej reprodukcji ✔

Objaśnienie: Aby debugowanie było skuteczne, konieczne jest przekazanie sztucznej inteligencji pełnego komunikatu o błędzie, śladu stosu, odpowiedniego fragmentu kodu i najmniejszej odtwarzalnej próbki, która powoduje błąd. Niejasne stwierdzenie „nie działa” zmusza sztuczną inteligencję do zgadywania i formułowania ogólnych zaleceń.

9. Wszystkie testy jednostkowe wykonane przez AI przechodzą pomyślnie przy pierwszym uruchomieniu. Którego ryzyka nie należy w tej sytuacji ignorować?

  • A) Testy mogą potwierdzić bieżący stan kodu, ale nie rzeczywiste/oczekiwane zachowanie ✔
  • B) Kod jest całkowicie wolny od błędów, ponieważ wszystkie testy przebiegły pomyślnie
  • C) Jakość jest gwarantowana, jeśli liczba testów jest duża
  • D) Zaliczenie testu potwierdza kompletność ubezpieczenia

Objaśnienie: Testy mogą weryfikować bieżące (być może błędne) zachowanie kodu, a nie jego zamierzone zachowanie; lub może nie zawierać żadnego znaczącego stwierdzenia i zawsze jest przekazywany. Aby zobaczyć, że testy sprawdzają rzeczywiste oczekiwania, należy świadomie złamać kod i potwierdzić, że test zmienia kolor na czerwony.

10. Sztuczna inteligencja stworzyła gotowy blok kodu dla rozwiązania problemu. Podejrzewasz, że kod mógł zostać dosłownie skopiowany z projektu open source. Które podejście jest właściwe?

  • A) Korzystanie z licencji bez zastanowienia, bo kod działa
  • B) Sprawdzenie źródła/licencji kodu, w razie potrzeby przepisanie go i zgodność z polityką firmy ✔
  • C) Po prostu zmień nazwy zmiennych i uznaj problem za rozwiązany
  • D) Zakładając, że licencjonowanie dotyczy tylko dużych firm

Opis: sztuczna inteligencja może dosłownie odtworzyć kod chroniony prawem autorskim/licencjonowanym w danych szkoleniowych. Naruszenie licencji w produkcie komercyjnym stwarza poważne ryzyko prawne. Należy sprawdzić źródło i licencję kodu, w razie potrzeby przepisać go własnymi słowami i przestrzegać polityki licencyjnej instytucji.

11. AI zasugerowała, abyś od razu przeszedł na architekturę mikroserwisów w swoim projekcie. Jakie jest najwłaściwsze podejście inżynieryjne przy ocenie tej propozycji?

  • A) Natychmiast podziel cały system na mikrousługi, ponieważ AI sugeruje
  • B) Zakładając, że mikrousługi są zawsze najlepszym wyborem
  • C) Oceń propozycję pod kątem rzeczywistych potrzeb, obciążenia, struktury zespołu i równowagi plus-minus ✔
  • D) Podejmowanie decyzji wyłącznie w oparciu o popularność architektury

Wyjaśnienie: Decyzje architektoniczne zależą od kontekstu; Mikrousługi dodają wartość w przypadku potrzeb takich jak skalowanie i separacja zespołów, ale wiążą się z kosztami, takimi jak złożoność operacyjna, rozproszone debugowanie i koszty. Oceń propozycję pod kątem rzeczywistych potrzeb, obciążenia, struktury zespołu oraz bilansu zalet i wad; Nie należy stosować się do ogólnych porad na ślepo.

12. AI stworzyła usprawnioną dokumentację README i API dla Twojego kodu; ale niektóre punkty końcowe i parametry nie pasują do kodu. Jakie jest prawidłowe zachowanie?

  • A) Publikacja dokumentu takim, jaki jest, ponieważ tekst jest płynny
  • B) Po prostu popraw tytuł i zostaw resztę bez zmian
  • C) Dodanie dokumentu do magazynu bez jego odczytania
  • D) Porównaj każdy punkt końcowy i parametr z rzeczywistym kodem i napraw te, które nie pasują do ✔

Opis: Dokumentacja powinna dokładnie odzwierciedlać rzeczywisty kod; Niewłaściwy dokument popycha czytających go programistów do nieprawidłowego użycia go. Każdy punkt końcowy, parametr i wartość zwracana powinny zostać zweryfikowane względem rzeczywistego kodu, a wszelkie niedopasowania powinny zostać poprawione.

13. Które podejście wejściowe jest odpowiednie, aby uzyskać najwyższą jakość wyników przy żądaniu kodu od sztucznej inteligencji?

  • A) Jasne przedstawienie języka/wersji, umowy wejścia-wyjścia, ograniczeń i sytuacji błędów ✔
  • B) Po prostu mówię „napisz mi działający kod”
  • C) Napisz najkrótszą prośbę bez podawania kontekstu
  • D) Wystarczy określić, ile będzie linii kodu

Opis: Potężny monit; Obejmuje używany język i wersję, kontrakt wejścia-wyjścia, ograniczenia dotyczące wydajności i stylu, warunki błędów oraz instrukcję „pozostań tylko w żądanym zakresie”. Bezkontekstowe żądanie „napisz mi funkcję” ma charakter ogólny i często generuje niewłaściwy kod.

14. AI wygenerowała konfigurację potoku CI/CD (ciągła integracja/wdrożenie) i umieściła w niej hasło do bazy danych w postaci zwykłego tekstu. Która poprawka jest właściwa?

  • A) Pozostawienie hasła w postaci zwykłego tekstu, ponieważ działa
  • B) Przenoszenie sekretów za pomocą zmiennej środowiskowej lub narzędzia do zarządzania sekretami, bez umieszczania zwykłego tekstu w repozytorium ✔
  • C) Przenieś hasło tylko do linii komentarza
  • D) Zmiana nazwy pliku rozwiązuje problem

Objaśnienie: Zapisanie tajnych informacji, takich jak hasła i klucze, zwykłym tekstem w pliku konfiguracyjnym stwarza ryzyko wycieku kontroli wersji i nieautoryzowanego dostępu. Tajniki; Powinien być chroniony przez zmienne środowiskowe lub specjalnego menedżera sekretów i nigdy nie powinien być wprowadzany do repozytorium w postaci zwykłego tekstu.