Questions Classiques pour un entretien technique dotnet ou asp.net
Voici une liste des questions posées souvent lors d’un entretien de développement .Net:
C’est quoi une classe abstraite?
=> une classe abstraite est une classe dont l’implémentation n’est pas complète et qui n’est pas instanciable. Elle sert de base à d’autres classes dérivées (héritées)
Le mecanisme des classes abstraites permet de définir des méthodes dont l’implémentation se fait dans les classes filles. Ainsi, on a l’assurance que les classes filles respecteront le contrat défini par la classe mère abstraite. Ce contrat est une interface de programmation.
Exemple:
abstract class ShapesClass
{
abstract public int Area();
}
class Square : ShapesClass
{
int x, y;
// Not providing an Area method results
// in a compile-time error.
public override int Area()
{
return x * y;
}
}
c’est quoi une interface?
Une interface contient uniquement les signatures de méthodes, délégués ou événements. l’implémentation des méthodes se fait dans la classe qui implémente l’interface, comme illustré dans l’exemple suivant:
interface ISampleInterface
{
void SampleMethod();
}
class ImplementationClass : ISampleInterface
{
// Explicit interface member implementation:
void ISampleInterface.SampleMethod()
{
// Method implementation.
}
static void Main()
{
// Declare an interface instance.
ISampleInterface obj = new ImplementationClass();
// Call the member.
obj.SampleMethod();
}
}
c’est quoi un ArrayList?
Un ArrayList est un tableau de taille dynamique qui peut contenir n’importe quel type d’objets.
A quoi sert un ViewState?
Le ViewState est un système de maintien de la persistance des données ajouté dans le FrameWork .NET pour les pages ASP.NET.
Le ViewState est un concept ajouté dans le FrameWork .NET afin d’améliorer les possibilités de développement dans le cas d’applications WEB imitant du Client-Serveur.
En effet, les différentes méthodes possibles pour stocker de l’information entre deux états lors d’une navigation sur un Site Internet étaient :
* Les Variables de Sessions
* Les Cookies
* Le Stockage en Base de données
Chacune de ces trois méthodes était intéressante mais possédait ses propres limites :
* Les cookies ne sont pas fiables, car on a aucune garantie sur la configuration du client quand à l’acceptation de ces cookies.
* Les variables de Session sont destinées à être temporaires et ne doivent pas perdurer de par l’utilisation du temps de la session du client.
* Le stockage en Base de Données est coûteux en conception et développement, car relativement compliqué à mettre en place et à maintenir.
De plus, on sait que l’HTML est capable de stocker de l’information sans qu’elle soit forcément visible par l’utilisateur (sauf s’il consulte le code source), c’est déjà une astuce utilisée dans de nombreux développements plus ou moins complexes en ASP.
On sait aussi que le FrameWork .NET utilise énormément le XML et donc la “Serialisation” XML. En combinant les deux, on obtient le ViewState.
Ainsi Microsoft a créé un concept qui est le stockage de l’ensemble des informations de tous les composants contrôlés par le serveur dans un champ HIDDEN de la page en utilisant la “Serialisation” XML et surtout une classe développée pour cet usage : le StateBag.
C’est quoi la pipeline d’exécution d’une requête en ASP.NET?
1.
Validez la demande, ce qui fait examiner les informations envoyées par le navigateur et déterminer si elles contiennent un balisage potentiellement malveillant. Pour plus d’informations, consultez ValidateRequest et Vue d’ensemble des attaques de script.
2.
Exécutez le mappage d’URL, si des URL ont été configurées dans la section UrlMappingsSection du fichier Web.config.
3.
Déclenchez l’événement BeginRequest.
4.
Déclenchez l’événement AuthenticateRequest.
5.
Déclenchez l’événement PostAuthenticateRequest.
6.
Déclenchez l’événement AuthorizeRequest.
7.
Déclenchez l’événement PostAuthorizeRequest.
8.
Déclenchez l’événement ResolveRequestCache.
9.
Déclenchez l’événement PostResolveRequestCache.
10.
En fonction de l’extension de nom de fichier de la ressource demandée (mappée dans le fichier de configuration de l’application), sélectionnez une classe qui implémente IHttpHandler pour traiter la demande. Si la demande concerne un objet (page) dérivé de la classe Page et si la page doit être compilée, ASP.NET compile la page avant d’en créer une instance.
11.
Déclenchez l’événement PostMapRequestHandler.
12.
Déclenchez l’événement AcquireRequestState.
13.
Déclenchez l’événement PostAcquireRequestState.
14.
Déclenchez l’événement PreRequestHandlerExecute.
15.
Appelez la méthode ProcessRequest (ou la version asynchrone BeginProcessRequest) de la classe IHttpHandler appropriée à la demande. Par exemple, si la demande concerne une page, l’instance de la page actuelle gérera la demande.
16.
Déclenchez l’événement PostRequestHandlerExecute.
17.
Déclenchez l’événement ReleaseRequestState.
18.
Déclenchez l’événement PostReleaseRequestState.
19.
Exécutez le filtrage de réponse si la propriété Filter est définie.
20.
Déclenchez l’événement UpdateRequestCache.
21.
Déclenchez l’événement PostUpdateRequestCache.
22.
Déclenchez l’événement EndRequest.
Sérialisation : ça sert à quoi ? Avantages, inconvénients.
la sérialisation (en anglais serialization) est un procédé qui consiste à sauver l’état d’un objet sur le disque ou le réseau plutôt que de le garder en mémoire. On peut dire que l’objet est “aplatit” pour pouvoir le convertir en un flux de données, que l’on peut transmettre à un autre objet via la désérialisation. Ce mécanisme se montre nécessaire dès que les objets doivent être accessibles à partir d’un environnement étranger (service Web, par exemple) : un objet peut ainsi exister entre deux programmes, ou deux exécutions d’un programme (c’est la persistance objet).
Cet article sera souvent mis à jour avec d’autres questions ainsi qu’aux réponses à ces question.
Merci aux personnes ayant passé récemment un entretien de poster les questions en commentaires.
Trés bon article!! merci