Asana Coding Interview Questions
26 Asana coding interview problems with full optimal solutions — 15 easy, 10 medium, 1 hard. Every problem ships with multiple approaches (brute-force first, then the optimal), complexity tables for each, company-specific tips on what an Asana interviewer values, and a FAQ section.
- #15mediumfoundational
15. Course Schedule
Determine whether a set of courses with prerequisites can all be completed — Asana uses this exact graph-cycle-detection pattern when validating that task dependency graphs in a project remain free of circular blockers.
- #16mediumfoundational
16. Course Schedule II
Return a valid ordering of courses given their prerequisites — the same topological sort that Asana's backend runs when computing a linearized task execution plan for a dependency-heavy project.
- #17mediumfoundational
17. Number of Islands
Count connected land regions in a 2-D grid — Asana maps this directly to identifying isolated clusters of tasks or teams in a project dependency graph where no cross-team links exist.
- #18mediumfoundational
18. Task Scheduler
Compute the minimum CPU intervals needed to execute tasks with a cooldown constraint — Asana's scheduling engine faces this exact problem when rate-limiting repeated task-type assignments across a team's sprint.
- #19mediumfoundational
19. Merge Intervals
Collapse overlapping time ranges into a minimal non-overlapping set — exactly what Asana's timeline view does when rendering overlapping task blocks for the same assignee on a given day.
- #20mediumfoundational
20. Meeting Rooms II
Find the minimum number of meeting rooms required to host all meetings without conflicts — Asana surfaces this when its calendar-integration feature must allocate the fewest concurrent task-review slots across a team.
- #21mediumfoundational
21. Longest Increasing Subsequence
Find the length of the longest strictly increasing subsequence — Asana uses this DP pattern when computing the critical path of sequentially dependent milestones in a project's dependency chain.
- #22easyfoundational
22. Climbing Stairs
Count the distinct ways to reach the top of an n-step staircase using 1 or 2 steps at a time — Asana uses this Fibonacci-DP warmup to assess how cleanly you reduce a novel problem to overlapping subproblems before coding.
- #23mediumfoundational
23. Min Stack
Design a stack that retrieves the minimum element in O(1) — Asana applies this auxiliary-stack pattern when tracking the minimum-priority task visible in a collapsible project section without rescanning the full list.
- #24mediumfoundational
24. Find Minimum in Rotated Sorted Array
Locate the minimum in a rotated sorted array in O(log n) — Asana applies binary search on monotonic-but-rotated data structures when quickly finding the earliest due-date task in a reordered sprint queue.
- #25hardfoundational
25. Word Ladder
Find the shortest transformation sequence from one word to another by changing one letter at a time — Asana uses BFS shortest-path reasoning when computing the minimum number of workflow-state transitions needed to move a task from one status to another under a rule graph.
- #26mediumfoundational
26. Network Delay Time
Find the time for a signal to reach all nodes in a weighted directed graph — Asana maps this to computing the latest a notification will propagate across all team members in a project's dependency-notification chain.
- #1easyfrequently asked
1. Two Sum
Given an array of integers and a target, return the indices of two numbers that add up to the target. Asana opens with this to confirm you reach for hash maps reflexively before quadratic loops — a baseline signal before they pivot to graph problems.
- #2easyfrequently asked
2. Valid Parentheses
Determine if a string of brackets is balanced and properly nested. Asana asks this to test whether you reach for a stack reflexively — the same data structure underpins their task-dependency cycle checks.
- #3easyfrequently asked
3. Merge Two Sorted Lists
Merge two sorted linked lists into one sorted list by splicing nodes together. Asana asks this to confirm you can handle pointer manipulation cleanly — a building block for their dependency-resolution merge step.
- #4easysometimes asked
4. Remove Duplicates from Sorted Array
Remove duplicates from a sorted array in-place and return the new length. Asana likes this to check whether you handle the two-pointer pattern cleanly — a precursor to their dedup steps in activity-feed merge logic.
- #5easysometimes asked
5. Remove Element
Remove all instances of a value from an array in-place. Asana asks this to test whether you understand the two-pointer write/read separation that scales to their bulk-task-mutation pipelines.
- #6easysometimes asked
6. Search Insert Position
Given a sorted array and a target, return the index where target is or would be inserted. Asana asks this to confirm you can write a bug-free binary search — a building block for task-priority ordering in their backend.
- #7easyrarely asked
7. Plus One
Given a number represented as a digit array, return the array plus one. Asana uses this to gauge whether you handle carry propagation cleanly — the same pattern that shows up in their counter-aggregation services.
- #8easyfrequently asked
8. Merge Sorted Array
Merge two sorted arrays in-place, where the first has extra trailing slots. Asana asks this to test whether you spot the back-to-front trick — they care because the same insight powers their activity-feed merge logic.
- #9easyfrequently asked
9. Binary Tree Inorder Traversal
Return the inorder traversal of a binary tree. Asana asks this to confirm you can implement both recursive and iterative tree walks — they care because the iterative pattern is what powers their cycle-free dependency walker.
- #10easysometimes asked
10. Same Tree
Given two binary trees, determine if they are structurally identical. Asana asks this to test recursive base cases on trees — a foundation for their structural-diff logic in project templates.
- #11easysometimes asked
11. Symmetric Tree
Determine if a binary tree is a mirror of itself. Asana asks this to test whether you can pair two pointers across a tree — the same pattern used in their snapshot-diff symmetry checks.
- #12easyfrequently asked
12. Maximum Depth of Binary Tree
Find the maximum depth of a binary tree. Asana asks this to confirm you can write the simplest tree recursion cleanly — a baseline before they ask about deep project-hierarchy traversals.
- #13easysometimes asked
13. Balanced Binary Tree
Determine if a binary tree is height-balanced. Asana asks this to test whether you spot the O(n) early-exit pattern — they care because the same trick speeds up their dependency-imbalance detector.
- #14easysometimes asked
14. Minimum Depth of Binary Tree
Find the minimum depth of a binary tree — the shortest path from root to a leaf. Asana asks this because it's the classic 'recursive trap' where reusing the max-depth template silently breaks.