This will describe my interviewing experience with Optiver to the weary reader. If you are not weary now, not to worry, you will be when you finish reading this!
First was an HR phone interview with a nice young guy, whom I'll call A for the narrative. The interview was standard behavioral questions: why move, where do you see yourself in 5 years, etc.
Second stage was a technical coding test consisting of 3 coding problems and a timer that spanned 8 hours. Since I had lots of time, I spent 6 hours on it, though 3-4 would have been enough. Described in Q&A.
Third was a Skype interview with D. I was told by my agent B that it would be about the coding test I did. So I made sure to go over my solutions, think about how to explain the recursive calls, the complexity, etc. A waste of time. The interview focused almost solely on concurrency concepts, specifically in C++. Also throughput, latency, and client/server connectivity. Some topics I did not know well were memory barriers, CPU caches, and system calls. But I still passed.
At that point, the astute and not too weary reader may think, wow, 3 stages, HR, technical, a long coding test – there must be an offer in the offing! Well, think again.
The last stage was a grueling whole day, consisting of back-to-back interviews at Optiver’s premises, from 10:00 am until 5:45 pm, unless you are shamefully sent back home prior (which I was, after approximately 5 hours). Before the day, A sent me an itinerary providing details about the day, so let’s just go through it. I added the relevant stage to the question section before the question itself.
10:00 – 12:00: Technical ‘CV Deep Dive’ Interview
12:00 – 12:30: Lunch
That part at least was accurate. At lunch, you eat with two other employees, let’s call them J and B2, and you get to know each other. Anyway, they were really nice, and the Korean beef was also quite good. I should add perhaps that Optiver has its own food/catering and a coffee machine with a barista. I should also mention that the barista/coffee closes at 12. Lastly, Optiver has a deal with the coffee shop across the road, so one can buy it for 2 dollars or so, which is not too bad...
12:30 – 14:30: Technical Interview, Coding Test
15 Minute Break
That one did happen.
At that point, I felt I did well, so let’s get to the feedback part.
14:45 – 16:15: Behavioural Interview
Interviewers: C and L
The expectation was this: “This interview will be focused on your previous history, how you work within a team, what your motivations are, and several other behaviour-based questions. Some questions will require you to give examples of circumstances you have had in your previous roles, how you approached them and what the results were, whereas other questions may take the form of a hypothetical (i.e. What would you do if…?). The purpose is to assess your culture fit for both our company and the team you would work in if successful.”
Unfortunately, I only met C, who told me I did not do as well in the technical phases. For the first interview, I was told my examples were not complex enough. One may wonder how it is that I was given to solve these issues at work after previous developers failed to fix them, while I managed to solve them. One might also wonder why the interviewers did not tell you they would like more complex example(s) at the time of the interview, or how they managed to raise so many questions for 2 hours straight on such so-called simple problems.
For the second technical interview, I was told the feedback was that I did not look curious enough about the problem, not asking enough “Why” questions. Well, okay, I do have some why questions:
Lastly, the last 2 items on the original agenda, which for obvious reasons I have not managed to attend, would have been:
16:15 – 16:45 – 30 min break
16:45 – 17:45 - Final Interview
I truly feel that if anyone failed here, it was Optiver, not me!
Coding Problem 1: This consisted of a mapping from a letter to its Morse code for 7 letters (dot, dash, dot-dot, etc.), and a string of dots and dashes. The purpose was to find all valid interpretations for the given Morse string, keeping in mind that spaces are not provided to indicate letter/word separations.
Coding Problem 2: You are given an invented calendar with 24 months of varying lengths. Every sixth month has one extra day in each quarter compared to the other five. There's also a rule for determining leap years and where the extra day is added in that case (the last month, I believe). The input is two dates, and the task is to find the number of days between them. Pretty easy, I think.
Problem 3: This problem involved implementing BigInteger multiplication. You are given very large numbers to multiply. This requires representing the digits within strings, performing string-based long addition, and then string-based long multiplication using that long addition. It's a bit tricky to get the carry right, but not hard. Useful C++ methods include to_string and stoi.
Technical 'CV Deep Dive' Interview: Interviewers: N and Y
"This interview will be similar to the Technical Skype Call; however, it will be more in-depth. The engineers interviewing you will base their questions on the information provided in your CV and what was discussed in the Skype Call. As such, many questions will be based upon the following:
I was asked to discuss two complex problems I solved during my career. I was told they did not have to be a specific type of problem (e.g., multi-threading). I chose one involving threading and finance, and another from my experience in defense, which was more of an engineering problem. During the interview, we delved deeply into various aspects. In some cases, I could not recall the exact solution from several years prior and stated that, attempting instead to describe what could be done.
There was nothing about the Skype call. Honestly, I am not even sure the people who interviewed me knew there was one or anything about its contents. So, the first two bullet points above are misleading. I was studying advanced multi-threading constructs the night before until midnight. I should have just read a good book and gone to sleep.
Even bullet point 3 is misleading, as none of the interviewers, before or after, asked me anything about what was written in my CV in any depth whatsoever. I could have invented complex problems if I wanted to (which I would never do, but just stating the fact).
12:30 – 14:30 Technical Interview, Coding Test Interviewer: A2
"This interview will take the form of a problem-solving exercise. When you arrive at the interview room, the engineer(s) interviewing will present you with a question. You will then have time to read through it, ask clarifying questions, and work through the problem, designing the solution before beginning any exercises. The exercises will involve whiteboarding tasks, followed by questions from the engineers about the answers/solutions you have used. These questions will cover everything from architectural choices to the specific implementation (requiring you to write code) of how the functional pieces work. Fundamentally, the aim of this interview is to assess your technical abilities, especially your ability to implement your solutions and adjust them based on what you discover or if requirements change."
So yes, two more hours. You have 5 minutes to read the question (2 pages), 20 minutes to devise a solution, and you are asked questions. Then, you expand your answers into code on the whiteboard.
The problem itself was as follows: there is an exchange feed that gives a server up to 5 rows of depth information each second, sorted by price. This includes 5 price points and 5 quantities for both buy and sell sides of the book for a specific stock. The server currently sends this information to clients via a feed that transmits everything it receives. We want a more efficient solution so that if a price point's quantity has not changed, we do not need to bother the clients.
The following metrics were computed from 1 interview experience for the Optiver Senior Software Developer role in Sydney, Australia.
Optiver's interview process for their Senior Software Developer roles in Sydney, Australia is extremely selective, failing the vast majority of engineers.
Candidates reported having mixed feelings for Optiver's Senior Software Developer interview process in Sydney, Australia.