Vinster:
- Förmåga att känna igen och verifiera att AI kan producera falska API:er, osäker kod och upphovsrättsskyddat innehåll
- Förmåga att hantera AI-användning inom gränserna för källkodskonfidentialitet, personuppgifter och företagspolicy
- Att förstå att det yttersta ansvaret för licensefterlevnad, säkerhet och etik ligger hos ingenjören.
Modulexamen
1. Som dataingenjör, när man arbetar med ett verktyg för generering av AI-kod, det yttersta ansvaret för vilket av följande ska alltid ligga hos människan?
- A) Slutgiltigt godkännande av korrekthet, säkerhet samt granskning och testning av kod som tagits i drift ✔
- B) Skapa det första kodskelettet för en funktion
- C) Producing a list of suggestions for variable names
- D) Förbereda ett utkast till text för kodkommentarer
Beskrivning: AI; Det kan påskynda uppgifter som kodskelett, testutkast och dokumentation. Det är dock ingenjörens ansvar att granska, testa och godkänna den genererade koden för att säkerställa att den är korrekt, säker och i överensstämmelse med kraven, och att sätta den i produktion; detta kan inte delegeras till AI utan oberoende verifiering.
2. AI har tagit fram en funktion för dig och den verkar fungera på den lyckliga vägen. Vilket är det bästa steget innan den sätts i produktion?
- A) Eftersom funktionen verkar fungera, sätt den direkt i produktion
- B) Verifiera beteendet genom att skriva och köra små enhetstester som inkluderar kantfall ✔
- C) Titta bara på antalet rader i funktionen
- D) Göra namnet på funktionen mer beskrivande
Förklaring: Att verka för att fungera betyder inte att ha rätt. Att skriva och köra små enhetstester som täcker kantfall som tom ingång, noll, negativ, mycket stort värde och missmatchning verifierar funktionens faktiska beteende utan att flytta den till livemiljön.
3. AI föreslog en metod som heter 'array.sortStable()' som inte finns på ditt språk och förklarade det på ett tydligt sätt. Vad är den första korrekta åtgärden att vidta?
- A) Använder metoden direkt eftersom AI:n verkar säker
- B) Definiera metoden själv och använd dess namn exakt
- C) Verifiera förekomsten av metoden från den officiella dokumentationen för språket/biblioteket ✔
- D) Stäng kompilatorvarningen och fortsätt
Förklaring: Språkmodeller kan troligen utgöra biblioteks-, paket- eller metodnamn som faktiskt inte existerar (hallucinerar). Varje föreslagen API bör verifieras ordagrant mot den officiella och aktuella dokumentationen för språket eller biblioteket; Om det inte finns med i dokumentet ska det inte användas.
4. Du vill klistra in ditt företags konfidentiella källkod och en inbäddad API-nyckel i ett offentligt AI-verktyg och be om hjälp. Vilket är det mest korrekta tillvägagångssättet?
- A) Klistra in koden som den är med API-nyckeln för hastighet
- B) Det räcker att bara ta bort företagsnamnet och dela allt annat
- C) Dela koden och sedan be AI:n att radera den
- D) Ta bort hemligheter och dold logik och reducera problemet till ett representativt exempel eller använda ett institutionellt verktyg ✔
Beskrivning: Hemlig källkod och referenser (API-nyckel, lösenord, anslutningssträng); Det är riskabelt när det gäller företagshemlighet och säkerhet. Det är nödvändigt att ta bort hemligheterna och den dolda affärslogiken och reducera problemet till ett anonymt/representativt exempel eller använda ett företags/icke-datadelningsverktyg.
5. AI sa att komplexiteten i en sökfunktion han skrev var O(n); men det finns två kapslade loopar i koden. Vad är det korrekta tekniska beteendet?
- A) Analysera koden manuellt och extrahera komplexiteten själv och mät den vid behov ✔
- B) Acceptera O(n) och fortsätt eftersom AI sa
- C) Att anta att antalet cykler inte har något med prestanda att göra
- D) Ändra bara namnet på funktionen
Förklaring: Tidskomplexitet (Big-O) visar hur antalet operationer ökar när insatsen växer. Två kapslade slingor betyder vanligtvis O(n^2). AI:s komplexitetspåstående bör verifieras genom att manuellt analysera koden och mäta med ökande indata om nödvändigt; Att förlita sig på påståendet ger ett falskt antagande om prestation.
6. AI-genererad kod som direkt infogar användarinmatning i en SQL-fråga genom att sammanfoga text. Vad är huvudproblemet och den rätta lösningen här?
- A) Inga problem; textsammanslagning är den snabbaste metoden
- B) Det finns risk för SQL-injektion; En parametriserad fråga (prepared statement) som separerar ingången ska användas ✔
- C) Det räcker att bara konvertera frågan till versaler
- D) Att skriva frågan kortare kommer att lösa problemet
Beskrivning: Att lägga till användarindata direkt i frågetexten skapar en SQL-injektionssårbarhet; Angriparen kan modifiera frågan med indata. Den korrekta lösningen är att använda en parametriserad fråga (prepared statement) som skiljer indata från frågetexten. Detta är ett av de vanligaste missade säkerhetsmisstagen i AI-kod.
7. Du har begränsad tid när du granskar en kod som producerats av AI. Vilka frågor är bäst att prioritera?
- A) Formatera endast detaljer som indrag och mellanrum
- B) Endast längden på variabelnamn
- C) Logisk korrekthet, sårbarheter och kantfallsbeteende ✔
- D) Endast det totala antalet rader i filen
Beskrivning: Högsta risken vid kodgranskning; Det här är problem som orsakar allvarlig skada, såsom logiska fel, säkerhetsbrister och läckor av konfidentiell information. Format- och stilproblem åtgärdas med automatiska verktyg; Den huvudsakliga mänskliga uppmärksamheten bör ägnas åt noggrannhet, säkerhet och beteende i yttersta fall.
8. Du vill att AI ska lösa en bugg. Vilken ingång skulle bäst hjälpa AI att hitta grundorsaken?
- A) Bara att säga "koden fungerar inte, fixa det"
- B) Ange bara namnet på filen
- C) Säger bara det förväntade resultatet, utan feltexten
- D) Tillhandahåll fullständigt felmeddelande, stackspårning, relevant kod och minsta reproduktionsexempel ✔
Förklaring: För effektiv felsökning är det nödvändigt att ge AI det fullständiga felmeddelandet, stackspårning, relevant kodavsnitt och det minsta reproducerbara provet som ger felet. Det vaga uttalandet "fungerar inte" tvingar AI att gissa och ge generella rekommendationer.
9. Alla enhetstester som produceras av AI klarar den första körningen. Vilken risk bör inte ignoreras i denna situation?
- A) Tester kan bekräfta kodens nuvarande tillstånd men inte faktiskt/förväntat beteende ✔
- B) Koden är helt felfri eftersom alla tester har godkänts
- C) Kvalitet garanteras om antalet tester är stort
- D) Att klara testet bevisar att täckningen är komplett
Förklaring: Tester kan validera kodens nuvarande (kanske buggy) beteende, inte dess avsedda beteende; eller så kanske den inte innehåller något meningsfullt påstående och godkänns alltid. För att se att testerna kontrollerar den verkliga förväntningen är det nödvändigt att medvetet bryta koden och bekräfta att testet blir rött.
10. AI har tagit fram ett färdigt kodblock för ett problem. Du misstänker att koden kan ha kopierats ordagrant från ett projekt med öppen källkod. Vilket är rätt tillvägagångssätt?
- A) Att använda licensen utan att tänka efter eftersom koden fungerar
- B) Kontrollera källan/licensen för koden, skriva om vid behov och följa företagets policy ✔
- C) Ändra bara variabelnamnen och betrakta problemet som löst
- D) Förutsatt att licensiering endast avser stora företag
Beskrivning: AI kan återge den upphovsrättsskyddade/licensierade koden i träningsdata ordagrant. Licensbrott i en kommersiell produkt skapar allvarliga juridiska risker. Det är nödvändigt att kontrollera källan och licensen för koden, skriva om den med dina egna ord om det behövs och följa institutionens licenspolicy.
11. AI föreslog att du omedelbart skulle byta till mikrotjänstarkitektur för ditt projekt. Vilket är det lämpligaste tekniska tillvägagångssättet när man utvärderar detta förslag?
- A) Dela omedelbart upp hela systemet i mikrotjänster eftersom AI föreslår
- B) Förutsatt att mikroservice alltid är det bästa valet
- C) Utvärdera förslaget efter verkligt behov, belastning, lagstruktur och plus-minus balans ✔
- D) Att fatta beslut baserat enbart på arkitekturens popularitet
Förklaring: Arkitektoniska beslut beror på sammanhang; Mikrotjänster tillför värde i behov som skala och teamseparation, men kommer med kostnader som operationell komplexitet, distribuerad felsökning och kostnader. Utvärdera förslaget efter det faktiska behovet, belastning, teamstruktur och för- och nackdelar balans; Allmänna råd bör inte följas blint.
12. AI producerade en strömlinjeformad README- och API-dokumentation för din kod; men vissa slutpunkter och parametrar matchar inte i koden. Vad är det korrekta beteendet?
- A) Publicera dokumentet som det är eftersom texten är flytande
- B) Fixa bara titeln och lämna resten som den är
- C) Lägga till dokumentet i lagret utan att läsa det
- D) Jämför varje endpoint och parameter med den faktiska koden och fixa alla som inte matchar ✔
Beskrivning: Dokumentationen ska vara en korrekt återspegling av den faktiska koden; Fel dokument tvingar utvecklarna som läser det att använda det felaktigt. Varje ändpunkt, parameter och returvärde bör verifieras mot den faktiska koden, och eventuella felmatchningar bör korrigeras.
13. Vilken ingångsmetod är rätt för utdata av högsta kvalitet när du begär kod från AI?
- A) Tydligt tillhandahålla språk/version, input/output-kontrakt, begränsningar och felsituationer ✔
- B) Bara att säga "skriv en fungerande kod till mig"
- C) Skriv den kortaste begäran utan att ange något sammanhang
- D) Specificerar bara hur många rader kod det kommer att finnas
Beskrivning: Kraftfull prompt; Det inkluderar språket och versionen som används, input-output-kontraktet, prestanda- och stilbegränsningar, felförhållanden och instruktionen 'håll dig endast inom det begärda omfånget'. En kontextlös "skriv till mig en funktion"-förfrågan är generisk och producerar ofta olämplig kod.
14. AI genererade en konfiguration för din CI/CD (kontinuerlig integration/deployment) pipeline och bäddade in databaslösenordet i den i vanlig text. Vilken är den korrekta fixen?
- A) Lämna lösenordet som vanlig text eftersom det fungerar
- B) Flytta ut hemligheter via miljövariabel eller hemlighetshanteringsverktyg, inte sätta klartext i förvaret ✔
- C) Flytta lösenordet endast till kommentarsraden
- D) Ändring av filnamnet löser problemet
Förklaring: Att skriva hemligheter som lösenord och nycklar i klartext till konfigurationsfilen medför risk för läckande versionskontroll och obehörig åtkomst. Hemligheter; Det bör hållas ute av miljövariabler eller en speciell hemlighetshanterare, och bör aldrig komma in i förvaret i vanlig text.