Enhet 12 / 12

Grenser: Sikkerhet, personvern, lisens og etikk

Gevinster:

  • Evne til å gjenkjenne og bekrefte at AI kan produsere falske APIer, usikker kode og opphavsrettsbeskyttet innhold
  • Evne til å administrere AI-bruk innenfor grensene for kildekodekonfidensialitet, personlige data og bedriftens retningslinjer
  • Forståelse av at det endelige ansvaret for lisensoverholdelse, sikkerhet og etikk forblir hos ingeniøren.

Moduleksamen

1. Som dataingeniør, når du arbeider med et verktøy for generering av AI-kode, er det endelige ansvaret for hvilket av følgende som alltid skal ligge hos mennesket?

  • A) Endelig godkjenning av korrekthet, sikkerhet og gjennomgang og testing av kode satt i produksjon ✔
  • B) Lage det første kodeskjelettet for en funksjon
  • C) Lage en liste med forslag til variabelnavn
  • D) Utarbeide et utkast til tekst for kodekommentarer

Beskrivelse : AI; Det kan fremskynde oppgaver som kodeskjelett, testutkast og dokumentasjon. Det er imidlertid ingeniørens ansvar å gjennomgå, teste og godkjenne den genererte koden for å sikre at den er korrekt, sikker og i samsvar med kravene, og sette den i produksjon; dette kan ikke delegeres til AI uten uavhengig verifisering.

2. AI har produsert en funksjon for deg, og den ser ut til å fungere i den lykkelige banen. Hva er det beste trinnet før den settes i produksjon?

  • A) Siden funksjonen ser ut til å fungere, sett den direkte i produksjon
  • B) Bekreft atferd ved å skrive og kjøre små enhetstester som inkluderer kantsaker ✔
  • C) Bare å se på antall linjer i funksjonen
  • D) Gjøre navnet på funksjonen mer beskrivende

Forklaring: Å se ut til å fungere betyr ikke å ha rett. Å skrive og kjøre små enhetstester som dekker kanttilfeller som tom input, null, negativ, veldig stor verdi og mismatch, bekrefter den faktiske oppførselen til funksjonen uten å flytte den til live-miljøet.

3. AI foreslo en metode kalt 'array.sortStable()' som ikke finnes på språket ditt og forklarte det på en tydelig måte. Hva er den første riktige handlingen å ta?

  • A) Bruker metoden direkte fordi AI virker selvsikker
  • B) Definer metoden selv og bruk navnet nøyaktig
  • C) Verifisere eksistensen av metoden fra den offisielle dokumentasjonen til språket/biblioteket ✔
  • D) Lukk kompilatoradvarselen og fortsett

Forklaring: Språkmodeller kan trolig utgjøre bibliotek-, pakke- eller metodenavn som faktisk ikke eksisterer (hallusinerer). Hvert foreslåtte API skal verbatimt opp mot den offisielle og gjeldende dokumentasjonen for språket eller biblioteket; Hvis det ikke er inkludert i dokumentet, skal det ikke brukes.

4. Du vil lime inn bedriftens konfidensielle kildekode og en innebygd API-nøkkel i et offentlig AI-verktøy og be om hjelp. Hvilken er den mest korrekte tilnærmingen?

  • A) Lim inn koden som den er med API-nøkkelen for hastighet
  • B) Det er nok å bare slette firmanavnet og dele alt annet
  • C) Dele koden og deretter be AI om å slette den
  • D) Fjerne hemmeligheter og skjult logikk og redusere problemet til et representativt eksempel eller bruke et institusjonelt verktøy ✔

Beskrivelse: Hemmelig kildekode og legitimasjon (API-nøkkel, passord, tilkoblingsstreng); Det er risikabelt med tanke på bedriftshemmelighet og sikkerhet. Det er nødvendig å fjerne hemmelighetene og den skjulte forretningslogikken og redusere problemet til et anonymt/representativt eksempel eller bruke et bedrifts-/ikke-datadelingsverktøy.

