Mistral AI Software Engineer Interview Experience — Two CodeSignal Rounds, Ran Out of Time on the DP Question
Company: Mistral AI
Role: Software Engineer
Round: Technical Screen
Seniority: General
Company: Mistral AI
Role: Software Engineer
Round: Technical Screen
Seniority: General
French AI company, the interviewers all seemed to be based in France, but the position itself is in NYC, and the recruiter is on the US side too. I talked with the hiring manager for half an hour, then moved into the phone interview stage.
Two phone interview rounds: coding + system design, both done on CodeSignal. Overall I felt the bar was pretty high.
Coding
Three questions total. The first two were easy, don't get stuck on them. The third one was DP, and it was hard — by the time I got to it I only had 10 minutes left, so I never got to a DP solution.
The questions, roughly:
Question 1: An array represents a set of GPU clusters, like [10, 20]. Every day there's some Usage, and you need to output how many GPUs are left each day. Usage is a predefined class:
class Usage():
self.day = day
self.cluster = cluster
self.gpu = gpu
Write a function whose input is a list of Usage objects and whose output is a 2D array, e.g. [[5, 7], [10, 12], [15, 18]], representing how many GPUs are left each day. Note: GPUs get returned at the end of each day, so every day starts fresh from [10, 20].
Question 2: If a new workload can switch between clusters, what's the maximum number of GPUs it could get? You basically figure out which cluster has the most GPUs left on each day — take the max of each subarray from the previous question's output and sum them.
Question 3: If the workload from the previous question can only switch clusters K times, what's the maximum number of GPUs it can get? This one is similar to some other problem, though the name doesn't come through clearly in my notes — still pretty hard.
System Design
Design an inference API for PDF-to-Markdown conversion. Assume you already have the following functions available:
Question 1: If there's a 1000-page PDF, how do you design a synchronous API so the user gets all the converted pages as fast as possible?
Question 2: If there are a lot of requests but the results can come back async, how would you design this API instead?
For this round I don't have hands-on experience in this area, so I don't think I answered it very well. Chalking it up as a learning experience.