LogIn
I don't have account.

WheelsEye Backend Engineer Interview Experience | DSA Questions, System Design, Backend Deep Dive

Ekta chaudhary
14 Views

Getting selected for a Backend Engineer role at WheelsEye Technology India Pvt. Ltd. was one of the most practical interview experiences I've had because the company focused far more on real backend engineering decisions than only algorithm-based problem solving.

Unlike interviews where everything revolves around LeetCode-style DSA, this process tested something much closer to day-to-day backend work technology choices, architecture thinking, scalability, system design and how well I could explain trade-offs in real production systems.

I recently went through the complete interview process for the WheelsEye Backend Engineer interview and fortunately, I was selected after 5 rounds. The overall process was challenging but very rewarding because every round felt connected to actual engineering work.

This was a hybrid interview process, applied through a referral and the complete timeline took around 3-4 weeks. If you are preparing for the WheelsEye Backend Engineer interview, searching for terms like WheelsEye interview experience, Backend Engineer interview questions, WheelsEye system design interview, Hotel Management System design interview or how to crack backend engineer interviews, this real experience will help you understand what actually happens.

One thing became very clear during this process: Backend interviews are rarely just about coding. They are about:

  • system thinking
  • technical trade-offs
  • production experience
  • scalability understanding
  • business impact awareness
  • communication clarity

That is where offers are won.

Let me walk you through each round in detail along with the coding questions and proper explanations.

Interview Process Overview

There were a total of 5 rounds:

  • Round 1 : DSA Coding Round
  • Round 2 : SDE-3 Technical Deep Dive
  • Round 3 : System Design (Hotel Management System)
  • Round 4 : Engineering Discussion Round
  • Round 5 : Business + Technical Mindset Round

Most rounds were medium difficulty, but the expectations were senior because the focus was practical engineering. The biggest lesson: Clean thinking beats fancy answers.

Round 1 : DSA Coding Round

The first round was a 90-minute DSA coding round and it started with a short introduction instead of jumping directly into coding. The interviewer first asked a few basic questions about the tech stack I had worked with before mainly to understand my background, the kind of projects I had done and where I felt most comfortable technically.

This part was actually helpful because it made the conversation feel more natural before the actual coding began. After that, He moved directly into problem-solving. There were two coding problems in total. The first one was a well-known sliding window problem that I was able to solve confidently. The second one looked much simpler at first, but that turned out to be deceptive. I managed to solve it partially, but due to a small mistake in handling edge cases, I ended up getting only partial marks.

That round reminded me of something important: In interviews, almost correct is often still wrong. Even a small mistake can change the final outcome. That lesson stayed with me.

Problem 1: Minimum Window Substring

The first problem was one of the most famous sliding window interview questions.

The interviewer asked: You are given two strings:

  • s -> the main string
  • t -> the target string

Your task is to find the smallest substring in s that contains all characters of t, including their frequency.

For example:


Input:
s = "ADOBECODEBANC"
t = "ABC"

Output: "BANC"

because it contains A, B and C and there is no smaller valid substring.

At first glance, the problem feels manageable, but the real challenge is handling frequency correctly. For example, if t = "AABC", then one A is not enough. That is where many candidates make mistakes.

My First Thought During the Interview is brute-force. Generate every possible substring of s and check whether it contains all required characters from t. Logically, this works. But the problem is complexity. Generating all substrings already takes O(N²) and checking each one makes it even worse.

That is far too slow for large inputs and definitely not what interviewers expect for this problem. I explained that brute force helps understand the problem, but it is not acceptable as the final solution.

That was when I moved toward the optimized approach. The correct solution uses: Sliding Window + Frequency Map

This is the standard pattern for substring optimization problems. The idea is to maintain:

  • a frequency map for required characters
  • a frequency map for the current window
  • We keep expanding the right pointer: right++
  • and keep adding characters to the current window.
  • Once all required characters are satisfied, we try to shrink the window from the left: left++
  • to make the substring as small as possible while still remaining valid.
  • Every time the window becomes valid, we compare its length with the minimum answer found so far.
  • This continues until the full string is processed.

This gives an O(N) solution, which is the expected optimal answer.

The interviewer was more interested in how clearly I explained the shrinking logic than the actual code syntax. That part matters a lot in sliding window interviews.


import java.util.*;

public class MinimumWindowSubstring {

