Interview Tips for Software Engineer
1) What are the important categories of software?
2) What is the main difference between a computer program and computer software?
A computer program is a piece of programming code. It performs a well-defined task. On the other hand, the software includes programming code, documentation and user guide.
3) What is software re-engineering?
It is a process of software development which is done to improve the maintainability of a software system.
4) Describe the software development process in brief:
The software development is a life cycle is composed of the following stages:
5) What SDLC models are available?
Waterfall Model, Spiral Model, Big-bag model, Iterative Model, and V- Model are some of the famous SDLC models.
6) What is verification and validation?
Verification:
Verification is a term that refers to the set of activities which ensure that software implements a specific function.
Validation:
It refers to the set of activities which ensure that software that has been built according to the need of clients.
7) In software development process what is the meaning of debugging?
Debugging is the process that results in the removal of error. It is a very important part of the successful testing.
8) How can you make sure that your code is both safe and fast?
In the software, development security is always first. So if the execution of the program is slow, then try to identify the reason(s) to its time complexity.
9) Name two tools which are used for keeping track of software requirements?
There many ways to keep track of requirements.
Two commonly used are:
10) What is the main difference between a stubs and a mock?
A stub is a minimal implementation of an interface which generally returns hardcoded data while a mock usually verifies outputs against expectations. Those expectations are set in the test.
11) What language do you like to write programming algorithms?
Every developer has their views when it comes to the programming language choices. Though, one should prefer high-level languages because they are dynamic. Like C and C++ languages.
12) How to find the size of a software product?
The size of software product can be calculated using by following two methods
13) What are function points?
Function points are the features which are provided by the software product. It is considered as a most important measurement for software size.
14) What are software project estimation techniques available?
Most widely used estimation techniques are:
15) What is feasibility study?
It is a measure to find out how practical and beneficial the software project development will prove to the organization. The software analyzer conducts a study to know the economic, technical and operational feasibility of the project.
After studying all this, the final feasibility report is created.
16) Explain the differences between Thread and Process?
A process is a collection of code, memory, data and other resources. A thread is a sequence of code that is executed within the scope of the process. You can (usually) have multiple threads executing concurrently within the same process.
17) Tell me the difference between an EXE and a DLL?
An EXE is an executable program while a DLL is a file that can be loaded and executed dynamically. It is an external code repository for programs. As both are different programs, reuse the same DLL instead of having that code in their file. It also reduces required storage space.
18) What is strong-typing and weak-typing? Which is preferred? Why?
Strong typing checks the types of variables at compile time. On the other hand, weak typing checks the types of the system at run-time. Among them, Strong typing is always preferred because it minimizes the bugs.
19) Describe the difference between Interface-oriented, Object-oriented and Aspect-oriented programming.
20) Why is using catch (exception) usually not ideal?
It is not ideal because:
21) What type of data is passed via HTTP Headers?
Script and metadata passed via HTTP headers.
22) How do you prioritize requirements?
First, you need to design a system by evaluating data structure. Then you should move on to the code structure needed to support it.
23) Give me the differences between object-oriented and component-based designs?
In a nutshell, object-oriented programming focuses on the relationships between classes that are combined into one large binary executable, while component-oriented programming focuses on interchangeable code modules that work independently and don’t require you to be familiar with their inner workings to use them.
24) When do you use polymorphism?
Polymorphism is used when there is a need for override functionality when inheriting class. It’s about shared classes and shared contracts.
25) What is the difference between stack and queue?
26) What are functional and non-functional requirements?
Functional requirements are functional features which are expected by users from the proposed software product.
Non-functional requirements are related to security, performance, look, and feel of the user interface.
27) Mentions some software analysis & design tools?
Some of the most important software analysis and designing tools are:
28) Give me the differences between tags and branches?
Tags are for versioning releases which are temporary holding places for doing such thing. However, branches are deleted when those changes are merged into the trunk.
29) Where is a protected class-level variable available?
Protected class-level variables are available to any sub-class derived from the base class.
30) When do you need to declare a class as abstract?
We should declare a class as abstract in the following situations: