Dobici:
- Sposobnost prepoznavanja i provjere da AI može proizvesti lažne API-je, nesiguran kod i sadržaj zaštićen autorskim pravima
- Sposobnost upravljanja upotrebom AI u granicama povjerljivosti izvornog koda, ličnih podataka i korporativne politike
- Razumijevanje da krajnja odgovornost za usklađenost licence, sigurnost i etiku ostaje na inženjeru.
Modul Exam
1. Kao kompjuterski inženjer, kada radite sa alatom za generisanje AI koda, krajnja odgovornost za šta od sledećeg uvek treba da ostane na čoveku?
- A) Konačno odobrenje ispravnosti, sigurnosti, te pregled i testiranje koda puštenog u proizvodnju ✔
- B) Kreiranje prvog skeleta koda za funkciju
- C) Izrada liste prijedloga za imena varijabli
- D) Priprema nacrta teksta za komentare koda
Opis: AI; Može ubrzati zadatke kao što su skelet koda, nacrt testa i dokumentacija. Međutim, odgovornost je inženjera da pregleda, testira i odobri generisani kod kako bi se osiguralo da je ispravan, siguran i u skladu sa zahtjevima, te da ga pusti u proizvodnju; ovo ne može biti delegirano AI bez nezavisne verifikacije.
2. AI je proizvela funkciju za vas i čini se da radi na sretnom putu. Koji je najbolji korak prije puštanja u proizvodnju?
- A) Pošto se čini da funkcija radi, stavite je direktno u proizvodnju
- B) Provjerite ponašanje pisanjem i pokretanjem malih jediničnih testova koji uključuju rubne slučajeve ✔
- C) Gledajući samo broj linija funkcije
- D) Učiniti naziv funkcije opisnijim
Objašnjenje: Pojaviti se na poslu ne znači biti u pravu. Pisanje i izvođenje malih jediničnih testova koji pokrivaju rubne slučajeve kao što su prazan unos, nula, negativna, vrlo velika vrijednost i nepodudaranje provjerava stvarno ponašanje funkcije bez premještanja u okruženje uživo.
3. AI je predložio metod pod nazivom 'array.sortStable()' koji ne postoji na vašem jeziku i objasnio ga na jasan način. Koja je prva ispravna radnja koju treba preduzeti?
- A) Korištenje metode direktno jer AI djeluje samopouzdano
- B) Sami definišite metodu i tačno koristite njen naziv
- C) Provjera postojanja metode iz službene dokumentacije jezika/biblioteke ✔
- D) Zatvorite upozorenje kompajlera i nastavite
Objašnjenje: Jezički modeli mogu vjerodostojno činiti imena knjižnica, paketa ili metoda koja zapravo ne postoje (halucinirati). Svaki predloženi API treba doslovno verificirati u odnosu na zvaničnu i trenutnu dokumentaciju jezika ili biblioteke; Ako nije uključen u dokument, ne treba ga koristiti.
4. Želite da zalijepite povjerljivi izvorni kod vaše kompanije i ugrađeni API ključ u javni AI alat i zatražite pomoć. Koji je najispravniji pristup?
- A) Zalijepite kod kakav je s API ključem za brzinu
- B) Dovoljno je samo izbrisati naziv kompanije i podijeliti sve ostalo
- C) Dijeljenje koda i zatim traženje od AI da ga izbriše
- D) Uklanjanje tajni i skrivene logike i svođenje problema na reprezentativan primjer ili korištenje institucionalnog alata ✔
Opis: Tajni izvorni kod i vjerodajnice (API ključ, lozinka, niz veze); Rizično je u smislu kompanijske tajne i sigurnosti. Neophodno je ogoliti tajne i skrivenu poslovnu logiku i problem svesti na anonimni/reprezentativni primjer ili koristiti alat za razmjenu podataka/poduzeća.
5. AI je rekao da je složenost funkcije pretraživanja koju je napisao bila O(n); ali postoje dvije ugniježđene petlje u kodu. Koje je ispravno inženjersko ponašanje?
- A) Analizirajte kôd ručno i sami izdvojite složenost i izmjerite je ako je potrebno ✔
- B) Prihvatite O(n) i nastavite jer je AI rekao
- C) Pod pretpostavkom da broj ciklusa nema nikakve veze sa performansama
- D) Samo promijenite naziv funkcije
Objašnjenje: Vremenska složenost (Big-O) pokazuje kako se broj operacija povećava kako ulaz raste. Dvije ugniježđene petlje obično znače O(n^2). Tvrdnja o složenosti AI treba da se verifikuje ručnom analizom koda i merenjem sa povećanjem unosa ako je potrebno; Oslanjanje na tvrdnju proizvodi pogrešnu pretpostavku učinka.
6. AI generiran kod koji direktno umeće korisnički unos u SQL upit spajanjem teksta. Šta je ovdje glavni problem i pravo rješenje?
- A) Nema problema; spajanje teksta je najbrži metod
- B) Postoji rizik od SQL injekcije; Treba koristiti parametrizirani upit (pripremljeni izraz) koji odvaja ulaz ✔
- C) Dovoljno je samo pretvaranje upita u velika slova
- D) Kraće pisanje upita će riješiti problem
Opis: Dodavanje korisničkog unosa direktno u tekst upita stvara ranjivost SQL injekcije; Napadač može modificirati upit pomoću unosa. Ispravno rješenje je korištenje parametrizovanog upita (pripremljenog izraza) koji odvaja ulaz od teksta upita. Ovo je jedna od najčešće propuštenih sigurnosnih grešaka u AI kodu.
7. Imate ograničeno vrijeme kada pregledate dio koda koji je proizvela AI. Kojim pitanjima je najbolje dati prioritet?
- A) Samo formatirajte detalje kao što su uvlačenje i razmak
- B) Samo dužina imena varijabli
- C) Logička ispravnost, ranjivosti i ponašanje rubnih slučajeva ✔
- D) Samo ukupan broj redova datoteke
Opis: Najveći rizik u pregledu koda; To su problemi koji uzrokuju ozbiljnu štetu, kao što su logičke greške, sigurnosne ranjivosti i curenje povjerljivih informacija. Problemi sa formatom i stilom se rešavaju automatskim alatima; Glavna ljudska pažnja treba biti posvećena preciznosti, sigurnosti i ponašanju rubnih slučajeva.
8. Želite da AI riješi grešku. Koji bi input najbolje pomogao AI da pronađe osnovni uzrok?
- A) Samo kažem 'kôd ne radi, popravi ga'
- B) Samo dajte ime datoteke
- C) Samo kažem očekivani rezultat, bez teksta greške
- D) Navedite punu poruku o grešci, praćenje steka, relevantan kod i primjer minimalne reprodukcije ✔
Objašnjenje: Za učinkovito otklanjanje grešaka, potrebno je AI dati punu poruku o grešci, praćenje steka, relevantni isječak koda i najmanji ponovljivi uzorak koji proizvodi grešku. Nejasna izjava 'ne radi' prisiljava AI da nagađa i daje opšte preporuke.
9. Svi jedinični testovi proizvedeni od strane AI prolaze pri prvom pokretanju. Koji rizik ne treba zanemariti u ovoj situaciji?
- A) Testovi mogu potvrditi trenutno stanje koda, ali ne i stvarno/očekivano ponašanje ✔
- B) Kod je apsolutno bez grešaka jer su svi testovi prošli
- C) Kvalitet je zagarantovan ako je broj testova veliki
- D) Polaganje testa dokazuje da je pokrivenost potpuna
Objašnjenje: Testovi mogu provjeravati trenutno (možda buggy) ponašanje koda, a ne njegovo planirano ponašanje; ili možda ne sadrži nikakvu značajnu tvrdnju i uvijek se prosljeđuje. Da biste vidjeli da testovi provjeravaju realno očekivanje, potrebno je svjesno razbiti kod i potvrditi da test postaje crven.
10. AI vam je proizveo gotov blok koda za problem. Sumnjate da je kod možda doslovno kopiran iz projekta otvorenog koda. Koji je pravi pristup?
- A) Korišćenje licence bez razmišljanja jer kod radi
- B) Provjera izvora/licence koda, prepisivanje ako je potrebno i usklađenost s korporativnom politikom ✔
- C) Samo promijenite imena varijabli i smatrajte da je problem riješen
- D) Pod pretpostavkom da se licenciranje odnosi samo na velike kompanije
Opis: AI može doslovno reproducirati zaštićeni/licencirani kod u podacima o obuci. Kršenje licence u komercijalnom proizvodu stvara ozbiljne pravne rizike. Potrebno je provjeriti izvor i licencu koda, prepisati ga svojim riječima ako je potrebno i pridržavati se politike licenciranja institucije.
11. AI je predložio da se odmah prebacite na arhitekturu mikroservisa za svoj projekat. Koji je najprikladniji inženjerski pristup prilikom evaluacije ovog prijedloga?
- A) Odmah podijelite cijeli sistem na mikroservise jer AI predlaže
- B) Pod pretpostavkom da je mikroservis uvijek najbolji izbor
- C) Procijenite prijedlog prema stvarnim potrebama, opterećenju, strukturi tima i plus-minus balansu ✔
- D) Donošenje odluke isključivo na osnovu popularnosti arhitekture
Objašnjenje: Arhitektonske odluke zavise od konteksta; Mikrousluge dodaju vrijednost potrebama kao što su obim i odvajanje tima, ali dolaze sa troškovima kao što su operativna složenost, distribuirano otklanjanje grešaka i troškovi. Procijenite prijedlog prema stvarnim potrebama, opterećenju, strukturi tima i ravnoteži prednosti i nedostataka; Općenite savjete ne treba slijediti slijepo.
12. AI je proizveo pojednostavljenu README i API dokumentaciju za vaš kod; ali neke krajnje tačke i parametri se ne podudaraju u kodu. Koje je ispravno ponašanje?
- A) Objavljivanje dokumenta kakav jeste jer je tekst tečan
- B) Samo popravi naslov i ostavite ostalo kako jeste
- C) Dodavanje dokumenta u skladište bez čitanja
- D) Uporedite svaku krajnju tačku i parametar sa stvarnim kodom i popravite sve koji se ne podudaraju ✔
Opis: Dokumentacija treba da bude tačan odraz stvarnog koda; Pogrešan dokument tjera programere koji su ga pročitali da ga koriste pogrešno. Svaku krajnju tačku, parametar i povratnu vrijednost treba provjeriti u odnosu na stvarni kod, a sve nepodudarnosti treba ispraviti.
13. Koji pristup unosu je pravi za najkvalitetniji izlaz kada se traži kod od AI?
- A) Jasno davanje jezika/verzije, ulazno-izlaznog ugovora, ograničenja i situacije greške ✔
- B) Samo kažem 'napiši mi neki radni kod'
- C) Napišite najkraći zahtjev bez davanja konteksta
- D) Samo navedite koliko će linija koda biti
Opis: Snažan prompt; To uključuje jezik i verziju koja se koristi, ulazno-izlazni ugovor, ograničenja performansi i stila, uslove greške i instrukciju 'ostanite samo u traženom opsegu'. Zahtjev 'napišite mi funkciju' bez konteksta je generički i često proizvodi neprikladan kod.
14. AI je generirao konfiguraciju za vaš CI/CD (kontinuirana integracija/primjena) cjevovod i ugradio lozinku baze podataka u nju u običnom tekstu. Koje je ispravno rješenje?
- A) Ostavite lozinku kao običan tekst jer radi
- B) Premještanje tajni putem varijable okruženja ili alata za upravljanje tajnama, a ne stavljanje otvorenog teksta u spremište ✔
- C) Premjestite lozinku samo u red za komentare
- D) Promjena naziva datoteke rješava problem
Objašnjenje: Pisanje tajni kao što su lozinke i ključevi u običnom tekstu u konfiguracijski fajl predstavlja rizik od curenja kontrole verzija i neovlaštenog pristupa. Secrets; Trebalo bi da ga čuvaju varijable okruženja ili poseban menadžer tajni i nikada ne bi trebalo da ulazi u spremište u obliku običnog teksta.