Préouverture · toutes les fiches sont en lecture libre. Les ventes ouvriront prochainement.

Synthèse d’entretien

DatalyoTech & Data

Préparer un entretien : Data Analyst

  • Lyon, France
  • Fiche mise à jour en septembre 2026
Entretiens : janvier 2023Contrat, durée et début du poste : non documentés

Recrutement historique. Cette synthèse ne constitue pas une offre d’emploi actuellement ouverte.

Fondateurs Avanttoi — Synthèse éditoriale

Toutes les fichesLecture gratuite — sans compte
Sommaire

Fondateurs Avanttoi — Synthèse éditoriale

Synthèse originale de faits rapportés dans un témoignage de candidat, non authentifié par Avanttoi. Les conseils et exercices sont créés par Avanttoi. Cette expérience n’a pas été vécue par les fondateurs et ne décrit pas nécessairement le recrutement actuel de l’entreprise.

Faits rapportés · un témoignage

Data AnalystLyon, France

Période des entretiens · janvier 2023

  • Un premier entretien et des tests de logique et de mathématiques sont rapportés.
  • Des échanges avec deux associés sont ensuite mentionnés.

Publication du témoignage : 10 mars 2025. Le lien de provenance est conservé dans le dossier éditorial privé.

Sujets de ce recrutement

Questions et thèmes réellement rapportés

Les citations conservent la formulation publiée par le candidat. Les thèmes décrivent le sujet documenté lorsque l’énoncé complet n’est pas disponible. Les corrigés d’entraînement figurent dans la partie Avanttoi.

01 · Question rapportée · citation

Modélisation de données

Entretien · tour exact non précisé

Quelles sont vos connaissances sur la modélisation de données?

Question publiée par le candidat ; aucun schéma ni cas de modélisation détaillé n’est fourni.

Conseils originaux Avanttoi

Ce que vous pouvez travailler

Expliquez la modélisation avec un petit exemple commande et lignes de commande : définissez d’abord le grain, puis les clés et les dépendances. Montrez comment une jointure peut multiplier un montant et comment conserver la valeur historique d’une dimension. Appuyez vos explications sur un modèle que vous avez construit, y compris dans un exercice personnel, en précisant son contexte. Préparez les avantages et les limites de chaque choix.

Exercices créés par Avanttoi

Entraînez-vous sur des cas originaux

Ces scénarios pédagogiques et leurs corrigés ne sont pas des questions posées par Datalyo.

EXERCICE 01

Identifier le grain et éviter un double compte commande/lignes

Exercice original Avanttoi. Une table fictive combine une ligne par article commandé avec le montant total de la commande répété sur chaque ligne. Une commande de 3 articles totalise 90 €. Expliquez pourquoi sommer ce montant sur toutes les lignes fausse le calcul, et proposez une correction.

Voir le corrigé et les critères

Corrigé pédagogique

Le grain de la table est la ligne d'article, mais le montant total de commande est une information de niveau commande, dupliquée sur chaque ligne. Sommer directement ce montant sur les 3 lignes donnerait 270 € au lieu de 90 €, un triple compte. La correction consiste à agréger d'abord au niveau commande avec une valeur par commande unique, par exemple via une jointure sur une table de commandes distincte ou un DISTINCT explicite sur l'identifiant de commande avant sommation, puis seulement ensuite additionner les montants par commande distincte.

Pour évaluer votre réponse

Le double compte est expliqué par la confusion de grain, et la correction agrège d'abord à un niveau commande unique avant de sommer.

EXERCICE 02

Construire un modèle relationnel normalisé avec contraintes

Exercice original Avanttoi. Modélisez client, commande et ligne de commande dans un schéma relationnel pédagogique. Précisez les clés primaires, les clés étrangères, et des contraintes SQL empêchant à la fois une quantité manquante et une quantité négative sur une ligne. Ne prétendez pas garantir une forme normale sans avoir explicité les dépendances fonctionnelles du schéma.

Voir le corrigé et les critères

Corrigé pédagogique

CREATE TABLE client (
  id_client   INTEGER PRIMARY KEY
);
CREATE TABLE commande (
  id_commande INTEGER PRIMARY KEY,
  id_client   INTEGER NOT NULL REFERENCES client(id_client),
  date_commande DATE NOT NULL
);
CREATE TABLE ligne_commande (
  id_ligne    INTEGER PRIMARY KEY,
  id_commande INTEGER NOT NULL REFERENCES commande(id_commande),
  produit     TEXT NOT NULL,
  quantite    INTEGER NOT NULL CHECK (quantite > 0),
  prix_unitaire_snapshot NUMERIC NOT NULL
);

