Meesho Coding Questions 2025 (With Real SDE-1 Interview Answers + Hackathon Case Study)

Meesho Coding Questions 2025
Spread the love

If you’re searching for the most frequently asked Meesho coding questions for SDE-1 interviews or Meesho hackathons in 2025, this guide is your one-stop solution. This blog contains real coding questions asked in recent Meesho interviews along with fully explained Java, Python, and JavaScript solutions. Whether you’re preparing for the online coding test or final technical rounds, these Meesho DSA questions will help you crack it confidently.

Table of Contents

Developer Hiring Stats at Meesho

MetricValue
Avg. Applicants per Role10,000+
Selection Rate~1.7%
OA to Interview Conversion22%
Interview to Offer Conversion14%
Fresher Hiring %37%
Most In-Demand RoleBackend Developer

Source: Glassdoor India – Meesho Reviews, LinkedIn Jobs

Introduction to Meesho’s Hiring Trends

In 2025, Meesho remains one of India’s most attractive startups for developers. With its unicorn status and product-first culture, the competition is fierce—but so are the rewards.

Why Meesho is a Top Choice for Developers

  • Fast-paced, product-oriented environment
  • Opportunity to work on scalable systems from Day 1
  • Flexible team dynamics
  • Growth mindset + open-source contribution encouragement

What to Expect in 2025 Hiring Process

Expect a mix of data structures, algorithms, and cultural fit. Meesho is now prioritizing code quality and system thinking along with DSA mastery.


Meesho Recruitment Process Overview

Online Assessment Rounds

Technical Interview Rounds

1-2 rounds covering:

  • DSA problems
  • Time-space optimization
  • Edge cases + real-world scenario-based questions
  • System design questions for senior roles

HR and Cultural Fit Interview

This is more about your thinking style, adaptability, and ownership than textbook answers.


Meesho Coding Questions Round Breakdown

Number of Questions and Duration

  • 3–4 questions
  • Time limit: 90–120 minutes
  • Difficulty: Mix of Easy, Medium & Hard

Coding Platforms Used by Meesho

Scoring and Cutoffs

  • Solve at least 2.5+ Meesho coding questions to get shortlisted
  • Focus on code correctness, edge cases, and clean syntax

Most Asked Meesho Coding Questions and Answers

Question 1: Two Sum

Problem:

Find indices of two numbers that add up to the target.

var twoSum = function(nums, target) {
const map = new Map();
for(let i = 0; i < nums.length; i++) {
let complement = target - nums[i];
if(map.has(complement)) {
return [map.get(complement), i];
}
map.set(nums[i], i);
}
};
public int[] twoSum(int[] nums, int target) {
    Map<Integer, Integer> map = new HashMap<>();
    for (int i = 0; i < nums.length; i++) {
        int complement = target - nums[i];
        if (map.containsKey(complement)) {
            return new int[] { map.get(complement), i };
        }
        map.put(nums[i], i);
    }
    return new int[] {};
}
def twoSum(nums, target):
    hashmap = {}
    for i, num in enumerate(nums):
        diff = target - num
        if diff in hashmap:
            return [hashmap[diff], i]
        hashmap[num] = i

Same logic as Java/Python using a hash map.

Time Complexity: O(n)

Space Complexity: O(n)

Question 2: Best Time to Buy and Sell Stock

var maxProfit = function(prices) {
let minPrice = Infinity;
let maxProfit = 0;
for(let price of prices) {
minPrice = Math.min(minPrice, price);
maxProfit = Math.max(maxProfit, price - minPrice);
}
return maxProfit;
};
public int maxProfit(int[] prices) {
    int min = Integer.MAX_VALUE;
    int profit = 0;
    for (int price : prices) {
        min = Math.min(min, price);
        profit = Math.max(profit, price - min);
    }
    return profit;
}
def maxProfit(prices):
    min_price = float('inf')
    max_profit = 0
    for price in prices:
        min_price = min(min_price, price)
        max_profit = max(max_profit, price - min_price)
    return max_profit