    public String minWindow(String s, String t) {
        if (s.length() < t.length()) return "";

        Map<Character, Integer> target = new HashMap<>();
        for (char c : t.toCharArray()) {
            target.put(c, target.getOrDefault(c, 0) + 1);
        }
        int left = 0;
        int matched = 0;
        int minLen = Integer.MAX_VALUE;
        int start = 0;
        Map<Character, Integer> window = new HashMap<>();
        for (int right = 0; right < s.length(); right++) {
            char ch = s.charAt(right);
            window.put(ch, window.getOrDefault(ch, 0) + 1);
            if (target.containsKey(ch) &&
                window.get(ch).intValue() <= target.get(ch)) {
                matched++;
            }
            while (matched == t.length()) {
                if (right - left + 1 < minLen) {
                    minLen = right - left + 1;
                    start = left;
                }
                char leftChar = s.charAt(left);
                window.put(leftChar, window.get(leftChar) - 1);
                if (target.containsKey(leftChar) &&
                    window.get(leftChar) < target.get(leftChar)) {
                    matched--;
                }
                left++;
            }
        }
        return minLen == Integer.MAX_VALUE
                ? ""
                : s.substring(start, start + minLen);
    }
}

Problem 2: Kth Maximum Element

The second problem was based on heaps. The interviewer asked: Given an array, find the Kth largest element.

For example:

Input:
nums = [3,2,1,5,6,4]
k = 2

Output: 5

because:

  • 1st largest -> 6
  • 2nd largest -> 5

This problem sounds very easy at first, which is exactly why candidates often underestimate it. The interviewer was not checking whether I knew sorting. They were checking whether I could optimize beyond the obvious.

My First Thought, The most straightforward solution is: Sort the array and return: nums[n-k] This works perfectly. But the complexity is: O(N log N) which is acceptable, but not optimal. And in interviews, especially for common problems like this, interviewers usually expect the better version.

That better version is using Min Heap of Size K The idea is simple: Keep only the top K largest elements inside a min heap. For every number:

  • insert it into the heap
  • If heap size becomes greater than K:
    • remove the smallest element

This way, the heap always contains the K largest elements seen so far. At the end: The top of the min heap is the Kth largest element. This gives: O(N log K) which is much better than full sorting.

This was the solution I attempted.

Unfortunately, I made a small mistake while handling an edge case and that caused partial marks. It was frustrating because the overall idea was correct.

Correct solution fo this problem


import java.util.*;

public class KthLargestElement {

    public int findKthLargest(int[] nums, int k) {
        PriorityQueue<Integer> minHeap = new PriorityQueue<>();
        for (int num : nums) {
            minHeap.offer(num);
            if (minHeap.size() > k) {
                minHeap.poll();
            }
        }
        return minHeap.peek();
    }
}

This round taught me that strong DSA interviews are not just about solving problems quickly. They are about solving them correctly, explaining them clearly and handling follow-up questions with confidence.

The first problem tested sliding window precision. The second problem tested optimization and implementation discipline. Together, they reminded me that interviews reward clarity much more than rushed coding.

Round 2 : SDE-3 Technical Deep Dive

The second round was taken by an SDE-3 and honestly, the tone of the interview changed immediately. From the very beginning, it was clear that this was not going to be a normal coding round. The interviewer was very technically strong and instead of asking DSA problems, he went straight into deep discussions around my previous projects, architecture decisions and the reasoning behind the choices I had made.

This is the kind of round where memorized answers stop working. You cannot survive by repeating definitions from interview preparation blogs. You need real understanding because every answer leads to another why. The most interesting part started when he asked: Why did you choose MySQL instead of MongoDB? and then followed with: Why Kafka over RabbitMQ?

These questions sound simple, but they are actually some of the hardest interview questions because there is no single correct answer. The interviewer is not testing whether you know what MySQL or Kafka is. They are testing whether you understand trade-offs and whether your decisions were intentional.

For the database question, I explained why we chose MySQL instead of MongoDB.

In our project, strong consistency mattered because financial and transactional correctness was important. We had structured relationships between multiple entities and maintaining referential integrity was necessary. Transactions were also a critical requirement, especially where multiple operations had to succeed or fail together. Because of that, using a relational database made more sense.

I specifically mentioned that choosing NoSQL only because it sounds modern is often a mistake. Technology should be selected based on use case, not hype. That part created a good discussion because it showed decision-making rather than tool worship.

Then came the messaging system question: Why Kafka instead of RabbitMQ?

Here I explained that our use case was more aligned with event streaming rather than simple message queuing. We needed high throughput, durable event storage, replay capability and the ability for multiple consumers to process the same events independently. Kafka handled that much better.

The replay capability was especially important because some downstream consumers needed the ability to reprocess old events, which is much harder in traditional queue-based systems.

