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 umjetne inteligencije unutar granica povjerljivosti izvornog koda, osobnih podataka i korporativne politike
- Razumijevanje da konačna odgovornost za usklađenost s licencom, sigurnost i etiku ostaje na inženjeru.
Modul ispit
1. Kao računalni inženjer, kad radi s alatom za generiranje koda umjetne inteligencije, krajnja odgovornost za što od sljedećeg uvijek treba ostati na čovjeku?
- A) Konačno odobrenje ispravnosti, sigurnosti te pregled i testiranje koda stavljenog u proizvodnju ✔
- B) Stvaranje prvog kostura koda za funkciju
- C) Izrada popisa prijedloga za imena varijabli
- D) Priprema nacrta teksta za komentare koda
Opis: AI; Može ubrzati zadatke kao što su kostur koda, nacrt testa i dokumentacija. Međutim, odgovornost je inženjera da pregleda, testira i odobri generirani kod kako bi osigurao da je ispravan, siguran i u skladu sa zahtjevima, te da ga stavi u proizvodnju; to se ne može delegirati AI-ju bez neovisne provjere.
2. AI je proizveo funkciju za vas i čini se da radi u najboljem redu. Koji je najbolji korak prije stavljanja u proizvodnju?
- A) Budući da se čini da funkcija radi, stavite je izravno u proizvodnju
- B) Provjerite ponašanje pisanjem i pokretanjem malih jediničnih testova koji uključuju rubne slučajeve ✔
- C) Samo gledajući broj redaka funkcije
- D) Učiniti naziv funkcije opisnijim
Objašnjenje: Činiti se da radiš 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 neslaganje provjerava stvarno ponašanje funkcije bez premještanja u živo okruženje.
3. AI je predložio metodu pod nazivom 'array.sortStable()' koja ne postoji u vašem jeziku i objasnio ju je na jasan način. Koja je prva ispravna radnja koju treba poduzeti?
- A) Korištenje metode izravno jer AI djeluje samouvjereno
- B) Sami definirajte metodu i upotrijebite njezino točno ime
- C) Provjera postojanja metode iz službene dokumentacije jezika/biblioteke ✔
- D) Zatvorite upozorenje prevoditelja i nastavite
Objašnjenje: Jezični modeli mogu vjerojatno izmisliti nazive biblioteka, paketa ili metoda koji zapravo ne postoje (halucinirati). Svaki predloženi API treba doslovno verificirati prema službenoj i trenutnoj dokumentaciji jezika ili knjižnice; Ako nije uključen u dokument, ne bi se trebao koristiti.
4. Želite zalijepiti povjerljivi izvorni kod svoje tvrtke i ugrađeni API ključ u javni AI alat i zatražiti pomoć. Koji je najispravniji pristup?
- A) Zalijepite kôd kakav jest s API ključem za brzinu
- B) Dovoljno je samo izbrisati naziv tvrtke i podijeliti sve ostalo
- C) Dijeljenje koda, a zatim traženje od umjetne inteligencije 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 tajnosti tvrtke i sigurnosti. Potrebno je ukloniti tajne i skrivenu poslovnu logiku i svesti problem na anonimni/reprezentativni primjer ili upotrijebiti alat za dijeljenje poduzeća/nepodataka.
5. AI je rekao da je složenost funkcije pretraživanja koju je napisao O(n); ali postoje dvije ugniježđene petlje u kodu. Koje je ispravno inženjersko ponašanje?
- A) Ručno analizirajte kod i sami izdvojite složenost i izmjerite je ako je potrebno ✔
- B) Prihvatite O(n) i nastavite jer je AI rekao
- C) Pretpostavka da broj ciklusa nema nikakve veze s izvedbom
- 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). AI-jeva tvrdnja o složenosti trebala bi se potvrditi ručnom analizom koda i mjerenjem s povećanjem unosa ako je potrebno; Oslanjanje na tvrdnju proizvodi lažnu pretpostavku o izvedbi.
6. AI generirani kod koji izravno umeće korisnički unos u SQL upit ulančavanjem teksta. Što je tu glavni problem i pravo rješenje?
- A) Nema problema; spajanje teksta je najbrži način
- B) Postoji rizik od SQL injekcije; Treba koristiti parametrizirani upit (pripremljeni iskaz) koji odvaja unos ✔
- C) Dovoljno je samo pretvoriti upit u velika slova
- D) Pisanje kraćeg upita riješit će problem
Opis: Dodavanje korisničkog unosa izravno u tekst upita stvara ranjivost SQL injekcije; Napadač može modificirati upit unosom. Ispravno rješenje je korištenje parametriziranog upita (pripremljene izjave) koji odvaja unos od teksta upita. Ovo je jedna od najčešće propuštenih sigurnosnih pogrešaka u AI kodu.
7. Imate ograničeno vrijeme kada pregledavate dio koda koji proizvodi AI. Kojim problemima je najbolje dati prioritet?
- A) Oblikujte samo detalje kao što su uvlake i razmaci
- B) Samo duljina naziva varijabli
- C) Logička ispravnost, ranjivosti i ponašanje u rubnim slučajevima ✔
- D) Samo ukupan broj redaka datoteke
Opis: Najveći rizik kod pregleda koda; To su problemi koji uzrokuju ozbiljnu štetu, kao što su logičke pogreške, sigurnosne ranjivosti i curenje povjerljivih informacija. Problemi s formatom i stilom rješavaju se automatskim alatima; Glavnu ljudsku pozornost treba posvetiti točnosti, sigurnosti i ponašanju u rubnom slučaju.
8. Želite da AI riješi grešku. Koji bi unos najbolje pomogao umjetnoj inteligenciji da pronađe glavni uzrok?
- A) Samo kažem 'kôd ne radi, popravi ga'
- B) Samo navedite naziv datoteke
- C) Samo izgovaranje očekivanog rezultata, bez teksta pogreške
- D) Navedite potpunu poruku o pogrešci, praćenje hrpe, relevantni kod i primjer minimalne reprodukcije ✔
Objašnjenje: Za učinkovito otklanjanje pogrešaka potrebno je AI-u dati potpunu poruku o pogrešci, praćenje hrpe, relevantni isječak koda i najmanji ponovljivi uzorak koji proizvodi pogrešku. Nejasna izjava 'ne radi' prisiljava AI da nagađa i daje opće preporuke.
9. Svi jedinični testovi koje proizvodi AI prolaze u prvom izvođenju. 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) Kvaliteta je zajamčena ako je broj testova velik
- D) Polaganje testa dokazuje da je pokrivenost potpuna
Objašnjenje: Testovi mogu potvrđivati trenutno (možda bugovito) ponašanje koda, a ne njegovo namjeravano ponašanje; ili možda ne sadrži nikakvu smislenu tvrdnju i uvijek se prosljeđuje. Da biste vidjeli da testovi provjeravaju stvarno očekivanje, potrebno je svjesno razbiti kod i potvrditi da test svijetli crveno.
10. AI vam je proizvela gotov blok koda za problem. Sumnjate da je kôd doslovce kopiran iz projekta otvorenog koda. Koji je pravi pristup?
- A) Korištenje licence bez razmišljanja jer kod radi
- B) Provjera izvora/licence koda, ponovno pisanje ako je potrebno i usklađenost s korporativnom politikom ✔
- C) Samo promijenite imena varijabli i smatrajte problem riješenim
- D) Pod pretpostavkom da se licenciranje odnosi samo na velika poduzeća
Opis: AI može doslovce reproducirati kôd zaštićen autorskim pravima/licencu u podacima o obuci. Kršenje licence u komercijalnom proizvodu stvara ozbiljne pravne rizike. Potrebno je provjeriti izvor i licencu koda, po potrebi ga prepisati vlastitim riječima i pridržavati se politike licenciranja ustanove.
11. AI je predložio da odmah prijeđete na arhitekturu mikroservisa za svoj projekt. Koji je najprikladniji inženjerski pristup pri ocjenjivanju ovog prijedloga?
- A) Odmah podijeliti cijeli sustav na mikroservise jer AI predlaže
- B) Pretpostavka da je mikroservis uvijek najbolji izbor
- C) Procijenite prijedlog prema stvarnim potrebama, opterećenju, strukturi tima i plus-minus ravnoteži ✔
- D) Donošenje odluke isključivo na temelju popularnosti arhitekture
Objašnjenje: Arhitektonske odluke ovise o kontekstu; Mikroservisi dodaju vrijednost u potrebama kao što su skala i odvajanje tima, ali dolaze s troškovima kao što su operativna složenost, distribuirano otklanjanje pogrešaka i trošak. Ocijenite prijedlog prema stvarnim potrebama, opterećenju, strukturi tima i ravnoteži za i protiv; Općenite savjete ne treba slijediti slijepo.
12. AI je izradio pojednostavljeni README i API dokumentaciju za vaš kôd; ali neke krajnje točke i parametri ne odgovaraju u kodu. Što je ispravno ponašanje?
- A) Objavljivanje dokumenta kakav jest jer je tekst tečan
- B) Samo popravite naslov i ostavite ostalo kako jest
- C) Dodavanje dokumenta u skladište bez čitanja
- D) Usporedite svaku krajnju točku i parametar sa stvarnim kodom i popravite sve koji se ne podudaraju ✔
Opis: dokumentacija bi trebala biti točan odraz stvarnog koda; Pogrešan dokument tjera programere koji su ga pročitali da ga koriste na pogrešan način. Svaku krajnju točku, parametar i povratnu vrijednost treba provjeriti u odnosu na stvarni kod, a sva nepodudaranja treba ispraviti.
13. Koji je ulazni pristup ispravan za najkvalitetniji izlaz kada se kod zahtijeva od umjetne inteligencije?
- A) Jasno navođenje jezika/verzije, ulazno-izlaznog ugovora, ograničenja i grešaka ✔
- B) Samo kažem 'napiši mi radni kod'
- C) Napišite najkraći zahtjev bez navođenja konteksta
- D) Samo navođenje koliko će redaka koda biti
Opis: Snažan brz; Uključuje korišteni jezik i verziju, ulazno-izlazni ugovor, ograničenja performansi i stila, uvjete pogreške i uputu 'ostani samo unutar traženog opsega'. Zahtjev 'napiši mi funkciju' bez konteksta je generički i često proizvodi neprikladni kod.
14. AI je generirao konfiguraciju za vaš CI/CD (kontinuirana integracija/postavljanje) cjevovod i u njega ugradio lozinku baze podataka u obliku običnog teksta. Koje je ispravno rješenje?
- A) Ostavljanje lozinke kao običnog teksta jer funkcionira
- B) Premještanje tajni putem varijable okruženja ili alata za upravljanje tajnama, bez stavljanja otvorenog teksta u repozitorij ✔
- C) Premjestite lozinku samo u redak komentara
- D) Promjena naziva datoteke rješava problem
Objašnjenje: Zapisivanje tajni kao što su lozinke i ključevi u običnom tekstu u konfiguracijsku datoteku predstavlja rizik od curenja kontrole verzije i neovlaštenog pristupa. tajne; Varijable okoline ili poseban upravitelj tajni trebale bi ga držati podalje i nikada ne bi trebale ulaziti u spremište u obliku običnog teksta.