Microsoft SDE Intern Interview Experience
💼 LTIMindtree Interview Experience (On-Campus) | Fresher | 2026
Salesforce SMTS | Interview Experience | Rejected
JPMC | SDE2 (Associate) - Java Backend - Interview Experience + Compensation
Microsoft - SDE2 - Coding Round
Flipkart SDE 3 Machine coding round | 24th May 2025
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)
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.