PracHub
QuestionsPremiumLearningGuidesCheatsheetNEWCoaches
|Home/Coding & Algorithms/Optiver

Design a satellite propagation simulator

Last updated: Mar 29, 2026

Quick Overview

This question evaluates proficiency in graph algorithms, event-driven simulation, time-based propagation modeling, deterministic ordering, and efficient data structure design for large-scale networks within the Coding & Algorithms domain.

  • Medium
  • Optiver
  • Coding & Algorithms
  • Software Engineer

Design a satellite propagation simulator

Company: Optiver

Role: Software Engineer

Category: Coding & Algorithms

Difficulty: Medium

Interview Round: Take-home Project

Implement a SatelliteNetwork class to simulate message propagation over an undirected satellite graph. Provide these methods: ( 1) satellite_connected(satellite_id): register a new satellite; if satellite_id already exists, call ErrDuplicateSatelliteId(satellite_id). ( 2) relationship_established(satellite_id1, satellite_id 2): create a bidirectional link; if either ID does not exist, call ErrInvalidSatelliteId(offending_id). ( 3) message_received(satellite_ids): Earth sends the same message simultaneously at time t=0 to all listed satellites; if any ID does not exist, call ErrInvalidSatelliteId(offending_id). Propagation rules: When a satellite first receives the message at time t, it attempts to forward to each directly connected satellite that has not yet received it; each such neighbor receives at time t + 10s (forwarding takes 10s per sender). A satellite ignores receptions after its first. A satellite becomes eligible to report back once all of its direct neighbors have received the message (from any sender); its report is delivered at the earliest time this condition becomes true plus 30s. When multiple reports are delivered at the same time, invoke callbacks in increasing SatelliteId order. Side effects/output: For each report, call OnSatelliteReportedBack(satelliteId) in exact chronological order for that message. Do not return or print anything else. Assumptions/constraints: Satellite IDs are integers. There may be multiple calls to message_received; treat each call as an independent run. Design data structures/algorithms to handle large N satellites and M links efficiently, ensuring deterministic ordering. Provide code or pseudocode and analyze time and space complexity.

Quick Answer: This question evaluates proficiency in graph algorithms, event-driven simulation, time-based propagation modeling, deterministic ordering, and efficient data structure design for large-scale networks within the Coding & Algorithms domain.

Related Interview Questions

  • Find missing numbers in sequences - Optiver (hard)
  • Design a circular queue data structure - Optiver (medium)
  • Optimize flight and cargo bookings for profit - Optiver (hard)
  • Compare two programs for equivalence - Optiver (Medium)
  • Match alphanumeric patterns in a stream - Optiver (Medium)
Optiver logo
Optiver
Sep 6, 2025, 12:00 AM
Software Engineer
Take-home Project
Coding & Algorithms
24
0

Implement a SatelliteNetwork class to simulate message propagation over an undirected satellite graph. Provide these methods: (

  1. satellite_connected(satellite_id): register a new satellite; if satellite_id already exists, call ErrDuplicateSatelliteId(satellite_id). (
  2. relationship_established(satellite_id1, satellite_id 2): create a bidirectional link; if either ID does not exist, call ErrInvalidSatelliteId(offending_id). (
  3. message_received(satellite_ids): Earth sends the same message simultaneously at time t=0 to all listed satellites; if any ID does not exist, call ErrInvalidSatelliteId(offending_id). Propagation rules: When a satellite first receives the message at time t, it attempts to forward to each directly connected satellite that has not yet received it; each such neighbor receives at time t + 10s (forwarding takes 10s per sender). A satellite ignores receptions after its first. A satellite becomes eligible to report back once all of its direct neighbors have received the message (from any sender); its report is delivered at the earliest time this condition becomes true plus 30s. When multiple reports are delivered at the same time, invoke callbacks in increasing SatelliteId order. Side effects/output: For each report, call OnSatelliteReportedBack(satelliteId) in exact chronological order for that message. Do not return or print anything else. Assumptions/constraints: Satellite IDs are integers. There may be multiple calls to message_received; treat each call as an independent run. Design data structures/algorithms to handle large N satellites and M links efficiently, ensuring deterministic ordering. Provide code or pseudocode and analyze time and space complexity.

Comments (0)

Sign in to leave a comment

Loading comments...

Browse More Questions

More Coding & Algorithms•More Optiver•More Software Engineer•Optiver Software Engineer•Optiver Coding & Algorithms•Software Engineer Coding & Algorithms
PracHub

Master your tech interviews with 7,500+ real questions from top companies.

Product

  • Questions
  • Learning Tracks
  • Interview Guides
  • Resources
  • Premium
  • For Universities
  • Student Access

Browse

  • By Company
  • By Role
  • By Category
  • Topic Hubs
  • SQL Questions
  • Compare Platforms
  • Discord Community

Support

  • support@prachub.com
  • (916) 541-4762

Legal

  • Privacy Policy
  • Terms of Service
  • About Us

© 2026 PracHub. All rights reserved.