System Design: Designing a Calendar Application
Example interview question on designing a calendar application.
We'll cover the following
Question
Design a calendar application where users can view and schedule meetings.
Background
This is quite an open-ended question, similar to the previous design question. However, this question does have a slightly more algorithmic and data structure-focused bend to it as we’ll see when we discuss the design. It’s important to be ready for these types of questions, particularly if you have a Computer Science or technical background.
Solution approach
We’ll follow the same approach as we did for the previous question:
-
Define system requirements
Before we begin any design we’ll spend a few minutes agreeing on the one to two primary use cases we’ll need to cover.
-
System breakdown
We’ll then diagram the key individual components of the system needed to address the one to two primary use cases.
-
Dataflow discussion
We’ll discuss the necessary data points the system will need to collect and how they flow through the system.
-
Scaling the design
We’ll talk about design choices and tradeoffs to ensure that the system scales.
-
Capacity modeling
We’ll estimate the request volume and data volume the system will need to handle for a given time period.
Sample answer
System requirements
We’ll focus on two primary use cases for this system:
View calendar
When the user opens the application, they can see current calendar entries (i.e. booked meetings). For now, we will assume only a single time zone for simplicity. The user can page through to see future calendar entries.
Book meetings
The user should be able to book meetings on other users’ calendars. Conflicts should be detected. We will assume that meetings can be set at the minute boundary (i.e. the shortest meeting is one minute).
Note
We will assume for now that other supporting functions such as authentication will not be in scope for this exercise, although it may be a useful followup to think through how these other requirements may be implemented.
Level up your interview prep. Join Educative to access 80+ hands-on prep courses.