Asana

Asana Software Engineer Onsite Coding Questions

4+ questions from real Asana Software Engineer Onsite Coding rounds, reported by candidates who interviewed there.

4
Questions
4
Topic Areas
10+
Sources

What does the Asana Onsite Coding round test?

The Asana onsite coding round is the core technical evaluation. Software Engineer candidates typically see 2-3 algorithm and data structure problems. Problems range from medium to hard difficulty, and interviewers evaluate both correctness and code quality.

Top Topics in This Round

Asana Software Engineer Onsite Coding Questions

I found a lot of helpful posts on the forum when I was preparing for the interview, so I'm posting this to give feedback. I haven't received the results yet. I applied for a Team Leader (TL) position,

LeetCode #973: K Closest Points to Origin. Difficulty: Medium. Topics: Array, Math, Divide and Conquer, Geometry, Sorting, Heap (Priority Queue), Quickselect. Asked at Asana in the last 6 months.

LeetCode #238: Product of Array Except Self. Difficulty: Medium. Topics: Array, Prefix Sum. Asked at Asana in the last 6 months.

## Round 1 - Coding / OOD ## Problem Design an ASCII art rendering system. Support rendering rectangles, triangles, and text banners to a 2D character canvas. Each shape is a separate class. The canvas can combine multiple shapes and print the result. ```python class Canvas: def __init__(self, width: int, height: int, fill: str = " "): ... def draw(self, shape: 'Shape', x: int, y: int) -> None: ... def render(self) -> str: ... class Rectangle: def __init__(self, width: int, height: int, char: str = "*"): def pixels(self) -> list[tuple[int,int]]: ... class TextBanner: def __init__(self, text: str): def pixels(self) -> list[tuple[int,int,str]]: ... ``` ## Example ``` c = Canvas(10, 5) c.draw(Rectangle(4, 3, "#"), x=1, y=1) c.render() # ---------- # | | # | #### | # | #### | # | #### | # ---------- ``` ## Follow-ups 1. How do you handle overlapping shapes — which one takes priority and why? 2. How would you add a `Triangle` shape that fills using Bresenham's line algorithm? 3. How would you support layering (z-index) so shapes can be explicitly ordered? 4. How would you serialize the canvas state to a JSON file and restore it?

See All 4 Questions from This Round

Full question text, answer context, and frequency data for subscribers.

Get Access