La contrainte CHECK (quantite > 0) interdit à elle seule les valeurs négatives et zéro, mais n'interdit pas NULL en SQL, puisqu'une comparaison avec NULL n'est ni vraie ni fausse et laisse donc passer la ligne ; c'est pourquoi quantite est aussi déclarée NOT NULL. Les clés primaires id_client, id_commande et id_ligne identifient chaque ligne, et les clés étrangères id_client sur commande et id_commande sur ligne_commande relient les tables. Le prix_unitaire_snapshot est stocké sur la ligne plutôt que recalculé depuis un catalogue produit, car le prix au moment de la commande doit rester figé même si le prix catalogue change ensuite. Ce schéma pédagogique n'est présenté comme conforme à la troisième forme normale que sous l'hypothèse explicite que les seules dépendances fonctionnelles sont id_client -> attributs client, id_commande -> attributs commande, et id_ligne -> attributs de ligne ; sans expliciter ces dépendances, aucune garantie de forme normale n'est affirmée.

Pour évaluer votre réponse

Le schéma SQL déclare NOT NULL en plus du CHECK sur quantite, les clés primaires et étrangères sont explicites, le prix est un instantané sur la ligne, et la conformité à une forme normale n'est affirmée que sous des dépendances fonctionnelles explicitées.

EXERCICE 03

Construire une table de faits avec dimension historisée

Exercice original Avanttoi. Une dimension client fictive doit conserver l'historique des changements de ville, sans chevauchement de périodes pour un même client. Proposez une table de dimension à historisation de type 2 avec une clé de version explicite, un intervalle semi-ouvert, et une table de faits de commandes qui référence la bonne version du client selon la date de commande. Illustrez avec deux versions du même client et une commande passée exactement à la date frontière.

Voir le corrigé et les critères

Corrigé pédagogique

CREATE TABLE client_historique (
  client_version_id INTEGER PRIMARY KEY,
  id_client   INTEGER NOT NULL,
  ville       TEXT NOT NULL,
  date_debut  DATE NOT NULL,
  date_fin    DATE
);

L'intervalle de validité de chaque version est semi-ouvert [date_debut, date_fin) : la version est valide à partir de date_debut inclus et jusqu'à date_fin exclu ; date_fin NULL signifie que la version est la version courante, sans fin connue. Exemple pour le client 1 : version 101, ville 'Lyon', date_debut '2024-01-01', date_fin '2025-06-01' ; version 102, ville 'Nantes', date_debut '2025-06-01', date_fin NULL. Une commande passée le 2025-06-01 relève de la version 102 (Nantes), puisque cette date est incluse dans son intervalle et exclue de celui de la version 101 : la frontière n'appartient jamais à deux versions à la fois, ce qui évite un chevauchement à cette frontière dans cet exemple. La table de faits commande référence client_version_id :

CREATE TABLE commande (
  id_commande INTEGER PRIMARY KEY,
  date_commande DATE NOT NULL,
  client_version_id INTEGER NOT NULL REFERENCES client_historique(client_version_id)
);

La version est déterminée lors de l'insertion par une jointure de la forme : `h.id_client = entree.id_client AND entree.date_commande >= h.date_debut AND (entree.date_commande < h.date_fin OR h.date_fin IS NULL)`, où h désigne la dimension et entree la commande à charger. Utiliser BETWEEN date_debut AND date_fin serait incorrect ici car BETWEEN est inclusif aux deux bornes et compterait la date_fin comme appartenant encore à l'ancienne version, provoquant un double compte possible à la frontière entre deux versions consécutives.

La clé primaire seule ne garantit pas l’absence de chevauchement. Avant de charger un fait, contrôlez les bornes et exigez exactement une version correspondante pour ce client et cette date ; zéro ou plusieurs correspondances bloquent le chargement jusqu’à correction.

Pour évaluer votre réponse

La table de dimension inclut une clé de version explicite (client_version_id), l'intervalle est semi-ouvert avec date_fin NULL pour la version courante, l'exemple à la date frontière est résolu de façon déterministe vers une seule version, et la condition de jointure est donnée explicitement en évitant BETWEEN.

Plan proposé par Avanttoi

Une séance de préparation ciblée

  1. 15 minutes : relisez les sujets rapportés et listez les notions que vous savez expliquer avec un exemple précis.
  2. 45 minutes : réalisez les trois exercices Avanttoi associés à cette fiche, puis comparez votre réponse aux critères et aux corrigés.
  3. 15 minutes : présentez à voix haute une réponse technique et une expérience réelle ; notez les hypothèses et informations à confirmer.
Périmètre de la fiche

Les informations encore inconnues

  • Ce compte rendu décrit un recrutement passé, déclaré par son auteur ; il ne constitue pas une validation indépendante ni le processus actuel officiel.
  • La référence de l’offre, la durée du contrat et le mois de prise de poste ne sont pas documentés. Le mois affiché est celui de l’entretien.
  • Les sujets rapportés ne donnent pas le barème ni un corrigé officiel. Les scénarios et réponses Avanttoi ci-dessous sont des créations pédagogiques.
  • Le contenu précis des tests de logique et de mathématiques n’est pas publié.

À demander à votre recruteur

  • Quelle est la référence exacte du poste, son équipe et son périmètre géographique ?
  • Quel type de contrat, quelle durée et quelle date de début sont prévus pour cette candidature ?
  • Quels formats, outils autorisés et étapes sont prévus pour cette session de recrutement ?

Les avis des lecteurs

Aucun avis publié pour cette fiche.