Time Complexity: O(n)

Space Complexity: O(1)

Question 3: Valid Parentheses

var isValid = function(s) {
    const stack = [];
    const map = {')': '(', '}': '{', ']': '['};
    for (let char of s) {
        if (char in map) {
            const top = stack.length ? stack.pop() : '#';
            if (top !== map[char]) return false;
        } else {
            stack.push(char);
        }
    }
    return stack.length === 0;
};
def isValid(s):
    stack = []
    mapping = {')': '(', '}': '{', ']': '['}
    for char in s:
        if char in mapping:
            top = stack.pop() if stack else '#'
            if mapping[char] != top:
                return False
        else:
            stack.append(char)
    return not stack
public boolean isValid(String s) {
    Stack<Character> stack = new Stack<>();
    for (char c : s.toCharArray()) {
        if (c == '(') stack.push(')');
        else if (c == '{') stack.push('}');
        else if (c == '[') stack.push(']');
        else if (stack.isEmpty() || stack.pop() != c) return false;
    }
    return stack.isEmpty();
}

Question 4: Power Function

var myPow = function(x, n) {
    if(n < 0) {
        x = 1 / x;
        n = -n;
    }
    let result = 1;
    while(n) {
        if(n % 2 !== 0) result *= x;
        x *= x;
        n = Math.floor(n / 2);
    }
    return result;
};
def myPow(x, n):
    if n < 0:
        x = 1 / x
        n = -n
    result = 1
    while n:
        if n % 2:
            result *= x
        x *= x
        n //= 2
    return result
public double myPow(double x, long n) {
    if (n < 0) {
        x = 1 / x;
        n = -n;
    }
    double result = 1;
    while (n > 0) {
        if (n % 2 == 1) result *= x;
        x *= x;
        n /= 2;
    }
    return result;
}

Question 5: Course Schedule (Cycle Detection)

var canFinish = function(numCourses, prerequisites) {
    const graph = new Map();
    for (let i = 0; i < numCourses; i++) graph.set(i, []);
    for (let [a, b] of prerequisites) graph.get(a).push(b);

    const visiting = new Set();

    const dfs = (course) => {
        if (visiting.has(course)) return false;
        if (graph.get(course).length === 0) return true;

        visiting.add(course);
        for (let pre of graph.get(course)) {
            if (!dfs(pre)) return false;
        }
        visiting.delete(course);
        graph.set(course, []);
        return true;
    }

    for (let i = 0; i < numCourses; i++) {
        if (!dfs(i)) return false;
    }
    return true;
};
public boolean canFinish(int numCourses, int[][] prerequisites) {
    Map<Integer, List<Integer>> graph = new HashMap<>();
    for (int i = 0; i < numCourses; i++) graph.put(i, new ArrayList<>());
    for (int[] pre : prerequisites) graph.get(pre[0]).add(pre[1]);

    Set<Integer> visiting = new HashSet<>();
    for (int course = 0; course < numCourses; course++) {
        if (!dfs(course, graph, visiting)) return false;
    }
    return true;
}

private boolean dfs(int course, Map<Integer, List<Integer>> graph, Set<Integer> visiting) {
    if (visiting.contains(course)) return false;
    if (graph.get(course).isEmpty()) return true;

    visiting.add(course);
    for (int pre : graph.get(course)) {
        if (!dfs(pre, graph, visiting)) return false;
    }
    visiting.remove(course);
    graph.get(course).clear();
    return true;
}
def canFinish(numCourses, prerequisites):
    graph = {i: [] for i in range(numCourses)}
    for a, b in prerequisites:
        graph[a].append(b)

    visiting = set()

    def dfs(course):
        if course in visiting:
            return False
        if not graph[course]:
            return True

        visiting.add(course)
        for pre in graph[course]:
            if not dfs(pre):
                return False
        visiting.remove(course)
        graph[course] = []
        return True

    return all(dfs(course) for course in range(numCourses))

