The interviews for Backend Developers are one of the toughest. They are grilled over numerous topics. We have tried to cover one of the most common and the trickiest questions asked during Backend Developer interviews.
How would you manage Web Services API versioning?
Versioning is a critical part of API design, as it gives developers the ability to improve their API without stopping the clientʼs applications whenever new updates are rolled out. The three types of API versioning are:
- URL Versioning or Route Versioning: This solution uses URI routing to point to a specific version of the API.
- Versioning using a custom header: REST APIs are versioned by providing custom headers with the version number included as an attribute.
- Query String Parameter: Considered to be the worst method, the version number is included as a query parameter.
How would you find the most expensive queries in an application?
Expensive queries are database queries that execute very slowly or utilize large amounts of CPU or memory resources. These queries are the most common cause of performance issues in an application. SQL Activity Monitor is an easy and rich UI tool available in the SQL Server Management Studio. You can also use SQL Dynamic Management View (DMV) to view the most expensive queries.
What Is CAP Theorem?
The CAP Theorem for distributed computing was published by Eric Brewer. This states that it is not possible for a distributed computer system to simultaneously provide all three of the following guarantees:
- Consistency (all nodes see the same data even at the same time with concurrent updates )
- Availability (a guarantee that every request receives a response about whether it was successful or failed)
- Partition tolerance (the system continues to operate despite arbitrary message loss or failure of part of the system) The CAP acronym corresponds to these three guarantees. This theorem has created the base for modern distributed computing approaches.
When would you apply asynchronous communication between two systems?
In asynchronous communications, the client sends a request to the server (typically requiring lengthy processing), while receiving a delivery acknowledgment immediately. After the client receives the acknowledgment, it carries on with other tasks and will be notified eventually when the server finishes processing the request. The main benefit of asynchronous communications is improved performance. Asynchronous communications can be applied in situations where the response is not required immediately, and the current process can continue without the response. Real-world examples can include email, Slack, and other messaging platforms.
What are NoSQL databases? What are the different types of NoSQL databases?
A NoSQL database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases (like SQL, Oracle, etc.). Types of NoSQL databases:
- Document Oriented
- Key Value
- Column Oriented
In what situation would you choose RDBMS and where would you choose NoSQL?
An RDBMS is used when you need ACID (Atomicity, Consistency, Isolation, Durability) compliance to reduce anomalies and protect data integrity and when the data is structured and unchanging. On the other hand, NoSQL is recommended for high volume environments, cloud computing & storage, and when using unstructured data. Examples of NoSQL databases are MongoDB, Cassandra, HBase, and CouchDB
Difference between acceptance test and functional test?
Functional testing: This is a verification activity; did we build a correctly working product? Does the software meet the business requirements? A functional test verifies that the product actually works as you (the developer) think it does.
Acceptance testing: This is a validation activity; did we build the right thing? Is this what the customer really needs? Acceptance tests verify the product actually solves the problem it was made to solve. This can best be done by the user (customer), for instance performing his/her tasks that the software assists with.
Name some performance testing steps
- Some of the performance testing steps are:
- Identify the testing environment
- Identify performance metrics
- Plan and design performance tests
- Configure the test environment
- Implement your test design
- Execute tests
- Analyze, report, retest
Which sorting algorithm to use and when?
- Quick Sort: is one of the most efficient sorting algorithms. It is based on the splitting of an array or list into smaller ones and swapping values based on the comparison with the ‘pivot’ element selected. It is more effective for data that can fit in memory. Otherwise merge sort is preferred.
- Bubble Sort: The simplest but most inefficient sorting algorithm, it repeatedly cycles through a list, compares adjacent values, and swaps them if they are in the wrong order. It is mostly used when array is small or if large data which is nearly sorted.
- Selection Sort: It is a fast and simple comparison-based sorting algorithm. It sorts by finding the minimum element repeatedly in an array. It is mostly used when an array is small as its time complexity makes it inefficient for larger arrays.
- Merge Sort: One of the most efficient algorithms, it uses the principle of divide and conquer. It iteratively breaks down lists into sub-lists consisting of single elements and then merges these elements as per the requirements. Widely used in case of linked list or where the known data is similar.
What are the qualities any good backend developer must possess?
This is a great question with which to impress the interviewer, as you can tell them about your competencies and understanding of the position. However, many candidates make the mistake of only talking about a couple of their strengths. The ideal answer should include at least some of the following points:
- In-depth knowledge of server programming languages like Python, Ruby, Java, Perl
- Great acquaintance with NoSQL and RDBMS
- Good understanding of front-end technologies (easy to work with frontend developers)
- Basic understanding of cloud deployments
- Ability to develop business logic within any app
- Ability to easily create functional APIs
- Design of service architecture
- Ability to optimize web applications
What do you find hardest about coding?
This question is designed for the interviewer to find out about your weaknesses or technical deficiencies. It is best to give an honest answer (without beating yourself up too much) about a specific area that might not be your strong point. What is more important is to let the interviewer know that you are improving yourself by learning, reading, or researching to upgrade your technical skills.
Backend development is an immense topic, and the above list of interview questions is only the tip of the iceberg. Use this list as a reference, after doing your research on the basic questions asked in an interview for backend developers. If you are looking for a job in Backend, we recommend subscribing to the Growremotely Newsletter and stay updated about jobs posted every week.