Aller au contenu principal

Quiz — Codage et debogage assistes par IA

Quiz 30 min 20 Questions

Section A : Concepts du codage IA (7 questions)

Question 1

Comment les assistants de codage IA comme GitHub Copilot generent-ils des suggestions de code ?

  • A) Ils executent le code dans un sandbox et selectionnent la sortie qui passe les tests
  • B) Ils utilisent la prediction du token suivant basee sur des motifs statistiques appris a partir des donnees d'entrainement
  • C) Ils recherchent dans une base de donnees d'extraits de code et renvoient la correspondance la plus proche
  • D) Ils compilent le code et utilisent l'AST pour generer des versions optimisees
Voir la reponse

Reponse : B

Les assistants de codage IA utilisent des modeles de langage bases sur des transformateurs qui predisent le token suivant le plus probable compte tenu du contexte precedent. Ils sont entraines sur des millions de depots de code et apprennent des motifs statistiques. Ils n'executent pas le code, ne recherchent pas dans une base de snippets, ni ne travaillent avec des AST compiles. C'est pourquoi ils peuvent generer du code plausible mais fonctionnellement incorrect — ils optimisent pour la vraisemblance statistique, pas pour la justesse.


Question 2

Qu'est-ce que la « fenetre de contexte » d'un modele de codage IA ?

  • A) La partie visible du code affichee a l'ecran du developpeur
  • B) La fenetre temporelle pendant laquelle le modele traite activement une requete
  • C) La quantite maximale de texte (en tokens) que le modele peut traiter en une seule fois
  • D) Le nombre de fichiers que l'IDE envoie simultanement au service IA
Voir la reponse

Reponse : C

La fenetre de contexte est le nombre maximum de tokens (mots, sous-mots ou caracteres) que le modele peut « voir » et traiter dans une seule requete. Par exemple, GPT-4o a une fenetre de contexte de 128K tokens, et Claude 3.5 Sonnet a une fenetre de 200K tokens. Les informations en dehors de cette fenetre sont invisibles pour le modele, ce qui explique pourquoi les bases de code longues peuvent ne pas etre entierement comprises.


Question 3

Laquelle des affirmations suivantes constitue une hallucination dans le code genere par l'IA ?

  • A) Le modele genere une fonction trop lente pour un usage en production
  • B) Le modele suggere d'appeler pandas.smart_merge(), une fonction qui n'existe pas
  • C) Le modele ecrit du code qui ne respecte pas les directives de style PEP 8
  • D) Le modele genere du code fonctionnellement correct mais difficile a lire
Voir la reponse

Reponse : B

Une hallucination se produit lorsque l'IA genere un contenu factuellement incorrect mais plausible en apparence. Suggerer une fonction inexistante comme pandas.smart_merge() est une hallucination classique — le modele extrapole a partir des motifs de ses donnees d'entrainement et invente quelque chose qui n'existe pas. Le code lent (A), les violations de style (C) et la mauvaise lisibilite (D) sont des problemes reels mais pas des hallucinations.


Question 4

Quelle est la raison principale pour laquelle les outils de codage IA generent parfois du code non securise ?

  • A) Les modeles sont concus intentionnellement pour ignorer la securite
  • B) Les motifs de securite sont plus difficiles a apprendre a partir de l'analyse statique du code
  • C) Les donnees d'entrainement contiennent du code securise et non securise, et le modele optimise pour les motifs courants, pas pour la securite
  • D) Les modeles IA n'ont pas acces a la documentation OWASP Top 10
Voir la reponse

Reponse : C

Les modeles IA apprennent a partir de tout le code de leurs donnees d'entrainement — y compris la quantite considerable de code non securise present dans les tutoriels, les reponses Stack Overflow et les depots plus anciens. Comme les motifs non securises (comme la concatenation de chaines pour le SQL) sont courants dans les donnees d'entrainement, le modele peut les reproduire a moins que la securite ne soit explicitement demandee dans le prompt. Les modeles ne sont pas intentionnellement non securises (A), ils peuvent apprendre les motifs de securite (B), et ils ont vu la documentation de securite (D).


Question 5

Quand ne devez-vous pas utiliser les assistants de codage IA ?

  • A) Pour ecrire des endpoints CRUD boilerplate
  • B) Pour generer des tests unitaires a partir de fonctions existantes
  • C) Pour implementer des algorithmes cryptographiques en production
  • D) Pour convertir du code de Python vers JavaScript
Voir la reponse

Reponse : C