5. AI sa at kompleksiteten til en søkefunksjon han skrev var O(n); men det er to nestede løkker i koden. Hva er riktig ingeniøroppførsel?

  • A) Analyser koden manuelt og trekk ut kompleksiteten selv og mål den om nødvendig ✔
  • B) Godta O(n) og fortsett fordi AI sa
  • C) Å anta at antall sykluser ikke har noe med ytelse å gjøre
  • D) Bare endre navnet på funksjonen

Forklaring: Tidskompleksitet (Big-O) viser hvordan antall operasjoner øker etter hvert som input vokser. To nestede løkker betyr vanligvis O(n^2). AIs kompleksitetspåstand bør verifiseres ved å manuelt analysere koden og måle med økende innganger om nødvendig; Å stole på påstanden gir en falsk antagelse om ytelse.

6. AI-generert kode som direkte setter inn brukerinndata i en SQL-spørring ved å sette sammen tekst. Hva er hovedproblemet og den riktige løsningen her?

  • A) Ikke noe problem; tekstsammenslåing er den raskeste metoden
  • B) Det er en risiko for SQL-injeksjon; En parameterisert spørring (prepared statement) som skiller inndataene skal brukes ✔
  • C) Bare å konvertere spørringen til store bokstaver er nok
  • D) Å skrive spørringen kortere vil løse problemet

Beskrivelse: Å legge til brukerinndata direkte i spørringsteksten skaper en SQL-injeksjonssårbarhet; Angriperen kan endre spørringen med input. Den riktige løsningen er å bruke en parameterisert spørring (prepared statement) som skiller input fra spørringsteksten. Dette er en av de mest savnede sikkerhetsfeilene i AI-kode.

7. Du har begrenset tid når du skal gjennomgå et stykke kode produsert av AI. Hvilke saker er best å prioritere?

  • A) Formater kun detaljer som innrykk og mellomrom
  • B) Bare lengden på variabelnavn
  • C) Logisk korrekthet, sårbarheter og kantsaksadferd ✔
  • D) Bare det totale antallet linjer i filen

Beskrivelse: Høyeste risiko i kodegjennomgang; Dette er problemer som forårsaker alvorlig skade, for eksempel logiske feil, sikkerhetssårbarheter og lekkasjer av konfidensiell informasjon. Format- og stilproblemer løses med automatiske verktøy; Den viktigste menneskelige oppmerksomheten bør vies til nøyaktighet, sikkerhet og adferd ved kantsak.

8. Du vil ha AI til å løse en feil. Hvilken input vil best hjelpe AI med å finne årsaken?

  • A) Bare å si "koden fungerer ikke, fiks den"
  • B) Bare oppgi navnet på filen
  • C) Bare si det forventede resultatet, uten feilteksten
  • D) Gi fullstendig feilmelding, stabelsporing, relevant kode og minimumsreproduksjonseksempel ✔

Forklaring: For effektiv feilsøking er det nødvendig å gi AI den fullstendige feilmeldingen, stabelsporing, relevant kodebit og den minste reproduserbare prøven som produserer feilen. Den vage utsagnet "fungerer ikke" tvinger AI til å gjette og komme med generelle anbefalinger.

9. Alle enhetstester produsert av AI består på første kjøring. Hvilken risiko bør ikke ignoreres i denne situasjonen?

  • A) Tester kan bekrefte gjeldende tilstand til koden, men ikke faktisk/forventet oppførsel ✔
  • B) Koden er helt feilfri fordi alle tester bestått
  • C) Kvalitet er garantert dersom antall tester er stort
  • D) Å bestå testen beviser at dekningen er fullført

Forklaring: Tester kan validere den nåværende (kanskje buggy) oppførselen til koden, ikke dens tiltenkte oppførsel; eller den inneholder kanskje ikke noen meningsfull påstand og er alltid bestått. For å se at testene sjekker den virkelige forventningen, er det nødvendig å bevisst bryte koden og bekrefte at testen blir rød.

