Asana

Asana Software Engineer Phone Screen Questions

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

4
Questions
2
Topic Areas
10+
Sources

What does the Asana Phone Screen round test?

The Asana phone screen typically lasts 45-60 minutes and evaluates core Software Engineer fundamentals. Candidates should expect 1-2 algorithmic problems, basic system design discussion at senior levels, and questions about relevant experience. The goal is to confirm technical competence before bringing candidates onsite.

Top Topics in This Round

Asana Software Engineer Phone Screen Questions

First Round of Challenges: Off Camera Zoom Questions 1/2: * You are shown two code snippets on the coding panel without writing any code, and asked what they do. Also, the time and space complexity of

This will be my first ever internship phone screen (I got perfect score on codesignal) does anyone have any info on how difficult the phone screen is? Also does this mean I passed the resume screen si

Was just invited for one. Any pointers? And before anyone asks, the job posting is closed now, unfortunately.

## Round 1 - Coding / OOD ## Problem Simulate a turn-based grid game where cats try to catch rabbits. Each turn: rabbits move randomly to an adjacent cell; cats move one step toward the nearest rabbit. If a cat and rabbit occupy the same cell, the rabbit is caught. Simulate until all rabbits are caught or a max turn limit is reached. ```python class Animal: def __init__(self, animal_id: str, x: int, y: int): ... def move(self, dx: int, dy: int): ... class Cat(Animal): def choose_move(self, rabbits: list['Rabbit']) -> tuple[int,int]: ... class Rabbit(Animal): def choose_move(self) -> tuple[int,int]: ... class Game: def __init__(self, grid_size: int, cats: list[Cat], rabbits: list[Rabbit]): ... def step(self) -> list[str]: # returns ids of caught rabbits this turn ... def run(self, max_turns: int) -> dict: # returns {"turns": int, "caught": list[str], "escaped": list[str]} ... ``` ## Example ``` cats = [Cat("C1", 0, 0)] rabbits = [Rabbit("R1", 4, 4)] game = Game(grid_size=5, cats=cats, rabbits=rabbits) game.run(max_turns=20) # -> {"turns": 8, "caught": ["R1"], "escaped": []} ``` ## Follow-ups 1. How does your cat movement strategy change if there are multiple rabbits — does the cat chase the nearest or apply some heuristic? 2. How do you prevent two cats from targeting the same rabbit inefficiently? 3. What happens on a toroidal grid (edges wrap around)? 4. How would you add a line-of-sight constraint so cats can only move toward rabbits they can "see"?

See All 4 Questions from This Round

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

Get Access