Summary
I successfully navigated the SDE-1 interview process at ShareChat, securing an offer after three intense rounds covering DSA, LLD, and HLD, all completed efficiently within three days.
Full Experience
My ShareChat SDE-1 Interview Experience
My journey at ShareChat for the SDE-1 role began with an outreach from a Talent Acquisition representative, followed by an Online Assessment (OA). The OA comprised three coding questions: a Sliding Window problem, a Binary Search problem, and a slightly harder N-ary Tree DP problem. I successfully solved all three, which moved me to the next stage.
Round 1: Data Structures & Algorithms (DSA) – Coding Round
This round deeply focused on my problem-solving and coding abilities. The interviewer presented two questions. The first was the Meeting Rooms problem, which I tackled using the Line Sweep Algorithm. For the second, Generate Valid Parentheses, I employed a somewhat unconventional approach involving bitmasking, where I generated all subsets of a bitmask and then validated each one. I received positive feedback from this round, advancing to the next.
Round 2: System Design (LLD) – Technical Lead
The second round, led by a Technical Lead, started with a discussion about my current experience. The core challenge was to Design Splitwise, an expense-sharing application. I was given about 40 minutes and an IDE to code. I focused on designing an extensible architecture and effectively explained my design choices and trade-offs. I even identified and suggested a better design during the interview, showcasing my critical thinking. Although I exceeded the time limit and couldn’t complete a fully working implementation, I walked the interviewer through my thought process and proposed improvements. I was initially unsure about the outcome, but later that evening, HR informed me of positive feedback, moving me to the Hiring Manager round.
Round 3: Hiring Manager (HM) – High-Level Design (HLD) + Discussion
The final round, with the Hiring Manager, began with a general discussion about my experience and past projects. The main problem was to Design a Coupon Service for an E-commerce Platform. I made sure to clarify requirements effectively before diving into the design. I outlined the REST APIs and the database schema for the system, and actively discussed scalability, optimizations, and trade-offs. This round also concluded with positive feedback.
Offer & Final Thoughts
I was thrilled to receive an offer within just one day after the HM round! I truly appreciated the well-structured and efficient process, which was completed in just three days. The interviewers were great, providing constructive feedback and being open to discussing different approaches. It was also a fair evaluation; even though I couldn’t complete the full code in the LLD round, my approach and design thinking were valued more. I ultimately resigned after 10 days to accept an offer from LinkedIn, but my experience with ShareChat was very positive.
Interview Questions (4)
Given an array of meeting time intervals consisting of start and end times, determine if a person could attend all meetings. I was asked to solve this problem.
Given 'n' pairs of parentheses, write a function to generate all combinations of well-formed parentheses. This was the second problem presented.
I was tasked with designing an expense-sharing application similar to Splitwise. I was allowed to use an IDE for approximately 40 minutes to code. I focused on designing an extensible architecture.
The HLD problem given was to Design a Coupon Service for an E-commerce Platform. I was expected to clarify requirements, design APIs, database schema, and discuss scalability.
Preparation Tips
Based on my experience, I'd strongly recommend future candidates:
- Brush up on core Data Structures & Algorithms topics, specifically focusing on sliding window, binary search, and dynamic programming on trees.
- Practice Low-Level Design (LLD) problems, such as Splitwise or Parking Lot, with an emphasis on writing clean, modular, and extensible code.
- Prepare thoroughly for High-Level Design (HLD) discussions, concentrating on defining APIs, designing database schemas, and considering scalability and optimization aspects.
- Crucially, remember that communication is key. Even if you cannot finish the code or perfect a design, clearly articulating your thought process, design choices, and trade-offs can significantly impact the outcome.
Summary
I interviewed for an SDE-2 role at ShareChat in May 2023, undergoing four rounds covering coding, LLD, HLD, and a bar raiser. Despite my experience, I was ultimately rejected, largely due to my performance in the Bar Raiser round, and did not receive detailed feedback.
Full Experience
I recently interviewed for an SDE-2 position at ShareChat in May 2023. I have 4 years of experience and have previously worked in big tech companies. The interview process consisted of four distinct rounds:
- Hackerearth Test: This was the initial screening.
- Low-Level Design (LLD) + Problem Solving: Focused on practical design and algorithmic skills.
- High-Level Design (HLD) (Hiring Manager Round): This round assessed my system design capabilities.
- Bar Raiser Round: The final and most challenging round.
In the Hackerearth test, I recall one problem being related to LFU Cache design, along with two other problems that are commonly found on LeetCode. For the LLD round, I was asked to design Cricbuzz, and there was also a DSA question where I had to remove a given list of phrases from a sentence, for example, removing `[have apple]` and `[you have]` from the sentence `"i have apple"`.
The Bar Raiser round included two significant DSA problems. One involved sorting 100 petabytes of data with only 2 GB of RAM, a classic external sorting problem. The second was to design a data structure that supports insert, delete, and getRandom operations all in O(1) average time, which I recognized as LeetCode problem 380.
Unfortunately, the verdict was a rejection. I didn't perform well in the Bar Raiser round, which I believe was the primary reason for not moving forward. I didn't receive any detailed feedback about my performance.
Interview Questions (5)
Design a Least Frequently Used (LFU) cache.
Design the Cricbuzz application.
Given a sentence and a list of phrases, remove all occurrences of these phrases from the sentence. For example, if sentence = " i have apple" and phrases = { [have apple] , [you have] }.
Design an algorithm to sort 100 petabytes of data using only 2 GB of RAM.
Summary
I applied for an SDE2 role at ShareChat in Bangalore and went through a challenging interview process. While I performed well in the online assessment and a DSA round, a confusing High-Level Design (HLD) round, where I had a significant disagreement with the interviewer regarding the solution, ultimately led to my rejection.
Full Experience
Round 1: Online Assessment
My interview process for the SDE2 role at ShareChat in Bangalore started with an Online Assessment. This was a Hackerearth-based test with 3 coding questions, lasting 90 minutes. I found this to be the toughest OA I've ever taken. I don't recall the exact problems, but they involved concepts like TreeMap/Binary Search, Graph problems, and 2D DP on a tree. I scored 210/250 in this round and was invited for the first virtual onsite interview.
Round 2: Virtual Onsite 2 (DSA)
This round began with a brief introduction. I was given two questions:
- A medium-hard Tree-based DP question, which wasn't available on LeetCode or GFG. I struggled a bit initially, but the interviewer was very polite and provided a hint that helped me solve it.
- An easy-medium question: Design a data structure with O(1) add/delete/getRandom(). I had previously solved this LeetCode problem (Insert Delete GetRandom O(1)), so I explained my approach and coded it efficiently.
I wasn't required to run the code on an IDE but was expected to dry run sample test cases for both problems. An hour after this interview, I received a call confirming I had cleared it, and the LLD round was scheduled.
Round 3: Virtual Onsite 2 (LLD (apparently))
This round was incredibly frustrating and made me lose confidence in the process. The interviewer was 10 minutes late, didn't turn on their camera, and surprisingly, posed a High-Level Design (HLD) problem instead of the communicated Low-Level Design (LLD). When I pointed this out, I was met with the response, "How does it matter, are you not prepared for HLD?".
Throughout the discussion, the interviewer seemed uninterested, requiring me to repeatedly call out "hello hello" when asking questions or seeking feedback. The core question posed was: "How will you add/remove servers without downtime?".
I immediately thought of consistent hashing and began explaining the concept, using draw.io to illustrate the ring structure, redundant/virtual servers, and k hash functions. To my disbelief, the interviewer stated, "you are just throwing words at me, I do not understand why you are talking about hashing in a System Design interview?". I tried to re-explain how consistent hashing directly solves the problem of downtime during server scaling, even referencing Gaurav Sen's video as an excellent resource.
However, the interviewer abruptly ended the discussion with, "Please accept that you're wrong, do not keep repeating about hashing, I was not looking for this answer." When I asked what they were looking for, they simply said, "DB sharding." This left me utterly confused, as DB sharding didn't seem relevant to the problem of adding/removing servers without downtime. They refused to elaborate further, wished me good luck, and disconnected.
After this, the HR, who had previously been very responsive, ignored my messages and calls for a week. Eventually, I received a generic rejection email. This experience was a harsh lesson, highlighting that even thorough preparation can't account for a problematic interviewer. I've since come to terms with it, recognizing it's better not to join an organization whose representatives behave in such a manner.
Interview Questions (2)
Design a system that can gracefully handle the addition and removal of servers without causing any downtime for clients. The design should address how data consistency is maintained, how client requests are routed, and how the system scales horizontally and resiliently during these changes.
Preparation Tips
I had been extensively preparing for interviews, focusing on LeetCode for Data Structures and Algorithms (DSA), Low-Level Design (LLD), High-Level Design (HLD), and Operating Systems. My goal was to be well-rounded and minimize any chances of failure.