I saw a post on LinkedIn by a talent acquisition lead for a SDE II-Backend opportunity where those interested had to apply through a google form link. Seemed like they were focused on hiring graduates from premium colleges (top IITs, NITs, IIITs, etc). I filled the google form and got a call from the recruiter few hours later to discuss about the opportunity in brief and conduct a pre-screening assessment. After clearing the prescreening, he described the interview format and asked my availability to schedule for the same.
Interview Process
Round 1: Live Coding/DSA (60 mins) - Assessment on Code quality, optimisation, solution completion and logical explanation.
Round 2: Machine coding (60 mins)- Assessment on Solution completion, Code quality(Modular, Readable, Extendable), Design Pattern, Schema design(Data modelling), Communication(Logical explanation), Thread safety
Round 3: HLD + Project Discussion (90 mins)- Assessment on API design, Schema design, system design aptitude, Deep-dive on Distributed System (Scalability, Fault tolerance, System robustness and related topics), Project understanding
Round 0 - Pre-Screening (15 mins)
- Which data-structure would you use to implement an undo function in a text-editor? Ans: Stack.
- Which data-structure would you use for forward and backward browser navigation? Ans: 2 stacks, one to track forward and one for backward.
- To build a search feature for a ecommerce platform efficiently. Ans: For simple search using SQL, LIKE operator. But not efficient for large datasets. Indexing and search optimized DBs for bit more complex queries that can handle full-text search, for best results we can use cloud search engines like Elasticsearch (supports advanced search features like fuzzy matching).
- When a new product is launched and millions of users are searching that new product in the same ecommerce platform, in what ways can we reduce the load on the system? Ans: Use in memory cache (e.g. Redis) to reduce database load, database sharding to distribute the load across multiple nodes, load balancer to distribute traffic evenly among the servers and appropriate scaling, and usage of Content Delivery Network (CDN) to cache static content like photos, HTML, CSS, JS.
Round 1 - Live Coding/DSA (60 mins)
I was given 2 LC problems to be solved in 1 hour.
- https://leetcode.com/problems/minimum-division-operations-to-make-array-non-decreasing/
- https://leetcode.com/problems/apply-operations-to-make-all-array-elements-equal-to-zero/
Unfortunately, I was unable to pass all the TCs in both problems, hence most likely got out in this round itself.