We are now conducting fully virtual on-site interviews and have adapted all interviews accordingly!

Duolingo is the most popular language-learning app in the world, with more than 300 million total users. Our software engineers are passionate about accessibility to education, data-driven decision making, and finding elegant solutions to cross-functional problems.

In this post, we’re outlining our technical interview process because we believe in helping people do and show their best! Visit our careers page and University Programs site to see all current openings.

The technical interview process

After a resume review, you’ll be paired with one of our in-house recruiters. In the initial phone interview, your recruiter will ask questions to better understand your background, your skillset, and your personal connection to Duolingo. Additionally, your recruiter will be your main point of contact throughout the full interview process – so as questions arise, feel free to go directly to them.

The full technical interview process consists of two phases: a set of online interviews and a day of on-site interviews. Our different types of technical interviews are outlined below, but no one role has all of these interviews in their process (again, your recruiter will outline your full interview process during your initial conversation).

At the end of the interview, you are always welcome to ask the interviewer any questions you have about what it’s like to work at Duolingo.


Types of online interviews

Online coding task

Depending on the role, you may be asked to do an algorithmic coding task in HackerRank. You will write code in one of our accepted programming languages (see table below). Your code will be automatically graded based on correctness of the output and time-efficiency. The time to complete the task varies per role, but it’ll take you at most 90 minutes.

Interview type Programming languages
Technical video interview Python, Java, JavaScript
Online coding task Python, Java, JavaScript
Whiteboard interview Any
Pair programming interview Swift for iOS engineer roles
Kotlin for Android engineer roles
Python[1] for backend engineers, web engineers, new graduate engineers, and other engineering roles
Table: Accepted programming languages

Technical video interview

You will work with a Duolingo engineer on an algorithmic coding task, using CodePair as your development environment. You will write code in one of our accepted programming languages.

Types of on-site interviews

Whiteboard interview

You will work with a Duolingo engineer on an algorithmic problem and write the solution on a whiteboard. This interview normally requires more analytical thinking and less coding than technical video interviews. You can write the code in whichever programming language you prefer (we aren’t too picky with the syntax since we can’t compile a whiteboard). If the interviewer is not familiar with the language you’ll use, do make sure that you’re explaining your code and your reasoning.

Pair programming interview

You will work with a Duolingo engineer on a coding problem in a codebase that is similar to what we use in production. We want you to feel what it would be like to be an engineer at Duolingo! The main goal of our pair programming interview is to see if you can work with code written by other engineers and learn on your feet. You will write code in one of our accepted programming languages.

Design interview

Design interviews are high-level discussions on how to architect a solution. We're not necessarily looking for one particular solution but are more interested in how you approach the problem. This interview is typically administered for more senior roles.

Brainstorming interview

Some roles will have interviews where you will have high-level discussions about an engineering problem with a Duolingo engineer. For example, machine learning engineers will discuss machine learning approaches and problem framing. In these interviews, we're interested in how you reason about open-ended engineering problems.


Tips for your interviews

How to prepare

  • Practice coding questions: Brush up on your problem solving and coding skills. Be familiar with common data structures and programming techniques, and be able to discuss big-O notation complexity of your approaches.
  • Prepare your space for video interviews: Make sure you’re in a quiet location with a good internet connection for video interviews.
  • Prepare questions to ask your interviewers: We strive to make Duolingo a great place to work for everyone, and we want to make sure that you think Duolingo is a good fit for your career. You’ll have time to ask questions to your interviewers, so you can use that time to get to know more about the things that are important for you to make a well-informed decision.
  • Let the recruiter know if you need any specific accommodations: We want you to be able to perform at your best!

During your interview

  • Think out loud: Share your reasoning with the interviewer. We are interested in how you approach a problem.
  • Be pragmatic: All interview questions can be finished within the allotted time. Propose a solution for which you can actually write code in the given time. Start with the simplest approach, then work on optimizing (you don't necessarily need to come up with the optimal answer as the first thing you say).
  • Work with your interviewer: We are not here to trick you! Interviewers will give you hints if you get stuck.
  • Ask clarifying questions: Make sure you fully understand the question and that you’re not enlarging the scope of the problem.
  • Think about edge cases: Make sure your code account will work as expected for all accepted input.

We are always looking for talented and passionate engineers to join Duolingo – apply today!

  1. It’s OK if you’re not an expert in Python for our Python pair programming interview. Make sure you can read and write Python code, but don’t worry about writing Pythonic code or memorizing APIs – your interviewer will answer questions about Python as needed. We expect that Duolingo engineers are able to learn on the job. ↩︎