Gevinster:
- Evne til at genkende og verificere, at AI kan producere falske API'er, usikker kode og ophavsretligt beskyttet indhold
- Evne til at administrere AI-brug inden for grænserne af kildekodefortrolighed, personlige data og virksomhedspolitik
- Forståelse af, at det endelige ansvar for overholdelse af licenser, sikkerhed og etik forbliver hos ingeniøren.
Modul eksamen
1. Som computeringeniør, når du arbejder med et AI-kodegenereringsværktøj, er det endelige ansvar for, hvilket af følgende, som altid skal forblive hos mennesket?
- A) Endelig godkendelse af korrekthed, sikkerhed og gennemgang og test af kode sat i produktion ✔
- B) Oprettelse af det første kodeskelet til en funktion
- C) Udarbejdelse af en liste med forslag til variabelnavne
- D) Udarbejdelse af et udkast til tekst til kodekommentarer
Beskrivelse: AI; Det kan fremskynde opgaver som kodeskelet, testudkast og dokumentation. Det er dog ingeniørens ansvar at gennemgå, teste og godkende den genererede kode for at sikre, at den er korrekt, sikker og i overensstemmelse med kravene, og at sætte den i produktion; dette kan ikke delegeres til AI uden uafhængig verifikation.
2. AI har produceret en funktion til dig, og den ser ud til at virke på den lykkelige vej. Hvad er det bedste trin, før det sættes i produktion?
- A) Da funktionen ser ud til at virke, skal du sætte den direkte i produktion
- B) Bekræft adfærd ved at skrive og køre små enhedstest, der inkluderer kanttilfælde ✔
- C) Bare se på antallet af linjer i funktionen
- D) Gøre navnet på funktionen mere beskrivende
Forklaring: At se ud til at virke betyder ikke at have ret. Skrivning og kørsel af små enhedstests, der dækker kanttilfælde som tom input, nul, negativ, meget stor værdi og mismatch, verificerer funktionens faktiske adfærd uden at flytte den til det levende miljø.
3. AI foreslog en metode kaldet 'array.sortStable()', som ikke findes på dit sprog, og forklarede det på en klar måde. Hvad er den første rigtige handling at tage?
- A) Brug af metoden direkte, fordi AI virker selvsikker
- B) Definer selv metoden og brug dens navn nøjagtigt
- C) Bekræftelse af eksistensen af metoden fra den officielle dokumentation for sproget/biblioteket ✔
- D) Luk kompileringsadvarslen og fortsæt
Forklaring: Sprogmodeller kan plausibelt udgøre biblioteks-, pakke- eller metodenavne, der faktisk ikke eksisterer (hallucinerer). Hver foreslået API bør verbatim verbatim mod den officielle og aktuelle dokumentation for sproget eller biblioteket; Hvis det ikke er inkluderet i dokumentet, bør det ikke bruges.
4. Du vil indsætte din virksomheds fortrolige kildekode og en indlejret API-nøgle i et offentligt AI-værktøj og bede om hjælp. Hvilken er den mest korrekte tilgang?
- A) Indsæt koden som den er med API-nøglen for hastighed
- B) Det er nok bare at slette firmanavnet og dele alt andet
- C) Dele koden og derefter bede AI'en om at slette den
- D) Fjernelse af hemmeligheder og skjult logik og reducering af problemet til et repræsentativt eksempel eller brug af et institutionelt værktøj ✔
Beskrivelse: Hemmelig kildekode og legitimationsoplysninger (API-nøgle, adgangskode, forbindelsesstreng); Det er risikabelt med hensyn til firmahemmelighed og sikkerhed. Det er nødvendigt at fjerne hemmelighederne og den skjulte forretningslogik og reducere problemet til et anonymt/repræsentativt eksempel eller bruge et virksomheds-/ikke-datadelingsværktøj.
5. AI sagde, at kompleksiteten af en søgefunktion, han skrev, var O(n); men der er to indlejrede løkker i koden. Hvad er den korrekte ingeniøradfærd?
- A) Analyser koden manuelt og udtræk selv kompleksiteten og mål den om nødvendigt ✔
- B) Accepter O(n) og fortsæt, fordi AI sagde
- C) At antage antallet af cyklusser har intet at gøre med ydeevne
- D) Skift blot navnet på funktionen
Forklaring: Tidskompleksitet (Big-O) viser, hvordan antallet af operationer stiger, efterhånden som inputtet vokser. To indlejrede løkker betyder normalt O(n^2). AI's kompleksitetspåstand bør verificeres ved manuelt at analysere koden og måle med stigende input, hvis det er nødvendigt; At stole på påstanden giver en falsk antagelse om ydeevne.
6. AI-genereret kode, der direkte indsætter brugerinput i en SQL-forespørgsel ved at sammenkæde tekst. Hvad er hovedproblemet og den rigtige løsning her?
- A) Intet problem; tekstfletning er den hurtigste metode
- B) Der er risiko for SQL-injektion; En parametriseret forespørgsel (forberedt sætning), der adskiller inputtet, skal bruges ✔
- C) Bare at konvertere forespørgslen til store bogstaver er nok
- D) At skrive forespørgslen kortere vil løse problemet
Beskrivelse: Tilføjelse af brugerinput direkte til forespørgselsteksten skaber en SQL-injektionssårbarhed; Angriberen kan ændre forespørgslen med inputtet. Den korrekte løsning er at bruge en parametriseret forespørgsel (forberedt sætning), der adskiller input fra forespørgselsteksten. Dette er en af de mest almindeligt savnede sikkerhedsfejl i AI-kode.
7. Du har begrænset tid, når du gennemgår et stykke kode produceret af AI. Hvilke emner er bedst at prioritere?
- A) Formatér kun detaljer såsom indrykning og mellemrum
- B) Kun længden af variabelnavne
- C) Logisk korrekthed, sårbarheder og kantsagsadfærd ✔
- D) Kun det samlede antal linjer i filen
Beskrivelse: Højeste risiko ved kodegennemgang; Det er problemer, der forårsager alvorlig skade, såsom logiske fejl, sikkerhedssårbarheder og læk af fortrolige oplysninger. Format- og stilproblemer løses med automatiske værktøjer; Den menneskelige hovedopmærksomhed bør vies til nøjagtighed, sikkerhed og edge case-adfærd.
8. Du vil have AI til at løse en fejl. Hvilket input ville bedst hjælpe AI med at finde årsagen?
- A) Bare at sige "koden virker ikke, ret den"
- B) Bare giv navnet på filen
- C) Siger bare det forventede resultat uden fejlteksten
- D) Angiv fuld fejlmeddelelse, staksporing, relevant kode og minimumsreproduktionseksempel ✔
Forklaring: For effektiv debugging er det nødvendigt at give AI'en den fulde fejlmeddelelse, staksporing, relevant kodestykke og den mindste reproducerbare prøve, der producerer fejlen. Den vage udtalelse 'virker ikke' tvinger AI til at gætte og komme med generelle anbefalinger.
9. Alle enhedstests produceret af AI består ved første kørsel. Hvilken risiko bør ikke ignoreres i denne situation?
- A) Test kan bekræfte den aktuelle tilstand af koden, men ikke faktisk/forventet adfærd ✔
- B) Koden er absolut fejlfri, fordi alle tests bestået
- C) Kvalitet er garanteret, hvis antallet af tests er stort
- D) At bestå testen beviser, at dækningen er komplet
Forklaring: Test kan validere den aktuelle (måske buggy) adfærd af koden, ikke dens tilsigtede adfærd; eller den indeholder muligvis ikke nogen meningsfuld påstand og er altid bestået. For at se, at testene kontrollerer den reelle forventning, er det nødvendigt at bryde koden bevidst og bekræfte, at testen bliver rød.
10. AI har produceret dig en færdig kodeblok til et problem. Du har mistanke om, at koden kan være blevet kopieret ordret fra et open source-projekt. Hvilken er den rigtige tilgang?
- A) Brug af licensen uden at tænke, fordi koden virker
- B) Kontrol af kilden/licensen til koden, omskrivning om nødvendigt og overholdelse af virksomhedens politik ✔
- C) Du skal bare ændre variabelnavnene og betragte problemet som løst
- D) Forudsat at licensgivning kun vedrører store virksomheder
Beskrivelse: AI kan gengive den ophavsretligt beskyttede/licenserede kode i træningsdataene ordret. Licensbrud i et kommercielt produkt skaber alvorlige juridiske risici. Det er nødvendigt at kontrollere kilden og licensen til koden, omskrive den med dine egne ord, hvis det er nødvendigt, og overholde institutionens licenspolitik.
11. AI foreslog, at du straks skiftede til mikroservicearkitektur for dit projekt. Hvad er den mest passende ingeniørtilgang, når dette forslag evalueres?
- A) Opdel straks hele systemet i mikrotjenester, fordi AI foreslår
- B) Forudsat at mikroservice altid er det bedste valg
- C) Evaluer forslaget i henhold til det reelle behov, belastning, teamstruktur og plus-minus balance ✔
- D) At træffe beslutningen udelukkende baseret på arkitekturens popularitet
Forklaring: Arkitektoniske beslutninger afhænger af kontekst; Mikrotjenester tilføjer værdi i behov såsom skalering og teamadskillelse, men kommer med omkostninger såsom operationel kompleksitet, distribueret debugging og omkostninger. Vurder forslaget i henhold til det faktiske behov, belastning, teamstruktur og fordele og ulemper balance; Generelle råd bør ikke følges blindt.
12. AI producerede en strømlinet README- og API-dokumentation til din kode; men nogle endepunkter og parametre stemmer ikke overens i koden. Hvad er den korrekte adfærd?
- A) Udgivelse af dokumentet, som det er, fordi teksten er flydende
- B) Du skal bare rette titlen og lade resten være som den er
- C) Tilføjelse af dokumentet til lageret uden at læse det
- D) Sammenlign hvert endepunkt og parameter med den faktiske kode og ret dem, der ikke matcher ✔
Beskrivelse: Dokumentationen skal være en nøjagtig afspejling af den faktiske kode; Det forkerte dokument presser udviklerne, der læser det, til at bruge det forkert. Hvert endepunkt, parameter og returværdi skal verificeres i forhold til den faktiske kode, og eventuelle uoverensstemmelser skal korrigeres.
13. Hvilken inputtilgang er den rigtige for output af højeste kvalitet, når der anmodes om kode fra AI?
- A) Klart at angive sprog/version, input-output kontrakt, begrænsninger og fejlsituationer ✔
- B) Bare at sige 'skriv mig en arbejdskode'
- C) Skriv den korteste anmodning uden at give nogen sammenhæng
- D) Du skal blot angive, hvor mange linjer kode der vil være
Beskrivelse: Kraftig prompt; Det inkluderer det anvendte sprog og den anvendte version, input-output-kontrakten, ydeevne- og stilbegrænsninger, fejlbetingelser og instruktionen 'bliv kun inden for det ønskede omfang'. En kontekstløs "skriv mig en funktion"-anmodning er generisk og producerer ofte upassende kode.
14. AI genererede en konfiguration for din CI/CD (kontinuerlig integration/implementering) pipeline og indlejrede databaseadgangskoden i den i almindelig tekst. Hvilken er den rigtige rettelse?
- A) Lad adgangskoden være almindelig tekst, fordi den virker
- B) Flytte hemmeligheder ud via miljøvariable eller hemmelighedsstyringsværktøj, ikke at lægge almindelig tekst i depotet ✔
- C) Flyt kun adgangskoden til kommentarlinjen
- D) Ændring af filnavnet løser problemet
Forklaring: At skrive hemmeligheder såsom adgangskoder og nøgler i almindelig tekst til konfigurationsfilen udgør en risiko for lækage af versionskontrol og uautoriseret adgang. Hemmeligheder; Det bør holdes ude af miljøvariabler eller en speciel hemmelighedsmanager og bør aldrig komme ind i depotet i almindelig tekst.