Skip to main content

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.