Guide recrutement data
Test technique Snowflake : ce qu'on évalue vraiment en entretien
Snowflake sépare stockage et compute, et facture au temps de calcul (crédits). L'écart se creuse entre celui qui lance un warehouse surdimensionné en continu et celui qui optimise le coût sans sacrifier la performance. Voici ce qu'on évalue.
Data Builder·Juillet 2025·10 min de lecture·Data Engineer / Analytics Engineer
La force de Snowflake, c'est la séparation stockage/compute et des fonctionnalités uniques (clone zéro-copie, time travel). Un profil solide sait s'en servir pour aller vite et maîtriser les coûts. Cinq dimensions.
1Séparation stockage / compute
Question discriminante
Expliquez les virtual warehouses et le multi-cluster. Comment évitez-vous de gaspiller des crédits ?
- Un warehouse est du compute indépendant du stockage, dimensionnable (XS→XL…).
auto_suspend / auto_resume pour ne payer que l'usage réel.- Multi-cluster pour absorber la concurrence, pas pour accélérer une requête.
- Dimensionner selon la charge : plus gros ≠ toujours mieux ni moins cher.
Signal d'alerte : laisser un gros warehouse actif en permanence pour de petites requêtes brûle des crédits inutilement.
2Zero-copy cloning et Time Travel
Question discriminante
Comment testez-vous sur des données de prod sans les dupliquer, et comment récupérez-vous une table effacée ?
- Zero-copy clone — cloner une base/table instantanément, sans coût de stockage initial.
- Time Travel — interroger ou restaurer des données passées (jusqu'à 90 j).
UNDROP pour récupérer un objet supprimé par erreur.- Fail-safe pour la récupération d'urgence côté Snowflake.
3VARIANT et semi-structuré
Question discriminante
Comment interrogez-vous du JSON stocké en VARIANT ?
SELECT v:client:pays::string AS pays, COUNT(*) AS n
FROM events, LATERAL FLATTEN(input => v:sessions)
GROUP BY pays
VARIANT — stocker du JSON semi-structuré nativement.- Notation par points (
v:champ) et cast (::string). LATERAL FLATTEN pour déplier un tableau imbriqué.- Savoir quand normaliser plutôt que tout garder en VARIANT.
4MERGE et chargement de données
Question discriminante
Comment gérez-vous un upsert (insert + update) et l'ingestion continue ?
MERGE INTO clients c USING maj m ON c.id = m.id
WHEN MATCHED THEN UPDATE SET c.email = m.email
WHEN NOT MATCHED THEN INSERT (id, email) VALUES (m.id, m.email)
MERGE — upsert en une instruction (central au CDC).COPY INTO + Snowpipe pour l'ingestion depuis un stage.- Streams (capture de changements) + Tasks (orchestration).
- Idempotence du chargement pour éviter les doublons.
5Coûts et optimisation
Question discriminante
La facture Snowflake grimpe. Par quoi commencez-vous ?
- Analyser le Query Profile : spilling, scans, partitions.
- Ajuster la taille des warehouses et l'auto-suspend.
- Clés de clustering sur les grosses tables très filtrées.
- Exploiter le cache de résultats (requêtes identiques gratuites).
6Grille par niveau
| Niveau | Maîtrise attendue | Signal GO | NO-GO |
|---|
| Junior | SQL Snowflake, warehouses, chargement simple | Comprend séparation stockage/compute, auto-suspend | Laisse un gros warehouse actif en permanence |
| Confirmé | Clone, time travel, VARIANT/FLATTEN, MERGE | Clone pour tester, interroge du JSON, fait un upsert | Duplique des données au lieu d'un zero-copy clone |
| Senior | Streams/tasks, clustering, optimisation coûts | Analyse un Query Profile, réduit la facture | Ne sait pas expliquer une hausse de crédits |
| Lead | Architecture multi-warehouse, gouvernance | Définit le dimensionnement et les standards de coût | N'a aucune stratégie de maîtrise des coûts |
Data hiring guide
Snowflake technical interview: what we really assess
Snowflake separates storage and compute, and bills on compute time (credits). The gap widens between someone who runs an oversized warehouse 24/7 and someone who optimizes cost without sacrificing performance. Here's what we assess.
Data Builder·July 2025·10 min read·Data Engineer / Analytics Engineer
Snowflake's strength is the storage/compute split and unique features (zero-copy clone, time travel). A strong profile uses them to move fast and control cost. Five dimensions.
1Storage / compute separation
Key question
Explain virtual warehouses and multi-cluster. How do you avoid wasting credits?
- A warehouse is compute independent of storage, sizable (XS→XL…).
auto_suspend / auto_resume to pay only for real usage.- Multi-cluster to absorb concurrency, not to speed up a single query.
- Size by workload: bigger ≠ always better or cheaper.
Warning signal : leaving a large warehouse running 24/7 for small queries burns credits needlessly.
2Zero-copy cloning and Time Travel
Key question
How do you test on prod data without duplicating it, and how do you recover a dropped table?
- Zero-copy clone — clone a database/table instantly, with no initial storage cost.
- Time Travel — query or restore past data (up to 90 days).
UNDROP to recover an object dropped by mistake.- Fail-safe for emergency recovery on Snowflake's side.
3VARIANT and semi-structured
Key question
How do you query JSON stored in VARIANT?
SELECT v:client:pays::string AS pays, COUNT(*) AS n
FROM events, LATERAL FLATTEN(input => v:sessions)
GROUP BY pays
VARIANT — store semi-structured JSON natively.- Dot notation (
v:field) and cast (::string). LATERAL FLATTEN to unfold a nested array.- Knowing when to normalize rather than keep everything in VARIANT.
4MERGE and data loading
Key question
How do you handle an upsert (insert + update) and continuous ingestion?
MERGE INTO clients c USING maj m ON c.id = m.id
WHEN MATCHED THEN UPDATE SET c.email = m.email
WHEN NOT MATCHED THEN INSERT (id, email) VALUES (m.id, m.email)
MERGE — upsert in one statement (central to CDC).COPY INTO + Snowpipe for ingestion from a stage.- Streams (change capture) + Tasks (orchestration).
- Idempotent loading to avoid duplicates.
5Cost and optimization
Key question
The Snowflake bill is climbing. Where do you start?
- Analyze the Query Profile: spilling, scans, partitions.
- Adjust warehouse sizes and auto-suspend.
- Clustering keys on large, heavily filtered tables.
- Leverage the result cache (identical queries are free).
6Level grid
| Level | Expected proficiency | Signal GO | NO-GO |
|---|
| Junior | Snowflake SQL, warehouses, simple loading | Understands storage/compute split, auto-suspend | Leaves a large warehouse running 24/7 |
| Mid-level | Clone, time travel, VARIANT/FLATTEN, MERGE | Clones to test, queries JSON, does an upsert | Duplicates data instead of a zero-copy clone |
| Senior | Streams/tasks, clustering, cost optimization | Analyzes a Query Profile, cuts the bill | Can't explain a rise in credits |
| Lead | Multi-warehouse architecture, governance | Sets sizing and cost standards | Has no cost-control strategy |