Brex

Brex Software Engineer Interview Questions

5+ questions from real Brex Software Engineer interviews, reported by candidates.

5
Questions
3
Round Types
5
Topic Areas
2024-2026
Year Range

Round Types

Phone 2 Phone Screen 1 Onsite 1

Top Topics

Questions

Hi, I have an interview for the SWE intern position at Brex coming up and was wondering if anyone could share their experience? Especially for the debugging round? Any help would be greatly appreciate

Implement a basic calculator that can perform addition and multiplication based on a string.

## Problem Implement a rate-limited API client wrapper. The client must respect a maximum of `rate_limit` requests per second. If a request fails with a retryable error (HTTP 429 or 5xx), retry up to `max_retries` times using exponential backoff. Non-retryable errors (4xx except 429) should raise immediately. ```python import time class RateLimitedClient: def __init__(self, rate_limit: int, max_retries: int = 3): pass def get(self, url: str) -> dict: """Make a GET request. Returns parsed JSON response.""" pass def post(self, url: str, payload: dict) -> dict: pass ``` ``` Example behavior: client = RateLimitedClient(rate_limit=10, max_retries=3) # 10 requests/sec max enforced internally # On 429: wait 2^attempt seconds, retry # On 500: same retry logic # On 404: raise immediately ``` ## Follow-ups 1. How would you implement a token bucket or leaky bucket to enforce the rate limit? 2. How does jitter in exponential backoff reduce thundering herd problems? 3. How would you make the client thread-safe for concurrent callers? 4. Extend to support request queuing: callers submit requests and await results asynchronously.

## Problem Parse and evaluate algebraic expressions written in English words or natural language form. ## Likely LeetCode equivalent None identified with high confidence. ## Tags coding, strings, parsing, phone

## Problem You are given a list of transactions `(account_id, timestamp, amount)`. Flag any account where the total transaction amount exceeds a daily limit `L` on any single calendar day. Return a list of `(account_id, date)` pairs that were flagged, sorted by account then date. ```python from datetime import date def flag_accounts( transactions: list[tuple[int, int, float]], # (account_id, unix_ts, amount) daily_limit: float ) -> list[tuple[int, date]]: pass ``` ``` Input: transactions = [ (1, 1700000000, 500.0), (1, 1700000100, 600.0), # same day as above (2, 1700000000, 100.0), ] daily_limit = 1000.0 Output: [(1, date(2023, 11, 14))] # Account 1 total on that day = 1100 > 1000 # Account 2 total = 100 <= 1000 ``` ## Follow-ups 1. How do you handle timezone-aware vs. UTC timestamps when grouping by calendar day? 2. If transactions stream in real time, how do you efficiently update daily totals without reprocessing all records? 3. Extend to flag accounts that exceed a rolling 24-hour window, not just a calendar day. 4. How would you write a SQL query to solve this problem instead?

See All 5 Brex Software Engineer Questions

Full question text, answer context, and frequency data for subscribers.

Get Access