Question d'entretien pour Data Scientist

Vous devez agréger deux milliards de lignes pour une variable. Le faites-vous en SQL ou rapatriez-vous les données dans pandas ?

Ce que le recruteur cherche à évaluer, comment structurer votre réponse et un exemple parlé à adapter.

Réponse rapide

Faites-le en SQL, dans l'entrepôt. Deux milliards de lignes ne tiendront pas dans la mémoire de pandas, et les déplacer sur le réseau est la partie lente. Poussez le filtrage, les jointures et l'agrégation vers le moteur, qui est fait pour ça, et ne rapatriez que le résultat agrégé. Utilisez pandas ou Polars pour le dernier kilomètre, une fois que les données sont assez petites pour tenir confortablement en mémoire.

Pourquoi les recruteurs posent cette question

C'est un test de jugement pratique sur l'endroit où le calcul doit avoir lieu. Les recruteurs voient beaucoup de candidats qui rapatrient les données dans un dataframe par réflexe puis se demandent pourquoi le job meurt. Ils veulent entendre pousser le calcul vers la donnée, la conscience de ce qui coûte vraiment du temps (transfert réseau et shuffles), et une frontière raisonnable pour l'endroit où commence le travail en dataframe.

Comment structurer votre réponse

  • Répondez directement : agréger dans l'entrepôt.
  • Expliquez que le goulot d'étranglement est le transfert et la mémoire, pas le calcul.
  • Dites ce qui relève du SQL et ce qui relève du dataframe.
  • Mentionnez l'élagage de partitions ou le calcul incrémental pour maîtriser le coût.

Exemple de réponse

Exemple parlé, à la première personne

SQL, sans hésiter. Deux milliards de lignes n'entreront pas dans un dataframe pandas sur une machine qu'on me donnera, et même si c'était le cas, le transfert sur le réseau dominerait tout. Le moteur est conçu pour balayer et agréger à cette échelle avec un parallélisme que je n'ai pas en local. Je pousse donc le filtre, la jointure et le group by dans l'entrepôt et je rapatrie l'agrégat, qui pour une table de variables fait en général quelques millions de lignes indexées par entité et par date, et ça tient confortablement en mémoire. Ma frontière approximative, c'est que tout ce qui réduit des lignes relève du SQL, et tout ce qui met en forme un petit résultat pour la modélisation relève de Python. Le coût m'importe aussi, donc je m'assure que la requête élague les partitions sur la colonne de date au lieu de balayer tout l'historique, et si la variable est recalculée chaque jour je la construis de façon incrémentale, en ajoutant la veille plutôt qu'en recalculant trois ans chaque matin. Sur un projet, ce changement a fait passer un job nocturne d'environ quarante minutes à moins de trois, et a réduit la facture à peu près du même facteur.

Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.

Voir comment ça marche

Questions de relance à prévoir

  • Comment déboguez-vous une requête devenue soudain dix fois plus lente ?
  • Quand vous tourneriez-vous vers Spark plutôt que vers l'entrepôt ?
  • Qu'est-ce qui vous ferait choisir Polars plutôt que pandas pour le dernier kilomètre ?

Autres questions pour Data Scientist

Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.

Prédire mes questions

Répétez les questions difficiles avant qu'on vous les pose

Entraînez-vous avec un copilote en direct, puis présentez-vous prêt. Un Session Pass à $29 vous accompagne pendant l'entretien, sans abonnement et sans engagement.

Obtenir GhostPilot