Interview Experience: All rounds were conducted virtually on meet.
Round1: Machine Coding
Problem Statement:
Swiggy Auto Assignment
We are trying to build an auto assignment system for Swiggy’s delivery fleet. For simplicity we will solve the problem within the context of an area.
Given a list of orders and a list of Delivery executives(DE), System should output list of assignments such that following attributes are cumulatively optimised:
-> First mile (Distance between restaurant and DE’s current location): Prioritise assignment pairs with low first mile.
-> DE waiting time(Time elapsed since DE last delivered the order): Prioritise DE with already high waiting time.
-> Order delay time (Time elapsed since Order was placed): Prioritize Order with already high order delay.
Input:
Orders: [{“restaurant_location”:”lat1,long1”,”ordered_time”:”T1”,”id” : 123},{“restaurant_location”:”lat3,long3”,”ordered_time”:”T2”,”id”:321}]
DEs : [{“id”:567,”current_location”:”lat5,long5”,”last_order_delivered_time”:”T3”},{“id”:765,”current_loca tion”:”lat7,long7”,”last_order_delivered_time”:”T4”},{“id”:766,”current_location”:”lat9,long9”,”last_ order_delivered_time”:”T5”}]
Output: Assignments: [{“order_id”:123,”de_id”:765},{“order_id”:321, “de_id”:766}]
Round 2 : Design
Focus: HLD
Rating/Review System
1. Rate the restaurant & delivery
2. Review the restaurant
3. average ratings of rest/executive
4. Add a delivery tip. If the rating
for delivery is below threshold, refund this
5. ratings are out of 5
Round 3 : Design
Focus: LLD
Coupon/Offer Service
couple of use cases
1. given user_id, user_type, tnx_amount...etc return list of coupons
2. given a coupon & order_amount, payment_method, validate the coupon
System should be extensible enough to add more filtering conditions later.
Round 4 : Coding
Focus: Problem Solving & Data Structures.
1. Let A-1, B-2….Z-26
Given a string of digits, find number of encodings
E.g.
“12” O/P: 2 (encodings possible are AB & L)
“226” O/P: 3
2. Given a startWord & an endWord. You have to make changes in the start word to form the endWord. Each change is counted as one step. You can only transform to a known word in the dictionary(given as input). Find the minimum number of steps.
E.g. wordList: ["hot", "dot", "dog", "lot", "log", "cog"]
startWord “hit”
endWord: “cog”.
O/P: 4 (hit -> hot -> lot -> log -> cog)
You are expected to come up with running solutions for each of the probelms.
Round 5: HM
Past experiences & standard behavioural questions.