QCM Javascript – Partie 37

QCM sur Javascript avec des réponses pour la préparation des tests techniques, des tests en ligne, aux examens et aux certifications. Ces questions et réponses sont tirés d’un vrai entretien écrit et certaines parties sont en direct.
 
 

1. Repérez l’erreur dans ce code de promesse :
let p = new Promise((resolve, reject) => {
   resolve('Success');
   reject('Failed');
}).then(result => console.log(result)).catch(error => console.log(error));

A La promesse ne doit pas appeler à la fois resolve et reject

B La méthode .then() est mal placée

C Le bloc .catch() n’est pas nécessaire

D La promesse ne gère pas les opérations asynchrones

A
Une fois qu’une promesse est résolue ou rejetée, les appels ultérieurs à la résolution ou au rejet sont ignorés. Dans ce code, l’appel au rejet après la résolution n’a aucun effet.

 

2. Quel est l’objectif du mot-clé async en JavaScript ?

A Mettre en pause l’exécution d’une fonction

B Déclarer une fonction comme étant asynchrone

C Pour accélérer l’exécution d’une fonction

D Pour gérer plusieurs promesses simultanément

B
Le mot-clé async est utilisé pour déclarer une fonction comme asynchrone, permettant l’utilisation de await en son sein et enveloppant automatiquement sa valeur de retour dans une promesse.

 

3. Comment fonctionne la fonction await à l’intérieur d’une fonction asynchrone ?

A Il arrête le programme entier jusqu’à ce que la promesse attendue soit résolue

B Il attend la résolution d’une promesse avant de poursuivre l’exécution de la fonction asynchrone

C Elle envoie une requête au serveur

D Elle crée un nouveau thread pour l’exécution asynchrone

B
À l’intérieur d’une fonction asynchrone, await met en pause l’exécution de la fonction jusqu’à ce que la promesse attendue soit résolue ou rejetée, puis reprend l’exécution de la fonction.

 

 
 

4. Quel sera le résultat de la fonction asynchrone suivante ?
async function getData() {
   let response = await fetch('https://api.example.com/data'); 
   let data = await response.json(); 
   console.log(data);
} getData();

A Le contenu de « https://api.example.com/data

B Un objet JavaScript

C Un message d’erreur

D Rien

A
La fonction asynchrone getData attend que la requête fetch et la conversion de la réponse en JSON soient terminées avant d’afficher les données.

 

5. Que se passe-t-il en cas d’échec de la méthode fetch ?
async function getData() {
   try {
      let response = await fetch('https://api.example.com/data');
      if (!response.ok)
         throw new Error('Erreur dans la récupération des données');
      let data = await response.json();
      return data;
   } catch (error) {
      console.error(error);
   }
}

A Il affiche « Erreur dans la récupération des données ».

B Il retourne « Erreur dans la récupération des données ».

C Il génère une erreur mais ne le capture pas.

D Elle renvoie une valeur undefined

A
Si la récupération échoue ou si response.ok est false, la fonction génère une erreur, qui est ensuite détectée par le bloc catch et affichée.

 

6. Identifiez le problème dans cette fonction asynchrone :
async function getData() {
   let data = await fetch('https://api.example.com').json();
   console.log(data);
}

A Utilisation incorrecte de await

B Erreur de syntaxe dans fetch

C Pas de gestion des erreurs en cas d’échec de la méthode fetch

D Mot-clé async manquant

A
Le problème vient de l’utilisation incorrecte de await. Il devrait être

let response = await fetch('https://api.example.com'); 
let data = await response.json();

 

 
 

7. Quel est le problème avec cette fonction asynchrone ?
async function getProduct() {
   let prod = await fetch('/product');
   if (prod.id === 989) {
      return 'PC';
   }
}

A La fonction peut renvoyer undefined

B prod.id est toujours undefined

C La requête fetch est incorrecte

D Il n’y a pas de gestion des erreurs pour la méthode fetch.

B
La fonction tente à tort d’accéder à l’identifiant directement dans la réponse de fetch. Elle devrait convertir la réponse en JSON avant d’accéder aux propriétés.

 

8. Qu’est-ce que le « currying » en JavaScript ?

A Le processus de décomposition d’une fonction en une série de fonctions qui prennent chacune un seul argument.

B La transformation d’une fonction pour gérer son état

C Une façon d’écrire du code asynchrone

D Optimisation des fonctions pour la performance

A
Le currying consiste à transformer une fonction qui prend plusieurs arguments en une séquence de fonctions imbriquées qui prennent chacune un seul argument.

 

9. En quoi l’application partielle diffère-t-elle de la curryfication ?

A L’application partielle consiste à fixer certains arguments à une fonction, tandis que la curryfication consiste à décomposer une fonction en une série de fonctions qui prennent chacune un seul argument.

B L’application partielle est une technique d’optimisation des performances, alors que la curryfication est une technique de gestion des erreurs.

C L’application partielle concerne les fonctions asynchrones, tandis que la curryfication concerne les fonctions synchrones

D Il n’y a pas de différence

A
L’application partielle consiste à produire une fonction avec un plus petit nombre d’arguments en fixant certaines valeurs, tandis que la curryfication transforme la fonction en une séquence de fonctions avec un seul argument.

 

 
 

10. Quel sera le résultat de la fonction currying suivante ?
function multiplication(a) {
   return function(b) {
      return a * b;
   };
}
let multiplicationParDeux = multiplication(2);
console.log(multiplicationParDeux(3));

A 3

B 6

C 2

D Erreur de syntaxe

B
La fonction currying « multiplication » est d’abord utilisée pour créer multiplicationParDeux en fixant a à 2. Ensuite, multiplicationParDeux(3) renvoie 2 * 3, soit 6.

 

11. Quel sera le résultat de la fonction currying suivante ?
function somme(a) {
   return function(b) {
      return function(c) {
         return a + b + c; 
      };
   };
} 
let sommeCinq = somme(2)(3);
console.log(sommeCinq(5)); 

A 10

B 15

C 5

D Erreur de syntaxe

A
La fonction currying somme prend d’abord 2, puis 3, créant ainsi sommeCinq. L’appel à sommeCinq(5) additionne 2, 3 et 5, ce qui donne 10.

 

12. Repérez l’erreur dans cette implémentation du currying:
function somme(a, b, c) {
   return a + b + c;
}
let currySomme = (a) => (b) => (c) => somme(a, b);
console.log(currySomme(1)(2)(3));

A Argument manquant dans l’appel final de la fonction

B Valeur de retour incorrecte dans currySomme

C La fonction somme n’est pas nécessaire

D Erreur de syntaxe

A
La fonction currySomme ne transmet pas correctement les trois arguments à somme. Elle devrait être somme(a, b, c) dans la déclaration de retour.

 

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *