Flexport || SWE-1 || Rejected || Bangalore
Summary
I recently interviewed for a Software Engineer (SWE-1) position at Flexport, specifically for their acquired Shopify team in Bangalore. My journey included an online assessment, a Data Structures & Algorithms round, a Low-Level Design round, and a Managerial round. I received an offer, but ultimately chose to reject it for another opportunity.
Full Experience
My Flexport Interview Experience
Round 0 – Online Assessment
The online assessment consisted of 4 questions: 3 Data Structures & Algorithms problems and 1 API-related question. I successfully cleared this round and proceeded to the interview stages.
Round 1 – DSA Round
This round focused on Data Structures & Algorithms. The main problem presented was an Infinite Grid Game:
- Players drop colored balls (colors numbered 1 to n) from the top into an infinite grid.
- The win condition initially was: if a player gets 3 balls of the same color in a column, they win.
The interviewer then posed follow-up questions:
- Generalize the win condition to 3 in a row or 3 in a column.
- Further generalize the win condition to k in a row or k in a column.
My approach involved using an unordered_map<int, vector<int>> to keep track of ball positions for both rows and columns. For the generalized 'k' case, I implemented a sliding window approach. This meant that if the current position was 'x', I would check the range [x-(k-1), x+(k-1)] and maintain frequency counts within a window of size 'k' for both rows and columns. I successfully coded and explained the solutions for the first two follow-ups. For the 'k' case, my logic was correct, but I had a minor coding bug where I was returning early instead of checking all possible windows, which I realized moments after the interview concluded. We also discussed diagonals, but I didn't code them. I received positive feedback from the interviewer and advanced to the next stage.
Round 2 – Low-Level Design (LLD)
This round was split into two parts:
- The first part, lasting about 30 minutes, involved a detailed discussion about my current project. I explained the design patterns I use, the rationale behind my choices, and the benefits they provided.
- The second part focused on a design problem: Design Splitwise. I presented an end-to-end solution clearly. Due to time constraints, I coded a simpler version without incorporating complex design patterns, but I managed to achieve the correct output.
Round 3 – Managerial Round
The managerial round covered a variety of topics:
- Discussions about my current work, my motivations for seeking a change, and my interest in Flexport.
- My LinkedIn profile was reviewed live during the interview.
- We delved into High-Level Design (HLD) topics, specifically discussing the CAP Theorem, strategies for choosing a database, and ACID properties.
- The interviewer clarified that the role was for Flexport's Shopify team, not the core Flexport platform.
- I was also asked a series of situational and managerial problem-solving questions.
Verdict & Offer
I received an offer for the SWE-1 position in Bangalore, which included a base salary of ₹30 LPA, a joining bonus of ₹3 LPA, an annual bonus of ₹3 LPA, and RSUs valued at $12,000. Ultimately, I decided to reject the offer as I had another SWE-2 opportunity at a public company with comparable base pay and more attractive stock options.
Interview Questions (7)
Players drop colored balls (colors numbered 1..n) from the top into an infinite grid. The initial win condition is: if a player gets 3 balls of the same color in a column, they win. Follow-up 1: Generalize the win condition to 3 in a row or 3 in a column. Follow-up 2: Further generalize to 'k' in a row or 'k' in a column.
Design the Splitwise application.
Discussion about my current project, including the design patterns I use, the rationale behind their selection, and the benefits they provide.
Discussion on the CAP Theorem (Consistency, Availability, Partition tolerance).
Discussion on the criteria and methodologies for selecting an appropriate database system for a given application or system.
Discussion on ACID properties (Atomicity, Consistency, Isolation, Durability) in database transactions.
Situational and managerial problem-solving questions were posed to assess leadership, team collaboration, and decision-making skills.
Preparation Tips
I learned that it's crucial to practice grid-based problems with dynamic win conditions, as they can appear in DSA rounds. Being comfortable explaining common design patterns and when to apply them is essential for LLD. For Low-Level Design rounds, even if a perfect design can't be fully coded, demonstrating end-to-end clarity of the solution is highly valued. Managerial rounds can delve deeply into system design fundamentals and also require strong situational problem-solving abilities.