QCM Javascript – Partie 38

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. Qu’est-ce que l’encapsulation dans la programmation orientée objet ?

A Le regroupement des données et des méthodes qui opèrent sur ces données.

B La création de variables privées au sein d’une classe

C La capacité d’un objet à prendre de nombreuses formes

D Un design pattern qui garantit qu’une seule instance d’une classe est créée

A
L’encapsulation est un concept fondamental de la programmation orientée objet, dans lequel les données et les méthodes qui manipulent ces données sont regroupées.

 

2. En JavaScript, qu’est-ce qu’un prototype ?

A Un plan de création d’objets

B Une fonction qui crée un objet

C Une instance d’une classe

D L’objet dont une fonction ou un objet hérite des propriétés

D
En JavaScript, un prototype est un objet dont d’autres objets héritent des propriétés et des méthodes.

 

3. Comment fonctionne l’héritage en JavaScript ?

A Par le biais des classes et du mot-clé extend

B Par la chaîne de prototypes

C Par l’utilisation de constructeurs de Function()

D Par les variables globales

B
En JavaScript, l’héritage est implémenté à travers la chaîne de prototypes, où les objets peuvent avoir un objet prototype dont ils héritent des méthodes et des propriétés. Exemple:

// Créer un objet parent en tant que prototype
const parent = {
  echo: function() {
    console.log(`Hi from the parent`);
  }
};

// Créer un objet enfant
const child = {
  name: 'Objet enfant'
};

// Effectuer l'héritage de prototypes
child.__proto__ = parent;

// Accès à la méthode depuis le prototype parent
child.echo(); // Sortie: Hi from the parent

 

 
 

4. Quels sont les avantages de l’utilisation des classes ES6 par rapport aux constructeurs Function()?

A Les classes ES6 sont plus performantes

B Les classes ES6 offrent des méthodes et des propriétés privées

C Les classes ES6 offrent une syntaxe plus claire et plus concise

D Les constructeurs Function() n’autorisent pas l’héritage

C
Les classes ES6 offrent une syntaxe plus claire et plus concise pour la création d’objets et la gestion de l’héritage, par rapport aux constructeurs Function().

 

5. Qu’est-ce que le polymorphisme dans le contexte de la programmation orientée objet ?

A La possibilité de créer plusieurs instances d’une classe

B La possibilité de traiter des classes différentes comme des instances de la même classe

C Le fait qu’une fonction prenne plusieurs formes

D La capacité d’une classe à hériter de plusieurs classes

B
Le polymorphisme est un concept de la programmation orientée objet selon lequel des objets de classes différentes peuvent être traités comme des objets d’une superclasse commune, notamment par le biais de l’héritage.

 

6. Que fait cette syntaxe de classe ES6 ?
class Animal {
   constructor(name) {
      this.name = name;
   }
   speak() {
      console.log(${this.name} émet un bruit);
   }
}

A Définit une classe Animal avec des méthodes pour chaque animal

B Crée une instance de la classe Animal

C Définit une classe Animal avec un constructeur et une méthode speak

D Déclare une fonction globale nommée Animal

C
Cette syntaxe de classe ES6 définit une classe Animal avec un constructeur qui initialise la propriété name et une méthode speak pour afficher un message.

 

 
 

7. Quel est le résultat de ce code?
class Rectangle {
   constructor(width, height) {
      this.width = width;
      this.height = height;
   }
   get surface() {
      return this.width * this.height;
   }
} 
let rect = new Rectangle(5, 10);
console.log(rect.surface); 

A ‘5×10’

B 50

C 10

D Erreur de syntaxe

B
Le code définit une classe Rectangle avec un getter pour la surface. rect.surface calcule la surface du rectangle, 5 * 10, soit 50.

 

8. Que donnera le code d’héritage suivant ?
class Animal {
   speak() {
      return 'Je suis un animal';
   }
}
class Chien extends Animal {
   speak() {
      return super.speak() + ', mais plus précisément un chien';
   }
}
let chien = new Chien();
console.log(chien.speak());

A ‘Je suis un animal’

B ‘Je suis un animal, mais plus précisément un chien’

C ‘Je suis un chien’

D Erreur de syntaxe

B
La classe Chien étend la classe Animal et surcharge la méthode speak. L’appel chien.speak() utilise la méthode surchargée dans la classe Chien, qui inclut la sortie de la méthode speak d’Animal.

 

9. Identifiez l’erreur dans cette définition de classe :
class Person {
  constructor(name) {
    name = name;
  }
}

A Le constructeur ne définit pas correctement la propriété

B La classe devrait également avoir des méthodes

C Erreur de syntaxe dans la définition de la classe

D Pas d’erreur

A
Le constructeur doit utiliser this.name = name; pour définir correctement la propriété name sur l’instance de la classe.

 

 
 

10. Trouvez l’erreur dans l’héritage de cette classe:
class Person { 
   constructor(name) {
      this.name = name;
   }
}
class Employee extends Person {
   constructor(name, salary) {
      super();
      this.salary = salary;
   }
}

A Argument name manquant dans l’appel super

B La classe Employee ne doit pas avoir de propriétés supplémentaires

C Erreur de syntaxe dans l’héritage de la classe

D Pas d’erreur

A
L’appel super dans le constructeur de la classe Employee doit transmettre le paramètre name au constructeur de la classe Person: super(name);.

 

 

Laisser un commentaire

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