Enota 12 / 12

Meje: varnost, zasebnost, licenca in etika

Dobički:

  • Sposobnost prepoznavanja in preverjanja, ali AI lahko ustvari lažne API-je, nevarno kodo in avtorsko zaščiteno vsebino
  • Sposobnost upravljanja uporabe AI v mejah zaupnosti izvorne kode, osebnih podatkov in politike podjetja
  • Razumevanje, da končno odgovornost za skladnost z licenco, varnost in etiko nosi inženir.

Modulni izpit

1. Kot računalniški inženir, ko delate z orodjem za ustvarjanje kode AI, mora končna odgovornost za kaj od naslednjega vedno ostati na človeku?

  • A) Končna odobritev pravilnosti, varnosti ter pregled in testiranje kode, dane v proizvodnjo ✔
  • B) Ustvarjanje prvega okostja kode za funkcijo
  • C) Izdelava seznama predlogov za imena spremenljivk
  • D) Priprava osnutka besedila za komentarje kode

Opis: AI; Lahko pospeši opravila, kot so okostje kode, preskusni osnutek in dokumentacija. Vendar pa je inženirjeva odgovornost, da pregleda, preizkusi in odobri ustvarjeno kodo, da zagotovi, da je pravilna, varna in v skladu z zahtevami, ter jo da v proizvodnjo; tega ni mogoče prenesti na AI brez neodvisnega preverjanja.

2. AI je za vas izdelal funkcijo in zdi se, da deluje po srečni poti. Kaj je najboljši korak, preden ga damo v proizvodnjo?

  • A) Ker se zdi, da funkcija deluje, jo dajte neposredno v proizvodnjo
  • B) Preverite vedenje s pisanjem in izvajanjem majhnih testov enot, ki vključujejo robne primere ✔
  • C) Samo pogled na število vrstic funkcije
  • D) Ime funkcije naredimo bolj opisno

Pojasnilo: Videti, da delaš, ne pomeni imeti prav. Pisanje in izvajanje majhnih testov enot, ki pokrivajo robne primere, kot so prazen vnos, nič, negativna, zelo velika vrednost in neujemanje, preveri dejansko vedenje funkcije, ne da bi jo premaknili v živo okolje.

3. AI je predlagal metodo, imenovano 'array.sortStable()', ki ne obstaja v vašem jeziku, in jo jasno razložil. Kaj je prvi pravilen ukrep?

  • A) Neposredna uporaba metode, ker je umetna inteligenca videti samozavestna
  • B) Sami definirajte metodo in natančno uporabite njeno ime
  • C) Preverjanje obstoja metode iz uradne dokumentacije jezika/knjižnice ✔
  • D) Zaprite opozorilo prevajalnika in nadaljujte

Pojasnilo: Jezikovni modeli lahko verjetno sestavijo imena knjižnic, paketov ali metod, ki dejansko ne obstajajo (halucinirajo). Vsak predlagani API je treba dobesedno preveriti glede na uradno in trenutno dokumentacijo jezika ali knjižnice; Če ni vključen v dokument, se ne sme uporabljati.

4. Želite prilepiti zaupno izvorno kodo vašega podjetja in vdelan ključ API-ja v javno orodje AI in zaprositi za pomoč. Kateri je najbolj pravilen pristop?

  • A) Prilepite kodo, kot je, s ključem API za hitrost
  • B) Dovolj je samo izbrisati ime podjetja in deliti vse ostalo
  • C) Deljenje kode in nato zahteva AI, da jo izbriše
  • D) Odstranjevanje skrivnosti in skrite logike ter zmanjševanje problema na reprezentativen primer ali uporaba institucionalnega orodja ✔

Opis: tajna izvorna koda in poverilnice (ključ API, geslo, povezovalni niz); To je tvegano v smislu skrivnosti podjetja in varnosti. Treba je odstraniti skrivnosti in skrito poslovno logiko ter zmanjšati problem na anonimen/reprezentativen primer ali uporabiti orodje za skupno rabo podjetij/nepodatkov.

5. AI je rekel, da je kompleksnost iskalne funkcije, ki jo je napisal, O(n); vendar sta v kodi dve ugnezdeni zanki. Kakšno je pravilno inženirsko vedenje?

  • A) Ročno analizirajte kodo in sami izluščite kompleksnost ter jo po potrebi izmerite ✔
  • B) Sprejmi O(n) in nadaljuj, ker je rekel AI
  • C) Predpostavka o številu ciklov nima nobene zveze z zmogljivostjo
  • D) Samo spremenite ime funkcije

Pojasnilo: Časovna kompleksnost (Big-O) kaže, kako se število operacij povečuje z rastjo vnosa. Dve ugnezdeni zanki običajno pomenita O(n^2). Trditev o kompleksnosti umetne inteligence je treba preveriti z ročno analizo kode in merjenjem z naraščajočimi vhodi, če je potrebno; Zanašanje na zahtevek povzroči napačno predpostavko o uspešnosti.

6. AI generirana koda, ki neposredno vstavi uporabniški vnos v poizvedbo SQL z združevanjem besedila. Kaj je tukaj glavni problem in prava rešitev?

  • A) Ni problema; spajanje besedil je najhitrejša metoda
  • B) Obstaja nevarnost vbrizgavanja SQL; Uporabiti je treba parametrizirano poizvedbo (pripravljen stavek), ki loči vnos ✔
  • C) Dovolj je samo pretvorba poizvedbe v velike črke
  • D) Težavo boste rešili s krajšim pisanjem poizvedbe

Opis: dodajanje uporabniškega vnosa neposredno v besedilo poizvedbe povzroči ranljivost vbrizgavanja SQL; Napadalec lahko spremeni poizvedbo z vnosom. Pravilna rešitev je uporaba parametrizirane poizvedbe (pripravljen stavek), ki loči vnos od besedila poizvedbe. To je ena najpogosteje zgrešenih varnostnih napak v kodi AI.

7. Za pregled kode, ki jo je ustvaril AI, imate omejen čas. Katerim težavam je najbolje dati prednost?

  • A) Oblikujte samo podrobnosti, kot sta zamik in presledek
  • B) Samo dolžina imen spremenljivk
  • C) Logična pravilnost, ranljivosti in obnašanje na robovih ✔
  • D) Samo skupno število vrstic datoteke

Opis: največje tveganje pri pregledu kode; To so težave, ki povzročajo resno škodo, kot so logične napake, varnostne ranljivosti in uhajanje zaupnih informacij. Težave z obliko in slogom so odpravljene s samodejnimi orodji; Glavno človeško pozornost je treba posvetiti natančnosti, varnosti in vedenju na robovih.

8. Želite, da AI reši napako. Kateri vnos bi najbolje pomagal AI najti glavni vzrok?

  • A) Samo reči "koda ne deluje, popravi"
  • B) Samo vnesite ime datoteke
  • C) Samo povedati pričakovan rezultat, brez besedila napake
  • D) Navedite celotno sporočilo o napaki, sled sklada, ustrezno kodo in primer minimalne reprodukcije ✔

Pojasnilo: Za učinkovito odpravljanje napak je treba AI dati celotno sporočilo o napaki, sled sklada, ustrezen delček kode in najmanjši ponovljivi vzorec, ki povzroči napako. Nejasna izjava 'ne deluje' prisili AI, da ugiba in daje splošna priporočila.

9. Vsi testi enot, ki jih je izdelal AI, so uspešni pri prvem zagonu. Katerega tveganja v tej situaciji ne bi smeli zanemariti?

  • A) Testi lahko potrdijo trenutno stanje kode, ne pa tudi dejanskega/pričakovanega vedenja ✔
  • B) Koda je popolnoma brez napak, ker so vsi testi uspešno opravljeni
  • C) Kakovost je zagotovljena, če je število testov veliko
  • D) Opravljen test dokazuje, da je pokritost popolna

Pojasnilo: Preizkusi morda preverjajo trenutno (morda hroščeče) vedenje kode, ne pa predvidenega vedenja; ali pa morda ne vsebuje nobene smiselne trditve in je vedno posredovana. Da bi videli, ali testi preverjajo resnično pričakovanje, je potrebno zavestno razbiti kodo in potrditi, da se test obarva rdeče.

10. Umetna inteligenca vam je izdelala že pripravljen blok kode za težavo. Sumite, da je bila koda morda dobesedno kopirana iz odprtokodnega projekta. Kateri je pravi pristop?

  • A) Uporaba licence brez razmišljanja, ker koda deluje
  • B) Preverjanje vira/licence kode, po potrebi prepisovanje in skladnost s politiko podjetja ✔
  • C) Samo spremenite imena spremenljivk in menite, da je problem rešen
  • D) Ob predpostavki, da licenciranje zadeva samo velika podjetja

