Dataford
Interview QuestionsInterview GuidesExperiencesCoaching
New
Pricing
Get started
Dataford
Popular roles
Software EngineerData AnalystData ScientistData EngineerBusiness AnalystAI EngineerMachine Learning EngineerProduct Manager
Browse
Browse All RolesEvery role hub, from analyst to MLBrowse All CompaniesCompany-specific interview loopsAll Interview GuidesThe full guide library
Top questions by role
Software EngineerData AnalystData ScientistData EngineerBusiness AnalystAI EngineerMachine Learning EngineerProduct Manager
Top questions by skill
SQLPythonStatisticsMachine LearningA/B TestingSystem DesignGenerative AIProduct SenseMetricsBehavioral
Browse all questions →Try a mock interview
Experiences
Practice
Mock InterviewsTimed interview simulations with feedbackCoaching1:1 coaching with people at your target companiesSuccess PathYour 6-week structured planModulesCurated lessons by topicWebinarsTalks from ex-Big Tech data leadsPlaygroundA free-form scratch editor
Learn
BlogInterview strategy and career adviceTech Job Market ReportHiring trends across data and AI rolesFor UniversitiesDataford for career centersAbout DatafordWho we are and how we build
Pricing
Build my plan
Real-Time Event Propagation
00:00
5 left

Real-Time Event Propagation

MediumPython

Problem

You are given a directed graph of app components. Each node represents a component, and each directed edge u -> v means component v depends on updates from component u. When a component receives a new event, that event must be propagated to all reachable components in dependency order: a component can only process an event after all of its direct prerequisites for that event have been processed.

Implement a function that returns the order in which components process a single event starting from one or more source nodes. If multiple components are ready at the same time, process the component with the smaller node id first. Ignore duplicate events for the same component within the same propagation run.

Constraints

  • 1 <= n <= 10^5
  • 0 <= len(edges) <= 2 * 10^5
  • 0 <= u, v < n
  • The graph may contain duplicate edges
  • sources contains at least one node
  • The graph is guaranteed to be acyclic

Function Signature

def propagate_updates(n, edges, sources):
Interviewer

Your question is Real-Time Event Propagation. Start with the requirements in the Question tab.

Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.

You need to log in / sign up to run or submit.
CodePython 3
Sign up free to run your codeLog inLn 2
Run your code to see test output here.