Deux applications qui se parlent par HTTP servent de base aux questions d'entretien d'un développeur full-stack .NET / Angular. Côté serveur, une API ASP.NET Core avec Entity Framework Core et SQL Server, souvent hébergée sur Azure et livrée par Azure DevOps. Côté navigateur, une application Angular, parfois React, qui consomme cette API. Les offres publiées sur HelloWork ajoutent presque toujours OAuth2, OpenID Connect et les tests automatisés.
La plupart des candidats ont une dominante. Un profil back lit un plan d'exécution mais imbrique des subscribe(). Un profil front maîtrise RxJS et laisse EF Core envoyer 300 requêtes pour une liste. Décidez avant l'entretien quelle couche le poste charge le plus, puis pondérez la grille. Regardez aussi les versions citées : quelqu'un qui a passé cinq ans sur .NET Framework 4.8 et Angular 8 n'a pas les réflexes de quelqu'un qui travaille sur .NET 10, Angular 21 et ses signals.
Le calendrier pèse sur le recrutement. .NET 8 et .NET 9 ne sont plus supportés après le 10 novembre 2026, .NET 10 est la version LTS jusqu'en novembre 2028, et beaucoup d'équipes ont une montée de version à faire. Un candidat qui en a déjà mené une sait où ça casse. Le PDF reprend l'entretien complet en 30 questions, avec un cas de 20 minutes et une grille de notation.
ASP.NET Core, EF Core, Angular : les outils du poste
C# et .NET 10
Le langage et la plateforme du back. .NET 10 est sorti en novembre 2025 en version LTS, supportée jusqu'en novembre 2028, et .NET 11 est attendu en novembre 2026. Beaucoup d'applications tournent encore sur .NET Framework 4.8, qui n'est pas la même plateforme. Vérifiez la maîtrise de async/await et de l'injection de dépendances, qui reviennent dans tout le code.
ASP.NET Core (Web API et minimal APIs)
Le framework qui expose l'API REST. On écrit les endpoints avec des contrôleurs ou avec des minimal APIs, derrière un pipeline de middlewares (erreurs, CORS, authentification). Depuis .NET 10, la validation des minimal APIs est intégrée et le document OpenAPI généré passe en version 3.1. Ce document sert souvent à générer le client TypeScript utilisé par Angular.
Entity Framework Core
L'ORM de Microsoft, qui traduit les requêtes LINQ en SQL et gère les migrations du schéma. C'est là que se cachent la plupart des lenteurs : requêtes en rafale, entités chargées en entier, suivi des modifications inutile en lecture. Certaines équipes utilisent Dapper à côté pour les requêtes les plus lourdes.
SQL Server et Azure SQL
La base de données la plus fréquente avec .NET. Le candidat doit savoir lire un plan d'exécution, choisir un index et repérer une conversion de type qui empêche son usage. SQL Server 2025 ajoute des types json et vector, que EF Core 10 sait déjà utiliser.
Angular
Le framework front le plus demandé avec .NET. La version 22 est sortie en juin 2026 et la 21 reste en support long jusqu'en juin 2027. Depuis la v21, les nouvelles applications fonctionnent sans zone.js et s'appuient sur les signals. Les offres mentionnent encore souvent Angular 15 ou 17, avec des modules NgModule à faire évoluer.
RxJS
La bibliothèque de flux asynchrones utilisée par HttpClient, les formulaires réactifs et le routeur d'Angular. Les opérateurs comme switchMap ou debounceTime règlent les recherches au fil de la frappe et les requêtes concurrentes. Un mauvais choix d'opérateur produit des bugs intermittents, difficiles à reproduire en recette.
React (selon le poste)
Certaines équipes .NET ont choisi React plutôt qu'Angular. On évalue alors les hooks, la gestion de l'état et la récupération de données avec une bibliothèque comme TanStack Query. Les questions sur l'API, la base et la sécurité restent les mêmes.
Microsoft Entra ID, OpenID Connect et JWT
L'authentification des utilisateurs, souvent avec les comptes Microsoft de l'entreprise (Entra ID, ex Azure AD). MSAL Angular obtient le jeton côté navigateur, Microsoft.Identity.Web le valide côté API. D'autres projets utilisent ASP.NET Core Identity ou Duende IdentityServer, ce dernier sous licence commerciale.
Azure DevOps, tests et déploiement
Azure Repos et Azure Pipelines en YAML pour builder, tester et déployer, le plus souvent vers Azure App Service ou des conteneurs. Les tests back s'écrivent avec xUnit ou NUnit, les tests front avec Jasmine et Karma, ou Vitest, proposé par défaut aux nouveaux projets depuis Angular 21. Demandez qui écrit le pipeline dans l'équipe actuelle.
Le périmètre change d'une équipe à l'autre. Sur certains postes, le développeur full-stack .NET écrit aussi les pipelines Azure DevOps, l'infrastructure et la supervision. Sur d'autres, une équipe plateforme s'en charge et il se concentre sur l'API et les écrans. La reprise d'un existant est fréquente : une application ASP.NET MVC 5 sur .NET Framework à migrer, un front AngularJS ou Angular ancien à moderniser, une base SQL Server qui a grossi sans index. Les certifications Microsoft (par exemple Azure Developer Associate) montrent qu'une personne connaît les services Azure. Elles ne disent rien de sa pratique d'Angular ou d'EF Core, qui se vérifie en entretien.
Les points techniques à valider chez un développeur .NET / Angular
- C# asynchrone et injection de dépendances
- Conception d'API ASP.NET Core
- EF Core et performance SQL Server
- Angular, RxJS et signals
- Authentification OpenID Connect et sécurité web
- Tests et pipelines Azure DevOps
Cinq questions pour un développeur full-stack .NET / Angular
Chaque question vient avec ce qu'une bonne réponse contient et le signal qui doit vous alerter. Pas besoin d'être technique pour les poser : écoutez si le candidat raconte du vécu.
Question 1 · confirmé
Une API ASP.NET Core tient bien en recette, puis renvoie des timeouts dès que 200 utilisateurs se connectent. Le code appelle .Result sur des tâches asynchrones. Que se passe-t-il ?
Une bonne réponseChaque .Result bloque un thread du pool en attendant une opération d'entrée-sortie. Sous charge, le pool s'épuise, il ne grossit que lentement et les requêtes s'accumulent en file : c'est le thread pool starvation. La correction consiste à passer en async de bout en bout, avec await, un CancellationToken et des HttpClient obtenus par IHttpClientFactory. Pour le diagnostic, dotnet-counters montre la longueur de la file du pool de threads.
Signal d'alerte« On ajoute des serveurs », ou « on met des Task.Run partout ». Une réponse qui confond asynchronisme et parallélisme.
Question 2 · confirmé
Comment concevez-vous l'endpoint qui renvoie à l'écran Angular la liste paginée et filtrée des commandes ?
Une bonne réponseUn GET avec les filtres et la pagination en paramètres, une taille de page plafonnée et un tri stable. La requête EF Core projette directement vers un DTO avec Select, sans renvoyer l'entité. Les erreurs sortent au format ProblemDetails. Le document OpenAPI décrit le contrat et sert à générer le client TypeScript (NSwag, Kiota ou openapi-generator). Sur une très grosse table, la personne propose une pagination par curseur plutôt qu'un numéro de page.
Signal d'alerteRenvoyer l'entité EF avec toutes ses navigations, ce qui expose des champs internes et crée des cycles JSON. Ou charger toutes les commandes et paginer côté Angular.
Question 3 · confirmé
L'écran de liste des clients met huit secondes à s'afficher. Dans les logs, EF Core envoie 300 requêtes SQL. Que s'est-il passé, et comment corrigez-vous ?
Une bonne réponseUn problème N+1 : une requête pour la liste, puis une par client pour charger une navigation, par lazy loading ou dans une boucle. La correction passe par une projection Select vers un DTO, ou un Include ciblé, et AsNoTracking pour une lecture. La personne regarde le SQL généré (logs ou ToQueryString), puis le plan d'exécution dans SQL Server pour vérifier qu'un index couvre le filtre.
Signal d'alerte« On ajoute un cache » ou « on passe tout en procédures stockées » sans avoir lu une seule requête générée.
Question 4 · confirmé
Un champ de recherche Angular appelle l'API à chaque frappe, et l'écran affiche parfois les résultats d'une saisie précédente. Comment corrigez-vous ?
Une bonne réponseUn flux RxJS sur valueChanges : debounceTime pour attendre la fin de la frappe, distinctUntilChanged pour ignorer les doublons, puis switchMap, qui se désabonne de la requête précédente et l'annule. Un catchError à l'intérieur du switchMap évite qu'une erreur arrête le flux. Le décalage vient de requêtes qui reviennent dans le désordre, typique d'un mergeMap ou de subscribe imbriqués.
Signal d'alerteUn setTimeout bricolé, des subscribe imbriqués, ou un mergeMap sans comprendre que l'ordre des réponses n'est pas garanti.
Question 5 · confirmé
L'application Angular doit se connecter avec les comptes Microsoft Entra ID de l'entreprise et appeler l'API .NET. Décrivez le parcours d'authentification.
Une bonne réponseOpenID Connect avec le flux authorization code et PKCE. MSAL Angular obtient un jeton d'accès pour le scope de l'API et un intercepteur l'ajoute en en-tête Bearer. L'API valide le jeton (Microsoft.Identity.Web ou AddJwtBearer) : signature, émetteur, audience, expiration. Les droits passent par des rôles ou des policies. Un bon profil cite l'alternative du BFF, où le serveur garde les jetons et le navigateur ne reçoit qu'un cookie HttpOnly.
Signal d'alerteLe flux implicite, une API qui décode le JWT sans vérifier sa signature ni son audience, ou une autorisation gérée uniquement en cachant des boutons dans Angular.
Recevez la fiche d'entretien complète en PDF
La fiche pour mener l'entretien de bout en bout, prête à imprimer ou à partager avec le manager.
- 30 questions sur 6 axes, avec la bonne réponse, le signal d'alerte et la relance
- Le niveau visé pour chaque question
- Une mise en situation de 20 minutes et ce qu'on attend du candidat
- La grille d'évaluation de 1 à 4, axe par axe
Recruter un développeur .NET / Angular : vos questions
Quel niveau d'Angular attendre d'un développeur .NET full-stack ?
Beaucoup de profils sont d'abord des développeurs back. Le minimum, pour un poste full-stack, reste solide : composants et services, formulaires réactifs, appels HTTP avec un intercepteur, et des opérateurs RxJS choisis en connaissance de cause. Un confirmé sait se désabonner proprement et organiser l'état d'un écran. Un senior a déjà monté une application de plusieurs versions et sait ce que changent les signals et l'abandon de zone.js. Une question concrète sur switchMap trie vite les profils.
.NET Framework ou .NET 10 sur un CV : qu'est-ce que cela change ?
.NET Framework 4.8 est l'ancienne plateforme, limitée à Windows et figée. .NET (anciennement .NET Core) en est la refonte multiplateforme, avec une version par an. Une expérience longue sur .NET Framework n'est pas un défaut si votre application en vient. Pour un projet récent, vérifiez que la personne connaît l'hébergement ASP.NET Core, l'injection de dépendances native et EF Core, qui diffèrent nettement d'ASP.NET MVC 5 et d'Entity Framework 6.
Comment organiser le test technique d'un développeur .NET / Angular ?
Un exercice court en entretien en dit plus qu'un projet complet à rendre en une semaine. Préparez une petite API ASP.NET Core avec un écran Angular qui affiche une liste lente et une recherche qui se décale. Demandez à la personne de trouver les causes et de commenter à voix haute. En une heure, vous voyez sa lecture du SQL généré, ses opérateurs RxJS et sa façon de tester une correction.
Angular ou React : faut-il exiger le même framework que le vôtre ?
Pour un poste où le front représente une grosse part du travail, oui, car les deux frameworks ont des façons très différentes de gérer l'état et les flux. Pour un poste à dominante back, un bon niveau en React peut suffire si la personne comprend les composants, les appels HTTP et la sécurité côté navigateur. Comptez alors quelques semaines d'adaptation à RxJS, qui reste la partie la moins intuitive d'Angular.
Pour structurer vos autres entretiens, consultez aussi nos pages sur les questions d'entretien de recrutement, la méthode de l'entretien structuré et la grille d'évaluation d'entretien.