I also explained how consumer groups gave flexibility for scaling multiple services independently without tightly coupling the system. That naturally led to a deeper discussion where I explained how we used: Kafka Streams + Binlogs instead of traditional batch processing.

The reason was that near real-time synchronization was required. Instead of waiting for scheduled jobs to sync data every few hours, database binlogs allowed us to capture changes continuously and Kafka Streams helped process those events in near real time.

This reduced delay, improved consistency across services and made the system much more responsive. Honestly, this was the strongest part of the interview because it came from actual project experience. That matters.

Interviewers can immediately tell when you are explaining something you have truly worked on versus something you memorized yesterday. This round taught me something very important:

  • If a project is on your resume, you must know it deeply.
  • Not just what you built, but why you built it that way. Because experienced interviewers do not ask surface-level questions. they ask the second and third why.

That is where interviews are won.

Round 3 : System Design Round

Design a Hotel Management System

The third round focused on both Low-Level Design and High-Level Design together and the problem statement was practical and realistic.

The interviewer asked: Design a Hotel Management System that could handle:

  • multiple hotels
  • different room types
  • concurrent room bookings

This was a very good design problem because it looked simple at first, but once you think about real-world usage, many hidden complexities appear.

For example:

  • What happens if two users try to book the same room at the same time?

  • How do you manage availability across multiple hotels?

  • How do you handle cancellations, payments and room upgrades?

That is where the real design discussion begins. The first thing I did was not drawing classes. I started with requirement clarification. This helped a lot.

I asked questions around booking flow, cancellation policies, payment handling, room availability and whether we were supporting only room reservations or also services like food, events and loyalty programs. This showed structured thinking and interviewers usually appreciate that because jumping directly into UML diagrams often leads to weak design. After clarifying the scope, I started designing the core entities. The main classes I discussed were: Hotel, Room, RoomType, Customer, Booking, Payment, BookingService, InventoryManager

I explained that the Hotel entity should manage location details and hotel-level inventory.

  • Room would store room-specific details like room number, room type, pricing and availability.
  • RoomType helped avoid duplication by separating reusable configurations like Deluxe, Standard or Suite.
  • Customer handled user details and booking history.
  • Booking connected customers with rooms for a specific duration and tracked booking status.
  • Payment handled transaction status and payment mode.
  • The important part was separating business logic from data models. Instead of putting all logic inside one large class, services like BookingService and InventoryManager handled reservation flow and room availability separately.

The interviewer liked that the design was modular and extensible. That matters a lot. Because design interviews are not about creating the maximum number of classes. They are about responsibility separation and future maintainability.

Handling Concurrent Bookings

This became the most important part of the discussion. Because without proper concurrency handling, the system can easily create one of the worst problems in booking systems:

Double Booking

If two users try to reserve the same room at the same time and both requests succeed, the entire system loses trust. So the interviewer focused heavily on this area. I explained that booking transactions must be atomic.

The system should not separately check availability and then confirm booking without protection, because race conditions can happen between those two steps. To solve this, I discussed: Pessimistic Locking or Optimistic Locking

depending on traffic patterns and contention levels.

  • For high-contention cases where the same rooms are frequently booked, pessimistic locking can be safer because it locks the record during booking and prevents parallel conflicts.

  • For lower contention systems, optimistic locking can improve performance by using version checks and retry logic instead of hard locks.

I also explained that transaction boundaries must be clear. Availability check, room reservation and payment confirmation should be treated carefully so partial failures do not create inconsistent states.

For example:

payment succeeds but booking fails or booking succeeds but payment times out

These situations must be handled gracefully. This became the key discussion point of the round. Because concurrency handling separates toy designs from production-ready systems. And interviewers know that. That was probably the strongest learning from this round.

Round 4 : Engineering Discussion Round

The fourth round was one of the most interesting rounds because it did not feel like a traditional interview at all. There were no coding questions on a shared editor, no DSA puzzles and no direct system design problem to solve from scratch. Instead, it felt more like a serious engineering conversation.

The interviewer started by asking me to talk about the technical challenges I had faced in my previous roles and projects. This immediately shifted the discussion from interview preparation to real engineering experience. It was not about what I could solve in theory. It was about what I had already handled in practice. We discussed things like:

  • the scale of systems I had worked on
  • production issues I had faced
  • debugging strategies during incidents
  • engineering practices followed by teams
  • how I approach problem-solving when things break unexpectedly

