CS-OA cs-vo Faang

Welcome to Optiver Campus Software Engineer Test 2024-US-US/UK – Optiver OA 真题披露

1. Question 1

A supermarket has many customers entering and exiting at various points. They want to keep track of customers and get notifications when a customer leaves the store.

There are a number of checkout lines, where customers with baskets of items queue to pay and exit the store. Individual checkout lines and customers are assigned numerical IDs.

As happens in life, sometimes customers want to add more items to their baskets and sometimes they realize that they don't need certain items they picked up earlier and remove them from the basket.

To enforce checkout priorities a few rules have been implemented in the supermarket:

  • A customer cannot switch the lines before exit once they join a given checkout line.
  • If a customer increases their items to purchase, they must go to the back of the same line.
  • If a customer removes items from their basket, they will keep their position in the line (or leave the store if they don't have any more items).

A customer will leave the supermarket as soon as they have no items left to checkout. Note that the lines with smaller IDs are closer to the exit, so if two customers pass the checkout line at the same time, the one closer to the exit would leave the store first.

Problem Statement

You will receive the stream of N instructions. Each instruction can be one of the following:

  1. CustomerEnter id x y
    A customer with ID id enters the store with x items and joins the line y.
  2. CustomerExit id
    A customer with ID id exits the store.
  3. LineService y
    Process one customer from the line y.

Write a program to simulate the operations and generate the appropriate output for each step based on the instructions provided.

2. Question 2

We have a huge trading system at Optiver, running 10,000+ instances of binaries in production performing unique functions. Processes often have dependencies on other processes to input data from various sources and fetch parameters configured in files and databases. Every week we need to start all these processes and also stop them in the correct order. The longer these processes run, the more money we make, so we want to schedule them to run for as long as possible. Scheduling these processes to run correctly and at the correct time is a complex task, which we want you to solve for us.

Problem Statement

In this problem, you will be given a list of processes, each with a unique ID PID, a start time S - which is the earliest the process can start, and an end time E - which is the latest the process can end. You will also be given a list of inter-process dependencies, PID1 -> PID2, indicating that PID1 must start strictly before PID2 can start, and PID2 must end strictly before PID1 can end.

Time for the week is divided into integer time units that start from 1 and go up to 10^6 (inclusive).

The scheduler can only schedule processes to start or stop at the start of a time unit, for example at 1, 2, 1000, 999999 but not at 1.5, 7001, etc.

Class Description

Your task is to implement the Scheduler class which has a constructor and a PrintSchedule method.

The class constructor has the following parameters:

  • processes[0, ..., N-1]: an array of start-time and end-time pairs

With our OA writing service, our Optiver company's OA perfectly achieved a full score. If you also need OA assistance, please contact us.

如果你需要OA代写,请联系我们, 确保满分。

Leave a Reply

Your email address will not be published. Required fields are marked *