SWE Foundations
Software Design & Architecture
Testing and Quality Assurance
Implementation, OOP, and Deployment
Databases, APIs, and Version Control
100

What is the primary goal of software engineering?

To systematically build reliable, maintainable, and efficient software using engineering principles.

100

What is modularity?

Breaking a system into independent, cohesive modules that are easier to understand, maintain, and reuse.

100

Purpose of software testing

To find defects and ensure the system meets requirements and behaves correctly.

100

CRUD

Create, Read, Update, Delete

100

What is a DBMS?

Software that manages databases and provides tools for storing, retrieving, and manipulating data.

200
What is the difference between software engineering and programming?

Programming is writing code; software engineering is the full process of designing, building, testing, deploying, and maintaining software.

200

What makes architecture "good"?

Low coupling, high cohesion, scalability, maintainability, clear separation of concerns, and alignment with requirements.

200

Verification vs validation

- Verification: "Are we building the product right?" (meets specs)

- Validation: "Are we building the right product?" (meets user needs)

200

Single Responsibility Principle

A class/module should have one reason to change - one focused responsibility

200

Primary key vs foreign key

Primary key: Unique identifier for a row

Foreign key: References a primary key in another table to create relationships

300

Three major SDLC activities

Requirements, Design, Implementation, Testing, Deployment, Maintenance

300

Describe MVC

- Model: Data + business logic

- View: UI representation

- Controller: Handles input and updates Model/View

300

Two types of tests

- Unit testing: Tests individual functions/classes

- Integration testing: Tests interactions between components

- System testing: Tests the whole system

- Acceptance testing: Ensures readiness for users

- Manual testing: Human-driven testing

300

Inheritance vs. composition:

- Inheritance: "Is-a" relationship; class extends another

-  Composition: "Has-a" relationship; class contains other objects. Preferred for flexibility

300

SQL SELECT Statement

SELECT * FROM table_name

400

Functional vs non-functional requirements

Functional: What the system must do (features, behaviors)

Non-functional: How the system performs (performance, security, usability, reliability)

400

Layered vs microservices architecture

- Layered: Organized into layers (UI -> Logic -> Data). Centralized, easier to manage, but less flexible 

- Microservices: Independent services communicating via APIs. Highly scalable and deployable but more complex. 

400
What is technical debt?

The cost of taking shortcuts now that must be “paid back” later through refactoring or fixes. Poor testing increases technical debt.

400

Polymorphism

Objects of different types can be treated through a common interface, enabling different behaviors with the same method call.

400

What is an API and why use it?

An API is an interface that allows software systems to communicate. Developers use APIs to reuse functionality, integrate services, and avoid reinventing features.

500

WRSPM Model

- World: The real-world environment/problem

- Requirements: What the system must achieve in the world

- Specification: Formal description of system behavior

- Program: The actual code implementation

- Machine: Hardware/software platform the program runs on.

500

Intellectual Distance

The gap between what a developer wants to express and how they must express it in code.

500

Why can software never be bug-free?

- Software complexity makes exhaustive testing impossible

-  Requirements change over time

- Interactions with environments/platforms are unpredictable

500

Deployment is a mix of what?

Deployment requires:

- Implementation (building, packaging, configuring)

- Testing (verifying in staging/production environments)

500

Git vs GitHub + staging area

Git: Local version control system

GitHub: Cloud hosting for Git repositories

Staging area: Where changes go after git add and before committing; a preview of what will be included in the next commit

M
e
n
u