SDE

200+ SDE Interview Questions and Answers

Updated 18 Jan 2025
search-icon

Q1. Longest Increasing Subsequence Problem Statement

Given an array of integers with 'N' elements, determine the length of the longest subsequence where each element is greater than the previous element. This subse...read more

Q2. Return Subsets Sum to K Problem Statement

Given an integer array 'ARR' of size 'N' and an integer 'K', return all the subsets of 'ARR' which sum to 'K'.

Explanation:

A subset of an array 'ARR' is a tuple that c...read more

SDE Interview Questions and Answers for Freshers

illustration image

Q3. Partition to K Equal Sum Subsets Problem

Given an array of integers and a positive integer 'K', determine if it is possible to divide the array into 'K' non-empty subsets such that the sum of elements in each s...read more

Q4. Sort a "K" Sorted Doubly Linked List

Given a doubly-linked list with N nodes, where each node’s position deviates at most K positions from its position in the sorted list, your task is to sort this given doubly...read more

Are these interview questions helpful?

Q5. Merge k Sorted Linked Lists

You are provided with 'K' sorted linked lists, each sorted in increasing order. Your task is to merge all these lists into one single sorted linked list and return the head of the re...read more

Q6. Maximum Meetings Selection

You are tasked with scheduling meetings in a single meeting room. Given N meetings, each with a start time Start[i] and end time End[i], determine the maximum number of meetings that ...read more

Share interview questions and help millions of jobseekers 🌟

man-with-laptop

Q7. There is a 12 km road and a contractor who is in-charge of repairing it. Contractor updates you about the work which is done in patches. Like β€œRoad between 3.2 km to 7.9 km repaired ”, β€œRoad between 1.21 km to...

read more
Ans.

The longest continuous patch of a road being repaired by a contractor is determined.

  • Iterate through the updates and keep track of the start and end points of each patch

  • Calculate the length of each patch and update the longest patch if necessary

  • Return the start and end points of the longest patch

Q8. Reverse Linked List Problem Statement

Given a singly linked list of integers, return the head of the reversed linked list.

Example:

Initial linked list: 1 -> 2 -> 3 -> 4 -> NULL
Reversed linked list: 4 -> 3 -> 2...read more

SDE Jobs

SDE β€’ 3-10 years
Amazon India Software Dev Centre Pvt Ltd
β€’
4.1
Chennai
SDE β€’ 3-6 years
M2P
β€’
3.6
Chennai
SDE β€’ 3-5 years
First Meridian Business Services
β€’
3.7
Bangalore / Bengaluru

Q9. Duplicate Subtrees Problem Statement

Given a binary tree, return the root values of all duplicate subtrees. Two subtrees are considered duplicate if they have the same structure with identical node values. For ...read more

Q10. Count Inversions Problem Statement

Given an integer array ARR of size N containing all distinct values, determine the total number of inversions present in the array.

An inversion is defined for a pair of integ...read more

Q11. Boundary Traversal of Binary Tree

Given a binary tree of integers, your task is to print the boundary nodes of the binary tree in an anti-clockwise direction starting from the root node.

Note:
The boundary incl...read more

Q12. Bipartite Graph Problem

Check whether a given graph is bipartite or not. Return true if the graph's vertices can be divided into two independent sets, β€˜U’ and β€˜V’, such that every edge (β€˜u’, β€˜v’) either connect...read more

Q13. There are n nuts and n bolts represented in two different arrays and a function is_fit(nut_i, bolt_j) which returns 0 if its perfectly fit, 1 if it’s a tight fit and -1 if its loose fit. I was asked to arrange...

read more
Ans.

Arrange nuts and bolts so that every nut fits perfectly with the bolt in the same position.

  • Sort both arrays in the same order using a comparison function

  • Use a binary search to find the matching bolt for each nut

  • Repeat until all nuts are matched with bolts