Opis: AI lahko dobesedno reproducira avtorsko zaščiteno/licencirano kodo v podatkih o usposabljanju. Kršitev licence v komercialnem izdelku ustvarja resna pravna tveganja. Preveriti je treba izvor in licenco kode, jo po potrebi prepisati s svojimi besedami in upoštevati licenčno politiko ustanove.

11. AI je predlagal, da za svoj projekt takoj preklopite na arhitekturo mikrostoritev. Kakšen je najprimernejši inženirski pristop pri ocenjevanju tega predloga?

  • A) Takoj razdelite celoten sistem na mikrostoritve, ker predlaga AI
  • B) Predpostavka, da je mikrostoritev vedno najboljša izbira
  • C) Ocenite predlog glede na dejansko potrebo, obremenitev, strukturo ekipe in ravnovesje plus-minus ✔
  • D) Odločitev, ki temelji izključno na priljubljenosti arhitekture

Pojasnilo: Arhitekturne odločitve so odvisne od konteksta; Mikrostoritve dodajajo vrednost potrebam, kot so obseg in ločevanje ekip, vendar prinašajo stroške, kot so operativna kompleksnost, porazdeljeno odpravljanje napak in stroški. Ocenite predlog glede na dejansko potrebo, obremenitev, strukturo ekipe ter ravnovesje prednosti in slabosti; Splošnih nasvetov se ne sme slepo držati.

12. Umetna inteligenca je izdelala poenostavljeno dokumentacijo README in API za vašo kodo; vendar se nekatere končne točke in parametri ne ujemajo v kodi. Kakšno je pravilno vedenje?

  • A) Objava dokumenta takšnega, kot je, ker je besedilo tekoče
  • B) Samo popravite naslov in pustite ostalo, kot je
  • C) Dodajanje dokumenta v skladišče brez njegovega branja
  • D) Primerjajte vsako končno točko in parameter z dejansko kodo in popravite tiste, ki se ne ujemajo ✔

Opis: dokumentacija mora natančno odražati dejansko kodo; Napačen dokument spodbuja razvijalce, ki ga preberejo, da ga uporabljajo nepravilno. Vsako končno točko, parameter in vrnjeno vrednost je treba preveriti glede na dejansko kodo, vsa neujemanja pa je treba popraviti.

13. Kateri vnosni pristop je pravi za najvišjo kakovost izhoda, ko zahtevate kodo od AI?

  • A) Jasno navedite jezik/različico, vhodno-izhodno pogodbo, omejitve in napake ✔
  • B) Samo rečem "napišite mi delovno kodo"
  • C) Napišite najkrajšo zahtevo brez navajanja konteksta
  • D) Samo določite, koliko vrstic kode bo

Opis: Zmogljiv poziv; Vključuje uporabljeni jezik in različico, vhodno-izhodno pogodbo, omejitve zmogljivosti in sloga, pogoje napak in navodilo 'ostani samo znotraj zahtevanega obsega'. Brezkontekstna zahteva 'napišite mi funkcijo' je splošna in pogosto povzroči neustrezno kodo.

14. Umetna inteligenca je ustvarila konfiguracijo za vaš cevovod CI/CD (stalna integracija/uvajanje) in vanjo vdelala geslo baze podatkov v obliki navadnega besedila. Kateri je pravi popravek?

  • A) Geslo pustite kot golo besedilo, ker deluje
  • B) Premikanje skrivnosti prek spremenljivke okolja ali orodja za upravljanje skrivnosti, ne dajanje golega besedila v repozitorij ✔
  • C) Premaknite geslo samo v vrstico za komentar
  • D) Spreminjanje imena datoteke reši težavo

Pojasnilo: Zapisovanje skrivnosti, kot so gesla in ključi, v navadnem besedilu v konfiguracijsko datoteko predstavlja tveganje uhajanja nadzora različic in nepooblaščenega dostopa. Skrivnosti; Spremenljivke okolja ali poseben upravitelj skrivnosti ga morajo preprečiti in nikoli ne smejo vstopiti v repozitorij v navadnem besedilu.