Question 6: Counting the Number of 1’s in Binary

var countBits = function(n) {
    const dp = new Array(n + 1).fill(0);
    for (let i = 1; i <= n; i++) {
        dp[i] = dp[i >> 1] + (i & 1);
    }
    return dp;
};
def countBits(n):
    dp = [0] * (n + 1)
    for i in range(1, n + 1):
        dp[i] = dp[i >> 1] + (i & 1)
    return dp

Question 7: Generate Parentheses

var generateParenthesis = function(n) {
    const res = [];
    const backtrack = (str, open, close) => {
        if (str.length === n * 2) {
            res.push(str);
            return;
        }
        if (open < n) backtrack(str + '(', open + 1, close);
        if (close < open) backtrack(str + ')', open, close + 1);
    };
    backtrack('', 0, 0);
    return res;
};
public List<String> generateParenthesis(int n) {
    List<String> res = new ArrayList<>();
    backtrack(res, "", 0, 0, n);
    return res;
}

private void backtrack(List<String> res, String str, int open, int close, int max) {
    if (str.length() == max * 2) {
        res.add(str);
        return;
    }
    if (open < max) backtrack(res, str + "(", open + 1, close, max);
    if (close < open) backtrack(res, str + ")", open, close + 1, max);
}
def generateParenthesis(n):
    res = []
    def backtrack(s='', left=0, right=0):
        if len(s) == 2 * n:
            res.append(s)
            return
        if left < n:
            backtrack(s + '(', left + 1, right)
        if right < left:
            backtrack(s + ')', left, right + 1)
    backtrack()
    return res

Question 8: LRU Cache

class LRUCache {
    constructor(capacity) {
        this.capacity = capacity;
        this.cache = new Map();
    }

    get(key) {
        if (!this.cache.has(key)) return -1;
        const value = this.cache.get(key);
        this.cache.delete(key);
        this.cache.set(key, value);
        return value;
    }

    put(key, value) {
        if (this.cache.has(key)) {
            this.cache.delete(key);
        }
        this.cache.set(key, value);
        if (this.cache.size > this.capacity) {
            const firstKey = this.cache.keys().next().value;
            this.cache.delete(firstKey);
        }
    }
}
from collections import OrderedDict

class LRUCache:
    def __init__(self, capacity: int):
        self.cache = OrderedDict()
        self.capacity = capacity

    def get(self, key: int) -> int:
        if key not in self.cache:
            return -1
        self.cache.move_to_end(key)
        return self.cache[key]

    def put(self, key: int, value: int) -> None:
        if key in self.cache:
            self.cache.move_to_end(key)
        self.cache[key] = value
        if len(self.cache) > self.capacity:
            self.cache.popitem(last=False)

Question 9: Encode and Decode Strings

class Codec {
    encode(strs) {
        return strs.map(s => `${s.length}#${s}`).join('');
    }

    decode(s) {
        const res = [];
        let i = 0;
        while (i < s.length) {
            let j = i;
            while (s[j] !== '#') j++;
            const length = parseInt(s.slice(i, j));
            res.push(s.slice(j + 1, j + 1 + length));
            i = j + 1 + length;
        }
        return res;
    }
}
class Codec:
    def encode(self, strs):
        return ''.join(f'{len(s)}#{s}' for s in strs)

    def decode(self, s):
        res, i = [], 0
        while i < len(s):
            j = i
            while s[j] != '#':
                j += 1
            length = int(s[i:j])
            res.append(s[j+1: j+1+length])
            i = j + 1 + length
        return res

Question 10: Kth Largest Element in an Array

var findKthLargest = function(nums, k) {
    nums.sort((a, b) => b - a);
    return nums[k - 1];
};
import heapq

def findKthLargest(nums, k):
    return heapq.nlargest(k, nums)[-1]

Easy Level Meesho Coding Questions

1. Reverse a Linked List

