Flipkart SDE 3 Machine coding round | 24th May 2025

flipkart logo
flipkart
SDE III
June 12, 20255 reads

Summary

I participated in a machine coding round for the SDE3 role at Flipkart. The task involved designing and implementing a backend system for 'ClearFit', a new fitness application, covering gym onboarding, workout slot management, and user booking functionalities.

Full Experience

ClearFit - SDE3 Design a backend system for a new enterprise application that Cleartrip is launching, ClearFit. Cleartrip is partnering up with gyms across Bangalore to enter into the fitness space. For the Beta launch the requirements are as follows: Functionality to onboard centers with details like centerName, center-timings, workout variations. Each center can have N possible workout variations - Weights, Cardio, Yoga, Swimming etc. There could be newer workouts added in the future.

Functionality to define workout slots. Each center will define a workout slot during center timings. These slots would be defined by a center admin. Current scope is that at one point of time for a center, there would be just one workout. The number of seats in each workout slot for a given center is fixed. Current scope is that an admin would define these workout slots on a daily basis for the same day and only once. Update is out of scope

End-User/Customer can perform the following operations: Optional - Register onto the platform. In the current scope we don’t have to worry about authentication. View the workout slots availability/unavailability for the day - filter by workout type (sorted by start time in ASC order). View the workout slots availability/unavailability for the day - filter by workout type and center name (sorted by seats available in ASC order). Book a workout slot for a user if seats are available at that time. Cancel the booked workout slot. Optional - Notify me feature: If a user is interested in some particular slot of a center and seats are unavailable he can choose to be part of the interest list for that slot. Once any other user cancels that particular slot the interested users can be notified. Notification will be pushed to all the interested users. You can use logs to model the notification.

Example :-

Center Onboarding steps AddCentre(“Koramangala”); AddCentretimings(“Koramangala”,List timings); 6 am to 9 am 6 pm to 9 pm

AddCentreActivities(“Koramangala”,List activities); Weights, Cardio, Yoga, Swimming

AddCentre(“Bellandur”); AddCentretimings(“Bellandur”,List timings); 7 am to 10 am 7 pm to 10 pm

AddCentreActivities(“Bellandur”,List activities); Weights, Cardio, Yoga Admin Operation Add Workout and seats to location

addWorkout(, , , , ) addWorkout(“Koramangala”, “Weights”, 6, 7, 100) addWorkout(“Koramangala”, “Cardio”, 7, 8, 150) addWorkout(“Koramangala”, “Yoga”, 8, 9, 200)

addWorkout(“Bellandur”, “Weights”, 18, 19, 100) // this should not be allowed because of time addWorkout(“Bellandur”, “Swimming”, 19, 20, 100) // not allowed because of workout type addWorkout(“Bellandur”, “Cardio”, 19, 20, 20) addWorkout(“Bellandur”, “Weights”, 20, 21, 100) addWorkout(“Bellandur”, “Weights”, 21, 22, 100)

User Operations register(“Vaibhav”)

viewWorkoutAvailability(“Weights”) “Koramangala”, “Weights”, 6, 7, 100 “Bellandur”, “Weights”, 20, 21, 100 “Bellandur”, “Weights”, 21, 22, 100

bookASession bookSession(“Vaibhav”, “Koramangala”, “Weight”, 6, 7)

viewWorkoutAvailability(“Weights”) “Koramangala”, “Weights”, 6, 7, 99 “Bellandur”, “Weights”, 19, 20, 100

CancelSession cancelSession(“Vaibhav”, “Koramangala”, “Weight”, 6, 7)

viewWorkoutAvailability(“Weights”, “Koramangala”) “Koramangala”, “Weights”, 6, 7, 100

Functional notes :- Please handle concurrent scenarios like multiple users booking the same slot. For simplicity, all the operations are performed for a day only. But keep your design extensible and moving operations across days should be done with minimal change. You can take time as an integer since the existing scope is for a day only. There would be a unique identifier of every entity- could be a name or a unique id. You can choose one and assume that it would be unique. Guidelines Time: 120 mins Mandatory programming language - Java. A driver program/main class/test case is needed to test out the code by the evaluator with multiple test cases. But do not spend too much time in the input parsing. Keep it as simple as possible. Evaluation criteria: Demoable & functionally correct code, Code readability, Proper Entity modeling, Modularity & Extensibility, Separation of concerns, Abstractions, Corner case handling. Use design patterns wherever applicable. You are not allowed to use any external databases like MySQL. Use only in memory data structures. Functionality doesn’t have to be defined as a rest api. You can expose them as methods also which can be invoked from the driver class. No need to create any UX Please focus on the Bonus Feature (if any) only after ensuring the required features are complete and demoable. Method signatures defined are just to give an idea. You are free to change them to suit your requirements. Use of the internet is allowed to check the syntax. Using popular java frameworks like spring and dropwizard is allowed.

