
Here’s my experience with the Marshall Wace OA. I applied for the tech intern position. There was only one LeetCode-style problem that focused on processing JSON data. There was also one SQL question, and another task where you had to debug code written in an uncommon language, which you can easily search for online. Overall, it was pretty straightforward, and the time was more than enough.
I am really grateful for the tool Linkjob.ai, and that's also why I'm sharing my entire interview experience here. Having an invisible AI assistant during the interview is indeed very convenient.

Solution Approach:
To solve this problem, we need to find all user IDs that have at least one “SUCCESS” login and have logged in from two or more different countries. The steps are:
Filter records: Select only the rows where status = 'SUCCESS'.
Group and count: Group the results by user_id and count the number of distinct countries for each user using COUNT(DISTINCT country).
Filter results: Keep only those user_ids with two or more distinct countries, and sort them alphabetically.
Final SQL query:
SELECT user_id
FROM login_attempts
WHERE status = 'SUCCESS'
GROUP BY user_id
HAVING COUNT(DISTINCT country) >= 2
ORDER BY user_id;

Solution Approach:
This problem can be solved using a sliding window (two-pointer) approach, since the timestamps are sorted. Here’s how to do it:
Initialize two pointers: left = 0, and iterate through each right.
For each right, move the left pointer forward until timestamps[right] - timestamps[left] < 60 (ensuring the window covers only 60 seconds).
Count the number of events within the window (right - left + 1) and update the maximum count.
Here’s my Python implementation:
def max_events_in_60s(timestamps):
max_count = 0
left = 0
for right in range(len(timestamps)):
# Move left pointer to keep window within 60 seconds
while timestamps[right] - timestamps[left] >= 60:
left += 1
# Count current window events and update max
current_count = right - left + 1
if current_count > max_count:
max_count = current_count
return max_countExample:
If timestamps = [1, 2, 61, 62, 121], the output will be 2, since the windows [1, 2] and [61, 62] both contain the maximum number of events within 60 seconds.
To perform well in the Marshall Wace Codility Test, which emphasizes financial data scenarios, algorithmic efficiency, and code robustness, you need to prepare across three key areas: technical skills, platform familiarity, and mindset management.
Focus on problems involving time-series data processing, high-frequency data filtering, and deduplication. Practice using Python’s Pandas library to handle minute-level stock price data, and master techniques like sliding windows and hash tables for financial use cases.
Pay close attention to algorithmic complexity. Start with brute-force O(n²) approaches, then practice optimizing them through sorting and binary search to reach O(n log n), ensuring scalability for large datasets.
Simulate edge and exception cases, such as writing functions that process trading orders with missing fields. Include field validation, type conversion, and error handling (try-except) logic.
Also, improve code readability by using clear variable names and adding comments to explain key logic steps. This approach aligns with Marshall Wace’s emphasis on writing maintainable, production-quality code.
Review probability, statistics, and linear algebra, focusing on topics like parameter estimation in option pricing models and Monte Carlo simulations for strategy risk evaluation.
You can practice using quantitative finance problem sets on LeetCode to build intuition for combining mathematical modeling with code implementation.
Create a Codility account and complete one or two official practice tests to get used to the interface. Learn how to check execution time and memory usage so you don’t lose time during the actual test.
Use question sets that match Marshall Wace’s difficulty level (for example, LeetCode Medium–Hard problems or Codility’s “Finance” section) to practice under time constraints and improve time allocation strategy.
Test your setup one day before the exam. Ensure your computer runs smoothly, disable unnecessary browser extensions, and use a wired connection for better stability.
Don’t get stuck on a single question. If a problem takes too long, mark it and move on to others you can solve more confidently. This helps maximize your score within limited time.
Before submitting, check boundary conditions and syntax errors to avoid losing points on minor mistakes.
Double-check the instructions in the HR email: verify the test link validity, language options, and set a reminder 30 minutes before the start so you have enough time to prepare and avoid being late.
I started by reading the job description and understanding what Marshall Wace wanted.
I made sure my application was complete and error-free.
I practiced coding problems every day, focusing on topics that often appear in tests.
I set up a quiet space for the test and checked my internet connection.
I reviewed my answers before submitting the test.
I found some resources that helped me during my application process. You might find these useful too:
LeetCode and HackerRank for coding practice.
Codility’s own demo tests.
YouTube tutorials for tricky algorithms.
Reddit threads about the Marshall Wace application.
Before you start your application, check these points:
Is your application complete?
Did you practice under timed conditions?
Do you know the test format?
Are you comfortable with your chosen programming language?
Did you test your setup?
My Intern OA lasted 70 minutes. For roles like Quant, the duration is likely longer since Quant tests usually include three coding questions.
Yes, in addition to coding questions, there are also multiple-choice questions.
Python, C++, or Java are all allowed. Python is generally a bit easier to use.