Les implementations cryptographiques necessitent une precision mathematique et une expertise en securite que les modeles IA ne peuvent pas garantir. Une erreur subtile dans une implementation crypto (mauvais padding, generation de nombres aleatoires faible, derivation de cle incorrecte) peut rendre l'ensemble du systeme non securise. Le CRUD boilerplate (A), la generation de tests (B) et la conversion de langage (D) sont tous d'excellents cas d'usage pour l'IA.


Question 6

Que controle le parametre temperature dans un LLM ?

  • A) La vitesse a laquelle le modele genere les tokens
  • B) Le caractere aleatoire/creativite de la sortie — les valeurs basses sont deterministes, les valeurs hautes sont plus variees
  • C) La longueur maximale de la sortie generee
  • D) Le nombre de suggestions alternatives que le modele fournit
Voir la reponse

Reponse : B

La temperature controle le caractere aleatoire de la selection des tokens. a temperature 0, le modele choisit toujours le token suivant le plus probable (deterministe). a des temperatures plus elevees (0,7–1,0), le modele echantillonne a partir d'une distribution plus large, produisant une sortie plus variee et creative. Pour la generation de code, des temperatures plus basses (0,0–0,3) sont generalement preferees car elles produisent un code plus previsible et coherent.


Question 7

Qu'est-ce que le cadre REVIEW pour evaluer le code genere par l'IA ?

  • A) Run, Evaluate, Verify, Inspect, Execute, Watch
  • B) Readability, Edge cases, Vulnerabilities, Integration, Efficiency, Working
  • C) Refactor, Edit, Validate, Improve, Enhance, Write
  • D) Requirements, Endpoints, Validation, Implementation, Execution, Workflow
Voir la reponse

Reponse : B

Le cadre REVIEW est une checklist systematique : Readability (le code est-il propre ?), Edge cases (gere-t-il les cas limites ?), Vulnerabilities (y a-t-il des problemes de securite ?), Integration (s'integre-t-il a la base de code ?), Efficiency (les performances sont-elles acceptables ?), Working (l'avez-vous reellement teste ?). Ce cadre assure une evaluation approfondie avant d'accepter le code genere par l'IA.


Section B : Prompt Engineering (6 questions)

Question 8

Quelle strategie de prompting consiste a fournir des exemples du motif entree/sortie souhaite avant la requete reelle ?

  • A) Zero-shot prompting
  • B) Chain-of-thought prompting
  • C) Few-shot prompting
  • D) Persona prompting
Voir la reponse

Reponse : C

Le few-shot prompting fournit 1 a 3 exemples du motif souhaite avant de demander a l'IA de generer du nouveau code suivant ce motif. C'est particulierement efficace lorsque vous voulez que l'IA corresponde au style de codage ou aux conventions specifiques de votre projet. Le zero-shot (A) ne fournit aucun exemple, le chain-of-thought (B) demande un raisonnement etape par etape, et le persona (D) definit le role de l'IA.


Question 9

Quels sont les cinq composants d'un prompt de code bien structure ?

  • A) Language, Framework, Version, Endpoint, Database
  • B) Role, Context, Task, Constraints, Format
  • C) Input, Processing, Output, Error handling, Testing
  • D) Description, Requirements, Acceptance criteria, Test cases, Documentation
Voir la reponse

Reponse : B

Un prompt bien structure comprend : Role (qui l'IA doit-elle incarner ?), Context (quel est le contexte du projet ?), Task (que doit-elle faire exactement ?), Constraints (quelles regles doit-elle suivre ?), et Format (a quoi doit ressembler la sortie ?). Cette structure donne a l'IA une clarte maximale sur ce dont vous avez besoin.


Question 10

Vous devez faire implementer par l'IA un algorithme complexe de limitation de debit. Quelle strategie de prompting est la plus appropriee ?

  • A) Zero-shot — demander directement
  • B) Few-shot — fournir des exemples de limiteurs de debit
  • C) Chain-of-thought — demander a l'IA de raisonner sur les approches avant d'implementer
  • D) Template — fournir un squelette de code a remplir
Voir la reponse

Reponse : C

Pour les taches complexes comme la conception d'algorithmes, le prompt chain-of-thought (CoT) produit les meilleurs resultats. En demandant a l'IA de lister d'abord les approches, comparer les compromis et expliquer son raisonnement etape par etape, vous obtenez une implementation plus reflechie et correcte. Le zero-shot est trop simple pour les taches complexes, le few-shot fonctionne mieux pour suivre des motifs, et les templates fonctionnent pour les structures connues.


Question 11

Laquelle des affirmations suivantes est un exemple de mauvais prompt pour la generation de code ?

  • A) « ecris une fonction Python qui valide une adresse e-mail et renvoie True/False »
  • B) « Fais un site web »
  • C) « Refactorise cette fonction pour une meilleure lisibilite, en conservant le meme comportement entree/sortie »
  • D) « ecris des tests pytest couvrant le cas nominal, les cas limites et les cas d'erreur pour cette fonction »
