← Asana Interview Insights

Asana·Software Engineer·Onsite - Coding / Algorithms·Intermediate

Intermediate
Apr 2026

Summary

Two-hour coding round at Asana for a software engineer role, centered on an ASCII Printer problem. Not a lot to say about the experience itself since the problem was pretty much the whole thing.

Questions Asked (1)

Q1

Implement an ASCII Printer: given some input, produce the correct ASCII art or formatted text output.

Algorithms & Data StructuresTechnical Trade-offs
Author's notes

Two hours for one problem sounds generous until you're 45 minutes in and still not sure you understand the output format correctly.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the input format and expected output, then design a modular solution that separates parsing, layout computation, and rendering. Discuss trade-offs between simplicity and extensibility, and walk through a concrete example to demonstrate correctness.

Pro tip: Proactively discuss how you would test edge cases like empty input, very large inputs, and special characters, and mention how you'd structure the code for maintainability and future extensions.

1. Clarify requirements

Ask questions to understand the exact input format (e.g., string, list of strings, nested structures) and the desired output (e.g., ASCII art, formatted table, tree). Confirm any constraints like maximum dimensions or character set.

2. Define the data model

Decide on an internal representation for the parsed input and the output canvas. For example, use a 2D grid of characters or a tree structure that can be rendered.

3. Design the algorithm

Break the problem into steps: parse input, compute layout (positions, sizes), and render to ASCII. Consider using recursion for nested structures or a simple loop for flat inputs.

4. Implement and test

Write clean, modular code with functions for each step. Test with simple cases first, then edge cases like empty input, single element, and deeply nested structures.

5. Discuss trade-offs and extensions

Talk about time/space complexity, alternative approaches (e.g., using a library vs. custom), and how you would extend the solution to support additional features like styling or different output formats.

Key Points to Mention

  • Input parsing and validation
  • Choice of data structures (e.g., 2D array, tree)
  • Layout computation (e.g., spacing, alignment, nesting)
  • Rendering logic (e.g., drawing lines, borders, characters)
  • Edge cases (empty input, large input, special characters)
  • Testing strategy and code modularity

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.