Q14. Given a hashmap M which is a mapping of characters to arrays of substitute characters, and an input string S, return an array of all possible mutations of S (where any character in S can be substituted with one...

read more
Ans.

Given a hashmap M and an input string S, return an array of all possible mutations of S using M's substitutes.

  • Iterate through each character in S and get its substitutes from M

  • Use recursion to generate all possible combinations of substitutes for each character

  • Time complexity: O(n^m) where n is the average number of substitutes per character and m is the length of S

  • Space complexity: O(n^m) due to the number of possible combinations

  • Optimization: Use memoization to store previo...read more

Q15. A stream of data is coming. Maintain records in a page and mechanism to see previous and next page. (Concept of Doubly Linked List) (It is always advisable to ask questions in design questions. The interviewers...

read more
Ans.

A thread is a unit of execution within a process that can run independently and concurrently with other threads.

  • Threads allow for concurrent execution of tasks within a program.

  • Threads share the same memory space and resources of the process they belong to.

  • Threads can communicate and synchronize with each other through shared data structures like locks and semaphores.

  • Threads can improve performance by utilizing multiple CPU cores or by handling I/O operations asynchronously.

  • E...read more

Q16. Given a list of integer numbers, a list of symbols [+,-,*,/] and a target number N, provide an expression which evaluates to N or return False if that is not possible. e.g. let the list of numbers be [1,5,5] an...

read more
Ans.

Given a list of numbers and symbols, provide an expression that evaluates to a target number.

  • Use recursion to try all possible combinations of numbers and symbols

  • Check for division by zero and negative numbers

  • Return False if no expression evaluates to the target number

Q17. An array A of size m+n is given whose first m elements are filled up with sorted elements. Another array B with size n filled with sorted elements. Now we have to fill all m+n elements of both array in array A...

read more
Ans.

Merge two sorted arrays into one sorted array with one traversal.

  • Use two pointers to track the current elements in arrays A and B.

  • Compare the elements at the current pointers and insert the smaller one into array A.

  • Move the pointer of the array from which the smaller element was inserted.

  • Repeat the above steps until all elements are merged into array A.

Q18. Find the number of leaf nodes to a binary tree with 4 internal nodes?

Ans.

A binary tree with 4 internal nodes has 5 leaf nodes.

  • A binary tree with n internal nodes has n+1 leaf nodes.

  • A leaf node is a node with no children.

  • Count the number of leaf nodes to find the answer.

Q19. Given the preorder traversal of the tree is DEBFGCA and the postorder traversal of the tree is ABDECFG. Find the inorder traversal?

Ans.

Given preorder and postorder traversal, find inorder traversal of a binary tree.

  • The last element of postorder traversal is the root of the tree

  • Find the root in preorder traversal and divide the tree into left and right subtrees

  • Recursively find the inorder traversal of left and right subtrees

  • Combine the inorder traversal of left subtree, root, and inorder traversal of right subtree

Q20. Write an efficient program to count number tree structures that can be made using n number of nodes. Basically T(n)=summation (T(i) * T(n-i-1)). I used DP as there are a lot of sub-problems used again and again...

read more
Ans.

The program counts the number of tree structures that can be made using n nodes.

  • Use dynamic programming to solve the problem efficiently

  • Break down the problem into subproblems and store their solutions in an array

  • Iterate through the array to calculate the number of tree structures

  • The time complexity of the program is O(n^2)

Q21. Design a system for finding the costliest element always whenever we pick up an element from a box.(concept of Max Heap)

Ans.

Design a system using Max Heap to find the costliest element from a box when an element is picked.

  • Implement a Max Heap data structure to store the elements in the box.

  • Whenever an element is picked, the costliest element can be found at the root of the Max Heap.

  • After picking an element, update the Max Heap by removing the root and reorganizing the heap.

  • Ensure the Max Heap property is maintained during insertion and deletion operations.

  • Example: If the box contains elements [5, ...read more

Q22. What happens on server side on receiving HTTP requests and how operating system interacts and then discussion related with threading, thread pool ,synchronization, hashing etc

Ans.

When a server receives an HTTP request, it interacts with the operating system, handles threading, thread pooling, synchronization, and hashing.

  • Upon receiving an HTTP request, the server creates a new thread to handle the request.

  • The operating system manages the allocation of system resources to the server process.

  • Thread pooling is used to efficiently manage and reuse threads for handling multiple requests.

  • Synchronization mechanisms like locks or semaphores are used to ensure...read more

Q23. Make a data structure and implement an algorithm to print all the files in a directory. (the root directory can have sub-directories too.) I used an n-ary tree and BFS to print files. It can also be done using...

read more
Ans.

Implement a data structure and algorithm to print all files in a directory, including sub-directories.

  • Use an n-ary tree or stack to represent the directory structure

  • Implement a BFS or DFS algorithm to traverse the directory and print files

  • Handle sub-directories recursively

  • Consider using a queue or stack to keep track of directories to visit

Q24. find the minimum no of jumps required to reach the end of array.where element at each index represent how many max moves you will take in right

Ans.

Find minimum number of jumps required to reach end of array with max moves in right direction at each index.

  • Use dynamic programming approach to solve the problem

  • Maintain an array to store minimum number of jumps required to reach each index

  • Traverse the array and update the minimum number of jumps for each index

  • Return the minimum number of jumps required to reach the end of array

Q25. given a 2D array of 0 and 1. where each row is sorted. find the row with maximum no of 1 in minimum time complexcity

Ans.

Find row with maximum 1s in a sorted 2D array of 0s and 1s.

  • Use binary search to find the first occurrence of 1 in each row.

  • Calculate the number of 1s in each row using the index found in step 1.

  • Keep track of the row with maximum number of 1s.

  • Time complexity: O(m log n), where m is the number of rows and n is the number of columns.

Q26. Get mth element of an stack which is filled up with n elements. where n>m without using another stack

Ans.

To get the mth element of a stack with n elements, without using another stack.

  • Create a temporary variable to store the mth element

  • Pop the top (n-m) elements from the stack and discard them

  • Pop and store the mth element in the temporary variable

  • Push back the discarded elements to the stack

  • Return the temporary variable as the result

Q27. Given an unsorted array of size 5. How many minimum comparisons are needed to find the median? then he extended it for size n

Ans.

Minimum comparisons needed to find median in unsorted array of size n

  • For odd n, median is the middle element. For even n, median is the average of middle two elements

  • Minimum comparisons needed for odd n is (n-1)/2. For even n, it is n/2

  • Various sorting algorithms can be used to find median in an unsorted array

Q28. Write a program to show whether a graph is a tree or not using adjacency matrix

Ans.

Program to determine if a graph is a tree using adjacency matrix

  • A graph is a tree if it is connected and has no cycles

  • Check if the graph is connected by performing a depth-first search or breadth-first search

  • Check if the graph has cycles by performing a depth-first search and tracking visited nodes

Q29. write a program with 2 threads. one thread should print even and other should print odd numbers in sequence. how would you make it SMP safe?

Ans.

Program with 2 threads printing even and odd numbers in sequence. How to make it SMP safe?

  • Use mutex locks to ensure only one thread accesses the shared resource (the number to be printed) at a time

  • Use condition variables to signal when it's safe for the other thread to access the shared resource

  • Use atomic variables to ensure that the shared resource is accessed atomically

  • Use thread-safe data structures to store the shared resource

  • Use thread-local storage to avoid contention b...read more

Q30. Copy fixed no of bytes from source to destination and its test cases( ex: copy(source, destination,bytes) so now command copy(a,a+3,8) will not give correct results in some cases and copy(a,a-4,8) will not give...

read more
Ans.

Copying fixed number of bytes from source to destination and its test cases.

  • Ensure source and destination are not overlapping

  • Check if the number of bytes to be copied is greater than the available space in the destination

  • Handle cases where source or destination is NULL

  • Test cases should cover all possible scenarios including edge cases

Q31. Given a sorted array which can have repeated elements, find the occurrence of an element. (Most optimal solution is O(logn) – Using binary search to find start and end occurrence)

Ans.

Given a sorted array with repeated elements, find the occurrence of a given element using binary search.

  • Use binary search to find the first occurrence of the element

  • Use binary search to find the last occurrence of the element

  • Calculate the occurrence by subtracting the indices of the last and first occurrences and adding 1

Q32. What is hashing? When is the time complexity of searching a hash table O(n)?

Ans.

Hashing is a technique to map data to a fixed-size table. Time complexity of searching a hash table is O(n) in worst case.

  • Hashing is used to store and retrieve data quickly

  • It uses a hash function to map data to a fixed-size table

  • In the best case, searching a hash table takes O(1) time

  • In the worst case, all the data maps to the same index and searching takes O(n) time

  • Collision resolution techniques like chaining and open addressing are used to handle collisions

Q33. The number of swapping operations required to sort the array [8,22,7,9,31,19,5,13] in bubblesort?

Ans.

The number of swaps required to sort an array using bubblesort

  • Bubble sort compares adjacent elements and swaps them if they are in the wrong order

  • Count the number of swaps required to sort the given array

  • The given array requires 19 swaps to be sorted using bubblesort

Q34. What data structure would you use for a dictionary?

Ans.

An array of key-value pairs is the best data structure for a dictionary.

  • Use a hash table or a balanced tree to implement the dictionary.

  • Keys should be unique and immutable.

  • Values can be any data type.

  • Access time should be O(1) or O(log n) depending on the implementation.

  • Examples: Python's dict, Java's HashMap, C++'s unordered_map.

Q35. Given an array which is alternatively sorted. What will be the time complexity to find out an element in it. e.g. 14,3,16,6,22,7,24,11,27

Ans.

Time complexity to find an element in an alternatively sorted array.

  • The time complexity will be O(log n) using binary search.

  • Check the middle element and compare with the target element.

  • If the middle element is greater than the target, search in the left half of the array.

  • If the middle element is smaller than the target, search in the right half of the array.

  • Repeat until the target element is found or the array is exhausted.

Q36. How will you describe iOS manual memory management for a new developer in few words?

Ans.

iOS manual memory management requires developers to manually allocate and deallocate memory for objects.

  • Developers must manually allocate memory for objects using methods like alloc and init.

  • Developers must also manually deallocate memory for objects using methods like release.

  • Failure to properly manage memory can lead to memory leaks and crashes.

  • ARC (Automatic Reference Counting) was introduced in iOS 5 to automate memory management.

  • However, manual memory management is still...read more

Q37. Write a program to print the powerset. E.g. given this set {1,2,3}, it will print {},{1},{2},{3},{1,2},{1,3}, {2,3}, {1,2,3}

Ans.

Program to print powerset of a given set

  • Create an empty list to store subsets

  • Loop through all possible binary numbers from 0 to 2^n-1 where n is the length of the set

  • For each binary number, convert it to binary and use the 1's as indices to select elements from the set

  • Add the selected elements to the list of subsets

  • Return the list of subsets

Q38. Describe transaction process in detail if we want to transfer from one account to other. Also design scheme for it

Ans.

The transaction process involves transferring funds from one account to another. A scheme is designed to ensure secure and accurate transfers.

  • Verify the availability of sufficient funds in the sender's account

  • Authenticate the sender's identity and authorization for the transaction

  • Deduct the transfer amount from the sender's account balance

  • Initiate a request to transfer the funds to the recipient's account

  • Validate the recipient's account details

  • Add the transferred amount to th...read more

Q39. Sort the linklist by node whose alternate nodes are already sorted

Ans.

Sort a linked list by nodes whose alternate nodes are already sorted.

  • Traverse the linked list and identify the alternate nodes.

  • Sort the alternate nodes using any sorting algorithm.

  • Merge the sorted alternate nodes back into the original linked list.

Q40. What are the differences between graph and tree?

Ans.

Graphs are non-linear data structures with cycles while trees are hierarchical data structures without cycles.

  • Graphs can have cycles while trees cannot

  • Graphs can have multiple root nodes while trees have only one

  • Graphs can have disconnected components while trees are always connected

  • Graphs can have directed or undirected edges while trees have only directed edges

  • Examples of graphs include social networks, road networks, and computer networks while examples of trees include fi...read more

Q41. What is the difference between the two declarations? int p=*(int*)i; int p=*(int*)&i;

Ans.

The first declaration casts i to int pointer and dereferences it, while the second declaration casts the address of i to int pointer and dereferences it.

  • The first declaration assumes i is already an int pointer.

  • The second declaration takes the address of i and casts it to an int pointer.

  • The first declaration may cause a segmentation fault if i is not an int pointer.

  • The second declaration may cause unexpected behavior if i is not aligned to an int.

  • Example: int i = 42; int p = ...read more

Q42. Given an array A[n] such that A[i+1] = A[i]+1 OR A[i]-1, and a number k, find out whether k is present in A[n] or not, in most efficient way?

Ans.

Efficiently check if a number is present in an array where each element differs by 1.

  • Use binary search to find the element in the array

  • Calculate the difference between the middle element and the first element

  • If the difference is equal to the index of the middle element minus the index of the first element, then the left half of the array is consecutive

  • If the difference is not equal, then the right half of the array is consecutive

  • Repeat the process on the appropriate half of t...read more

Q43. Given an expression (in single variable) like 4x+13(x-(4x+x/3)) = 9, evaluate x The expression is a string and the variable is always x

Ans.

Solve for x in a given expression with single variable.

  • Simplify the expression by applying the distributive property and combining like terms.

  • Isolate the variable term on one side of the equation and the constant terms on the other side.

  • Solve for x by dividing both sides of the equation by the coefficient of the variable term.

  • Check the solution by substituting the value of x back into the original equation.

  • In this case, simplify the expression to -5x/3 = -4 and solve for x to...read more

Q44. Merge two double linked list. What will be the difference if they are singly linked list

Ans.

To merge two double linked lists, traverse to the end of the first list and connect it to the head of the second list.

  • Traverse to the end of the first list

  • Connect the last node of the first list to the head of the second list

  • If the lists are singly linked, we need to traverse to the end of the first list and connect it to the head of the second list. But we also need to keep track of the last node of the first list to connect it to the head of the second list.

  • Example: list1: ...read more

Q45. How would you know .. your system is little endian or big endian??

Ans.

Endianess refers to the order in which bytes are stored in memory. Little endian stores the least significant byte first.

  • Check the byte order of a multi-byte integer value

  • Use a test value with known byte order to determine the system's endianess

  • Check the system's documentation or specifications

  • Use a code snippet to determine the endianess

Q46. how a function from one user process can be called in other user process?

Ans.

Inter-process communication mechanisms like pipes, sockets, message queues, shared memory can be used to call a function from one user process to another.

  • Use pipes to establish a unidirectional communication channel between two processes.

  • Use sockets to establish a bidirectional communication channel between two processes.

  • Use message queues to send messages between processes.

  • Use shared memory to share data between processes.

  • Remote Procedure Call (RPC) can also be used to call ...read more

Q47. A square picture is cut into 16 squares and they are shuffled. Write a program to rearrange the 16 squares to get the original big square

Ans.

Program to rearrange shuffled 16 squares to get original big square

  • Create a 4x4 matrix to represent the big square and fill it with shuffled squares

  • Loop through the matrix and check if each square is in the correct position

  • If a square is not in the correct position, swap it with the square in the correct position

  • Repeat until all squares are in the correct position

Q48. how function pointers are shared across different processes? using which iPCs?

Ans.

Function pointers can be shared across processes using inter-process communication mechanisms like shared memory, pipes, sockets, etc.

  • Function pointers can be stored in shared memory regions that are accessible by multiple processes.

  • Processes can communicate with each other using pipes or sockets and pass function pointers as arguments.

  • Remote Procedure Call (RPC) mechanisms can also be used to share function pointers across processes.

  • Message Passing Interface (MPI) is another...read more

Q49. Explain the approach of LRU cache and implement using object oriented language

Ans.

LRU cache is a data structure that stores most recently used items and discards least recently used items.

  • LRU stands for Least Recently Used

  • It is implemented using a doubly linked list and a hash map

  • When an item is accessed, it is moved to the front of the list

  • When the cache is full, the least recently used item is removed from the end of the list

  • Example: A web browser cache that stores recently visited web pages

Q50. There are 9 identical Marbels out of which 1 is heavy. find out that Marbel

Ans.

Out of 9 identical marbles, find the one that is heavy.

  • Divide the marbles into groups of three

  • Weigh two groups against each other

  • If one group is heavier, weigh two marbles from that group

  • If they are equal, the heavy marble is in the third group

  • If the weighed marbles are unequal, the heavy marble is in that group

1
2
3
4
5
6
Next
Interview Tips & Stories
Ace your next interview with expert advice and inspiring stories

Interview experiences of popular companies

3.7
Β β€’Β 10.5k Interviews
3.8
Β β€’Β 8.2k Interviews
4.1
Β β€’Β 5.1k Interviews
4.0
Β β€’Β 1.4k Interviews
3.7
Β β€’Β 904 Interviews
4.4
Β β€’Β 871 Interviews
4.0
Β β€’Β 576 Interviews
3.9
Β β€’Β 561 Interviews
3.1
Β β€’Β 50 Interviews
View all

Calculate your in-hand salary

Confused about how your in-hand salary is calculated? Enter your annual salary (CTC) and get your in-hand salary

SDE Interview Questions
Share an Interview
Stay ahead in your career. Get AmbitionBox app
qr-code
Helping over 1 Crore job seekers every month in choosing their right fit company
65 L+

Reviews

4 L+

Interviews

4 Cr+

Salaries

1 Cr+

Users/Month

Contribute to help millions

Made with ❀️ in India. Trademarks belong to their respective owners. All rights reserved © 2024 Info Edge (India) Ltd.

Follow us
  • Youtube
  • Instagram
  • LinkedIn
  • Facebook
  • Twitter