Navigating Notion's Tough Software Engineer Interview: A Surprising Journey

notion | Software Engineer | Interview Experience

Interview Date: Not specified
Result: Not specified
Difficulty: Not specified

Interview Process

The interview process consisted of four rounds: a coding interview, a software design interview, a domain-specific interview, and a hiring manager/career interview. The initial communication with HR was confusing, as they mentioned a different group than the one the candidate applied for. The candidate experienced a lack of clarity about the position and the interview format.

The first interviewer was described as engaging but somewhat disengaged, often yawning during the conversation. However, the discussion was positive. After the interview, there was a significant delay in feedback, which required the candidate to follow up multiple times. Eventually, the hiring manager (HM) was very positive and engaged, although they seemed unaware of the candidate’s previous interview.

Technical Questions

  1. Software Design: Create a table system that calculates aggregations such as COUNT, SUM, and AVERAGE based on a given tableId.
    @dataclass
    class Row:
        tableId: str
        value: int
    
    TABLE_1 = "table_1"
    tables: Dict[str, List[Row]] = {
        TABLE_1: [Row(TABLE_1, 3), Row(TABLE_1, 1), Row(TABLE_1, 8)]
    }
    
    def computeAggregations(tableId: str):
        # Implementation to calculate COUNT, SUM, AVERAGE
    

Tips & Insights

  • Be prepared for potential confusion regarding the interview process and the role.
  • Engage actively with interviewers, even if they seem disengaged.
  • Follow up if you do not receive timely feedback after the interview.