Data Engineer interview at Urban Company with 2 YOE
Data EngineerUrban Company On-Campus process (August 2025)
Urban Company 6M + FTE (Rejected)
Urban Company | SDE2 | Gurgaon | May 2022 [Reject]
SDE IIUrban Company | Platform Engineer | Sep 2020 [Ghost] | Gurgaon
Platform EngineerSummary
I recently interviewed for a Data Engineer position at Urban Company with 2 years of experience. The process included an assignment and a domain knowledge interview, but unfortunately, I was ultimately rejected.
Full Experience
My interview journey with Urban Company started after I received a call from their HR department for a Data Engineer opportunity.
The first step was an assignment that I needed to complete within a day. It involved building a Lightweight MySQL ORM Layer with Dual Write Support. This task tested my practical coding and database interaction skills.
Following the assignment, I was invited for a 'Domain Knowledge Interview.' In this round, the discussion revolved around various data engineering concepts and systems. We delved into topics like Kafka, Change Data Capture (CDC), and real-time streaming architectures. There was no discussion about the assignment during this round.
Despite my performance in the interview, the verdict was rejection.
Interview Questions (4)
Design a user clickstream data pipeline. Explain how to fetch and store this data, clarify why direct writing to S3 is not feasible, and justify the use of Kafka as an initial data ingestion layer.
Describe your approach to exposing OLAP data through an API for consumption by microservices. Additionally, explain how you would build and expose real-time dashboards based on this data.
Explain how your company manages Data Governance.
Discuss Kafka architecture and how you would handle increased data size and scaling challenges.
Summary
I participated in Urban Company's on-campus recruitment drive, which included an Online Assessment, two Data Structures & Algorithms rounds, a System Design round, and a final technical discussion. Despite making it through multiple rounds, I was ultimately rejected without specific feedback.
Full Experience
I recently went through the on-campus interview process at Urban Company. The selection process began with an Online Assessment that lasted 90 minutes and consisted of three questions.
The first question in the OA was Rotting Oranges. The second one was Course Schedule II. The third problem was a unique challenge: 'Given a 2D array of size N x M, where each cell contains either '0' or '1', find the number of paths from the cell (0,0) to the cell (N-1,M-1) such that the sequence formed by the cells is a Palindrome.' A hint was provided: 'Meet in the Middle', with constraints N, M <= 15.
After clearing the OA, I proceeded to Interview Round 1. This was a 60-minute DSA round where I had to code two questions on Google Docs. I completely solved Decode Ways 2. For the second question, House Paint 3, I could only discuss the approach and provide pseudocode for the optimal solution.
Next was Interview Round 2, a 60-minute System Design round. My task was to design a Proctored Exam System. I worked on sketching out the ER Diagram and defining the necessary classes. The interviewer was friendly and offered helpful hints, which was very encouraging.
The final round, Interview Round 3, involved an in-depth discussion about my hackathon project, focusing on the design decisions I made. We also touched upon various concepts like CDN, DNS, GeoDNS, and the advantages and disadvantages of DBMS normalization.
Unfortunately, the final verdict was a Rejection, and I did not receive any feedback regarding my performance.
Interview Questions (6)
Standard LeetCode problem. Given a grid where each cell can be empty (0), a fresh orange (1), or a rotten orange (2). Every minute, any fresh orange that is 4-directionally adjacent to a rotten orange becomes rotten. Determine the minimum time until no fresh oranges remain. If it's impossible, return -1.
Standard LeetCode problem. There are a total of numCourses courses you have to take, labeled from 0 to numCourses - 1. You are given an array prerequisites where prerequisites[i] = [ai, bi] indicates that you must take course bi first if you want to take course ai. Return the ordering of courses you should take to finish all courses. If there are many valid answers, return any of them. If it is impossible to finish all courses, return an empty array.
Given a 2D array of size N x M. Each cell contains either '0' or '1'. Find the number of paths from cell (0,0) to cell (N-1,M-1), such that the sequence formed by the cells is a Palindrome. Movement is restricted to right or down. Constraints: N, M <= 15. The problem provided a hint: 'Meet in the Middle'.
A message containing letters from 'A'-'Z' can be encoded into numbers using the mapping: 'A' -> '1', 'B' -> '2', ..., 'Z' -> '26'. Additionally, the character '' can represent any digit from '1' to '9'. Given an encoded message containing digits and the '' character, return the number of ways to decode it. Since the answer may be very large, return it modulo 10^9 + 7.
This is likely a variant of the 'Paint House' problem series. While the exact problem statement was not fully provided, these problems generally involve finding the minimum cost to paint a row of houses with specific constraints, such as no two adjacent houses having the same color, or achieving a certain 'target neighborhood' configuration.
The task was to design an online system for conducting proctored examinations. This involved creating an Entity-Relationship (ER) Diagram to model the database schema and defining the main classes for the system's architecture.
Summary
Failed to secure a position at Urban Company despite solving some interview questions, with feedback highlighting poor code quality as the main issue.
Full Experience
Started with an online assessment (OA) containing two questions: one on topological sorting with greedy approach and another on bitmask DP. Managed to complete only 1.5 questions due to technical issues with the online compiler. In the first round interview, faced a hard greedy problem which I solved and coded, but encountered issues with the compiler taking 15 minutes to run. Also tackled a trie-based problem, solving it quickly and writing pseudocode on paper. The interview concluded with a rejection, citing poor code quality as the primary concern.
Interview Questions (2)
A challenging problem requiring a greedy approach. The candidate was able to solve it and code the solution, but faced issues with the online compiler taking 15 minutes to run test cases. All test cases passed once the compiler was functional.
A problem involving trie data structure. The candidate solved it quickly and was able to write the approach and pseudocode on paper within a few minutes.
Preparation Tips
Focus on improving code quality in addition to solving problems. Practice coding under time constraints and ensure that solutions are well-structured and efficient.
Summary
I interviewed for an SDE2 position at Urban Company in May 2022 and was ultimately rejected after three rounds, which included DSA, Machine Coding, and Low-Level Design.
Full Experience
My interview process at Urban Company for an SDE2 role in May 2022 consisted of three rounds.
Round 1: Data Structures and Algorithms (1 hour)
This round focused on DSA. I was given two questions: one related to Trees and another involving the Sliding Window technique. I managed to provide optimal solutions for both problems, which I felt were of LeetCode Medium difficulty.
Round 2: Machine Coding (90 minutes)
The second round was a Machine Coding challenge. The task was to implement a basic Ride Booking Platform. The core requirements included registering users and drivers, implementing a comprehensive pricing strategy that accounted for factors like surge, car type, and distance (showing users prices for each car type), and enabling ride bookings if a driver was available within a specified radius. I successfully implemented the platform within the given time frame, utilizing various design patterns.
Round 3: Low-Level Design with Hiring Manager (1 hour)
My final round was an LLD discussion with the Hiring Manager. I was asked to design a payment aggregator with an optimal logic to ensure a high success rate of transactions. I implemented it based on my understanding and assumptions, but my approach diverged from the interviewer's point of view. Specifically, he preferred a callback mechanism instead of my proposed asynchronous call to the payment gateway.
Result: I received a rejection mail the very next day.
Interview Questions (2)
I was asked to implement a basic ride booking platform. The requirements included:
- Register user and driver.
- Implement a pricing strategy including factors like surge, car type, distance, etc. The platform needed to show users the price for each car type to choose from.
- Book a ride if a driver is available within a certain radius.
I was tasked with designing a payment aggregator, focusing on an optimal logic to achieve a high success rate of transactions. The interviewer had a specific preference for a callback mechanism instead of an asynchronous call to the payment gateway for certain operations.
Summary
I interviewed for a Platform Engineer role at Urban Company, which involved multiple rounds focused on Data Structures & Algorithms and System Design. Despite completing all rounds and solving several complex problems, I experienced significant scheduling issues and ultimately received no follow-up from the company, which I found unprofessional.
Full Experience
One of the senior-most engineers at Urban Company reached out to me on LinkedIn, asking about my immediate availability for interviews the following Saturday. I requested to reschedule for the Saturday after, but they mentioned no panel would be available then. I agreed to give at least two rounds, primarily focusing on Data Structures and Algorithms.
Round 1
The recruiter initially sent me an invitation for a 10:30 AM slot on Saturday. However, just 15 minutes before the scheduled interview, I received a call informing me that the interviewer was sick and we needed to reschedule. Later, the recruiter got back to me with a new slot: 11:45 AM-12:45 PM.
The interviewer was helpful. We discussed two standard LeetCode medium questions. I had to write functions, and we covered standard complexity analysis and test case discussions.
Question 1:
I was given an input string containing [a-z] and # characters. The # character had two possible functionalities:
- As a backspace keystroke: it removes itself and the character to its left.
- As a no-keystroke: it just removes itself without affecting other characters.
The task was to output all possible string outputs based on these functionalities. For example, for ab#c, the possible outputs were [ac, abc].
#include<bits/stdc++.h> using namespace std;vector<string> ans;
void solve(int ind, string inp, string res) { if(ind == inp.size()) { ans.push_back(res); return; } if(inp[ind] != '#') solve(ind + 1, inp, res + inp[ind]); else { // inp[ind] = # solve(ind + 1, inp, res); // doing nothing if(res != "") solve(ind + 1, inp, res.substr(0, res.size()-1)); // acting as a backspace } }
int main() { string inp; //input string inp = "ab#c"; solve(0, inp, ""); // corrected function call }
Question 2:
I was asked a question related to Binary Tree Maximum Path Sum (LeetCode 124).
Round 2
After my first round, I immediately received an invitation for the next round, scheduled just 30 minutes later from 1:15 PM-2:15 PM. Shortly after, I got another email stating this invite was canceled, followed by yet another email for the same time slot but with a different interviewer. Then, within the next 10 minutes, this invite was also canceled without any further updates.
At 1:46 PM, I received a fifth invite for that day, scheduling my next round from 2:30 PM-3:30 PM. Until 2:29 PM, I honestly wasn't sure if this round would even happen.
The interviewer was friendly, but this time, he didn't provide any online editor link, so I had to write all my code on Google Docs. He asked me two questions and expected proper code, test cases, complexity analysis, and areas for improvement. He specifically asked me to think in terms of API calls rather than asymptotic complexity.
The questions were:
- Jump Game (LeetCode 55)
- Jump Game II (LeetCode 45)
- Longest Substring Without Repeating Characters (LeetCode 3) - For this one, he also asked me to print the actual longest substring.
Round 3
The third round was scheduled for the following Tuesday with the senior person who initially reached out to me on LinkedIn. We primarily discussed two questions:
- Design a URL shortener.
- Sort a large file with limited memory (something like sorting a 10GB file with only 1GB RAM).
That concluded my interview process. I emailed the recruiter for an update on my candidature but received no response. I also pinged the senior person on LinkedIn; he viewed my messages but provided no reply. My two cents to Urban Company: before focusing on hiring new people, strive to be a professional organization. Only then should you think about growth and bringing in new talent. The management was very poor, and the behavior was highly unprofessional. I might have been rejected, or the position might be on hold, but they should at least have the professionalism to respond and inform candidates about their status. I would rather work for a professional organization with less salary than an unprofessional one with better pay.
Interview Questions (7)
Input string containing [a-z], # characters. # has two functionalities: 1. backspace keystroke - removes itself and a char of left 2. no keystroke - removes itself. Output all possible string outputs. Example: ab#c -> [ac, abc]
Design a URL shortener system.
Sort a large file with limited memory (e.g., sort 10GB file with 1GB RAM).
Preparation Tips
The post does not explicitly state how I prepared, but the questions covered suggest a strong foundation in Data Structures and Algorithms, particularly dynamic programming and graph/tree problems, along with experience in System Design principles, would be essential.