Ramp

Ramp Software Engineer Interview Questions

25+ questions from real Ramp Software Engineer interviews, reported by candidates.

25
Questions
6
Round Types
8
Topic Areas
2022-2026
Year Range

Round Types

OA 7 Phone 6 Phone Screen 3 Onsite 3 Technical 2 System Design 1

Top Topics

Questions

I have a 60-minute live coding interview coming up for the Ramp Android Software Engineer Internship and was curious if anyone here has gone through the process recently. From what I’ve seen online, i

I just received a CodeSignal assessment for the frontend position at Ramp. I'm seeing mixed and outdated information online. Has anyone taken it recently? I’d really appreciate any insights on the for

This post was last edited by Anonymous on 2025-09-29 10:38. I applied for an Applied AI Engineer position at the end of September and immediately received an online assessment (OA) invitation. It was

This question has appeared before. This question bank is probably quite small. Given a set of flight information, each flight includes: departure airport, departure time, arrival airport, arrival time

This post was last edited by Anonymous on 2025-09-29 11:07. This is my third sharing this week. I'm asking for points to see my interview experience! This time, I applied for a Software Engineer/Platf

Has anyone interviewed with Ramp? I heard there is a codesignal OA and a Hireflix video interview? Can anyone share some detail?

I think I got the online assessment (OA) for free by mass applying. Many people said they got 45 minutes, but mine was 90 minutes for the code signal 4 parts. It was progressive; you had to solve one

Hey guys, I have an interview coming up soon for Ramp and they mention "No leetcode-style or algorithmic type questions" but yet it's a coding round in my Programming Language of choice. I have two we

Hi, Interviewing for the Ramp Backend Engineering position. I got past the code signal easily, had a recruiter screen that went well. I then did the front end interview and was unable to finish comple

Hi everyone, I recently completed an assessment for a Frontend Developer role and I’m preparing for the next interview rounds. What kind of frontend questions are usually expected in interviews? Shoul

Has anyone done Ramp’s **AI live coding interview** recently? Curious what the format/tasks look like. Would really appreciate any insight — feel free to **DM me** if you prefer. 🙏

Design a feature flag system for a mid size company. It should support an API like flags.isOn(String flagName, Context context); Design everything needed to support this api, flag rollouts, ramp...

Hi everyone, I recently passed Ramp's online assessment and am preparing for their phone screen. Since I haven't had much experience with phone interviews, I’m unsure what to expect and couldn’t find

I recently got an invite to the first technical phone screen round for Ramp's frontend engineer intern position, and I really want to give it my best shot. All I heard from a recruiter is they don't t

## Round 1 - Coding / OA ## Problem Simulate a bank account system. Implement `deposit`, `withdraw`, and `transfer`. Withdrawals fail if the account balance would fall below zero. Transfers atomically move funds between two accounts — if the source lacks funds, the transfer fails entirely. ```python class BankAccount: def __init__(self, account_id: str, balance: float): ... def deposit(self, amount: float) -> float: # returns new balance ... def withdraw(self, amount: float) -> float: # raises InsufficientFundsError if fails ... class Bank: def __init__(self): ... def add_account(self, account: BankAccount) -> None: ... def transfer(self, from_id: str, to_id: str, amount: float) -> bool: ... def get_balance(self, account_id: str) -> float: ... ``` ## Example ``` bank = Bank() bank.add_account(BankAccount("ACC1", 500)) bank.add_account(BankAccount("ACC2", 100)) bank.transfer("ACC1", "ACC2", 200) -> True bank.get_balance("ACC1") -> 300 bank.get_balance("ACC2") -> 300 bank.transfer("ACC2", "ACC1", 500) -> False # insufficient ``` ## Follow-ups 1. How do you prevent race conditions if two threads transfer from the same account simultaneously? 2. How would you implement a transaction history log with timestamps? 3. What happens if `from_id` or `to_id` doesn't exist in the bank? 4. How would you add an overdraft limit so accounts can go negative up to a set threshold?

## Problem Implement calendar operations such as event scheduling, conflict detection, or free time finding. ## Likely LeetCode equivalent No direct unambiguous match. ## Tags arrays, sorting, greedy

