Expected hiring
- Total Hires: 250+ freshers
- SDE-1: 225+ selections
- SDE-2: 25+ selections
- Locations: Gurugram, Bengaluru, hybrid/remote
This page is a working set of Zomato placement papers from 2025: from student reports questions, the 2025 online assessment pattern, and step-by-step solutions. Use it to see what Zomato actually asked in the latest cycle, how hard the rounds were, and which themes (DSA, system design, aptitude, or role-specific topics) mattered most. Practice the problems below under timed conditions, then cross-check with the interview and preparation guides if you are targeting an upcoming Zomato drive.
| Section | Questions | Time | Difficulty | Focus Areas |
|---|---|---|---|---|
| Coding Problems | 2-3 | 60-80 min | Medium-Hard | Arrays, trees, graphs, DP |
| Debugging | 1-2 | 20-30 min | Medium | Code fixes, logic errors |
Total: 3-5 problems, 90-120 minutes
Platform: HackerRank or Zomato’s internal platform
Languages Allowed: Java, C++, Python, Go
Success Rate: ~10-15% cleared OA and advanced to interviews
This section contains real coding questions from Zomato placement papers 2025 based on candidate experiences from GeeksforGeeks, LeetCode, and interview forums.
Problem Statement: Return indices of the two numbers such that they add up to target.
Example:
Input: nums = [2, 7, 11, 15], target = 9Output: [0, 1]Explanation: nums[0] + nums[1] = 2 + 7 = 9Solution (Python):
def twoSum(nums, target): hash_map = {} for i, num in enumerate(nums): complement = target - num if complement in hash_map: return [hash_map[complement], i] hash_map[num] = i return []
# Test casenums = [2, 7, 11, 15]target = 9print(twoSum(nums, target)) # Output: [0, 1]Time Complexity: O(n)
Space Complexity: O(n)
Algorithm: Hash Map approach
Problem Statement: Given coins of different denominations and a total amount, find the minimum number of coins needed.
Example:
Input: coins = [1, 2, 5], amount = 11Output: 3Explanation: 11 = 5 + 5 + 1Solution (Python):
def coinChange(coins, amount): dp = [amount + 1] * (amount + 1) dp[0] = 0
for i in range(1, amount + 1): for coin in coins: if coin <= i: dp[i] = min(dp[i], dp[i - coin] + 1)
return dp[amount] if dp[amount] <= amount else -1
# Test casecoins = [1, 2, 5]amount = 11print(coinChange(coins, amount)) # Output: 3Time Complexity: O(amount × coins.length)
Space Complexity: O(amount)
Algorithm: Dynamic Programming (Bottom-up)
Problem Statement: Given an array of intervals, merge all overlapping intervals.
Example:
Input: intervals = [[1,3],[2,6],[8,10],[15,18]]Output: [[1,6],[8,10],[15,18]]Explanation: Intervals [1,3] and [2,6] overlap, merge into [1,6]Solution (Python):
def merge(intervals): if not intervals: return []
intervals.sort(key=lambda x: x[0]) merged = [intervals[0]]
for current in intervals[1:]: if current[0] <= merged[-1][1]: merged[-1][1] = max(merged[-1][1], current[1]) else: merged.append(current)
return merged
# Test caseintervals = [[1,3],[2,6],[8,10],[15,18]]print(merge(intervals)) # Output: [[1,6],[8,10],[15,18]]Time Complexity: O(n log n)
Space Complexity: O(n)
Algorithm: Sort and merge
Problem Statement: Given a string, find the longest substring that is a palindrome.
Example:
Input: "babad"Output: "bab" or "aba"Solution (Python):
def longestPalindrome(s): def expand(l, r): while l >= 0 and r < len(s) and s[l] == s[r]: l -= 1 r += 1 return s[l+1:r]
result = "" for i in range(len(s)): odd = expand(i, i) even = expand(i, i+1) result = max(result, odd, even, key=len)
return result
# Test cases = "babad"print(longestPalindrome(s)) # Output: "bab" or "aba"Time Complexity: O(n²)
Space Complexity: O(1)
Algorithm: Expand around center
Buggy Code:
def rotate(nums, k): n = len(nums) k = k % n for i in range(k): nums.insert(0, nums.pop())Issues:
Optimized Solution:
def rotate(nums, k): n = len(nums) k = k % n
# Reverse entire array nums.reverse() # Reverse first k elements nums[:k] = reversed(nums[:k]) # Reverse remaining elements nums[k:] = reversed(nums[k:])
# Alternative: Using extra space (simpler)def rotate_simple(nums, k): n = len(nums) k = k % n nums[:] = nums[-k:] + nums[:-k]Time Complexity: O(n)
Space Complexity: O(1) for reverse method, O(n) for simple method
Problem: Given an integer array nums, return the length of the longest strictly increasing subsequence.
Example:
Input: nums = [10,9,2,5,3,7,101,18]Output: 4Explanation: The longest increasing subsequence is [2,3,7,101]Solution (Java):
public int lengthOfLIS(int[] nums) { int[] dp = new int[nums.length]; Arrays.fill(dp, 1); int max = 1;
for (int i = 1; i < nums.length; i++) { for (int j = 0; j < i; j++) { if (nums[j] < nums[i]) { dp[i] = Math.max(dp[i], dp[j] + 1); } } max = Math.max(max, dp[i]); }
return max;}Time Complexity: O(n²), Space Complexity: O(n)
Problem: There are a total of numCourses courses you have to take. Some courses have prerequisites. Return true if you can finish all courses.
Example:
Input: numCourses = 2, prerequisites = [[1,0]]Output: trueSolution (Java):
public boolean canFinish(int numCourses, int[][] prerequisites) { List<List<Integer>> graph = new ArrayList<>(); for (int i = 0; i < numCourses; i++) { graph.add(new ArrayList<>()); }
int[] indegree = new int[numCourses]; for (int[] edge : prerequisites) { graph.get(edge[1]).add(edge[0]); indegree[edge[0]]++; }
Queue<Integer> queue = new LinkedList<>(); for (int i = 0; i < numCourses; i++) { if (indegree[i] == 0) { queue.offer(i); } }
int count = 0; while (!queue.isEmpty()) { int course = queue.poll(); count++; for (int next : graph.get(course)) { indegree[next]--; if (indegree[next] == 0) { queue.offer(next); } } }
return count == numCourses;}Time Complexity: O(V + E), Space Complexity: O(V + E)
Expected hiring
Salary packages
Question trends
Problem: Given an integer array nums, return an array answer such that answer[i] is equal to the product of all the elements of nums except nums[i]. You must write an algorithm that runs in O(n) time and without using the division operator.
Example:
Input: nums = [1,2,3,4]Output: [24,12,8,6]Solution (Java):
public int[] productExceptSelf(int[] nums) { int n = nums.length; int[] result = new int[n];
// Left pass result[0] = 1; for (int i = 1; i < n; i++) { result[i] = result[i - 1] * nums[i - 1]; }
// Right pass int right = 1; for (int i = n - 1; i >= 0; i--) { result[i] *= right; right *= nums[i]; }
return result;}Time Complexity: O(n), Space Complexity: O(1) excluding output array
Problem: You are given an integer array height of length n. Find two lines that together with the x-axis form a container, such that the container contains the most water.
Example:
Input: height = [1,8,6,2,5,4,8,3,7]Output: 49Solution (Java):
public int maxArea(int[] height) { int left = 0, right = height.length - 1; int maxArea = 0;
while (left < right) { int width = right - left; int area = Math.min(height[left], height[right]) * width; maxArea = Math.max(maxArea, area);
if (height[left] < height[right]) { left++; } else { right--; } }
return maxArea;}Time Complexity: O(n), Space Complexity: O(1)
Problem: A peak element is an element that is strictly greater than its neighbors. Given a 0-indexed integer array nums, find a peak element, and return its index.
Example:
Input: nums = [1,2,3,1]Output: 2Solution (Java):
public int findPeakElement(int[] nums) { int left = 0, right = nums.length - 1;
while (left < right) { int mid = left + (right - left) / 2; if (nums[mid] > nums[mid + 1]) { right = mid; } else { left = mid + 1; } }
return left;}Time Complexity: O(log n), Space Complexity: O(1)
Based on recent candidate experiences from 2025 Zomato interviews:
2025 Interview Process:
2025 Interview Trends:
Common 2025 Interview Topics:
2025 Interview Questions Examples:
Success Tips:
For detailed interview experiences from 2025, visit Zomato Interview Experience page.
2024 papers
Coding questions
Interview experience
Preparation guide
Zomato hub
Online assessment
HR interview questions