Software Engineer

Software EngineerL3Medium

The Software Engineer L3 interview at Optiver is designed to assess a candidate's foundational knowledge in computer science, problem-solving abilities, and coding proficiency. It typically involves a mix of technical and behavioral questions to evaluate a candidate's fit for the role and the company culture.

Rounds·3

Timeline·~14d

Experience·1 - 3 yrs

Comp band·US$90000 - US$120000

Interview time·120 min

Evaluation

What they measure.

  • Problem-solving approach
  • Algorithmic knowledge
  • Coding proficiency and style
  • Understanding of data structures
  • Ability to explain technical concepts clearly

Preparation

How to prepare.

Tips

  1. Strengthen your understanding of fundamental data structures (arrays, linked lists, trees, graphs, hash maps) and algorithms (sorting, searching, dynamic programming, graph traversal).
  2. Practice coding problems on platforms like LeetCode, HackerRank, or AlgoExpert, focusing on medium-difficulty problems.
  3. Review core concepts of object-oriented programming (OOP) and your primary programming language (Java or C++).
  4. Prepare to discuss your past projects, highlighting your contributions, challenges faced, and solutions implemented.
  5. Understand basic system design principles and be ready to discuss trade-offs.
  6. Research Optiver's business, its trading philosophy, and the technologies it uses.
  7. Prepare behavioral questions using the STAR method (Situation, Task, Action, Result).

Study plan

Fig · Study plan — 04 phases

01 / 04
01

Phase 01 of 04

Data Structures

Weeks 1-2: Data Structures (Arrays, Lists, Trees, Graphs, Hash Tables). Complexity analysis.

Weeks 1-2: Focus on Data Structures. Cover arrays, linked lists, stacks, queues, trees (binary trees, BSTs, heaps), hash tables, and graphs. Understand their time and space complexity for common operations. Practice implementing them and solving problems related to them.

Questions

Commonly asked.

  • Write a function to reverse a linked list.
  • Given an array of integers, find the two numbers that add up to a specific target.
  • Explain the difference between TCP and UDP.
  • Describe a challenging project you worked on and your role in it.
  • How would you design a URL shortener service?
  • What is a deadlock and how can it be prevented?
  • Tell me about a time you failed. What did you learn from it?
  • Implement a function to find the kth smallest element in a binary search tree.

Locations

Regional differences.

Fig · Regions — 03 locations

01 / 03

Location

Amsterdam

Interview focus

Understanding of core Java/C++ conceptsProblem-solving skillsAbility to write clean and efficient codeCommunication skills

Common questions

  • Explain the difference between a process and a thread.
  • Describe a situation where you had to debug a complex issue. How did you approach it?
  • How would you design a system to handle real-time stock price updates?

Tips

  • Be prepared to discuss your past projects in detail.
  • Practice coding problems on a whiteboard or paper.
  • Research Optiver's trading strategies and technologies.

Rounds

Round-by-round.

Expand a step for evaluation criteria, sample questions, and prep notes.

Med

Technical Interview - Coding · 45 min · Software Engineer / Senior Software Engineer

This round focuses on assessing your core programming skills and problem-solving abilities. You will be asked to solve one or two coding problems, typically involving data structures and algorithms. The interviewer will expect you to write clean, efficient, and correct code, and to explain your thought process throughout the problem-solving exercise.

What they look for

Ability to translate a problem into code.Understanding of time and space complexity.Clean and maintainable code.Logical thinking and problem-solving skills.

Evaluation

  • Correctness of the solution
  • Efficiency of the solution (time and space complexity)
  • Code clarity and style
  • Problem-solving approach
  • Communication of the solution

Sample questions

  • Given a binary tree, check if it is a valid Binary Search Tree.

    Data StructuresTreesAlgorithms
  • Find the first non-repeating character in a string.

    StringsHash MapsAlgorithms

Prep for this round

  1. 01Practice coding on a whiteboard or in a simple text editor without IDE assistance.
  2. 02Think out loud and explain your approach before you start coding.
  3. 03Test your code with edge cases.
  4. 04Be prepared to discuss alternative solutions and their trade-offs.

Common rejection reasons

  • ×Inability to solve coding problems within the given time.
  • ×Poor code quality (not readable, inefficient, buggy).
  • ×Lack of understanding of fundamental data structures and algorithms.
  • ×Inability to explain the thought process clearly.

DSA

Coding questions at Optiver.

Frequently reported on Optiver loops

Other guides

More at Optiver.