Voir la reponse

Reponse : B

« Fais un site web » est beaucoup trop vague — cela ne precise ni le langage, ni le framework, ni les fonctionnalites, ni le design, ni les contraintes. L'IA devrait faire des dizaines d'hypotheses. Toutes les autres options (A, C, D) sont suffisamment specifiques pour generer du code utile : elles precisent le langage, la tache et le comportement attendu.


Question 12

Dans une conversation multi-tours avec une IA, que devez-vous faire lorsque la conversation devient longue ?

  • A) Demarrer une nouvelle conversation de zero
  • B) Re-resumer les decisions cles et les contraintes avant votre prochaine requete
  • C) Repeter l'integralite de l'historique de la conversation dans chaque message
  • D) Reduire la temperature pour compenser la perte de contexte
Voir la reponse

Reponse : B

Dans les longues conversations, l'IA peut « oublier » le contexte anterieur en raison des limites de la fenetre de contexte ou de la dilution de l'attention. Re-resumer les decisions cles et les contraintes (par ex. « Pour recapituler : nous construisons X avec les contraintes Y... ») garde l'IA concentree. Repartir de zero (A) perd tout le contexte. Tout repeter (C) gaspille des tokens. La temperature (D) n'affecte pas la memoire.


Question 13

Qu'est-ce que le Constraint Pattern en prompt engineering ?

  • A) Limiter la sortie de l'IA a un nombre specifique de lignes
  • B) enoncer explicitement ce que l'IA doit et ne doit PAS faire
  • C) Contraindre le modele a n'utiliser que certains langages de programmation
  • D) Definir une limite maximale de tokens pour la reponse
Voir la reponse

Reponse : B

Le Constraint Pattern liste explicitement ce que l'IA doit faire (DO) et ce qu'elle ne doit pas faire (DO NOT). Par exemple : « DO utiliser des requetes parametrees. DO NOT utiliser la concatenation de chaines pour le SQL. » Ce motif est tres efficace pour le code sensible a la securite et pour eviter les erreurs courantes de l'IA. Il s'agit des exigences de contenu, pas de la longueur de la sortie (A, D) ni des restrictions de langage (C).


Section C : Securite (7 questions)

Question 14

Vous recevez du code genere par l'IA avec cette ligne : query = f"SELECT * FROM users WHERE id = {user_id}". Quelle vulnerabilite cela introduit-il ?

  • A) Cross-Site Scripting (XSS)
  • B) SQL Injection
  • C) Path Traversal
  • D) Insecure Deserialization
Voir la reponse

Reponse : B

C'est une vulnerabilite classique d'injection SQL. La f-string interpole directement user_id dans la requete SQL sans sanitization ni parametrage. Un attaquant pourrait fournir user_id = "1 OR 1=1" pour recuperer tous les utilisateurs, ou "1; DROP TABLE users; --" pour detruire les donnees. La correction consiste a utiliser des requetes parametrees : db.execute("SELECT * FROM users WHERE id = :id", {"id": user_id}).


Question 15

Pourquoi l'utilisation de pickle.load() sur des donnees non fiables est-elle dangereuse ?

  • A) Les fichiers pickle sont tres volumineux et peuvent provoquer des erreurs de memoire insuffisante
  • B) La deserialisation pickle peut executer du code Python arbitraire pendant le chargement
  • C) Pickle est lent et causera des problemes de performance
  • D) Les fichiers pickle ne sont pas compatibles entre les differentes versions de Python
Voir la reponse

Reponse : B

Le module pickle de Python peut executer du code arbitraire pendant la deserialisation. Un fichier pickle malveillant peut contenir des instructions pour executer des commandes systeme, ouvrir des shells inverses ou voler des donnees — le tout declenche automatiquement lorsque vous appelez pickle.load(). C'est pourquoi vous ne devez jamais charger des fichiers pickle provenant de sources non fiables, et vous devez utiliser des alternatives plus sures comme JSON, joblib avec verification d'integrite, ou ONNX pour les modeles ML.


Question 16

Qu'est-ce qu'une attaque de « dependency confusion » ou « supply chain » dans le contexte du code genere par l'IA ?

  • A) Lorsque l'IA genere du code qui importe trop de bibliotheques inutiles
  • B) Lorsque l'IA suggere un nom de package qui n'existe pas, et qu'un attaquant l'enregistre avec du code malveillant
  • C) Lorsque deux packages ont des exigences de version conflictuelles
  • D) Lorsque l'IA confond la syntaxe de deux langages de programmation similaires