This round was mainly checking one very important thing: How do you think when real systems break? And honestly, that is far more valuable than solving textbook interview questions. Anyone can memorize a common DSA solution. But explaining how you handled a production outage at 2 AM, how you identified a bottleneck under traffic pressure or how you reduced deployment risk that reveals real engineering maturity.

One of the discussions was around debugging production issues. The interviewer wanted to understand my process.

  • Do I start changing code immediately?
  • Do I look at logs first?
  • How do I identify whether the issue is application-level, database-related or infrastructure-related?

I explained that my first focus is always reducing impact before deep debugging.

Stabilize the system first. Then investigate.

For example, if an API is failing during peak traffic, immediately trying risky fixes in production can make things worse. Sometimes the right first step is rollback, traffic reduction, temporary scaling or isolating the failing dependency.

Only after the system is stable should detailed root cause analysis begin. That shows production maturity.

We also discussed scale. The interviewer asked about the maximum load I had handled and how the system behaved under pressure. This was not just about numbers like requests per second. They wanted to know:

  • What failed first?
  • How did we monitor it?
  • What decisions were made under pressure?
  • How did we improve it later?

That depth matters. Because backend engineering is rarely about writing perfect code once. It is about understanding failure patterns and building systems that survive them.

This round taught me that strong backend interviews are often won through practical thinking, not just technical correctness. The interviewer was trying to understand whether I think like someone who can own systems not just someone who can implement features. That difference is huge.

Round 5 : Business + Technical Mindset Round

The final round focused on something many engineers ignore during interview preparation: Product thinking and business understanding.

This was not purely technical and it was not a standard HR round either. It sat somewhere in between. The interviewer wanted to understand whether I could connect technical decisions with business outcomes. That is a huge differentiator for backend engineers. Because writing good code is important but understanding why the business needs that code is what creates real impact. The discussion focused on topics like:

  • past career decisions
  • the most business-impacting projects I had worked on
  • problems I noticed in previous companies
  • what I would improve and why

This round was powerful because it tested something deeper: Can you connect technology with business value? Not everyone can.

For example, when discussing impactful projects, the interviewer was not impressed by complexity alone. They cared more about questions like:

  • Did your work reduce operational cost?
  • Did it improve customer experience?
  • Did it reduce failure rates?
  • Did it help faster business decisions?
  • Did it improve team productivity?

That perspective changes everything. A technically impressive system that creates no business value is often less important than a simple improvement that saves the company significant money or improves customer retention.

We also discussed problems I had noticed in previous organizations and what I would improve. This was a very smart question. It checks whether you think critically or simply follow instructions.

  • Can you identify inefficiencies?
  • Can you challenge bad processes respectfully?
  • Can you suggest improvements with business reasoning?

That is leadership thinking.

I explained examples around deployment inefficiencies, delayed monitoring visibility and unnecessary manual workflows that could have been automated. The interviewer was much more interested in the reasoning than the complaint itself. That was the key. Strong candidates do not just point out problems. They explain impact and propose better alternatives.

This round made me realize that backend engineers who understand business context naturally stand out. Because systems are built for business outcomes, not for technical beauty alone. That mindset creates trust.

Final Result : Selected

Fortunately, I got selected. But when I look back honestly, I do not think the selection happened because I solved every coding problem perfectly.

There were moments where I could have written cleaner code. There were follow-up questions where I had to pause and think carefully. There were areas where I knew the interviewer was testing depth, not perfection. What made the difference was something else. The selection happened because of:

  • clear explanations
  • practical backend understanding
  • strong architecture discussions
  • calm communication
  • system thinking under pressure

Not perfection.

That was the biggest lesson. Interviews are rarely won by flawless answers. They are won by trust.

The interviewer should feel: This person can handle real engineering problems. That matters far more than one perfect coding solution.

Preparation Tips for Backend Engineer Interviews

If I could summarize preparation in one line, it would be this:

Always aim for the optimal solution even if the interviewer does not explicitly ask for it.

Because that shows maturity. It shows that you do not stop at working. You think about scalability, maintainability and production impact. That is what strong backend engineers do.

I would strongly recommend focusing on:

But just as important: Do not overcomplicate system design. (Learn System Design Interview – BIGGEST Mistakes to Avoid) Many candidates try to impress interviewers by drawing huge diagrams with too many services. That usually backfires.

  • Start simple.
  • Clarify assumptions first.
  • Ask questions.
  • Think out loud.
  • Explain trade-offs.
  • Show curiosity.

That matters much more than giant architecture diagrams. Interviewers care about reasoning, not decoration.

Responses (0)

Write a response

CommentHide Comments

No Comments yet.