There are a lot of computer science graduates and programmers applying for programming, coding, and software development roles at startups like Uber and Netflix; big organizations like Amazon, Microsoft, and Google; and service-based companies like Infosys or Luxsoft, but many of them have no idea of what kind of programming interview questions to expect when you're applying for a job with these companies.
In this article, I'll share some frequently asked programming interview questions from different interviews for programmers at different levels of experience, from people who have just graduated from college to programmers with one to two years of experience.
As a computer science graduate, its expected from a programmer to have strong knowledge of both basic data structures e.g. array, linked list, binary tree, hash table, stack, queue and advanced data structures like the binary heap, trie, self-balanced tree, circular buffer etc. I have taken a lot of Java interviews for both junior and senior positions in the past, and I have been also involved in interviewing C++ developer. One difference which I have clearly noticed between a C++ and a Java developer is their understanding and command of Data structure and algorithms.
On average, a C or C++ developer showed a better understanding and application of data structure and their coding skill was also better than Java developers. This is not a coincidence though. As per my experience, there is a direct correlation between a programmer having a good command of the algorithm also happens to be a good developer and coder.
I firmly believe that interview teaches you a lot in very short time and that's why I am sharing some frequently asked Data structure and algorithm questions from various Java interviews.
If you are familiar with them than try to solve them by hand and if you do not then learn about them first, and then solve them. If you need to refresh your knowledge of data structure and algorithms then you can also take help from a good book our course like Data Structures and Algorithms: Deep Dive Using Java for quick reference.
Data Structures, Algorithm and Programming Language Interview Questions
For the sake of clarity and focus, I have categorized these data structure and algorithmic questions into various sub-category e.g. String questions, array-based questions, linked list questions, binary tree-related questions, searching and sorting based questions and bit manipulation questions.
This way you can start with the topic you feel most comfortable and slowly progressing to the topic which you want to improve.
1. String Interview Questions
The string is probably the most used data structure. You will see it right from your programming course and you will use it throughout your professional project. There is hardly an application written in Java and C++ who doesn't use String.
They are everywhere. From a C++ perspective, String is nothing but a null-terminated character array, but from Java perspective, String is a full-fledged object backed by character array.
In this category, you will find questions which require String manipulations e.g. substring, reversing, searching, sorting, slicing and dicing etc.
Here is a list of some of the frequently asked String Interview Questions from Coding Interviews:
Print duplicate characters from String? (solution)
Check if two Strings are anagrams of each other? (solution)
Print first non repeated character from String? (solution)
Reverse a given String using recursion? (solution)
Check if a String contains only digits? (solution)
If you can solve all these String questions without any help then you are in good shape. For more advanced questions, I suggest you solve problems given on Algorithm Design Manual by Steven Skiena, a book with toughest algorithm questions.
2. Array and Matrix Interview Questions
Next to String is array, the second most frequently used data structure. Array stores element in a contiguous memory location and in C++ you can access array elements using pointer arithmetic as well, but in Java array is again an object, which provides just length method.
You can only access the array using index and Java also doesn't valid index check and if you try to access an array with an invalid index, you will get java.lang.ArrayIndexOutOfBoundsException, so beware of that.
Here is a list of some of the frequently asked Array and Matrix-based Programming questions:
Find a missing number in given integer array of 1 to 100? (solution)
Find the duplicate number on a given integer array? (solution)
Largest and smallest number in an unsorted integer array? (solution)
Find all pairs of integer array whose sum is equal to a given number? (solution)
Find duplicate numbers in an array if it contains multiple duplicates? (solution)
Remove duplicates from given array in Java? (solution)
Sort an integer array in place using QuickSort algorithm? (solution)
Remove duplicates from an array in place? (solution)
Calculate the average of all numbers in given array? (solution)
If you need more advanced questions based upon array then you can see also seeThe Coding Interview Bootcamp: Algorithms + Data Structures, a boot camp style course on algorithms, especially designed for interview preparation to get a job on technical giants like Google, Microsoft, Apple, Facebook etc.
3. Linked List Interview Questions
A linked list is another important data structure from interview point of view, here are some of the frequently asked linked list questions from programming interviews:
Here is a list of some of the common linked list data structure questions from interviews:
Find the middle element of a singly linked list in one pass? (solution)
Find the 3rd node from the end in a singly linked list? (solution)
Check if a given linked list contains cycle? How to find the starting node of the cycle? (solution)
Find the length of a singly linked list? (solution)
Reverse a singly linked list without recursion? (solution)
Remove duplicate nodes in an unsorted linked list?
Find the sum of two linked list using Stack? (program)
If you need more interview questions based upon linked list then you can also refer to this list of 30 linked list questions.
4. Binary Tree Interview Questions
tree data structure is another popular data structure in programming interviews. It has several variants e.g. binary tree, binary search tree and even binary heaps. It's almost guaranteed to see a couple of binary tree questions in programming job interviews.
Here is a list of some of the popular binary tree interview questions from programming job interviews:
Traverse a binary tree in Post order traversal without recursion (solution)
Print all leaves of a binary search tree? (solution)
Count a number of leaf nodes in the given binary tree? (solution)
In order traversal in given binary tree? (solution)
Print all nodes of given binary tree using inorder traversal without recursion (solution)
Check if a given binary tree is a binary search tree?
Check if a binary tree is balanced or not?
Given a binary search tree, how do you check whether there are two nodes in it whose sum equals a given value?
convert a binary search tree to a sorted double-linked list.you are only allowed to change the target of pointers, but cannot create any new nodes.
Given a binary search tree and a value k, How do you find a node in the binary search tree whose value is closest to k.
5. Stack and Queue Interview Questions
Stack and Queue are derived data structure i.e. they are implemented either using an array or linked list, but they have unique features.
A queue is also known as FIFO data structure, which means First In First Out i.e. the element which will be added first will also be retrieved first.
Queue allows you to add an element at the tail and retrieve an element from the head, thus giving FIFO ordering.
On the other hand, Stack is a LIFO data structure, Last In First out i.e. the element which will be added first will be the last one to go.
This property is often used to convert a recursive algorithm into an iterative one. To learn more about Stack and Queue, I just you to join a good course on Data Structure and Algorithms e.g. Deep Dive into Data Structure in Java.
For now, let's see some coding problems based on Stack and Queue data structure in Java.
How do you implement a Queue using two Stacks?
Write a Java program to implement Stack using an array and linked list?
How do you implement Stack using Queues?
Given a binary tree, return the postorder traversal of its nodes' values, using Stack?
Difference between Stack and Queue data structure (answer)
If you need more such coding questions you can take help from books like Cracking Code Interview, which presents 189+ Programming questions and solution. A good book to prepare for programming job interviews in a short time.
6. Search and Sort Algorithmic Interview Questions
Search and Sort based questions are the most popular algorithmic questions on any programming job interview. Interviewer often asks to implement various sorting algorithms e.g. Bubble sort, Quick sort, merge sort and asking to implement binary search etc.
Other algorithms questions e.g. collision detection are not so popular but they are very interesting to solve and develop your grasp on creating your algorithms.
Implement Sieve of Eratosthenes Algorithm to find Prime numbers? (solution)
Find GCD of two numbers using Euclid's Algorithm? (solution)
If you want to learn more about other algorithms, apart from search and sort e.g. advanced String algorithms then I suggest you check out the Data Structure and Algorithm MasterClass Part 1 - 2 on Pluarlsight.
7. Bit Manipulation Interview Questions
Last but not the least, we will see some bit manipulation based questions. There is a popular saying that, there are two kinds of programmers, one who knows binary and other's who don't.
Yes, understand binary and playing with bits is an important skill for good programmers. Every major programming language e.g. Java and C++ provide both bitwise and bit shift operators, which you can use to manipulate bits and solve problems.
Find the number of 1s (the Set bit) in a given Bit Sequence? (solution)
8. Problem Solving Coding Questions
So far we have seen most of the programming questions based upon data structure and algorithms but sometime you will also find questions from software design, Dynamic Programming, and other logical and tricky questions.
Here is a collection of some of those questions for your practice:
Swap two numbers without using the third variable? (solution)
Check if two rectangles overlap with each other? (solution)
Convert a decimal number to binary in Java? (solution)
Check if a given year is a leap year in Java? (solution)
That's all about some data structure and algorithm interview questions for programmers. Remember, its one of the most important topic for all levels of programmers, but its even more important for freshers, computer science graduates and junior programmers with 1 to 2 years of experience.
As you get more experienced, you started seeing less number of data structure and algorithm questions e.g. a Java developer with 3 to 4 years of experience will see the lot less DS and also questions then freshers and a more senior Java developer e.g. someone with 5 to 6 years of experience will see even less.
Nonetheless, its an important topic and programmer should not overlook it. I have found good companies like Google, Microsoft, Amazon they use Data structure and algorithm questions all the times.
On the algorithmic front, there are more e.g. interview questions based on Dynamic Programming and backtracking, which I have not shared here, but I'll add it sometime later. If you come across any good data structure and algorithm question, don't feel shy to share with us.
Thanks a lot for reading this article so far. If you like these Data Structure and Algorithm Interview questions then please share with your friends and colleagues. If you have any questions or feedback then please drop a note.