# Software Engineer II
**Role:** Software Engineer · **Level:** L3
**Company:** [Criteo](https://scaleengineer.com/companies/criteo)
**Difficulty:** Medium
**Salary:** US$100000 - US$130000
**Experience:** 2 - 5
**Timeline:** ~10 days
This interview process is for a Software Engineer II (L3) position at Criteo. It is designed to assess a candidate's technical skills, problem-solving abilities, and cultural fit within the company.
Canonical: https://scaleengineer.com/interviews/criteo/l3-software-engineer
---
## Overall evaluation

- Technical Proficiency
- Communication & Collaboration
- Cultural Fit

## Questions asked

- Given an array of integers, find the contiguous subarray with the largest sum.
- Design a system to store and retrieve user preferences.
- Tell me about a time you had to deal with a difficult stakeholder.
- How would you optimize a slow database query?
- Explain the concept of microservices and their advantages/disadvantages.
- Describe a situation where you had to learn a new technology quickly.
- What are the trade-offs between using a relational database and a NoSQL database?
- How would you design a rate limiter for an API?
- Tell me about a project you are particularly proud of.
- What is the difference between concurrency and parallelism?

## Preparation tips

### lists

- Review fundamental data structures and algorithms.
- Practice coding problems on platforms like LeetCode, HackerRank, or Coderbyte.
- Study system design principles and common architectural patterns.
- Understand object-oriented programming concepts.
- Prepare for behavioral questions by reflecting on past experiences using the STAR method.
- Research Criteo's products, services, and company culture.
- Be ready to discuss your resume in detail.

### studyPlan

- {"title":"Data Structures and Algorithms","longDescription":"Weeks 1-2: Focus on core data structures (arrays, linked lists, trees, graphs, hash tables) and algorithms (sorting, searching, dynamic programming, recursion). Practice implementing these in your preferred language. Aim for at least 5-7 problems per week.","shortDescription":"Weeks 1-2: Data Structures & Algorithms fundamentals. Practice 5-7 problems/week."}
- {"title":"System Design","longDescription":"Weeks 3-4: Dive into system design. Study concepts like scalability, availability, consistency, load balancing, caching, databases (SQL vs. NoSQL), and message queues. Review common system design interview questions and practice designing systems like Twitter feed, URL shortener, etc.","shortDescription":"Weeks 3-4: System Design principles and common patterns. Practice designing systems."}
- {"title":"Behavioral & Situational Questions","longDescription":"Week 5: Prepare for behavioral and situational questions. Reflect on your past projects and experiences, identifying examples that demonstrate leadership, teamwork, problem-solving, and handling challenges. Use the STAR method (Situation, Task, Action, Result) to structure your answers.","shortDescription":"Week 5: Behavioral questions preparation using STAR method. Reflect on past experiences."}
- {"title":"Final Review and Criteo Specifics","longDescription":"Week 6: Consolidate your learning. Review all topics, practice mock interviews, and research Criteo's specific technologies and culture. Prepare questions to ask the interviewer.","shortDescription":"Week 6: Review, mock interviews, Criteo research, and prepare questions."}

## Location differences

- {"location":"Paris","differences":{"tips":["Familiarize yourself with common distributed system patterns.","Be prepared to discuss trade-offs in system design choices.","Research Criteo's engineering blog and recent technical publications."],"interviewFocus":["Strong emphasis on distributed systems and scalability.","Deep dive into system design principles.","Understanding of Criteo's specific tech stack (e.g., Java, Scala, distributed caching)."],"commonQuestions":["How would you design a URL shortener service?","Explain the difference between SQL and NoSQL databases.","Describe a challenging technical problem you solved and how you approached it."]}}
- {"location":"New York","differences":{"tips":["Review concepts related to data pipelines and ETL processes.","Be ready to explain your experience with cloud-native services.","Understand the basics of ad-tech and its underlying technologies."],"interviewFocus":["Focus on data engineering and large-scale data processing.","Understanding of machine learning concepts and their application.","Experience with big data technologies (e.g., Spark, Hadoop)."],"commonQuestions":["How would you implement a real-time bidding system?","Discuss the challenges of handling large-scale data processing.","Describe your experience with cloud platforms like AWS or GCP."]}}

## Round 1: Coding Assessment
**Type:** Technical Interview - Coding · **Difficulty:** Medium · **Duration:** 45 min
Coding challenge focused on data structures and algorithms.
This round focuses on assessing your fundamental programming skills. You will be asked to solve one or two coding problems, typically involving data structures and algorithms. The interviewer will evaluate your ability to write clean, efficient, and correct code, as well as your problem-solving approach and communication skills. You'll be expected to explain your thought process throughout the coding exercise.
**Interviewers look for:** Clean, well-organized code.; Logical and systematic approach to problem-solving.; Understanding of time and space complexity.; Ability to explain the solution and its trade-offs.
**Evaluation criteria:** Correctness of the solution; Efficiency of the solution (time and space complexity); Code readability and maintainability; Problem-solving approach
**Common rejection reasons:** Inability to articulate thought process clearly.; Poorly structured or inefficient code.; Lack of understanding of fundamental data structures and algorithms.; Inability to solve coding problems within the given time.
## Questions

- Given a binary tree, find its inorder traversal.
- Implement a function to find the kth smallest element in an unsorted array.
- Write a function to check if a string is a palindrome, ignoring non-alphanumeric characters and case.

## Preparation tips

- Practice coding problems focusing on arrays, strings, linked lists, trees, graphs, and hash maps.
- Understand common algorithms like sorting, searching, dynamic programming, and recursion.
- Be comfortable analyzing the time and space complexity of your solutions.
- Practice explaining your code and thought process out loud.

## Round 2: System Design
**Type:** System Design Interview · **Difficulty:** Hard · **Duration:** 60 min
Design a scalable system, focusing on architecture and trade-offs.
This round evaluates your ability to design complex software systems. You will be presented with a high-level problem (e.g., design a URL shortener, a social media feed, or a distributed cache) and asked to propose a solution. The focus is on your understanding of scalability, availability, data storage, APIs, and trade-offs. You should be prepared to discuss different components, their interactions, and potential bottlenecks.
**Interviewers look for:** Ability to design scalable and reliable systems.; Understanding of distributed systems concepts.; Knowledge of various architectural patterns and trade-offs.; Effective communication of complex ideas.
**Evaluation criteria:** System design approach; Scalability and performance considerations; Choice of technologies and data stores; Handling of edge cases and failure scenarios; Clarity and structure of the design
**Common rejection reasons:** Lack of clarity in system design.; Failure to consider scalability and edge cases.; Poor understanding of trade-offs in design choices.; Inability to communicate design effectively.
## Questions

- Design a system like Twitter's news feed.
- Design a distributed key-value store.
- How would you design an API for a ride-sharing service?

## Preparation tips

- Study common system design patterns (e.g., load balancing, caching, database sharding, message queues).
- Review distributed systems concepts (CAP theorem, consistency models).
- Practice designing various systems, considering different requirements and constraints.
- Be prepared to justify your design choices and discuss alternatives.

## Round 3: Behavioral and Managerial Fit
**Type:** Behavioral Interview · **Difficulty:** Medium · **Duration:** 45 min
Assesses past behavior and cultural fit using the STAR method.
This interview focuses on your behavioral and situational responses. The hiring manager will ask questions about your past experiences to understand how you handle various work scenarios, such as teamwork, conflict resolution, dealing with failure, and leadership. The goal is to assess your cultural fit and how you align with Criteo's values and working style. Prepare specific examples using the STAR method.
**Interviewers look for:** Evidence of collaboration and teamwork.; Ability to handle conflict and challenges constructively.; Proactiveness and ownership.; Enthusiasm for Criteo and the role.
**Evaluation criteria:** Teamwork and collaboration skills; Problem-solving approach in past situations; Adaptability and learning agility; Communication and interpersonal skills; Alignment with Criteo's values
**Common rejection reasons:** Lack of self-awareness.; Negative attitude or poor cultural fit.; Inability to provide specific examples for behavioral questions.; Lack of enthusiasm or interest in the role/company.
## Questions

- Tell me about a time you disagreed with a teammate. How did you resolve it?
- Describe a challenging project you worked on and how you overcame obstacles.
- How do you prioritize your work when you have multiple competing deadlines?

## Preparation tips

- Review your resume and identify key projects and accomplishments.
- Prepare specific examples using the STAR method for common behavioral questions (teamwork, conflict, failure, success, leadership).
- Research Criteo's company culture and values.
- Think about why you want to work at Criteo and what you can contribute.
