Hiring Volume
- Total Hires: 200+ freshers
- SDE-1: 180+ selections
- Growth: 15% from 2023
- Locations: Gurugram, Bengaluru
Download Zomato placement papers 2024 PDF with previous year online assessment questions, solutions, and exam pattern analysis for 2024 recruitment cycle.
This page contains Zomato placement papers from 2024 with previous year questions, solutions, and exam patterns. Use these papers to understand the 2024 online assessment pattern and practice with actual questions from Zomato placement papers 2024.
| Section | Questions | Time | Difficulty | Focus Areas |
|---|---|---|---|---|
| Coding Problem 1 | 1 | 30 min | Medium | Arrays, strings |
| Coding Problem 2 | 1 | 30 min | Hard | Trees, graphs, DP |
| Debugging | 1 | 30 min | Medium | Code fixes |
Total: 3 problems, 90 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 2024 based on candidate experiences from GeeksforGeeks, LeetCode, and interview forums.
Problem Statement: Given an array of integers (both positive and negative), find the contiguous subarray with the largest sum.
Example:
Input: [-2, 1, -3, 4, -1, 2, 1, -5, 4]Output: 6Explanation: The subarray [4, -1, 2, 1] has the maximum sum of 6Solution (Python):
def max_subarray_sum(arr): max_sum = float('-inf') current_sum = 0
for num in arr: current_sum += num if current_sum > max_sum: max_sum = current_sum if current_sum < 0: current_sum = 0
return max_sum
# Test casearr = [-2, 1, -3, 4, -1, 2, 1, -5, 4]print(max_subarray_sum(arr)) # Output: 6Solution (Java):
public int maxSubArray(int[] nums) { int maxSum = Integer.MIN_VALUE; int currentSum = 0;
for (int num : nums) { currentSum += num; if (currentSum > maxSum) { maxSum = currentSum; } if (currentSum < 0) { currentSum = 0; } }
return maxSum;}Time Complexity: O(n)
Space Complexity: O(1)
Algorithm: Kadane’s Algorithm
Explanation: We maintain a running sum and reset it to 0 if it becomes negative. We track the maximum sum seen so far.
Problem Statement: Given a weighted graph with n nodes and edges, find the shortest path from source node to destination node.
Example:
Graph:Nodes: 0, 1, 2, 3Edges: (0->1: 4), (0->2: 1), (1->3: 1), (2->1: 2), (2->3: 5)Source: 0, Destination: 3Output: 4 (Path: 0->2->1->3 with cost 1+2+1=4)Solution (Python):
import heapq
def shortest_path(graph, start, end): n = len(graph) dist = [float('inf')] * n dist[start] = 0 pq = [(0, start)]
while pq: d, node = heapq.heappop(pq)
if node == end: return d
if d > dist[node]: continue
for neighbor, weight in graph[node]: new_dist = d + weight if new_dist < dist[neighbor]: dist[neighbor] = new_dist heapq.heappush(pq, (new_dist, neighbor))
return -1 # No path found
# Example usagegraph = { 0: [(1, 4), (2, 1)], 1: [(3, 1)], 2: [(1, 2), (3, 5)], 3: []}print(shortest_path(graph, 0, 3)) # Output: 4Solution (Java):
import java.util.*;
public int shortestPath(List<List<int[]>> graph, int start, int end) { int n = graph.size(); int[] dist = new int[n]; Arrays.fill(dist, Integer.MAX_VALUE); dist[start] = 0;
PriorityQueue<int[]> pq = new PriorityQueue<>((a, b) -> a[1] - b[1]); pq.offer(new int[]{start, 0});
while (!pq.isEmpty()) { int[] curr = pq.poll(); int node = curr[0], d = curr[1];
if (node == end) return d; if (d > dist[node]) continue;
for (int[] edge : graph.get(node)) { int neighbor = edge[0], weight = edge[1]; int newDist = d + weight; if (newDist < dist[neighbor]) { dist[neighbor] = newDist; pq.offer(new int[]{neighbor, newDist}); } } }
return -1;}Time Complexity: O((V + E) log V)
Space Complexity: O(V)
Algorithm: Dijkstra’s Algorithm using Priority Queue
Problem Statement: Traverse a binary tree level by level, returning values at each level.
Example:
Tree: 3 / \ 9 20 / \ 15 7
Output: [[3], [9, 20], [15, 7]]Solution (Python):
from collections import deque
class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right
def levelOrder(root): if not root: return []
result = [] queue = deque([root])
while queue: level_size = len(queue) level = []
for _ in range(level_size): node = queue.popleft() level.append(node.val)
if node.left: queue.append(node.left) if node.right: queue.append(node.right)
result.append(level)
return resultTime Complexity: O(n)
Space Complexity: O(n)
Algorithm: BFS (Breadth-First Search)
Buggy Code:
def find_second_largest(arr): largest = arr[0] second_largest = arr[0]
for num in arr: if num > largest: largest = num elif num > second_largest: second_largest = num
return second_largestIssues:
second_largest incorrectly (should be float('-inf'))second_largest when largest is updatedCorrected Code:
def find_second_largest(arr): if len(arr) < 2: return None # or raise exception
largest = max(arr[0], arr[1]) second_largest = min(arr[0], arr[1])
for i in range(2, len(arr)): num = arr[i] if num > largest: second_largest = largest largest = num elif num > second_largest and num != largest: second_largest = num
return second_largest if second_largest != float('-inf') else NoneKey Fixes:
second_largestsecond_largest when largest changesHiring Volume
Salary Packages
Question Difficulty
Problem: Design and implement a data structure for Least Recently Used (LRU) cache.
Solution (Java):
class LRUCache { class Node { int key, value; Node prev, next; Node(int k, int v) { key = k; value = v; } }
private Map<Integer, Node> cache; private int capacity; private Node head, tail;
public LRUCache(int capacity) { this.capacity = capacity; cache = new HashMap<>(); head = new Node(0, 0); tail = new Node(0, 0); head.next = tail; tail.prev = head; }
public int get(int key) { Node node = cache.get(key); if (node == null) return -1; moveToHead(node); return node.value; }
public void put(int key, int value) { Node node = cache.get(key); if (node == null) { Node newNode = new Node(key, value); cache.put(key, newNode); addToHead(newNode); if (cache.size() > capacity) { Node tail = removeTail(); cache.remove(tail.key); } } else { node.value = value; moveToHead(node); } }
private void addToHead(Node node) { node.prev = head; node.next = head.next; head.next.prev = node; head.next = node; }
private void removeNode(Node node) { node.prev.next = node.next; node.next.prev = node.prev; }
private void moveToHead(Node node) { removeNode(node); addToHead(node); }
private Node removeTail() { Node lastNode = tail.prev; removeNode(lastNode); return lastNode; }}Time Complexity: O(1) for both operations, Space Complexity: O(capacity)
Problem: Given a string s and a dictionary of strings wordDict, return true if s can be segmented into a space-separated sequence of one or more dictionary words.
Example:
Input: s = "leetcode", wordDict = ["leet","code"]Output: trueSolution (Java):
public boolean wordBreak(String s, List<String> wordDict) { Set<String> wordSet = new HashSet<>(wordDict); boolean[] dp = new boolean[s.length() + 1]; dp[0] = true;
for (int i = 1; i <= s.length(); i++) { for (int j = 0; j < i; j++) { if (dp[j] && wordSet.contains(s.substring(j, i))) { dp[i] = true; break; } } }
return dp[s.length()];}Time Complexity: O(n²), Space Complexity: O(n)
Problem: Given a reference of a node in a connected undirected graph, return a deep copy (clone) of the graph.
Solution (Java):
public Node cloneGraph(Node node) { if (node == null) return null;
Map<Node, Node> map = new HashMap<>(); Queue<Node> queue = new LinkedList<>(); queue.offer(node); map.put(node, new Node(node.val));
while (!queue.isEmpty()) { Node current = queue.poll(); for (Node neighbor : current.neighbors) { if (!map.containsKey(neighbor)) { map.put(neighbor, new Node(neighbor.val)); queue.offer(neighbor); } map.get(current).neighbors.add(map.get(neighbor)); } }
return map.get(node);}Time Complexity: O(V + E), Space Complexity: O(V)
Problem: Given a string s, find the length of the longest substring without repeating characters.
Example:
Input: s = "abcabcbb"Output: 3Explanation: The answer is "abc", with the length of 3Solution (Java):
public int lengthOfLongestSubstring(String s) { Map<Character, Integer> map = new HashMap<>(); int maxLen = 0; int start = 0;
for (int end = 0; end < s.length(); end++) { char ch = s.charAt(end); if (map.containsKey(ch) && map.get(ch) >= start) { start = map.get(ch) + 1; } map.put(ch, end); maxLen = Math.max(maxLen, end - start + 1); }
return maxLen;}Time Complexity: O(n), Space Complexity: O(min(n, m)) where m is charset size
Problem: Merge two sorted linked lists and return it as a sorted list.
Example:
Input: list1 = [1,2,4], list2 = [1,3,4]Output: [1,1,2,3,4,4]Solution (Java):
public ListNode mergeTwoLists(ListNode list1, ListNode list2) { ListNode dummy = new ListNode(0); ListNode current = dummy;
while (list1 != null && list2 != null) { if (list1.val <= list2.val) { current.next = list1; list1 = list1.next; } else { current.next = list2; list2 = list2.next; } current = current.next; }
current.next = (list1 != null) ? list1 : list2; return dummy.next;}Time Complexity: O(n + m), Space Complexity: O(1)
Problem: Given a string s containing just the characters ’(’, ’)’, ', ', ’[’ and ’]’, determine if the input string is valid.
Example:
Input: s = "()[]{}"Output: trueSolution (Java):
public boolean isValid(String s) { Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) { if (c == '(' || c == '{' || c == '[') { stack.push(c); } else { if (stack.isEmpty()) return false; char top = stack.pop(); if ((c == ')' && top != '(') || (c == '}' && top != '{') || (c == ']' && top != '[')) { return false; } } }
return stack.isEmpty();}Time Complexity: O(n), Space Complexity: O(n)
Based on candidate experiences from 2024 Zomato interviews:
2024 Interview Process:
Common 2024 Interview Topics:
2024 Interview Questions Examples:
Success Tips:
For detailed interview experiences, visit Zomato Interview Experience page.
Zomato 2025 Papers
Latest Zomato placement papers with current year DSA questions and solutions
Zomato Coding Questions
Complete collection of Zomato coding problems with detailed solutions
Zomato Interview Experience
Real interview experiences from candidates who cleared Zomato placement
Zomato Online Assessment
Complete guide to Zomato online assessment format and preparation
Zomato HR Interview
Common HR interview questions and answers for Zomato placement
Zomato Preparation Guide
Comprehensive preparation strategy for Zomato placement process
Zomato Main Page
Complete Zomato placement guide with eligibility, process, and salary
Practice 2024 papers to understand Zomato’s pattern!