AccueilBlogTest technique Apache Flink : stream processing avancé
Guide recrutement data

Test technique Apache Flink : stream processing avancé

Flink est la référence pour le stream processing à faible latence. En entretien Senior, on évalue la compréhension de l event time, du stateful processing et des garanties de livraison.

Data Builder·Juin 2025·6 min de lecture·Data Engineer
Sommaire
  1. Flink vs Spark Streaming
  2. Event time vs processing time
  3. Stateful processing
  4. Checkpointing et fault tolerance
  5. Flink SQL
  6. Cas d usage
  7. Grille

1Flink vs Spark Structured Streaming

Question discriminante

Dans quel cas choisissez-vous Flink plutôt que Spark Streaming ?

Spark StreamingApache Flink
ModèleMicro-batch (100ms minimum)True streaming (event by event)
Latence100ms - 1s1-10ms
State managementLimitéTrès riche (RocksDB)
Exactement-une-foisPossible mais complexeNatif
Idéal pourÉquipes Spark, batch + streaming unifiedLatence sub-seconde, état complexe, fraude temps réel

2Event time vs processing time

Question discriminante

Quelle est la différence entre event time et processing time dans Flink ?

from pyflink.datastream import StreamExecutionEnvironment from pyflink.common.time import Time from pyflink.datastream.window import TumblingEventTimeWindows env = StreamExecutionEnvironment.get_execution_environment() # Processing time : l heure système quand l event est traité # Simple mais incohérent si les events arrivent en retard stream.window(TumblingProcessingTimeWindows.of(Time.minutes(5))) # Event time : l heure DANS l event (quand il s est passé) # Cohérent, mais nécessite des watermarks pour les retardataires stream \ .assign_timestamps_and_watermarks( WatermarkStrategy .for_bounded_out_of_orderness(Duration.of_seconds(10)) .with_timestamp_assigner(MyTimestampAssigner()) ) \ .window(TumblingEventTimeWindows.of(Time.minutes(5)))

3Stateful processing : l avantage de Flink

Question discriminante

Qu est-ce que le stateful processing dans Flink ? Donnez un exemple concret.

from pyflink.datastream import KeyedProcessFunction from pyflink.datastream.state import ValueStateDescriptor # Détecter les sessions utilisateur avec état class SessionDetector(KeyedProcessFunction): def open(self, runtime_context): # État persistant par clé (user_id) self.last_event_time = runtime_context.get_state( ValueStateDescriptor('last_event', Types.LONG()) ) self.session_start = runtime_context.get_state( ValueStateDescriptor('session_start', Types.LONG()) ) def process_element(self, event, ctx): current_time = event.timestamp last_time = self.last_event_time.value() if last_time is None or (current_time - last_time) > 30 * 60 * 1000: # Nouvelle session (> 30 minutes d inactivité) self.session_start.update(current_time) self.last_event_time.update(current_time) yield event

4Checkpointing et fault tolerance

Question discriminante

Comment Flink garantit-il exactly-once en cas de panne ?

5Flink SQL : streaming avec SQL

Question discriminante

Comment écrivez-vous un job Flink avec SQL plutôt que l API Java/Python ?

from pyflink.table import EnvironmentSettings, TableEnvironment env_settings = EnvironmentSettings.in_streaming_mode() tbl_env = TableEnvironment.create(env_settings) # Définir la source Kafka tbl_env.execute_sql(""" CREATE TABLE orders ( order_id STRING, user_id STRING, amount DOUBLE, event_time TIMESTAMP(3), WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND ) WITH ( 'connector' = 'kafka', 'topic' = 'orders', 'properties.bootstrap.servers' = 'kafka:9092', 'format' = 'json' ) """) # Agrégation sur une fenêtre temporelle tbl_env.execute_sql(""" SELECT TUMBLE_START(event_time, INTERVAL '5' MINUTE) AS window_start, user_id, SUM(amount) AS total_amount FROM orders GROUP BY TUMBLE(event_time, INTERVAL '5' MINUTE), user_id """)

6Cas d usage Flink en production

Question discriminante

Dans quels contextes d entreprise voit-on Flink déployé ?

7Grille par niveau

NiveauMaitriseSignal GONO-GO
ConfirméEvent time vs processing time, watermarks, Flink SQLExplique la différence event/processing time, a écrit du Flink SQLNe sait pas la différence entre Flink et Spark Streaming
SeniorStateful processing, checkpointing, exactly-onceA implémenté du stateful processing, comprend le checkpointingNe sait pas ce qu est le stateful processing

Vous recrutez un Data Engineer streaming avancé ?

Premier entretien gratuit. Rapport GO/NO-GO sous 48h.