10. AI har laget en ferdig kodeblokk for et problem. Du mistenker at koden kan ha blitt kopiert ordrett fra et åpen kildekode-prosjekt. Hvilken er den riktige tilnærmingen?

  • A) Bruke lisensen uten å tenke fordi koden fungerer
  • B) Sjekke kilden/lisensen til koden, omskrive om nødvendig og følge bedriftens retningslinjer ✔
  • C) Bare endre variabelnavnene og betrakt problemet som løst
  • D) Forutsatt at lisensiering kun gjelder store selskaper

Beskrivelse: AI kan reprodusere den opphavsrettsbeskyttede/lisensierte koden i treningsdataene ordrett. Lisensbrudd i et kommersielt produkt skaper alvorlige juridiske risikoer. Det er nødvendig å sjekke kilden og lisensen til koden, skrive den om med dine egne ord om nødvendig, og overholde institusjonens lisensieringspolicy.

11. AI foreslo at du umiddelbart bytte til mikrotjenester-arkitektur for prosjektet ditt. Hva er den mest hensiktsmessige ingeniørtilnærmingen når man vurderer dette forslaget?

  • A) Del opp hele systemet umiddelbart i mikrotjenester fordi AI foreslår
  • B) Forutsatt at mikroservice alltid er det beste valget
  • C) Vurder forslaget i henhold til reelt behov, belastning, teamstruktur og pluss-minus balanse ✔
  • D) Å ta avgjørelsen basert utelukkende på arkitekturens popularitet

Forklaring: Arkitektoniske beslutninger avhenger av kontekst; Mikrotjenester tilfører verdi i behov som skala og teamseparasjon, men kommer med kostnader som operasjonell kompleksitet, distribuert feilsøking og kostnader. Vurder forslaget i henhold til faktisk behov, belastning, teamstruktur og fordeler og ulemper balanse; Generelle råd bør ikke følges blindt.

12. AI produserte en strømlinjeformet README- og API-dokumentasjon for koden din; men noen endepunkter og parametere samsvarer ikke i koden. Hva er riktig oppførsel?

  • A) Publisere dokumentet som det er fordi teksten er flytende
  • B) Bare fiks tittelen og la resten være som den er
  • C) Legge til dokumentet på lageret uten å lese det
  • D) Sammenlign hvert endepunkt og parameter med den faktiske koden og fiks alle som ikke samsvarer ✔

Beskrivelse: Dokumentasjonen skal være en nøyaktig gjenspeiling av den faktiske koden; Feil dokument presser utviklerne som leser det til å bruke det feil. Hvert endepunkt, parameter og returverdi bør verifiseres mot den faktiske koden, og eventuelle uoverensstemmelser bør korrigeres.

13. Hvilken input-tilnærming er riktig for høyest kvalitet når du ber om kode fra AI?

  • A) Tydelig oppgi språk/versjon, input-output kontrakt, begrensninger og feilsituasjoner ✔
  • B) Bare si "skriv meg en fungerende kode"
  • C) Skriv den korteste forespørselen uten å oppgi noen sammenheng
  • D) Bare spesifisere hvor mange linjer med kode det vil være

Beskrivelse: Kraftig ledetekst; Den inkluderer språket og versjonen som brukes, input-output-kontrakten, ytelses- og stilbegrensninger, feiltilstander og instruksjonen "hold deg bare innenfor det forespurte omfanget". En kontekstløs "skriv meg en funksjon"-forespørsel er generisk og produserer ofte upassende kode.

14. AI genererte en konfigurasjon for CI/CD-pipelinen (kontinuerlig integrasjon/distribusjon) og innebygde databasepassordet i den i ren tekst. Hvilken er den riktige løsningen?

  • A) La passordet være ren tekst fordi det fungerer
  • B) Flytte hemmeligheter ut via miljøvariabel eller hemmelig administrasjonsverktøy, ikke legge ren tekst i depotet ✔
  • C) Flytt passordet kun til kommentarfeltet
  • D) Endring av filnavnet løser problemet

Forklaring: Å skrive hemmeligheter som passord og nøkler i ren tekst til konfigurasjonsfilen utgjør en risiko for lekkasje av versjonskontroll og uautorisert tilgang. hemmeligheter; Den bør holdes ute av miljøvariabler eller en spesiell hemmeligheterbehandler, og bør aldri gå inn i depotet i ren tekst.