Interview Questions (1)

Q1
Design a ClearFit Backend System (Machine Coding)
System Design

Design a backend system for a new enterprise application that Cleartrip is launching, ClearFit. Cleartrip is partnering up with gyms across Bangalore to enter into the fitness space. For the Beta launch the requirements are as follows: Functionality to onboard centers with details like centerName, center-timings, workout variations. Each center can have N possible workout variations - Weights, Cardio, Yoga, Swimming etc. There could be newer workouts added in the future.

Functionality to define workout slots. Each center will define a workout slot during center timings. These slots would be defined by a center admin. Current scope is that at one point of time for a center, there would be just one workout. The number of seats in each workout slot for a given center is fixed. Current scope is that an admin would define these workout slots on a daily basis for the same day and only once. Update is out of scope

End-User/Customer can perform the following operations: Optional - Register onto the platform. In the current scope we don’t have to worry about authentication. View the workout slots availability/unavailability for the day - filter by workout type (sorted by start time in ASC order). View the workout slots availability/unavailability for the day - filter by workout type and center name (sorted by seats available in ASC order). Book a workout slot for a user if seats are available at that time. Cancel the booked workout slot. Optional - Notify me feature: If a user is interested in some particular slot of a center and seats are unavailable he can choose to be part of the interest list for that slot. Once any other user cancels that particular slot the interested users can be notified. Notification will be pushed to all the interested users. You can use logs to model the notification.

Example :-

Center Onboarding steps AddCentre(“Koramangala”); AddCentretimings(“Koramangala”,List timings); 6 am to 9 am 6 pm to 9 pm

AddCentreActivities(“Koramangala”,List activities); Weights, Cardio, Yoga, Swimming

AddCentre(“Bellandur”); AddCentretimings(“Bellandur”,List timings); 7 am to 10 am 7 pm to 10 pm

AddCentreActivities(“Bellandur”,List activities); Weights, Cardio, Yoga Admin Operation Add Workout and seats to location

addWorkout(, , , , ) addWorkout(“Koramangala”, “Weights”, 6, 7, 100) addWorkout(“Koramangala”, “Cardio”, 7, 8, 150) addWorkout(“Koramangala”, “Yoga”, 8, 9, 200)

addWorkout(“Bellandur”, “Weights”, 18, 19, 100) // this should not be allowed because of time addWorkout(“Bellandur”, “Swimming”, 19, 20, 100) // not allowed because of workout type addWorkout(“Bellandur”, “Cardio”, 19, 20, 20) addWorkout(“Bellandur”, “Weights”, 20, 21, 100) addWorkout(“Bellandur”, “Weights”, 21, 22, 100)

User Operations register(“Vaibhav”)

viewWorkoutAvailability(“Weights”) “Koramangala”, “Weights”, 6, 7, 100 “Bellandur”, “Weights”, 20, 21, 100 “Bellandur”, “Weights”, 21, 22, 100

bookASession bookSession(“Vaibhav”, “Koramangala”, “Weight”, 6, 7)

viewWorkoutAvailability(“Weights”) “Koramangala”, “Weights”, 6, 7, 99 “Bellandur”, “Weights”, 19, 20, 100

CancelSession cancelSession(“Vaibhav”, “Koramangala”, “Weight”, 6, 7)

viewWorkoutAvailability(“Weights”, “Koramangala”) “Koramangala”, “Weights”, 6, 7, 100

Functional notes :- Please handle concurrent scenarios like multiple users booking the same slot. For simplicity, all the operations are performed for a day only. But keep your design extensible and moving operations across days should be done with minimal change. You can take time as an integer since the existing scope is for a day only. There would be a unique identifier of every entity- could be a name or a unique id. You can choose one and assume that it would be unique. Guidelines Time: 120 mins Mandatory programming language - Java. A driver program/main class/test case is needed to test out the code by the evaluator with multiple test cases. But do not spend too much time in the input parsing. Keep it as simple as possible. Evaluation criteria: Demoable & functionally correct code, Code readability, Proper Entity modeling, Modularity & Extensibility, Separation of concerns, Abstractions, Corner case handling. Use design patterns wherever applicable. You are not allowed to use any external databases like MySQL. Use only in memory data structures. Functionality doesn’t have to be defined as a rest api. You can expose them as methods also which can be invoked from the driver class. No need to create any UX Please focus on the Bonus Feature (if any) only after ensuring the required features are complete and demoable. Method signatures defined are just to give an idea. You are free to change them to suit your requirements. Use of the internet is allowed to check the syntax. Using popular java frameworks like spring and dropwizard is allowed.

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!