1 - π€ Requirements exploration
Objective: Understand the problem thoroughly and determine the scope by asking a number of clarifying questions
Recommended duration: Not more than 15% of the session.
System design interview questions are open-ended in nature and are usually vague and under-specified on purpose. You are required to dig deeper and clarify ambiguities in the problem by asking useful questions. Treat your interviewer as a product manager you are working with on a new project, ask enough questions so that you know what problems you are trying to solve and what you need to build
π€ Functional Requirementβ
π Offline Access: The application must allow users to access key features without an internet connection. The application should automatically save changes locally, which will sync with the server once the connection is restored.
π§π· Multilingual Support: The application must support multiple languages, allowing users to select their preferred language from a settings menu. All user interfaces, notifications, and help documents should be available in the selected language
π User Authentication: Users must be able to create a personal account using an email address and password. The application must support password recovery and reset functionalities
πͺ Persisting Across Sessions: The application should maintain user sessions across different logins and devices. It will restore unsaved work and preferences when users log back in, using secure session management and data storage solutions.
π±Data Synchronization: The application should synchronize data across all user devices when they are connected to the internet. Conflicts between different versions of the same data should be handled intelligently, prompting the user to resolve discrepancies.
π€ User Profile Management: Users should be able to update their profile information, including name, contact details, and preferences. Changes to the profile should be reflected immediately across all user interfaces.
π Push Notifications: The application must send real-time notifications to users about important events or actions, configurable via user settings. Notifications should be localized based on the user's selected language.
βΆοΈ Pagination: The application must include efficient pagination capabilities to manage and navigate large sets of data or content. Pagination should allow users to easily access specific segments of data by navigating through different pages within the application
π€ Non Functinal Requirementβ
β±οΈ Performance - Includes requirements related to the responsiveness, processing speed, throughput, and efficiency of the application under specific conditions
π Scalability - The ability of the system to handle growth, such as increasing number of users, workload, or transaction volume without impacting performance
π‘οΈ Reliability - The probability that a system will run without failure over a specific period of operation. It includes fault tolerance, robustness, and recoverability
π Availability - The degree to which a system is operational and accessible when required for use. Often measured as a percentage of uptime
π Usability - Involves human factors, aesthetics, and the overall user interface design, ensuring that the system is easy to use
π Security - Includes requirements for safeguarding systems and data through authentication, authorization, encryption, and other security protocols to prevent unauthorized access
π§ Maintainability - Refers to how easy it is to maintain the system, including the ease of fixing bugs, making updates, and enhancing the system
π§³ Portability - The ability of the system to be transferred from one environment to another, including the adaptability and flexibility across various platforms and devices
π Compliance - Ensures the system meets applicable laws, standards, guidelines, and regulations to which the software must adhereβΏ Accessibility - The design of products, devices, services, or environments for people with disabilities, ensuring that the system is usable by people with a variety of different impairments.
π¦ Rate Limiting - Controls the frequency of user actions or data requests to prevent overloads and ensure consistent service performance. Essential for system stability and protecting against abuse.