How does this work?
Each of these challenges is a timed test with automated grading. If your code does well, our technologists will review it for elegance and mastery of computer science fundamentals.
What role is this for?
Our Technology Associate role. Bridgewater thrives on cutting edge technology, and we need people with great engineering skills to build it.
Trading Server Deadlocks
A few months ago we were running a new release of our trade server in QA and experienced a hang. The system was accepting connections from clients, but no longer processing any transactions. This system is critical to many of our major trading operations and so, the issue was a big deal to fix before we released to production.
The trade server supports many different execution paths which take out various locks on shared resources. Upon investigation, we found that the system had experienced a deadlock between two of those execution paths. To ensure we fixed the problem holistically (rather than just the deadlock case that we caught), we wanted to examine all the execution paths in the system and determine all cases that were constructed in a way that they can cause deadlocks.
We'll provide you a set of execution paths. Each is written as an ordered list of lock acquisitions. Your job is to write a program which enumerates all the subsets of sets of execution paths that could result in a deadlock if executed in parallel.Try This Challenge
Market Data Error Detection
At Bridgewater we have a philosophy of systemization - we build automated trading platforms where we can rapidly iterate and improve our strategies. As such, data quality becomes important to avoid costly errors. In order to ensure we're using accurate data for trading decisions, we've also automated much of the data validation logic. While some error checking (e.g. detecting 0s in data which should only contain positive numbers) is easy, other error checking is much harder (e.g. sporadic aberrations in pricing data). Most error checking is done through stream algorithms as the quantity and pace of data is far too much to analyze the data statically.
In this challenge, you'll walk through one of the streaming algorithms we use to check for data aberrations. First, you'll implement a simple moving average to familiarize you with the concepts of stream processing. Then you'll have a chance to implement moving median with error detection.Try This Challenge