Interview guides · Khan Academy
Khan Academy Software Engineer Interview Guide
Khan Academy Software Engineer interview guide: reported rounds, questions and how candidates describe the process.
The 60-second brief
A Software Engineer at Khan Academy plays a critical role in delivering a free, world-class education to millions of learners and teachers globally. Unlike traditional tech companies focused solely on commercial metrics, engineering here is driven by social impact, accessibility, and pedagogical efficacy. You will work on scaling a platform that serves massive traffic spikes, localizing content for dozens of languages, and personalizing learning paths using advanced data modeling and adaptive algorithms. The engineering team is responsible for a highly complex ecosystem that spans user-facing web applications, mobile platforms, content creation tools, and robust backend APIs. As a Software Engineer, your work directly influences how students grasp difficult concepts and how teachers manage their classrooms.
This guide is scoped to a Software Engineer candidate at Khan Academy.
Focus areas
- Memoization / caching
- Coding interviews (algorithmic problem solving)
- Dynamic programming
The Khan Academy interview process
Khan Academy candidates report 3 rounds over 3-5 weeks. The stages below are what candidates describe, not a published process.
Online Technical Screening
Initial assessment of coding skills conducted online.
What to demonstrate
- Initial assessment of coding skills conducted online
- Depth in Memoization / caching
How to prepare
- Answer aloud and timed: Implement a function to calculate the nth Fibonacci number. Discuss the trade-offs of recursive, dynamic programming, and closed-form (Binet's Formula) approaches, and implement an in-memory caching mechanism to store results across multiple calls.
- Answer aloud and timed: Given a binary tree, write an algorithm to traverse it and find specific node sequences or calculate properties like maximum depth and path sum.
Technical Phone Interview or Take-Home Project
Choice between a traditional technical interview or a comprehensive take-home project.
What to demonstrate
- Choice between a traditional technical interview or a comprehensive take-home project
- Depth in Memoization / caching
How to prepare
- Answer aloud and timed: Solve standard array manipulation and string parsing problems, focusing on optimal time complexity and robust edge-case handling.
- Answer aloud and timed: Implement a recursive algorithm to solve a sequence-based data storage problem, explaining how you would prevent stack overflow in production.
Technical and Behavioral Interviews
Series of interviews focusing on technical skills and behavioral fit.
What to demonstrate
- Series of interviews focusing on technical skills and behavioral fit
- Depth in Memoization / caching
How to prepare
- Prepare three examples from your own work, each with a decision you made and an outcome you can quantify.
- Re-read the description of the technical and behavioral interviews above and write down what you would ask to confirm before it.
Where candidates lose points
Prioritize testing
Whether in your take-home project or during a live coding session, writing unit tests is highly valued. It shows that you care about code quality, edge cases, and production stability.
Know your resume
Be prepared to discuss any project or technology listed on your resume in deep detail. Interviewers will ask about your specific contributions, the challenges you faced, and the engineering decisions you made.
Prepare for mission-specific questions
Be ready to articulate exactly why you want to work at Khan Academy. Research their product offerings, understand their scale, and think about how your engineering skills can help them achieve their mission.
Do not underestimate the time required for the take-home project
While the instructions may suggest a limit of 3 to 5 hours, turning in a highly competitive solution that includes robust error handling, unit tests, and documentation often takes closer to 8 to 12 hours of dedicated effort.
Questions & practice
Implement a function to calculate the nth Fibonacci number. Discuss the trade-offs of recursive, dynamic progr
Medium · Algorithmic Problem-Solving & Data Struc
Implement a function to calculate the nth Fibonacci number. Discuss the trade-offs of recursive, dynamic programming, and closed-form (Binet's Formula) approaches, and implement an in-memory caching mechanism to store results across multiple calls.
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Given a binary tree, write an algorithm to traverse it and find specific node sequences or calculate propertie
Medium · Algorithmic Problem-Solving & Data Struc
Given a binary tree, write an algorithm to traverse it and find specific node sequences or calculate properties like maximum depth and path sum.
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Solve standard array manipulation and string parsing problems, focusing on optimal time complexity and robust
Medium · Algorithmic Problem-Solving & Data Struc
Solve standard array manipulation and string parsing problems, focusing on optimal time complexity and robust edge-case handling.
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Implement a recursive algorithm to solve a sequence-based data storage problem, explaining how you would preve
Medium · Algorithmic Problem-Solving & Data Struc
Implement a recursive algorithm to solve a sequence-based data storage problem, explaining how you would prevent stack overflow in production.
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Walk through your take-home project implementation. Why did you choose this specific database schema, and how
Medium · Project-Based & Architecture Questions
Walk through your take-home project implementation. Why did you choose this specific database schema, and how would you scale it if write traffic increased tenfold?
Approach
- Name the grain you start from and join outward from it.
- Check whether any join is one-to-many before aggregating, or the sums inflate.
- Say which index the query would use, and what makes it unusable.
- Handle the rows that do not match: that is usually the actual question.
Follow-up
- How does the query change if that join becomes one-to-many?
- What happens to this when the table is ten times larger?
Explain why the owner filter ignores the listing index
Medium · composite index · query plans · sort elimination
The only index on resource is (tenant_id, status, updated_at DESC, resource_id DESC). A new endpoint returns one user's resources across all statuses, newest created first: WHERE tenant_id = $1 AND owner_user_id = $2 ORDER BY created_at DESC LIMIT 20. On a tenant with 2M rows it takes 900 ms and EXPLAIN shows a sort above a large scan. Explain precisely why the existing index cannot serve it, give the index that can, and state which of these the new index still will not help: owner_user_id alone across tenants; the same query ordered by updated_at. PostgreSQL 16.
Approach
- Separate the two jobs an index does. For filtering, a composite btree is seekable only on a left prefix, so with no predicate on status the scan can at best range over tenant_id and test owner_user_id per row; PostgreSQL 16 has no btree skip scan to jump the unconstrained column.
- For ordering, the index is sorted by (status, updated_at) within a tenant and not by created_at, so the LIMIT cannot stop early: every matching row is read and then sorted. That is the 'Sort Method: top-N heapsort' line, and it is why the plan reads 2M rows to answer with 20.
- Derive the replacement from the access path — equality, equality, then the ordering column: CREATE INDEX CONCURRENTLY ON resource (tenant_id, owner_user_id, created_at DESC). The scan seeks to the (tenant, owner) range and walks 20 entries in order, so the Sort node disappears along with the row-read.
- Treat INCLUDE (title, status) as conditional, not free. An index-only scan still visits the heap for any row whose page is not marked all-visible, so on a table taking 1.2k writes/second the win depends on autovacuum keeping the visibility map current, and the wider index costs more on every insert.
Follow-up
- 90% of rows are status='active'. Would a partial index WHERE status = 'active' change your answer, and for which of the three queries?
- A dashboard runs this for 40 owners in one page load. What changes about the design?
Explain the architectural decisions behind your API design. How did you handle validation, error states, and s
Medium · Project-Based & Architecture Questions
Explain the architectural decisions behind your API design. How did you handle validation, error states, and security?
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- State the consistency you need, and where you are willing to be stale.
Follow-up
- What breaks first when traffic grows ten times?
- How does this behave when that dependency is down for an hour?
How would you refactor your project code to improve modularity, and what additional unit tests would you write
Medium · Project-Based & Architecture Questions
How would you refactor your project code to improve modularity, and what additional unit tests would you write to prevent regressions?
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- State the consistency you need, and where you are willing to be stale.
Follow-up
- What breaks first when traffic grows ten times?
- How does this behave when that dependency is down for an hour?
Discuss how you would cache data between different sessions or distribute computations across a microservices
Medium · Project-Based & Architecture Questions
Discuss how you would cache data between different sessions or distribute computations across a microservices architecture.
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- State the consistency you need, and where you are willing to be stale.
Follow-up
- What breaks first when traffic grows ten times?
- How does this behave when that dependency is down for an hour?
Tell me about a time you had to debug a complex production issue under tight deadlines. How did you isolate th
Medium · Behavioral & Mission Alignment
Tell me about a time you had to debug a complex production issue under tight deadlines. How did you isolate the problem and communicate with stakeholders?
Approach
- Establish what changed and when, before forming any theory.
- Pick a bisection that eliminates candidates whichever way it turns out.
- Check the instrumentation before believing the symptom.
- Separate the trigger from the cause; the deploy is rarely the bug.
Follow-up
- What would you look at first, and what would it rule out?
- How would you tell a cause from a coincidence here?
Suggested practice checklist
Built from the rounds and topics Khan Academy candidates report.
Day 1 — Map the Khan Academy loop
- Write out the reported sequence: Online Technical Screening, Technical Phone Interview or Take-Home Project, Technical and Behavioral Interviews.
- For each round, write one sentence on what it is judging, from the description above, and mark the one you are least ready for.
Deliverable: A one-page map of the 3 reported rounds, with the weakest marked.
Day 2 — Work Memoization / caching
- Spend the session on Memoization / caching, which Khan Academy candidates report being tested on.
- Write one worked example in Memoization / caching and time yourself on it.
Deliverable: One timed worked example in Memoization / caching.
Day 3 — Work Coding interviews (algorithmic problem solving)
- Spend the session on Coding interviews (algorithmic problem solving), which Khan Academy candidates report being tested on.
- Write one worked example in Coding interviews (algorithmic problem solving) and time yourself on it.
Deliverable: One timed worked example in Coding interviews (algorithmic problem solving).
Day 4 — Work Dynamic programming
- Spend the session on Dynamic programming, which Khan Academy candidates report being tested on.
- Write one worked example in Dynamic programming and time yourself on it.
Deliverable: One timed worked example in Dynamic programming.
Day 5 — Answer out loud: Algorithmic Problem-Solving & Data Structures
- Answer aloud, timed: Implement a function to calculate the nth Fibonacci number. Discuss the trade-offs of recursive, dynamic programming, and closed-form (Binet's Formula) approaches, and implement an in-memory caching mechanism to store results across multiple calls.
- Answer aloud, timed: Given a binary tree, write an algorithm to traverse it and find specific node sequences or calculate properties like maximum depth and path sum.
Deliverable: Spoken answers to 2 reported Algorithmic Problem-Solving & Data Structures question(s), under time.
Day 6 — Answer out loud: Project-Based & Architecture Questions
- Answer aloud, timed: Walk through your take-home project implementation. Why did you choose this specific database schema, and how would you scale it if write traffic increased tenfold?
- Answer aloud, timed: Explain the architectural decisions behind your API design. How did you handle validation, error states, and security?
Deliverable: Spoken answers to 2 reported Project-Based & Architecture Questions question(s), under time.
Day 7 — Answer out loud: Behavioral & Mission Alignment
- Answer aloud, timed: Why do you want to work at Khan Academy specifically, and how do you feel about working within a non-profit compensation and resource structure?
- Answer aloud, timed: Describe a challenging project you worked on in the past. What technical trade-offs did you make, what did you learn, and how would you improve it today?
Deliverable: Spoken answers to 2 reported Behavioral & Mission Alignment question(s), under time.
Behavioural preparation
Behavioural rounds judge the decision you made and what it cost.
Why do you want to work at Khan Academy specifically, and how do you feel about working within a non-profit co
Medium · Behavioral & Mission Alignment
Why do you want to work at Khan Academy specifically, and how do you feel about working within a non-profit compensation and resource structure?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?
Describe a challenging project you worked on in the past. What technical trade-offs did you make, what did you
Medium · Behavioral & Mission Alignment
Describe a challenging project you worked on in the past. What technical trade-offs did you make, what did you learn, and how would you improve it today?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?
How do you handle feedback from a peer or lead engineer during a code review, especially when you disagree wit
Medium · Behavioral & Mission Alignment
How do you handle feedback from a peer or lead engineer during a code review, especially when you disagree with their approach?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?