SWE Interview - Set 4 Flashcards
Describe DBMS and its functions. List some of the popular DBMS.
A Database Management System (DBMS) is software that manages databases, allowing users to store, retrieve, and manipulate data efficiently. Popular ones include Oracle, MySQL, SQL Server, PostgreSQL, MongoDB.
Each offers unique features catering to diverse needs.
Describe the phases of SDLC
- Planning: Define project goals, assess feasibility, and create project plan for execution.
- Analysis: Gather detailed requirements from stakeholders to understand system needs and constraints.
- Design: Create system architecture, UI/UX, and technical specifications based on requirements.
- Implementation (Coding): Write code following design specifications using appropriate programming languages and tools.
- Testing: Verify software functionality through various tests to identify and fix bugs and issues.
- Deployment: Install and configure the software in the production environment for end-user access.
- Maintenance: Ensure software remains functional by implementing updates, bug fixes, and enhancements.
The difference between SDLC and DevOPs
SDLC is a traditional approach to software development that focuses on the structured process of software development, while DevOps is a newer methodology that emphasizes collaboration, automation, and continuous improvement across the entire software delivery pipeline
DevOps: For businesses needing agility and frequent updates
SDLC: Suited for projects with stable requirements, following a structured, phase-wise approach (step-by-step)
What is the goal of software design?
…aims to…
Software design aims to create a plan or blueprint for developing software that meets user requirements, is scalable, maintainable, and efficient.
Where does change in software design come from and how does it influence code?
Change in software design arises from evolving requirements or technology. It impacts code by requiring modifications that can affect functionality, structure, or performance.
Design Principle
What does the concept of separation of concerns entail in software design?
Design principle that organizes software into separate modules, each handling specific functionality. It eases development, debugging, and modifications without impacting other system elements.
e.g: Business Logic, Data Access, Authentication and Authorization, Logging and Error Handling, Configuration, UI, and more.
What does connascence measure in software and how does it impact development?
Diff btw connascense and coupling
Connascence measures the dependency between software components. Higher connascence increases interdependency, impacting flexibility and making changes riskier.
- Metric that measures coupling.
- The lower the connascence, the higher the code quality.
Design Principle
How does cohesion contribute to software quality and what does it measure?
Cohesion measures how much the components within a module are interconnected and work together towards a common purpose. High cohesion improves readability, maintenance, and reusability in software.
Example: A UserService
groups all user functionality. i.e: It’s responsible for user management, authentication, and authorization for high cohesion
Design Principle
What does coupling measure in software design?
It refers to the degree of dependency or connection between different modules within a system. It assesses how much one module knows about or relies upon another.
Design Principle
How does abstraction contribute to software development, and what does it simplify?
Principle that simplifies complex systems by emphasizing essential details while hiding unnecessary complexities, allowing for a clearer and more understandable structure.
Design Principle
Inversion of Control (IoC)
A design principle where control over the execution flow of a program is transferred from the program itself to an external framework or container. It emphasizes the framework controlling when and how certain methods are executed, promoting modular, loosely coupled, and more manageable code.
Design Pattern
Dependency Injection
Design pattern that provides components with external dependencies. It is a specific form of Inversion of Control (IoC). It shifts dependency management from components to an external source, improving modularity, testability, and code separation.
The external entity (such as a framework or a container) is responsible for providing those dependencies to the component