Voir la reponse

Reponse : B

Les attaques de dependency confusion exploitent le fait que les modeles IA peuvent suggerer des noms de packages inexistants qui semblent plausibles. Les attaquants surveillent ces hallucinations de l'IA et enregistrent les noms de packages suggeres sur PyPI ou npm avec du code malveillant. Lorsque les developpeurs executent aveuglement pip install, ils installent le package malveillant. C'est pourquoi vous devez toujours verifier que les packages suggeres existent et sont legitimes avant de les installer.


Question 17

Quelle est la premiere chose que vous devez verifier lorsque l'IA suggere d'installer un nouveau package ?

  • A) Si le package est disponible dans la derniere version de Python
  • B) Si le package existe sur le registre officiel (PyPI/npm) et a un nombre significatif de telechargements
  • C) Si le package a un beau README sur GitHub
  • D) Si le package est ecrit en Python pur
Voir la reponse

Reponse : B

La premiere etape de verification consiste a confirmer que le package existe reellement sur le registre officiel (PyPI pour Python, npm pour JavaScript) et a un nombre credible de telechargements. Les packages faux ou malveillants ont generalement un tres faible nombre de telechargements, des dates de creation recentes et aucune communaute etablie. Un beau README (C), la compatibilite Python (A) et le Python pur (D) sont des considerations secondaires.


Question 18

Lequel des elements suivants ne doit JAMAIS etre colle dans un outil de chat IA ?

  • A) Une implementation generique d'algorithme de tri
  • B) Les identifiants de base de donnees de production et les cles API
  • C) Un extrait de code public de Stack Overflow
  • D) La documentation d'une bibliotheque open-source
Voir la reponse

Reponse : B

Vous ne devez jamais coller des identifiants de production, des cles API, des mots de passe ou tout secret dans les outils de chat IA. Ces donnees sont envoyees a des serveurs externes et peuvent etre stockees dans des logs, utilisees pour l'entrainement (sur les plans gratuits) ou exposees par des fuites de donnees. Sanitisez toujours votre code en remplacant les vrais secrets par des placeholders avant de l'envoyer a l'IA. Les algorithmes generiques (A), les snippets publics (C) et la documentation open-source (D) sont surs a partager.


Question 19

Quel outil est specifiquement concu pour detecter les vulnerabilites de securite dans le code Python ?

  • A) pytest
  • B) Black
  • C) Bandit
  • D) mypy
Voir la reponse

Reponse : C

Bandit est un outil d'analyse statique axe sur la securite, concu specifiquement pour Python. Il verifie les problemes de securite courants comme l'injection SQL, l'utilisation de eval(), les mots de passe en dur, les fonctions de hachage non securisees, et plus encore. pytest (A) est un framework de test, Black (B) est un formateur de code, et mypy (D) est un verificateur de types — aucun ne se concentre sur la securite.


Question 20

Votre assistant IA genere un endpoint de telechargement de fichier : return FileResponse(f"/uploads/{filename}"). Quelle amelioration de securite est necessaire ?

  • A) Ajouter une authentification a l'endpoint
  • B) Valider que le chemin resolu reste dans le repertoire uploads (prevention du path traversal)
  • C) Compresser le fichier avant envoi
  • D) Ajouter un limiteur de debit pour prevenir les abus
Voir la reponse

Reponse : B

Ce code est vulnerable aux attaques de path traversal. Un attaquant pourrait demander filename = "../../etc/passwd" pour acceder a n'importe quel fichier du systeme. La correction consiste a resoudre le chemin et verifier qu'il reste dans le repertoire autorise :

from pathlib import Path

UPLOAD_DIR = Path("/uploads").resolve()
safe_path = (UPLOAD_DIR / filename).resolve()

if not safe_path.is_relative_to(UPLOAD_DIR):
raise HTTPException(status_code=400, detail="Invalid file path")

Bien que l'authentification (A) et la limitation de debit (D) soient de bonnes pratiques, la correction critique est la prevention du path traversal. La compression (C) est sans rapport avec la securite.


Grille de score

SectionQuestionsVotre score
A : Concepts du codage IA7 questions (Q1–Q7)___ / 7
B : Prompt Engineering6 questions (Q8–Q13)___ / 6
C : Securite7 questions (Q14–Q20)___ / 7
Total20 questions___ / 20

Interpretation

ScoreNiveauRecommandation
18–20ExcellentVous maitrisez bien les concepts du codage assiste par IA
14–17BienRevoyez les sujets ou vous avez perdu des points
10–13a ameliorerRelisez les supports du module et pratiquez avec le lab
< 10InsuffisantPlanifiez une session de revision avec votre instructeur