Category: Sliding window system design problemThese are commonly asked system design questions from Rippling interviewsInput: Given input Output: Computed result
system designSeniorapi design#1
1. [OA] Service Health Monitor — Design a system to track the health of Rippling services
Rippling requires a system to continuously monitor the health status of its various services to swiftly address any outages or performance issues. Problem Statement: Design a ServiceHealthMonitor class that provides: - registerService(name: string): Register a new service for health monitoring. - reportHealth(name: string, status: string): Report the health status of the service (e.g., 'UP', 'DOWN'). - getHealthReport() -> Dict<string, string>: Retrieve the health status of all registered services. Example 1: Input: registerService('Billing Service') Output: Success message indicating the service has been registered. Explanation: The health monitor now tracks the billing service's status. Constraints: - Supports health statuses of up to 500 services. - Status updates must be captured within 100 milliseconds.
system designSeniorapi design#2
2. [OA] Distributed Config Manager — Design a system to manage configuration across Rippling services
Rippling's various microservices require a consistent and easily manageable configuration system to maintain operational consistency across different deployments. Problem Statement: You need to design a DistributedConfigManager class that offers the following functionalities: - getConfig(key: string) -> string: Retrieve the configuration for a specified key. - setConfig(key: string, value: string): Set a new value for a specified key. - listConfigs() -> List<string>: List all configuration keys available. Example 1: Input: setConfig('DATABASE_URL', 'mysql://localhost:3306') Output: Success message Explanation: The configuration value is set successfully. Constraints: - The system must handle at least 1000 configuration keys. - Retrieval and setting must occur in O(1) time.