Ramp OA interview experience sharing: three-level progressive examination, don’t underestimate the basic questions

1,146 Views

Ramp Online Assessment has clearly become a "watershed moment" for screeners in the past year. It is not an OA in the traditional sense that can be solved by brushing LeetCode, but through a layer-by-layer progressive business-type question design, it systematically examines the candidate's code organization ability, data structure design thinking, and whether the boundary conditions are rigorously handled. Based on the actual feedback from many of our students who have recently completed the Ramp OA, we will systematically review this set of OA from the four dimensions of OA structure, dismantling of real questions, hidden test points, and high-frequency error points.

Ramp OA basic information overview

  • Exam format: Online programming assessment (non-pure algorithm test)
  • Exam duration: approximately 90 minutes
  • Language selection: Python/Java/C++ and other mainstream languages
  • Question structure: single business background, divided into levels and gradually become more difficult
  • Core features:
    • Wrong writing on the previous level makes it almost impossible to continue.
    • Code correctness + design rationality are equally important

The overall difficulty of Ramp OA is not won by "algorithm strength", but by density of details and logical completeness.

Ramp OA interview experience sharing: three-level progressive examination, don’t underestimate the basic questions

Content of real questions

Level 1

The cloud storage system should support file manipulation.

  • add_file(self, name: str, size: int) -> bool - should add a new file name to the storage. size is the amount of memory required in bytes. the current operation fails if a file with the same The current operation fails if a file with the same name already exists. returns True if the file was added successfully or False otherwise.
  • get_file_size(self, name: str) -> int | None - should return the size of the file name if it exists, or None otherwise.
  • delete_file(self, name: str) -> int | None - should delete the file name. Returns the deleted file size if the deletion was successful or None if the file does not exist.

Examples

add_file("/dir1/dir2/file.txt", 10) → True
add_file("/dir1/dir2/file.txt", 5) → False
get_file_size("/dir1/dir2/file.txt") → 10
delete_file("/non-existing.file") → None
delete_file("/dir1/dir2/file.txt") → 10
get_file_size("/not-existing.file") → None

Level 2

Implement an operation for retrieving some statistics about files with a specific prefix.

  • get_n_largest(self, prefix: str, n: int) -> list[str] - should return the list of strings representing the names of the top n largest files with names starting with prefix in the following format. ["<name_1>(<size_1>)", ..., "<name_n>(<size_n>)"].

Sorting rules.

  1. By size (descending)
  2. If tie → lexicographical order

Examples

add_file("/dir/file1.txt", 5) → True
add_file("/dir/file2", 20) → True
add_file("/dir/deeper/file3.mov", 9) → True
get_n_largest("/dir", 2) → ["/dir/file2(20)", "/dir/deeper/file3.mov(9)"]
get_n_largest("/dir/file", 3) → ["/dir/file2(20)", "/dir/file1.txt(5)"]
add_file("/another_dir", "file.txt") → None (invalid input)
add_file("/big_file.mp4", 20) → True
get_n_largest("/", 2) → ["/big_file.mp4(20)", "/dir/file2(20)"]

Level 3

Implement support for queries from different users.

  • add_user(self, user_id: str, capacity: int) -> bool - Add new user with storage limit. fail if user already exists.
  • add_file_by(self, user_id: str, name: str, size: int) -> int | None - similar to add_file, but restricted by user's remaining capacity. return remaining capacity if success, None otherwise.
  • merge_user(self, user_id_1: str, user_id_2: str) -> int | None - merge user2 into user1: transfer files and add remaining capacity. Delete user2 after merge.

⚠️ Note: All queries calling the add_file from Level 1 are run by "admin" who has unlimited storage.

My Experience

Ramp OA is not just an algorithmic question, it's more of a code design question:

  • Level 1 Basic, the main test is whether you can clean code.
  • Level 2 begins to look at sorting + data structure selection, to ensure complexity.
  • Level 3 is more system design oriented and requires consideration of multi-user restrictions, storage management, and merge logic.

Personally, I think the hard part is Designing the data structure, at the beginning, you have to choose whether to nest the dictionary, or class storage, otherwise it will be very troublesome to add the function later.

You're one step away from an Offer & Programhelp

This time, I was able to get through the Ramp OA because I had brushed up on similar questions in advance. If you are about to face Ramp or similar OA, and want to be faster and more stable, you can actually consider Programhelp.

The team has Amazon, Google engineers and Oxford and Tsinghua seniors, providing services such as OA ghostwriting, untraceable online help, VO real-time tips, and interview simulation. The efficiency and pass rate will be much higher than brushing the questions alone.

Contact us and let us help you get OA together and take the ideal opportunity!

author avatar
Jory Wang Amazon Senior Software Development Engineer
Amazon senior engineer, focusing on the research and development of infrastructure core systems, with rich practical experience in system scalability, reliability and cost optimization. Currently focusing on FAANG SDE interview coaching, helping 30+ candidates successfully obtain L5/L6 Offers within one year.
END