## Problem Render or compute a calendar view layout for a set of events, handling overlaps and display constraints. ## Likely LeetCode equivalent No direct match with high confidence. ## Tags arrays, sorting, coding_other

## Round 1 - Coding ## Problem Given the contents of a CSV file as a string, implement a query engine that supports `SELECT`, `WHERE` (with `=` and `>` conditions), and `ORDER BY`. No external CSV or database libraries allowed. ```python class CSVQuery: def __init__(self, csv_data: str): ... def select(self, columns: list[str]) -> list[dict]: ... def where(self, column: str, op: str, value: str) -> 'CSVQuery': # op: "=", ">", "<" ... def order_by(self, column: str, ascending: bool = True) -> 'CSVQuery': ... def execute(self) -> list[dict]: ... ``` ## Example ``` csv = """name,age,dept Alice,30,Eng Bob,25,Sales Carol,35,Eng""" q = CSVQuery(csv) result = q.where("dept", "=", "Eng").order_by("age").select(["name","age"]).execute() # -> [{"name":"Alice","age":"30"},{"name":"Carol","age":"35"}] ``` ## Follow-ups 1. How do you handle quoted fields that contain commas, e.g. `"Smith, John"`? 2. How would you support numeric comparison for integer and float columns? 3. Add support for `LIMIT N` — where in the chain does it apply? 4. How would you handle missing or empty values in a column used for sorting or filtering?

## Round 1 - Coding ## Problem Implement a command-line currency converter. The CLI accepts commands to set exchange rates, convert amounts, and query conversion chains (convert through an intermediate currency if a direct rate isn't available). ```python class CurrencyCLI: def set_rate(self, from_curr: str, to_curr: str, rate: float) -> None: ... def convert(self, amount: float, from_curr: str, to_curr: str) -> float: # returns -1.0 if conversion is impossible ... def best_rate(self, from_curr: str, to_curr: str) -> float: # returns the effective rate via the best available path ... ``` ## Example ``` cli = CurrencyCLI() cli.set_rate("USD", "EUR", 0.92) cli.set_rate("EUR", "GBP", 0.86) cli.convert(100, "USD", "EUR") -> 92.0 cli.convert(100, "USD", "GBP") -> 79.12 # USD->EUR->GBP cli.convert(100, "USD", "JPY") -> -1.0 # no path cli.best_rate("USD", "GBP") -> 0.7912 ``` ## Follow-ups 1. Rates are bidirectional — if USD->EUR is 0.92, what is EUR->USD? How do you store both? 2. How do you find the path that maximizes the converted amount (best rate) rather than any valid path? 3. How do you detect arbitrage opportunities (a cycle where converting back yields more than you started)? 4. How would you cache rates with a TTL so stale rates expire after 60 seconds?

## Round 1 - Coding ## Problem Implement a flight tracking system. Flights have a status that updates over time. Support querying all flights by origin, destination, or status. Also return any flights currently delayed. ```python class FlightTracker: def add_flight(self, flight_id: str, origin: str, dest: str, departure: str, arrival: str) -> None: ... def update_status(self, flight_id: str, status: str, delay_minutes: int = 0) -> None: # status: "on_time", "delayed", "landed", "cancelled" ... def get_delayed(self) -> list[str]: # returns flight_ids ... def flights_from(self, origin: str) -> list[dict]: ... def flights_to(self, dest: str) -> list[dict]: ... ``` ## Example ``` tracker = FlightTracker() tracker.add_flight("AA100", "JFK", "LAX", "08:00", "11:30") tracker.add_flight("UA200", "ORD", "LAX", "09:00", "12:00") tracker.update_status("AA100", "delayed", 45) tracker.get_delayed() -> ["AA100"] tracker.flights_to("LAX") -> [{"id":"AA100",...},{"id":"UA200",...}] ``` ## Follow-ups 1. How do you efficiently query all flights originating from a given airport if you have 10,000 flights? 2. If a flight status changes multiple times, how do you maintain a history of state transitions? 3. How would you alert subscribers when a specific flight's status changes? 4. Design the schema to store this in a relational database. Which columns would you index?

See All 25 Ramp Software Engineer Questions

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

Get Access