Eenheid 12 / 12

Grenzen: beveiliging, privacy, licentie en ethiek

Winst:

  • Mogelijkheid om te herkennen en te verifiëren dat AI nep-API's, onveilige code en auteursrechtelijk beschermde inhoud kan produceren
  • Mogelijkheid om het gebruik van AI te beheren binnen de grenzen van de vertrouwelijkheid van de broncode, persoonlijke gegevens en bedrijfsbeleid
  • Begrijpen dat de uiteindelijke verantwoordelijkheid voor het naleven van licenties, veiligheid en ethiek bij de ingenieur blijft.

Module-examen

1. Als computeringenieur met een tool voor het genereren van AI-code werkt, moet de uiteindelijke verantwoordelijkheid voor welke van de volgende zaken altijd bij de mens blijven liggen?

  • A) Definitieve goedkeuring van juistheid, veiligheid, en beoordeling en testen van code die in productie wordt genomen ✔
  • B) Het creëren van het eerste codeskelet voor een functie
  • C) Het produceren van een lijst met suggesties voor variabelenamen
  • D) Het voorbereiden van een concepttekst voor codecommentaar

Beschrijving: AI; Het kan taken zoals codeskelet, testconcept en documentatie versnellen. Het is echter de verantwoordelijkheid van de ingenieur om de gegenereerde code te beoordelen, testen en goed te keuren om er zeker van te zijn dat deze correct, veilig en in overeenstemming met de vereisten is, en om deze in productie te nemen; dit kan niet aan AI worden gedelegeerd zonder onafhankelijke verificatie.

2. AI heeft een functie voor je gecreëerd en deze lijkt op de goede weg te werken. Wat is de beste stap voordat het in productie wordt genomen?

  • A) Aangezien de functie lijkt te werken, kunt u deze direct in productie nemen
  • B) Verifieer het gedrag door kleine unit-tests te schrijven en uit te voeren, inclusief randgevallen ✔
  • C) Kijk alleen maar naar het aantal regels van de functie
  • D) De naam van de functie beschrijvender maken

Uitleg: De schijn van werk betekent niet dat je gelijk hebt. Het schrijven en uitvoeren van kleine eenheidstests die randgevallen bestrijken, zoals lege invoer, nul, negatieve, zeer grote waarde en mismatch, verifiëren het feitelijke gedrag van de functie zonder deze naar de live-omgeving te verplaatsen.

3. AI stelde een methode voor met de naam 'array.sortStable()' die in jouw taal niet bestaat en legde deze op een duidelijke manier uit. Wat is de eerste juiste actie die moet worden ondernomen?

  • A) De methode rechtstreeks gebruiken omdat de AI zelfverzekerd lijkt
  • B) Definieer zelf de methode en gebruik de naam ervan exact
  • C) Het verifiëren van het bestaan van de methode aan de hand van de officiële documentatie van de taal/bibliotheek ✔
  • D) Sluit de compilerwaarschuwing en ga verder

Uitleg: Taalmodellen kunnen op plausibele wijze bibliotheek-, pakket- of methodenamen verzinnen die in werkelijkheid niet bestaan (hallucineren). Elke voorgestelde API moet woordelijk worden geverifieerd aan de hand van de officiële en actuele documentatie van de taal of bibliotheek; Als het niet in het document is opgenomen, mag het niet worden gebruikt.

4. U wilt de vertrouwelijke broncode van uw bedrijf en een ingebouwde API-sleutel in een openbare AI-tool plakken en om hulp vragen. Wat is de meest correcte aanpak?

  • A) Plak de code zoals deze is met de API-sleutel voor snelheid
  • B) Het is voldoende om gewoon de bedrijfsnaam te verwijderen en al het andere te delen
  • C) De code delen en vervolgens de AI vragen deze te verwijderen
  • D) Het verwijderen van geheimen en verborgen logica en het reduceren van het probleem tot een representatief voorbeeld of het gebruik van een institutioneel instrument ✔

Beschrijving: geheime broncode en inloggegevens (API-sleutel, wachtwoord, verbindingsreeks); Het is riskant in termen van bedrijfsgeheim en veiligheid. Het is noodzakelijk om de geheimen en verborgen bedrijfslogica eruit te halen en het probleem terug te brengen tot een anoniem/representatief voorbeeld of een tool voor het delen van bedrijfsgegevens/niet-gegevens te gebruiken.

