Engineering Interview Guide
Weβre excited to have you interview with us at Asana!
While onsite, youβll meet your future teammates, learn more about Asana and our culture, and be given the opportunity to showcase the best of your abilities. To give you the best chance of showing your strengths, we want you to feel comfortable throughout our interview process. To help with that, weβve written this guide to set expectations about the structure and content of our interviews and how to prepare for them.
Summary
Asanaβs interview philosophy is that we emphasize collaborative problem-solving to understand what it looks like to work with you day to day. This means:
- We use IDEs for coding, not whiteboards.
- We care about how you solve problems, not just the solutions.
- We want to collaborate with you to solve these problems.
As part of our interviews, we ask four types of questions: Coding, Algorithms, and Design questions for technical skills, with more senior roles having behavioral interviews.
For more details on our philosophy and our questions, see the relevant sections of the doc below.
Asanaβs interview philosophy
Our main goal in our interviews is to understand what itβd be like to work with you day to day. Overall, our interviews emphasize collaborating together to solve problems simply and robustly. Hereβs how we try to do that, with some tips on how to best show off your engineering skills.
We use IDEs for coding, not whiteboards
Since we donβt code on whiteboards day to day, we wonβt ask you to do that in the interview. Instead, weβd love for you to leverage the whiteboard to collaborate with us to solve problems, writing down logic and pseudocode, as it adds clarity. We have coding-focused interviews, but theyβll be done in a code editor.
With this in mind:
- Weβll make it explicit when weβre expecting code. Instead of code, most questions focus on using systems, data structures, and abstractions together to solve problems. Sometimes, pseudocode is useful to express the logic that connects these together, but we wonβt be evaluating syntax here. If youβre confused about what your interviewer wants from a question, please ask! Theyβd be happy to help you find the right level to collaborate on.
- Describe your solution as you evolve it. We find that successful candidates often sketch out their solution as they go and check in with their interviewer to make sure theyβre following. Using your whiteboard/collaborative editor is a great way to provide that clarity.
We care about how you solve problems, not just the solutions
While some interview questions have a most efficient solution, this isnβt always true in the real world. You often need to understand problems deeply, generate and then evaluate tradeoffs between different solutions, and then narrow down to one recommendation. As a result, we want to understand how you solve problems, not whether you get the βrightβ answer.
This means that:
- During your interview, itβs important to articulate what youβre thinking so your interviewer can follow. Make sure youβre explaining how youβre thinking through the problem, and check in with your interviewer to make sure they understand.
- When encountering a problem, try to talk through multiple options and compare them. You might start with a brute force or MVP approach and then consider different ways to evolve your solution. Be clear what the tradeoffs are between your options, e.g. how do they compare in terms of scalability or simplicity.
- Since we have limited time together, we often wonβt have the space to explore every option to the fullest extent. Therefore, try to focus on the most important parts of your solutions and the most important criteria for evaluating them. Itβs often useful to start a question with a quick discussion about what those criteria are so you and your interviewer can be on the same page. For instance, in system design focused questions, we generally look for a high-level understanding of the systems involved, as well as the scalability, simplicity, and correctness of your solution. You can start by outlining those and asking your interviewer if thereβs anything else they want you to include.
We want to collaborate with you to solve these problems
Asana engineers collaborate heavily with one anotherβto teach and learn from one another, as well as to brainstorm and develop solutions together. As such, we want our interviews to be a collaborative process.
To do that, weβd love for you to:
- Ask us questions! If the problem or what weβve said is unclear, youβre not sure what to focus on, or youβre stuck and arenβt sure what the next step is, please ask us questions so we can unblock you.
- Iterate on your solutions with your interviewer. As mentioned above, you might start with an MVP, and your interviewer may ask about how it scales. Work with your interviewer to iterate on your solution so it can solve the problems you find together.
- Take feedback and run with it. If your interviewer notes that your solution fails in a certain case, make sure you understand what they mean, and then work to solve it.
How to prepare for Asana interviews
To help make sure your engineering skills shine in our interviews, we put together a technical interview skills guide called Asana 101 Technical Interview Guide. This is aimed at early career engineers, but it contains examples and pointers that we think are useful for everyone.
To summarize, our advice to prepare for Asanaβs interview are:
- Practice problems, and refresh your knowledge for each type of Asanaβs interviews. Our technical questions can be roughly bucketed into three categories: coding, algorithms, and design. Below we outline each type, and link to the full guide which has practice problems, tips for how to answer them, and other guides you can consult.
- Coding: Weβll ask you to solve some coding questions in a language and text editor of your choice. Feel free to bring your own laptop, or weβll be happy to provide one. After leaving you to work through the questions on your own, weβll sit down together and talk through your solutions (including any ideas you didnβt have time to commit to code).
- Algorithms: At Asana, we particularly love questions that involve the use of data structures. We don't expect you to know how to implement every data structure by heart, but we do hope to see that you could work it out in cooperation with a helpful partner.
- Design Questions: When it comes to modeling and design, we value clarity with a bias towards simplicity; we expect Asana engineers to be comfortable designing a technical solution. Being able to identify trade-offs explicitly and why you are making them is the sign of mindful design.
For behavioral interviews:
- Itβs useful to spend some time and reflect on your experience and interesting technical problems youβve worked on. We want to hear your story and witness your expertise. See some common questions to get a feel for the types of behavioral questions we might ask.
- We find that using the STAR format is a great way to structure your answers: this makes it clear what problem you were trying to solve, what you did, and the result of that, which helps us understand how you would function at Asana.
Please also bring some questions for us!
- At the end of every interview, your interviewer will try to save time for you to ask them questions. We want you to be able to evaluate whether Asana is right for you.
- Some prompts: What matters to you in a working environment? What are you looking for in your future projects and teammates?
Share Your Feedback with Us
These are the ways we approach our interview process. Weβd also love to hear about your experience so far and what we can do to better accommodate your onsite visit. Weβre still in the early stages of creating this guide and are always seeking ways to make it better. Let us know what you think and what else you wouldβve liked to see on here.