You have graduated as a Software Engineer, so now you can relax and smile thinking that you never have to deal with those stressful exams again. No more whole nights headlong over the books. Right?
Unfortunately, that is wrong. Now comes the most difficult part, which is to get a proper job in a company. And in your job interview they are not going to take into account the generic knowledge you learned in college: they are going to ask you questions that, if you do not have work experience, may put you in a bind and ruin your chances of getting the job. So here we present some of the most common questions and their perfect answers, so that you go a little more prepared.
Common software engineering interview questions
Some very basic questions are repeated in almost all the questionnaires of technology companies, more than anything to know if the candidate has the education that his title says:
What is computer software?
It is a package that includes both a software program and its documentation and a user guide on how to use it.
Tell me the difference between program and software
A program is a piece of programming code, while the software, in addition to the code, also includes the documentation and user guide.
Mention the most important software categories.
- System
- Application
- Embedded
- Web applications
- Artificial intelligence
- Scientist
How is a software developed?
The software development cycle consists of the following stages:
- Requirements analysis
- Specification
- Software architecture
- Implementation
- Tests
- Documentation
- Training and support
- Maintenance
What does software scope mean?
The software scope is a well-defined frontier of the activities to be carried out to develop and deliver a product. The scope defines all the functionalities that the software should perform and its main function; and also what should not do.
What are software requirements?
They are the functional descriptions of a proposed software system. It is the description of the destination system, its functionalities and characteristics.
What are the functional and non-functional requirements?
Functional requirements are the characteristics that users expect from the software. Non-functional ones relate to security, performance, appearance and user interface issues.
What is the difference between a thread and a process?
A process is an instance of the computer program. In one program it is possible to have one or more threads.
What is the difference between an EXE and a DLL?
An exe is an executable program, while a DLL is a file that programs can dynamically load and execute. DLLs are external code repositories for programs that reduce the required storage space.
Mentions some software analysis & design tools for software development
- Data Flow Diagrams
- Structured Charts
- Data Dictionary
- Hierarchical Input Process Output diagrams
- Entity Relationship Diagrams
- Decision tables
Main technical questions
In what language you prefer to write your programming algorithms?
This answer depends on your personal capabilities. However, a professional developer always prefers high-level languages because of its dynamism. C and C ++ are probably the answers that your future employers want to hear.
What is debugging in the software development process?
Debugging is the process to eliminate errors.
How do you calculate the size of a software product?
It can be calculated by counting the lines of code or by counting the delivered function points.
What are function points?
These are the characteristics that the software product provides.
What differentiates a stub from a mock?
The stub is a minimal implementation that returns encoded data. The mock is a simulation that verifies the results against the expectations, established according to the test.
What is modularization?
It is a technique in which a software system is divided into discrete modules, which perform their tasks independently.
What is cohesion?
It is a measure that defines the intra dependence between the elements of the module.
What does the level-0 data flow diagram mean?
The highest level of abstraction is called Level-0 of DFD. Also called context level DFD. Represent the entire information system as a diagram.
What is strong writing and weak writing? What method do you prefer? Why?
Strong writing verifies the types of variables at compile time. On the other hand, weak writing verifies system types at runtime. Among them, strong typing is always preferable because it minimizes errors.
Tell me the difference between stack and queue
In a Queue, is always First In, First Out. In a Stack, is always Last In, First Out.
Psycological questions on a software engineering interview
Not everything is knowledge. The candidate must be, in addition to well educated, shrewd, creative and intuitive:
Is a code preferable to be safe or fast?
In software development, security must always be guaranteed as a priority. If after this the program is running slow, the reason for time consumption must be identified and corrected if possible.
What differentiates structured English from pseudocode?
Structured English is native English language, which is used to write the structure of a program module. The pseudocode is more similar to the programming language, without the syntax of any specific language.
If there are twenty different socks of two types in a drawer in a dark room, what is the minimum number of socks you must take to have a pair that matches?
If we collect three socks, they can be of the same type even if the odds are 50%. The odds are never an equal reality. Therefore, the only way to “ensure you have a matching pair” is to collect at least 11 socks.
How to ensure that a code can handle various types of error situations?
You can prepare tests that define every expected error situations.
Questions to be a software engineering Manager
If the candidate is well prepared and can interact nicely with the team, could he be a natural leader? Could he be at the forefront of a software engineering project? These questions and answers will decide:
What is a Software Engineering Manager?
He is the person responsible to lead a software development project. The manager is responsible for planning, monitoring the project progress and serves as a communication bridge between the different members of the team. He is also responsible for managing the risks and resources to fulfill the project within the required parameters of time, cost and quality.
What is a feasibility study?
It is the measure that indicates how practical and beneficial the development of the software project for the company will be. This study should reflect the economic, technical and operational viability of the project.
Economic Viability: it analyzes the costs for training, the necessary additional tools and estimates the costs / benefits relationship of the project.
Technical Viability: it evaluates the real possibility of developing the software, the suitability of the computers and operating system in which the software will be executed, the personnel knowledge of software development and the tools available for this project.
Operational Viability: it analyzes if the company can adapt to the changes demanded by the project.
Mention two tools to track software requirements
- A document of requirements specifications to list all requirements.
- An Excel sheet listing the requirement, type, dependency, priority, etc.
Define what is verification and validation
Verification refers to the group of activities that ensure that the software performs a specific function. On the other hand, Validation is the set of activities that guarantees that the software covers the needs of the client.
What are the Software Development Life Cycle (SDLC) models that exist?
- Cascading
- Spiral
- Big-bag model,
- Iterative model
- Model V
In your opinion, which SDLC model is better?
There is no model superior to the other: each one is used according to the needs of the software development process at hand.
What are CASE tools?
CASE means Computer Aided Software Engineering. They are a set of automated software that are used to support, improve and strengthen SDLC activities.
Define what is software reengineering
It is the development process in which the maintenance capacity of a pre-existing software system is improved.
What is the project estimate?
It is a process in which various aspects of software are estimated as a product. This estimate is made by consulting experts or using predefined formulas.
What are the project estimation techniques you know?
The most commonly used are decomposition techniques and empirical techniques.
What is software configuration management?
It is a function that ensures that all changes made to the software system are consistent and are created using rules and regulations of the organization.
How to measure the execution of a project?
Activity monitoring, status reports and milestone checklists are used.
What project management tools can be used?
That depends on the needs of the software project: Pert charts, Gantt charts, resource histograms, status reports, etc.
Is software maintenance expensive?
Maintenance will never be expensive if we are using a proper software development process.
Of course, these are just some of the questions you may face during the interview process for your dream position: each company has its own little book and interview process. But we hope that, with these, you already have a good idea of the task ahead.