5. AI zei dat de complexiteit van een zoekfunctie die hij schreef O(n) was; maar er zijn twee geneste lussen in de code. Wat is het juiste engineeringgedrag?

  • A) Analyseer de code handmatig en haal er zelf de complexiteit uit en meet deze indien nodig ✔
  • B) Accepteer O(n) en ga door omdat AI het zei
  • C) Ervan uitgaande dat het aantal cycli niets met prestaties te maken heeft
  • D) Verander gewoon de naam van de functie

Uitleg: Tijdcomplexiteit (Big-O) laat zien hoe het aantal bewerkingen toeneemt naarmate de input groeit. Twee geneste lussen betekenen meestal O(n^2). De complexiteitsclaim van AI moet worden geverifieerd door de code handmatig te analyseren en indien nodig met toenemende input te meten; Als u zich op de claim baseert, ontstaat er een onjuiste aanname van prestaties.

6. AI-gegenereerde code die gebruikersinvoer rechtstreeks invoegt in een SQL-query door tekst aaneen te schakelen. Wat is hier het grootste probleem en de juiste oplossing?

  • A) Geen probleem; tekst samenvoegen is de snelste methode
  • B) Er bestaat een risico op SQL-injectie; Er moet een geparametriseerde query (opgestelde instructie) worden gebruikt die de invoer scheidt ✔
  • C) Het omzetten van de zoekopdracht in hoofdletters is voldoende
  • D) Door de query korter te schrijven, wordt het probleem opgelost

Beschrijving: het rechtstreeks toevoegen van gebruikersinvoer aan de querytekst creëert een kwetsbaarheid voor SQL-injectie; De aanvaller kan de query wijzigen met de invoer. De juiste oplossing is het gebruik van een geparametriseerde query (voorbereide instructie) die de invoer scheidt van de querytekst. Dit is een van de meest gemiste beveiligingsfouten in AI-code.

7. Je hebt beperkte tijd bij het beoordelen van een stuk code dat door AI is geproduceerd. Welke kwesties kunnen het beste worden geprioriteerd?

  • A) Alleen opmaakdetails zoals inspringing en spatiëring
  • B) Alleen de lengte van variabelenamen
  • C) Logische correctheid, kwetsbaarheden en edge-case-gedrag ✔
  • D) Alleen het totale aantal regels van het bestand

Beschrijving: Hoogste risico bij codebeoordeling; Dit zijn problemen die ernstige schade veroorzaken, zoals logische fouten, beveiligingsproblemen en lekken van vertrouwelijke informatie. Formaat- en stijlproblemen worden opgelost met automatische hulpmiddelen; De belangrijkste menselijke aandacht moet worden besteed aan nauwkeurigheid, veiligheid en edge-case-gedrag.

8. Je wilt dat AI een bug oplost. Welke input zou de AI het beste helpen de oorzaak te vinden?

  • A) Gewoon zeggen: 'code werkt niet, repareer het'
  • B) Geef gewoon de naam van het bestand op
  • C) Zeg gewoon het verwachte resultaat, zonder de fouttekst
  • D) Geef het volledige foutbericht, de stacktrace, de relevante code en het minimale reproductievoorbeeld op ✔

Uitleg: Voor effectief debuggen is het noodzakelijk om de AI het volledige foutbericht, de stacktrace, het relevante codefragment en het kleinste reproduceerbare voorbeeld te geven dat de fout produceert. De vage verklaring 'werkt niet' dwingt AI tot gissen en algemene aanbevelingen.

9. Alle door AI geproduceerde unit-tests zijn bij de eerste run geslaagd. Welk risico mag in deze situatie niet worden genegeerd?

  • A) Tests kunnen de huidige status van de code bevestigen, maar niet het feitelijke/verwachte gedrag ✔
  • B) De code is absoluut foutloos omdat alle tests zijn geslaagd
  • C) Kwaliteit is gegarandeerd als het aantal testen groot is
  • D) Het slagen voor de test bewijst dat de dekking compleet is

Uitleg: Tests valideren mogelijk het huidige (misschien gebrekkige) gedrag van de code, en niet het beoogde gedrag; of het bevat mogelijk geen enkele betekenisvolle bewering en wordt altijd doorgegeven. Om te zien of de tests de werkelijke verwachting controleren, is het nodig om bewust de code te breken en te bevestigen dat de test rood wordt.

