Stripe software engineer interviews cover algorithms, data structures, system design, and coding problems drawn from real interview rounds.
usage_report specifying the target region and...Input: Arraydef find_shortest_transaction_path(transactions: List[Tuple[str, str]], start: str, end: str) -> List[str]:transactions = [("A", "B"), ("B", "C"), ("A", "C")], start = "A", end = "C" ['A', 'C'] transactions = [("A", "B"), ("B", "C"), ("C", "A")], start = "A", end = "D" [] processed or unprocessed). Create a function that returns all payment IDs that are unprocessed.def find_unprocessed_payments(payment_list: List[Tuple[str, str]]) -> List[str]:payment_list = [('abc123', 'processed'), ('xyz789', 'unprocessed'), ('qwe456', 'processed')] ['xyz789'] xyz789 is unprocessed.Example 2: payment_list = [('p1', 'unprocessed'), ('p2', 'unprocessed'), ('p3', 'processed')] ['p1', 'p2'] p1 and p2 are classified as unprocessed.Constraints:payment_list can be between 1 and 10^5.100 characters.processed or unprocessed. int transactionId, double amount, string date, and nested transactions. Implement methods to add a transaction and to retrieve the transaction with the highest amount.addTransaction(transactionId: int, amount: double, date: string): void: Add a transaction to the history.getMaxTransaction(): (int, double, string): Returns the ID, amount, and date of the transaction with the highest amount.addTransaction(1, 100.50, '2023-03-01')NoneExample 2:addTransaction(2, 200.75, '2023-03-02')NoneInput: getMaxTransaction()(2, 200.75, '2023-03-02')1 <= transactionId <= 10^60 <= amount <= 10^6date follows the format 'YYYY-MM-DD'.string apiKey. Ensure that the rate limiter has a method to track requests and should return a boolean indicating whether the request is allowed.trackRequest(apiKey: string): boolean: Returns true if the request is allowed, false otherwise.trackRequest('key1')truetrackRequest('key1') (100 times)true (first 100 calls)false (101st call)1 <= apiKey.length <= 10010^6 requests.PaymentProcessor class will manage different types of payments, ensuring they can be processed securely and reliably.Requirements: initiate_payment(payment_method: str, amount: float) -> str approve_transaction(transaction_id: str) -> bool decline_transaction(transaction_id: str) -> bool get_transaction(transaction_id: str) -> dict initiate_payment('credit_card', 100.00) → Output: transaction_id: 'txn_12345' approve_transaction('txn_12345') → Output: True def add_server(self, server: str) -> None: def remove_server(self, server: str) -> None: def get_next_server(self) -> str: def health_check(self) -> List[str]: def log_request(self, server: str) -> None: load_balancer = LoadBalancer()
load_balancer.add_server("server1")
load_balancer.add_server("server2")
load_balancer.get_next_server() "server1" server1 on the first call. load_balancer.add_server("server3")
load_balancer.get_next_server()
load_balancer.get_next_server() "server2" server1, the next in line is server2 followed by server3. process_transaction(transaction_id: str, amount: float) - Processes a transaction and updates internal state. get_transaction_status(transaction_id: str) - Retrieves the status of a specific transaction. refund_transaction(transaction_id: str) - Issues a refund for a completed transaction and updates the status. process_transaction(transaction_id: str, amount: float) -> None - Processes the transaction identified by transaction_id with the specified amount. get_transaction_status(transaction_id: str) -> str - Returns the status of the specified transaction.refund_transaction(transaction_id: str) -> bool - Refunds the transaction and returns True if successful, False otherwise.tp = TransactionProcessor() tp.process_transaction('txn_001', 100.0) tp.get_transaction_status('txn_001') → Output: 'successful' tp = TransactionProcessor() tp.process_transaction('txn_002', 50.0) tp.refund_transaction('txn_002') tp.get_transaction_status('txn_002') → Output: 'refunded' def create_campaign(id: str, name: str, budget: float, start_date: str, end_date: str) -> None: Creates a new campaign. def update_campaign_status(id: str, status: str) -> None: Updates the status of the campaign. def fetch_campaigns(start_date: str, end_date: str) -> List[Dict]: Returns all campaigns within the date range. def calculate_returns(id: str) -> float: Calculates returns for the specific campaign based on its spend and performance metrics. def list_campaigns_by_status(status: str) -> List[Dict]: Lists all campaigns with a specified status. def pause_campaign(id: str) -> None: Pauses an active campaign. def resume_campaign(id: str) -> None: Resumes a paused campaign. create_campaign('001', 'Holiday Sales', 10000.0, '2023-11-01', '2023-11-30') Campaign created. pause_campaign('001') Campaign paused. POST /charges: Creates a new charge.GET /charges/{chargeId}: Retrieves the status of a specific charge.GET /charges: Lists all transactions based on pagination parameters.POST /charges with body {amount: 1000, currency: 'usd', source: 'tok_visa'}201 Created with body {id: 'ch_1FZh2I2eZvKYlo2C4H2gGm7', status: 'succeeded'}Example 2:GET /charges/ch_1FZh2I2eZvKYlo2C4H2gGm7200 OK with body {id: 'ch_1FZh2I2eZvKYlo2C4H2gGm7', status: 'succeeded'}chargeId, an amount in cents, and a currency string, e.g., 'usd'.get(key: int): int: Retrieves the value of the key if the key exists in the cache, otherwise returns -1.put(key: int, value: int): void: Updates the value of the key if the key exists, and if the cache reaches its capacity, it should invalidate the least recently used item before inserting a new item.put(1, 1)NoneInput: put(2, 2)NoneInput: get(1)1Input: put(3, 3)NoneInput: get(2)-1Sign up for free to access walkthroughs, AI-generated questions, and more.
Get Started Free