Sur FastAPI à fort trafic, chaque angle est étayé par un chiffre et une décision justifiée. Sur les microservices et Kafka, la clé de partition, les groupes et l'évolution du format sont décrits avec leurs limites. Sur les analytics temps réel, l'arbitrage entre vitesse et exactitude est clair. Sur les profils dans MongoDB, l'historique et l'index sont maîtrisés. Sur l'API de recommandation, le cache et la personnalisation par profil sont présents. L'usage de l'IA est rigoureux.
La pièce à transmettrePart telle quelle chez votre client : sans score, sans verdict, sans signal.
Revelyum
Rapport d'entretien technique
Établi pour Nordlys Conseil
Développeur API Python, plateforme média streaming (H/F)
· Inès Lacombe · 09/10/2026
Synthèse
La candidate a dimensionné FastAPI avec un test de charge et placé asyncio.gather sur les appels en aval, avec des gains chiffrés. Elle maîtrise le cache avec verrou, la limitation par clé et le découpage de l'historique dans MongoDB. Son usage de l'IA est cadré par des tests de latence.
Détail par exigence
FastAPI à fort trafic
indispensableSolide
Chiffre le nombre de workers, parallélise les appels en aval, met la réponse en cache et limite un client trop bavard par clé.
Microservices communiquant par Kafka
indispensableSolide
Publie des événements partitionnés par profil, donne à chaque service son groupe et fait évoluer le format sans casser les anciens consommateurs.
Analytics temps réel
Solide
Compte avec des incréments Redis par minute, consolide chaque heure et distingue l'affichage rapide du comptage exact.
Profils utilisateurs dans MongoDB
Solide
Borne l'historique dans le document du profil, déporte le reste dans une collection et indexe la requête d'ouverture.
API de recommandation
Solide
Met en cache la réponse par profil et tolère un service en panne, sans aborder la mesure de l'effet.
Usage de l'IA
indispensableSolide
Confie à l'assistant les tests de charge et les modèles de données, donne un contexte court et vérifie par des tests de latence.
Points d'appui
Dimensionnement des workers Uvicorn issu d'un test de charge, pas d'une règle approximative.
Appels concurrents avec délai maximum et gestion des services en panne, latence divisée par plus de deux.
Limitation par clé avec seau à jetons et rafale, sans pénaliser les autres clients.
Découpage de l'historique : derniers visionnages dans le profil, le reste dans une collection.
Points de vigilance
Kafka décrit surtout côté production et groupes, la gestion d'un incident de retard n'est pas racontée.
Mesure de l'effet d'une recommandation non abordée.
Sujets abordés
FastAPI à fort trafic · Microservices communiquant par Kafka · Analytics temps réel · Profils utilisateurs dans MongoDB · API de recommandation · Usage de l'IA
Entretien conduit en autonomie par le candidat, réponses transcrites puis analysées.
L'évaluation finale appartient au recruteur : Revelyum n'émet aucune décision automatisée.
En clair
Oui, il peut clairement faire ce job
Inès a mis en production une API FastAPI qui encaisse de gros pics et chiffre chacune de ses décisions. Elle sait limiter un client abusif, mettre en cache et gérer des événements Kafka. Elle encadre bien l'usage de l'assistant IA.
Ses points forts
Décisions appuyées par des mesures
Maîtrise de la charge et du cache
Usage rigoureux de l'IA
À creuser en entretien
Peu d'éléments sur la mesure de l'effet des recommandations
Incident Kafka non raconté
Savoir-être
Expliquer
Justifie le nombre de workers par la mesure et non par une habitude.
Peut porter seule un service à fort trafic et expliquer ses arbitrages à l'équipe.
Détail par exigence
FastAPI à fort trafic
indispensableSolide · 9/10
Nombre de workers Uvicorn · 9/10Seuil mesuré.au-delà de quatre workers le gain était inférieur à dix pour centRéponse
R1
Appels concurrents avec asyncio · 9/10Appels concurrents avec délai maximum.Je lance les trois appels en parallèle avec asyncio.gatherRéponse
R2
Mettre en cache une réponse de recommandation · 9/10Clé et durée justifiées.une clé par profil et par type de contenu, et une durée de vie de soixante secondesRéponse
R4
Limiter un client trop bavard · 9/10Limitation par clé avec en-tête de reprise.avec un seau à jetons dans Redis, et je renvoie un code 429Réponse
R3
Microservices communiquant par Kafka
indispensableSolide · 9,7/10
Produire un événement de visionnage · 10/10Contenu de l'événement défini.un événement par lecture, avec un identifiant d'événement, le profil, le contenu et l'horodatageRéponse
R5
Groupes de consommateurs · 10/10Un groupe par service.Chaque service avait son propre groupe de consommateursRéponse
R5
Faire évoluer le format d'un événement · 9/10Évolution compatible.on ajoutait des champs optionnels sans retirer les anciensRéponse
R5
Analytics temps réel
Solide · 9,3/10
Compteurs de vues dans Redis · 9/10Compteur à clé datée.un incrément Redis par contenu et par minuteRéponse
R6
Agrégation par fenêtre de temps · 9/10Agrégation par fenêtre.un job qui consolide en base chaque heureRéponse
R6
Exactitude ou rapidité des chiffres · 10/10Exactitude là où elle compte.pour la facturation des ayants droit, on recompte depuis les événements brutsRéponse
R6
Profils utilisateurs dans MongoDB
Solide · 9,3/10
Historique qui grossit sans fin · 9/10Document borné.je ne gardais que les cinquante derniers visionnages dans le document du profilRéponse
R7
Index pour les requêtes fréquentes · 10/10Index sur la requête la plus fréquente.un index composite sur le profil et la dateRéponse
R7
Document profil et historique · 9/10Historique complet séparé du profil.un document par visionnageRéponse
R7
API de recommandation
Solide · 10/10
Personnaliser par profil · 10/10Personnalisation reflétée dans la clé.une clé par profil et par type de contenuRéponse
R4
Réponse de repli si le moteur tarde · 10/10Réponse dégradée plutôt qu'une erreur.pour qu'un service en panne n'emporte pas toute la réponseRéponse
R2
Usage de l'IA
indispensableSolide · 9/10
S'il code avec un assistant IA (Copilot, Cursor, Claude Code, ChatGPT…) : quelles tâches de développement il lui confie, et lesquelles il garde · 9/10Tâches déléguées.écrire des tests de charge et des modèles Pydantic à partir d'un exempleRéponse
R8
Son workflow avec l'assistant : découper la demande, lui donner le contexte (fichiers, conventions), tenir la taille du contexte et le coût en tokens, itérer · 9/10Gestion du contexte.je découpe en petites demandes pour garder le contexte courtRéponse
R8
Un cas vécu où un assistant IA a changé son code ou son délai, et ce qu'il en a retenu · 9/10Erreur détectée par un test.il m'a proposé un appel bloquant dans une route asynchroneRéponse
R8
Ce qu'il ne confie jamais à l'assistant : données confidentielles, sécurité, décisions d'architecture, cas où il s'est trompé · 9/10Décision gardée.Je ne lui confie jamais le choix des clés de partitionRéponse
R8