Software Engineering Interview Questions Flashcards

1
Q

How can we determine size of the software product?

A

lines of code or function points.

Function points are features (not actually functions) within a project.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What is change control?

A

A system that ensures changes to a project are consistent, and made in line with the projects requirements and rules.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What are some project management tools?

A

Gannt charts,
Kanban boards,
Milestone checklists

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

How can you gather requirements?

A
Staff interviews
brain storming
Domain analysis
Observation
Examining existing software
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What is an SRS?

A

Software Requirements Specification

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What are functional requirements?

A

Functional requirements are function features and specificaitons that are expected by the end users

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What are non-functional requirements?

A

They are requirements that are implicit. They include things like security, look and feel of the ui, interoperability, cost etc.

Another way of putting it - is it’s a requirement specifies criteria that can be used to judge the operation of the system, but doesn’t describe specific behaviour.

Function requirements on the other hand describe the specific behaviour or functions of the system.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What is modularisation?

A

A technique in which a larger system is broken down into smaller modules that can complete tasks independently.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What is concurrency?

A

When two or more tasks can be initiated simultaneously and independently of each other.

Usually achieved by splitting the software into modules or components that can be executed on separate threads or processes.

JavaScripts model of concurrency is based on the event loop.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What is cohesion?

A

It’s a measure of how much the modules in a system actually belong together. High cohession is GOOD.

Benefits:
Simpler modules
Increased maintainability
Increased reusability

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What is coupling?

A

How tightly bound software modules are to each other. loose coupling is desirable. The lowest form of coupling is messaging. Data coupling isn’t too bad (i.e. sharing data through parameters) either.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Why is tight coupling bad?

A

A single change in one module can cause ripple effects throughout a system.

Harder to implement in many ways.

Less code reuse possible.

Potential for More bugs.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What are the principles of agile?

A

Customer satisfaction through early and continuous delivery of a product.
Welcome changing requirements, even late in development
Working software is delivered frequently
Close, daily collaboration between stakeholders
Projects built around motivated individuals
Face to face is best form of communication (collocation)
Working software is the principle measure of success
Sustainable pace
Continuous attention to technical excellence and good design
Simplicity - avoiding unnecessary work
Best architectures arrive from self organising teams
Regular reflections and adjust accordingly

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Why did agile work for you?

A

Firstly we used the scrum framework. Mainly because it seemed to be the industry norm, it’s simple, and flexible.

Many games I have worked on have suffered from not being playable for long periods of time - this causes issues with management.

EA often wanted what’s called a vertical slice - but the issue with this is that when you are designing an engine at the same time you are designing a game - you are talking about delivering an essentially finished game engine at the beginning of the project.

By making sure we had an always working / always functional build we could satisfy our bosses requirements to be able to comment on the game.

By having standups and daily meetings we could react quickly to changes or issues as a group.

By adhering to a planning system that meant we only used the available resources we tended to work within our means.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What do you know about extreme programming?

A

It’s a type of agile development, and was designed to improve software quality and responsiveness to changing client needs.

Involve pair programming, code review, unit testing, and only programming features when they are needed.

It kind of pushed things to the extreme - i.e. if code reviews are useful, let’s do it all the time and do paired programming.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Difference between agile and waterfall?

A

Approach to testing is a big one - there was always a separate testing phase in waterfall. after a build phase. Whereas with agile, you’d do integration testing.

17
Q

What methods have you used?

A

Agile in the form of scrum,
waterfall and
lean startup (some parts - mixed with scrum)

18
Q

What is lean startup?

A

The notion of creating a minimum viable product, as quickly and early as possible. Learn the most about your customers with the least amount of effort.

Continuous deployment

A/B testing

Pivoting - i.e. course correction based on feedback from the MVP.

19
Q

What issues with Scrum?

A

Some people didn’t buy into the process - particularly the planning phase. We used “points” system, but some people always wanted to work in hours.

Doesn’t work well with art teams. I.e. they may not have smaller units of work. Or we ended up making things in a granular manner, for the sake of scrum…

20
Q

Difference between OOP design and functional design.

A

Function-oriented design is comprised of many smaller sub-systems known as functions. Each function is capable of performing significant task in the system. Object oriented design works around the real world objects (entities), their classes (categories) and methods operating on objects (functions).

21
Q

What’s the difference between top down and bottom up design?

A

Top-down model starts with generalized view of system and decomposes it to more specific ones, whereas bottom-up model starts with most specific and basic components first and keeps composing the components to get higher level of abstraction.

22
Q

What is the difference between white box and black box testing?

A

Black-box testing checks if the desired outputs are produced when valid input values are given. It does not verify the actual implementation of the program.

White-box testing not only checks for desired and valid output when valid input is provided but also it checks if the code is implemented correctly.

Whitebox testing requires knowledge of the code and is usually done by a software engineer.

23
Q

What is software scope?

A

Software scope is a well-defined boundary, which encompasses all the activities that are done to develop and deliver the software product.

The software scope clearly defines all functionalities and artifacts to be delivered as a part of the software. The scope identifies what the product will do and what it will not do, what the end product will contain and what it will not contain.

24
Q

What is the SDLC?

A

The software design life cycle - it describes all of the steps required to build and deliver a piece of software.

25
Q

What are the phases of the SDLC?

A

The generic phases of SDLC are: Requirement Gathering, System Analysis and Design, Coding, Testing and implementation. The phases depend upon the model we choose to develop software.