Guide recrutement data
Test technique Spark : ce qu'on evalue en entretien Data Engineer
Entre un profil qui a fait du Spark et un profil qui comprend pourquoi un job est lent, il y a un monde.
Data Builder·Juin 2025·8 min de lecture·Data Engineer
Entre un profil qui "a fait du Spark" et un profil qui comprend pourquoi un job prend 4h au lieu de 20 minutes, il y a un monde.
1Transformations et actions
Question discriminante
Difference entre une transformation et une action dans Spark ?
Les transformations (filter, select, groupBy) sont paresseuses — elles construisent un plan sans rien calculer. Les actions (collect, count, write) declenchent l'execution.
- Transformations narrow : filter, map, select — une partition independante
- Transformations wide : groupBy, join, distinct — shuffle necessaire
2Lazy execution
Question discriminante
Pourquoi Spark utilise la lazy execution ? Quel avantage concret ?
# Ces transformations ne calculent rien
df_filtered = df.filter(df.montant > 100)
df_grouped = df_filtered.groupBy("region").sum("montant")
# Ici seulement Spark execute et optimise le plan
df_grouped.show()
- Catalyst Optimizer — reorganise, fusionne, elimine les calculs inutiles
- cache() — persister un DataFrame pour eviter de le recalculer
3RDD, stages et tasks
Question discriminante Senior
Qu'est-ce qu'un RDD ? Comment stages et tasks s'articulent avec les shuffles ?
- Stages — separes par les shuffles (groupBy, join)
- Tasks — une task = une partition = un thread executor
- Spark UI — identifier les stages lents et les data skews
4Partitionnement et shuffles
Question discriminante
Une partition est 100x plus grosse que les autres. Que se passe-t-il ?
- Data skew — principale cause de jobs lents
- Broadcast join — pour les petites tables, evite un shuffle complet
- repartition vs coalesce — avec vs sans shuffle
- Salting — distribuer les cles skewed
5Cluster et optimisation
Question discriminante Senior
Comment dimensionnez-vous les ressources d'un job Spark ?
- Spill to disk — signal de manque de memoire
- AQE (Adaptive Query Execution) — Spark 3, ajustement dynamique
- Delta Lake / Iceberg — formats transactionnels
6Grille par niveau
| Niveau | Maitrise attendue | Signal GO | NO-GO |
|---|
| Junior | DataFrames, transformations/actions, Parquet | Explique transformations vs actions | Ne sait pas ce qu'est la lazy execution |
| Confirme | Partitionnement, cache, broadcast join, Spark UI | A corrige un probleme de performance | N'a jamais ouvert le Spark UI |
| Senior | Internals, AQE, dimensionnement cluster, Delta Lake | A resolu un data skew en production | Ne peut pas expliquer ce qu'est un shuffle |
| Lead | Architecture streaming, optimisation avancee | A designe une architecture Spark Streaming | Ne connait pas AQE |
Data hiring guide
Spark technical interview: what we really assess in data hiring
Between a profile who has used Spark and one who understands why a job is slow, there is a world of difference.
Data Builder·June 2025·8 min read·Data Engineer
Between a profile who "has used Spark" and one who understands why a job takes 4 hours instead of 20 minutes, there is a world of difference.
1Transformations and actions
Discriminating question
What is the difference between a transformation and an action in Spark?
Transformations (filter, select, groupBy) are lazy — they build a plan without computing anything. Actions (collect, count, write) trigger execution.
- Narrow transformations: filter, map, select — one independent partition
- Wide transformations: groupBy, join, distinct — shuffle required
2Lazy execution
Discriminating question
Why does Spark use lazy execution? What is the concrete benefit?
# Ces transformations ne calculent rien
df_filtered = df.filter(df.montant > 100)
df_grouped = df_filtered.groupBy("region").sum("montant")
# Ici seulement Spark execute et optimise le plan
df_grouped.show()
- Catalyst Optimizer — reorders, merges, and eliminates unnecessary computations
- cache() — persist a DataFrame to avoid recomputing it
3RDD, stages and tasks
Senior discriminating question
What is an RDD? How do stages and tasks relate to shuffles?
- Stages — separated by shuffles (groupBy, join)
- Tasks — one task = one partition = one executor thread
- Spark UI — identify slow stages and data skews
4Partitioning and shuffles
Discriminating question
One partition is 100x larger than the others. What happens?
- Data skew — the main cause of slow jobs
- Broadcast join — for small tables, avoids a full shuffle
- repartition vs coalesce — with vs without shuffle
- Salting — distribute skewed keys
5Cluster and optimization