def reverseList(head):

    prev = None

    while head:

        next_node = head.next

        head.next = prev

        prev = head

        head = next_node

    return prev

2. Find Missing Number in Array

def missingNumber(nums):

    n = len(nums)

    return n * (n + 1) // 2 - sum(nums)

Medium Level Meesho Coding Questions

3. Longest Substring Without Repeating Characters

def lengthOfLongestSubstring(s):

    seen = {}

    l = 0

    max_len = 0

    for r in range(len(s)):

        if s[r] in seen and seen[s[r]] >= l:

            l = seen[s[r]] + 1

        seen[s[r]] = r

        max_len = max(max_len, r - l + 1)

    return max_len

4. LRU Cache Implementation

Use OrderedDict or a custom DLL + Hashmap for optimal results.

Hard Level Meesho Coding Questions

5. Merge k Sorted Lists

Use MinHeap (heapq in Python) for optimal merging.

6. Word Break II

Use DFS with memoization to avoid Time Limit Exceeded (TLE).


Meesho DSA Concepts to Master

  • Arrays and Strings – Sliding Window, Prefix Sum, Kadane’s
  • HashMaps/Sets – Frequency counting, Two-sum variants
  • Trees/Graphs – BFS, DFS, Topological Sort
  • Dynamic Programming – Knapsack, Tabulation, Memoization
  • Recursion/Backtracking – Subsets, N-Queens, Word Search

Meesho Coding Interview Tips

Time Management

  • Read all questions at the start
  • Attempt easiest first
  • Allocate time wisely – max 20 mins per question

Problem-Solving Approach

  • Clarify inputs/outputs
  • Write pseudocode
  • Dry-run with sample inputs

Mistakes to Avoid

  • Skipping edge cases
  • Blindly jumping into code
  • Over-optimization early on

Tools & Resources to Practice

Meesho SDE 1 Interview Experience LeetCode – Meesho Company Tag

InterviewBit – Meesho Archives

GeeksforGeeks – Meesho Tag

Codeforces Meesho Hiring Contests

Books

Cracking the Coding Interview – Gayle Laakmann McDowell

Elements of Programming Interviews

DSA Made Easy – Narasimha Karumanchi

Mock Interviews

  • Pramp
  • InterviewBuddy
  • Reddit Threads: r/cscareerquestionsIN

Real Candidate Experiences

Insights from Meesho Interviewees

“The interview was intense but fair. I got asked to debug and optimize my solution live. They loved clean code.”
Ankita S., SWE Intern 2024

Common Pitfalls

  • Neglecting System Design
  • Not optimizing after brute force
  • Forgetting test cases

Final Week Preparation Strategy

Day 1–3: DSA concepts + solve company-tagged questions
Day 4–5: Attempt Meesho-level mocks
Day 6: Revise behavioral Qs + resume projects
Day 7: REST — don’t burn out!


FAQs

Is Meesho harder than other product companies?

It’s challenging but balanced. Expect intense focus on logic and culture fit.

How many rounds are there in Meesho coding interviews?

Typically 3–4: OA + 2 Tech + 1 HR/Cultural Fit.

What language should I use in Meesho coding tests?

C++, Java, or Python. Choose the one you’re strongest in.

Does Meesho allow open-book tests?

No, it’s a closed-book, time-bound, and monitored test.

Can freshers crack Meesho coding interviews?

Yes! Many freshers make it with focused prep, structured practice and with the list of our Meesho interview questions for freshers


Conclusion

The Meesho coding interview process in 2025 demands preparation, perseverance, and problem-solving under pressure. But if you’re clear on your concepts, consistent in your practice, and confident in your delivery—you can absolutely crack it.

Remember: It’s not just about solving problems—it’s about how you think, communicate, and adapt.


Pro Tip: Bookmark this blog and set a goal: solve 100+ Meesho Coding questions before your interview date.

Want more guides like this? Stay tuned on ccodelearner.

Meesho coding questions and answers pdf

Leave a Reply

Your email address will not be published. Required fields are marked *