What is the main role of a software engineer?
(Answer can vary): To design, develop, test and maintain software systems that solve real-world problems.
What is modularity in software design?
The practice of dividing software into separate, independent modules that can be developed, tested, and maintained individually.
Can software ever be completely bug-free?
No because it is not possible to guarantee a completely bug-free system.
Name one principle of OOP.
(Answers may vary): Inheritance, encapsulation, polymorphism, and abstraction.
Name one core value of the Agile Manifesto.
(Answers may vary): Individuals and interactions over processes and tools; Working software over comprehensive documentation; Customer collaboration over contract negotiation; Responding to change over following a plan.
True or False: Software engineering is just coding.
False
What is the difference between functional and non-functional requirements?
Functional requirements describe what the system should do, while non-functional requirements describe how the system performs.
Name the phases of the Software testing Life Cycle (STLC).
Requirement analysis, test planning, test design, test implementation, test execution, defect tracking, and test closure.
What does YAGNI stand for in programming principles?
What is a sprint in Agile methodology?
A time-boxed period during which a Scrum team completes a set of work items or user stories.
Name two activities of the SDLC.
Examples can include: Requirements analysis, design, implementation, testing, deployment, and maintenance.
In MVC architecture, what does "C" stand for and what is its role?
Controller. Its role is to handle user input, update the model, and decides which view to display.
Name three types of software tests.
(Answers may vary): Unit testing, integration testing, system testing, acceptance testing, manual testing.
Give an example of separation of concerns in coding.
Dividing a program into modules such as a data access layer, business logic layer, and presentation layer.
What is the difference between Git and Github?
Git is a version control system for tracking code changes locally, while Github is a cloud-based platform for hosting Git repositories and collaboration.
What is "technical debt" in software engineering?
The cost of extra work caused by choosing an easy or quick solution.
What structural vs. behavioral UML diagrams?
Structural diagrams show the static structure of a system and behavioral diagrams show dynamic behavior.
What is the difference between manual testing and system testing?
Manual testing is performed by testers without automation tools, while system testing evaluates the complete integrated system against requirements.
Explain the difference between inheritance and composition.
Inheritance is an "is-a" relationship, while composition is a "has-a" relationship.
Describe the workflow of staging, committing, and pushing code in Git.
"git add" moves changes to the staging area, "git commit" saves them to the local repository, and "git push" uploads them to the remote repository.
What factors do you consider when deciding whether to build or buy software?
Cost, time, customization needs, maintenance, and long-term support
When refactoring code, what are key factors to consider?
Improving readability, reducing complexity, eliminating duplication, improving maintainability, and preserving functionality.
How is software deployment related to testing and implementation?
Deployment is the process of releasing software into production and combines implementation steps with final testing to ensure the system works correctly.
What is polymorphism, and why is it useful?
The ability of a different classes to be treated as instances of the same class through a common interface. It's useful because it allows code to be more flexible and reusable.
What is a primary key and a foreign key in a database?
A primary key identifies a record in a table. A foreign key is a column that creates a link between two tables by referring to the primary key of another table.