Bird
Raised Fist0
HLDsystem_design~5 mins

Online presence system in HLD - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is an online presence system?
An online presence system shows if a user is currently active, idle, or offline in a digital platform like chat apps or social networks.
Click to reveal answer
intermediate
Why is scalability important in an online presence system?
Scalability ensures the system can handle many users updating their status at the same time without slowing down or crashing.
Click to reveal answer
intermediate
What role does a heartbeat mechanism play in an online presence system?
A heartbeat is a regular signal sent by a user’s device to confirm they are still online, helping the system update their status accurately.
Click to reveal answer
intermediate
Name a common data store used for fast online presence lookups.
In-memory databases like Redis are often used because they provide quick read and write access to user status data.
Click to reveal answer
advanced
How does an online presence system handle users who suddenly disconnect?
It uses timeouts and missing heartbeats to mark users as offline after a short delay to avoid false offline status.
Click to reveal answer
What does an online presence system primarily track?
AUser passwords
BUser activity status (online, offline, idle)
CUser profile pictures
DUser purchase history
Which component helps detect if a user is still connected in real-time?
AHeartbeat mechanism
BDatabase backup
CLoad balancer
DCache eviction
Which data store is best for fast presence status updates?
AFile system
BRelational database
CRedis
DCold storage
What happens if a user stops sending heartbeats?
AUser status changes to busy automatically
BUser status remains online indefinitely
CUser is deleted from the system
DUser is marked offline after timeout
Why should an online presence system be scalable?
ATo handle many users updating status simultaneously
BTo store large video files
CTo run on a single server only
DTo reduce user interface complexity
Explain how an online presence system detects and updates user status in real-time.
Think about how the system knows if a user is still connected or not.
You got /4 concepts.
    Describe key design considerations to make an online presence system scalable and reliable.
    Focus on performance and accuracy under load.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the primary purpose of an online presence system in a chat application?
      easy
      A. To track if users are currently online or offline
      B. To store chat message history permanently
      C. To encrypt messages between users
      D. To manage user account passwords

      Solution

      1. Step 1: Understand the role of presence system

        An online presence system tracks user activity to know if they are online or offline.
      2. Step 2: Differentiate from other chat features

        Message storage, encryption, and password management are separate features not handled by presence systems.
      3. Final Answer:

        To track if users are currently online or offline -> Option A
      4. Quick Check:

        Presence system = user online status [OK]
      Hint: Presence means tracking user online/offline status [OK]
      Common Mistakes:
      • Confusing presence with message storage
      • Thinking presence handles security features
      • Mixing presence with account management
      2. Which event is NOT typically used in an online presence system to track user status?
      easy
      A. message_send
      B. connect
      C. disconnect
      D. heartbeat

      Solution

      1. Step 1: Identify presence tracking events

        Presence systems use connect, heartbeat, and disconnect to track user activity.
      2. Step 2: Recognize unrelated events

        message_send relates to sending chat messages, not presence tracking.
      3. Final Answer:

        message_send -> Option A
      4. Quick Check:

        Presence events exclude message sending [OK]
      Hint: Presence tracks connection, not message sending [OK]
      Common Mistakes:
      • Assuming message events track presence
      • Confusing heartbeat with message_send
      • Ignoring disconnect event importance
      3. Given this simplified presence update code snippet, what will be the user's status after 10 seconds?
      user_last_seen = 0
      current_time = 10
      heartbeat_interval = 5
      if current_time - user_last_seen <= heartbeat_interval:
          status = 'online'
      else:
          status = 'offline'
      medium
      A. Error due to comparison
      B. "online"
      C. "offline"
      D. "unknown"

      Solution

      1. Step 1: Calculate time difference

        current_time - user_last_seen = 10 - 0 = 10 seconds.
      2. Step 2: Compare with heartbeat interval

        10 <= 5 is false, so status is set to 'offline'.
      3. Final Answer:

        "offline" -> Option C
      4. Quick Check:

        Time diff > heartbeat means offline [OK]
      Hint: Compare last seen time difference with heartbeat [OK]
      Common Mistakes:
      • Mixing up less than and greater than
      • Forgetting to subtract last seen time
      • Assuming status is always online
      4. Identify the bug in this presence update logic:
      def update_status(last_seen, current_time, heartbeat=10):
          if current_time - last_seen > heartbeat:
              return 'online'
          else:
              return 'offline'
      medium
      A. Function should return a boolean, not string
      B. The comparison sign should be reversed
      C. Heartbeat value should be negative
      D. No bug, logic is correct

      Solution

      1. Step 1: Analyze the condition meaning

        If time difference is greater than heartbeat, user should be offline, not online.
      2. Step 2: Correct the comparison

        The condition should return 'offline' when difference > heartbeat, so the comparison sign must be reversed.
      3. Final Answer:

        The comparison sign should be reversed -> Option B
      4. Quick Check:

        Time diff > heartbeat means offline [OK]
      Hint: Online if time diff ≤ heartbeat, else offline [OK]
      Common Mistakes:
      • Returning online when user is inactive
      • Misunderstanding heartbeat meaning
      • Ignoring return type correctness
      5. You need to design an online presence system for a messaging app with millions of users. Which approach best ensures scalability and real-time accuracy?
      hard
      A. Store presence data in user profile tables updated once per day
      B. Store user status in a centralized database and query it on every client request
      C. Send presence updates only when users log in or log out, ignoring heartbeats
      D. Use distributed in-memory cache with TTL and heartbeat updates from clients

      Solution

      1. Step 1: Evaluate centralized database approach

        Querying a centralized DB for every request causes high latency and bottlenecks at scale.
      2. Step 2: Consider distributed cache with TTL and heartbeats

        This approach keeps presence data fresh, reduces DB load, and supports real-time updates efficiently.
      3. Step 3: Analyze other options

        Ignoring heartbeats or updating once per day leads to stale presence info, unsuitable for real-time apps.
      4. Final Answer:

        Use distributed in-memory cache with TTL and heartbeat updates from clients -> Option D
      5. Quick Check:

        Distributed cache + heartbeat = scalable real-time presence [OK]
      Hint: Use cache with TTL and heartbeats for scalable presence [OK]
      Common Mistakes:
      • Relying on centralized DB for real-time presence
      • Ignoring heartbeat updates causing stale data
      • Updating presence too infrequently