QCM En Csharp– Partie 1

Question 1 sur 10

- Le mot clef int correspond a quel type .NET ?

A- System.Int16
B-  System.|nt64
C - System.Int128
D - System.Int32

D

e mot-clé int en .NET correspond au type de données System.Int32.

Donc, la réponse correcte est :

D - System.Int32

Question 2 sur 10

 Laquelle de ces définitions de string évite le recours aux séquences d'échappement en C# ?

A- string s = #"Test string";
B- string s = ."Test string";
C- string s = @"Test string";
D- string s = "Test string";

C

La définition de chaîne de caractères en C# qui évite le recours aux séquences d'échappement est la notation verbatim string, marquée par le préfixe @.

Donc, la réponse correcte est :

C- string s = @"Test string";

Question 3 sur 10

Comment déclare-t-on correctement un tableau à deux dimensions en CH ?

A- int{[,] myArray;
B- int{ [][] myArray;
C- int{[2] myArray;
D- System.Array[2] myArray;
 

A

La déclaration correcte d'un tableau à deux dimensions en C# utilise la syntaxe suivante :

A- int[,] myArray;

Donc, la réponse correcte est A.

Question 4 sur 10

En C#, les string (chaînes de caractères) sont.

A -  … imbitables.

B-  … mutables.

C- … inclassables.

D-  … immutables.

D

En C#, les chaînes de caractères (string) sont immuables. Par conséquent, la réponse correcte est :

D- … immutables.

Question 5 sur 10

Lorsqu'on applique le Domain Driven Design, à quoi sert la base de données ?

A- À contenir la logique métier dans des procédures stockées.
B- .… A donner des droits d'accès aux données aux utilisateurs.
C- A persister les données.
D- .… A archiver les vieux produits qui ne sont plus en vente.

C

Lorsqu'on applique le Domain Driven Design (DDD), la base de données sert à :

C- À persister les données.

Elle est utilisée pour stocker et récupérer les données nécessaires à l'application, en alignant la conception de la base de données sur le modèle métier du domaine.

Question 6 sur 10

Quelle classe permettrait de corriger la grossière faute que contient le code suivant ?

 IList<Client> clients = ClientsRepository.GetAll();
 string commaSeparatedClientsName = string.Empty;
 foreach (Client client in clients)
{

    commaSeparatedClientsName += client.Name + ",";

 } 

A- .. ArrayList
B- StringBuilder
C . TagBuilder
D-CSVBuilder

B

La meilleure option pour corriger la grossière faute dans le code serait d'utiliser la classe StringBuilder pour concaténer les noms des clients de manière efficace.

Donc, la réponse correcte est :

B- StringBuilder

Question 7 sur 10

Dans un projet contenant une couche métier, une couche d'accès aux données, et une couche
applicative, qui réfèrence logiquement quoi ?

A- La couche métier référence la couche applicative.
    La couche d'accès aux données référence la couche applicative.
    La couche applicative ne référence rien.

B- La couche métier référence la couche d'accès aux données.
     La couche d'accès aux données référence la couche métier.
     La couche applicative ne référence rien.

C- La couche métier référence la couche d'accès aux données.
     La couche d'accès aux données référence la couche applicative.
     La couche applicative référence la couche d'accès aux données.

D- La  couche métier ne référence rien
      La couche d'accès aux données référence la couche métier
      La couche applicative référence la couche métier et la couche d'accés aux données

 

C

La couche métier est la couche qui représente le modèle métier de l'application. Elle est responsable de la logique métier, de la validation des données, et de l'interaction avec les utilisateurs.

La couche d'accès aux données est la couche qui fournit un accès aux données de l'application. Elle est responsable de la lecture, de l'écriture, et de la mise à jour des données.

La couche applicative est la couche qui combine la couche métier et la couche d'accès aux données. Elle est responsable de l'affichage des données aux utilisateurs, et de la réception des entrées des utilisateurs.

Référencement logique

La référence logique est la relation entre deux classes ou objets. Elle est définie par l'utilisation d'une classe ou d'un objet par une autre classe ou objet.

Dans le cas des couches métier, d'accès aux données, et applicative, le référencement logique est le suivant :

  • La couche métier référence la couche d'accès aux données, car elle a besoin d'accéder aux données pour effectuer ses tâches.
  • La couche d'accès aux données référence la couche applicative, car elle fournit un service à la couche applicative.
  • La couche applicative référence la couche d'accès aux données, car elle a besoin d'accéder aux données pour afficher les données aux utilisateurs et recevoir les entrées des utilisateurs.
Question 8 sur 10

Lorsqu'on utilise un ORM (comme Entity Framework ou NHibernate), qu'appelle-t-on le problème du "select N+1" ?

A- C'est lorsque qu'au cours du calcul d'une somme d'agrégat on compte la ligne d'en-tête.
B- C'est lorsque l'on récupére auprés de la source de données une collection d'objects en les requétant
C- C'est lorsque l'on récupère la longueur d'une chaîne de caractères en oubliant de tronquer le caractère de terminaison.
D- C'est lorsque l'on utilise une sous-requête alors qu'on pourrait s'en passer.

B

Le problème du "select N+1" est associé à l'utilisation d'un ORM (Object-Relational Mapping) et se réfère à :

B- C'est lorsque l'on récupère auprès de la source de données une collection d'objects en les requêtant.

Plus précisément, cela se produit lorsque, lors de la récupération d'une collection d'objets, l'ORM effectue une requête supplémentaire pour chaque élément de la collection, ce qui peut entraîner un grand nombre de requêtes et affecter les performances de l'application. Cela se produit souvent lors de la récupération d'une entité parent avec ses entités enfants associées.

Question 9 sur 10

Quelle est la différence entre les delegates Action et Func ?

A- Action s'exécute instantanément alors que Func s'exécute au bout d'un certain délai défini par le développeur.

B- Action est Threadsafe alors que Func ne l'est pas.

C- Action concerne les méthodes statiques alors que Func concerne les méthodes d'instance.

D- Action n'a pas de type de retour, alors que Func en a un.

 

D

La différence principale entre les délégués Action et Func réside dans leur retour :

D- Action n'a pas de type de retour, alors que Func en a un.

Action est utilisé pour représenter une méthode qui ne renvoie pas de valeur, tandis que Func est utilisé pour représenter une méthode qui renvoie une valeur. La signature d'un Action n'a pas de type de retour explicite, tandis que celle d'un Func a un type de retour défini.

Question 10 sur 10

 Quelle contrainte faudrait-t-il appliquer sur la méthode GetBillsCount ?

public interface IBill
{

 IList<Bill> { get; set; };

 }

public class Client : IBill
 {

 public IList<Bill> Bills { get; set; }
 }


public class Supplier : IBill
 {

 public IList<Bill> Bills { get; set; }
 }


public static class ToolBox

 {
 public static GetBillsCount<T>(T source)
 {

 return source.Bills.Count;

 }
 }

A- where T : IBill
B- where T : static
C- where T : interface
D- where T : class

A

Objectif de GetBillsCount:

  • Cette méthode a pour but de compter le nombre de factures associées à un objet.
  • Elle est conçue pour fonctionner avec différents types d'objets, à condition qu'ils possèdent une propriété nommée Bills, qui est une liste d'objets Bill.

Nécessité d'une contrainte:

  • Pour garantir la sécurité des types et un accès correct à la propriété Bills, une contrainte est indispensable.
  • Elle précise que la méthode GetBillsCount ne peut fonctionner qu'avec des types qui implémentent l'interface IBill.

Pourquoi where T : IBill:

  • Assure l'implémentation de l'interface: Cette contrainte exige que tout type T transmis à la méthode doit implémenter l'interface IBill.
  • Cela garantit que la méthode peut accéder à la propriété Bills en toute sécurité, sachant qu'elle existe et qu'elle est du type correct (IList<Bill>).
  • Sécurité des types: Elle prévient les erreurs potentielles à la compilation si un type sans propriété Bills est accidentellement transmis à la méthode.

Pourquoi les autres options ne conviennent pas:

  • B- where T : static: S'applique aux types statiques, non pertinent pour cette méthode d'instance.
  • C- where T : interface: Trop général ; ne garantit pas l'interface IBill spécifique.
  • D- where T : class: Limite aux classes, excluant les potentielles implémentations en struct.

Ajouter un commentaire

Veuillez vous connecter pour ajouter un commentaire.

Pas encore de commentaires.