10. AI heeft voor jou een kant-en-klaar codeblok voor een probleem gemaakt. U vermoedt dat de code woordelijk is gekopieerd uit een open source-project. Wat is de juiste aanpak?

  • A) De licentie gebruiken zonder na te denken, omdat de code werkt
  • B) Controleren van de bron/licentie van de code, herschrijven indien nodig en voldoen aan bedrijfsbeleid ✔
  • C) Verander gewoon de namen van de variabelen en beschouw het probleem als opgelost
  • D) Ervan uitgaande dat licentieverlening alleen betrekking heeft op grote bedrijven

Beschrijving: AI kan de auteursrechtelijk beschermde/gelicentieerde code letterlijk reproduceren in de trainingsgegevens. Licentieschending in een commercieel product brengt ernstige juridische risico's met zich mee. Het is noodzakelijk om de bron en licentie van de code te controleren, deze indien nodig in uw eigen woorden te herschrijven en te voldoen aan het licentiebeleid van de instelling.

11. AI stelde voor dat u voor uw project onmiddellijk overschakelt naar microservices-architectuur. Wat is de meest geschikte technische aanpak bij de evaluatie van dit voorstel?

  • A) Verdeel het hele systeem onmiddellijk in microservices, zoals AI suggereert
  • B) Ervan uitgaande dat microservice altijd de beste keuze is
  • C) Evalueer het voorstel op basis van de werkelijke behoefte, belasting, teamstructuur en plus-minus-balans ✔
  • D) De beslissing uitsluitend nemen op basis van de populariteit van de architectuur

Uitleg: Architectuurbeslissingen zijn afhankelijk van de context; Microservices voegen waarde toe op het gebied van schaalgrootte en teamscheiding, maar brengen kosten met zich mee zoals operationele complexiteit, gedistribueerde foutopsporing en kosten. Evalueer het voorstel op basis van de werkelijke behoefte, belasting, teamstructuur en voor- en nadelenbalans; Algemeen advies mag niet blindelings worden opgevolgd.

12. AI heeft een gestroomlijnde README- en API-documentatie voor uw code geproduceerd; maar sommige eindpunten en parameters komen niet overeen in de code. Wat is het juiste gedrag?

  • A) Het document publiceren zoals het is, omdat de tekst vloeiend is
  • B) Corrigeer gewoon de titel en laat de rest zoals hij is
  • C) Het document toevoegen aan het magazijn zonder het te lezen
  • D) Vergelijk elk eindpunt en elke parameter met de daadwerkelijke code en repareer alle codes die niet overeenkomen ✔

Beschrijving: Documentatie moet een nauwkeurige weergave zijn van de daadwerkelijke code; Het verkeerde document zet de ontwikkelaars die het lezen ertoe aan om het verkeerd te gebruiken. Elk eindpunt, elke parameter en elke retourwaarde moet worden geverifieerd aan de hand van de daadwerkelijke code, en eventuele verschillen moeten worden gecorrigeerd.

13. Welke invoeraanpak is geschikt voor uitvoer van de hoogste kwaliteit bij het aanvragen van code bij AI?

  • A) Duidelijk voorzien van taal/versie, input-output contract, beperkingen en foutsituaties ✔
  • B) Zeg gewoon 'schrijf me een werkende code'
  • C) Schrijf het kortste verzoek zonder enige context te geven
  • D) Gewoon specificeren hoeveel regels code er zullen zijn

Beschrijving: Krachtige prompt; Het omvat de gebruikte taal en versie, het input-output-contract, prestatie- en stijlbeperkingen, foutcondities en de instructie 'blijf alleen binnen de gevraagde reikwijdte'. Een contextloos 'schrijf mij een functie'-verzoek is generiek en levert vaak ongepaste code op.

14. AI heeft een configuratie gegenereerd voor uw CI/CD-pijplijn (continue integratie/implementatie) en het databasewachtwoord daarin in platte tekst ingesloten. Wat is de juiste oplossing?

  • A) Laat het wachtwoord als platte tekst achter, omdat het werkt
  • B) Geheimen verplaatsen via omgevingsvariabelen of een geheimbeheertool, zonder platte tekst in de repository te plaatsen ✔
  • C) Verplaats het wachtwoord alleen naar de commentaarregel
  • D) Het wijzigen van de bestandsnaam lost het probleem op

Uitleg: Het schrijven van geheimen zoals wachtwoorden en sleutels in platte tekst naar het configuratiebestand brengt het risico met zich mee van lekkend versiebeheer en ongeautoriseerde toegang. Geheimen; Het moet buitengesloten worden door omgevingsvariabelen of een speciale geheimenbeheerder, en mag nooit in platte tekst in de repository terechtkomen.