- Published on
My Uber Software Engineer New Grad Interview Experience
- Authors
- Name
- Tharun Kumar

Uber Logo
I’ve spent hours crafting these blogs. But, it only takes a few minutes for you to read and just a few seconds to react. Your support means the world and keeps me writing.
Interviewing at Uber for a software engineering role was both an intense and incredibly rewarding experience. The company’s scale, culture of innovation, and engineering challenges made it an exciting place for me to contribute and grow. This post breaks down my Uber new grad Software Engineer interview experience — highlighting the rounds I went through, my approach in each round and the key lessons I learned along the way.
📋Interview Process Overview
I went ahead and applied for the 2025 Graduate Software Engineer I, United States position through Uber’s iCIMS Careers Portal without any referral as soon as the role opened
Tip 1: Apply within 24 hours once the job role opened up in the career portal
Tip 2: New grad usually don’t require referrals, Apply ASAP
Here’s how the whole process looked:
- Online Application Submitted
- SWE Coding Assessment
- Next steps from Recruiter for Interviews availability
- Virtual Onsite Interviews (3 Coding + 1 Behavioral)
- Final Decision
- Feedback Call via Uber Connect!
Each round tested a different aspect of my coding and problem-solving abilities, often digging deep into data structures and algorithmic thinking.
The Online Assessment (OA)
After my initial application cleared the screening process, I was invited to take Uber’s Online Assessment (OA), which was conducted on CodeSignal — a platform known for its diverse and progressively difficult coding problems.
Format:
- 4 coding questions with any language of choice(I chose Python)
- Difficulty: Increasing (Q1 easiest → Q4 hardest)
- Duration: 70 minutes
- Platform: CodeSignal
Question 1: Basic String Compression
This warm-up question involved writing a function that compresses a string by replacing sequences of repeating characters with the character followed by the count. For example, "aaabbc" becomes "a3b2c1".
What this question tested:
- Loop control & String manipulation
- Edge case handling (e.g. empty strings, single characters)
What Helped Me:
- Thinking through different input types (all the same character, no repeats)
- Using a
StringBuilder-Like approach for efficiency. (“”.join() in python) - Staying calm and not overengineering the solution
Question 2: Balanced Parentheses with Twist
This variation of the classic parentheses checker involved additional characters like {, [ and ], } — but with an added twist: you could remove at most one mismatched character to make the string valid.
What this question tested:
- Stack-based approach
- Carefully simulating one-character removal scenarios
Challenges:
- Managing multiple types of brackets
- Ensuring one and only(Atmost) one character removal
Question 3: Matrix Rotation
I was given a 2D matrix representing a puzzle board. The task was to simulate a series of clockwise rotations on sub-matrices and compute the final state.
What Made It Tricky:
- Rotating a sub-matrix in place with correct index boundaries
- Dealing with overlapping rotations (some rotations depended on previous ones)
- Writing clean helper functions for rotation logic
What this question tested:
- Array manipulation
- Clean and modular design
My Approach:
- Broke the rotation into layers (like rotating an onion peel)
- Carefully debugged corner cases (e.g., 1x1 subgrids)
- Visualized rotations with small test matrices to catch logic bugs
Question 4: Graph Traversal with Constraints
The toughest question involved a graph traversal challenge with additional logical constraints that required selective path exploration, and paths could only be taken if a certain threshold of the source was greater than the destination. I had to return the number of valid paths from a given source to all reachable nodes.
What this question tested:
- Advanced graph traversal (DFS with constraints)
- Understanding of stateful exploration
Challenges Faced:
- Filtering invalid edges dynamically during traversal
- Preventing cycles without globally disqualifying nodes
- Dealing with a large input size as brute force wasn’t enough
How I Tackled It:
- Built an adjacency list with edge constraints
- Used DFS with memoization(kind of DP) to reduce recomputation overhead
- Focused on correctness first, then optimized it further
Final Thoughts on the OA
The time pressure was real as 70 minutes flew by quickly. My strategy was to spend less than 15 minutes on Q1 and Q2 so I could dedicate more time to Q3 and Q4. This worked mostly well, but I did feel the time crunch near the end while debugging my graph traversal-based question, as it technically falls under Hard Level.
Tips for the Uber OA
- Practice on CodeSignal’s Playground & Company Challenges. Their question style is unique compared to LeetCode.
- Be ready for constraint-heavy simulations. Uber loves testing candidates to see how you balance correctness with complexity.
- Don’t get stuck on Q1/Q2. Finish them fast and save brainpower for the hard level questions.
- Know your strengths. I leaned into Python for its easy and time-saving syntax, which gave me an edge under time constraints.
💻 👥 Virtual On-site Interviews
After clearing the CodeSignal-based Online Assessment, I received a recruiter email after a month in time. The team was moving fast, and they were actively matching candidates with open roles. I appreciated how smoothly and professionally the Uber Talent team handled the scheduling process.
💻 Round 1: Coding BPS Round
Format:
- Duration: 1 hour long
- Environment: Zoom + CodeSignal
- Structure: 1 full-length coding problem + follow-up question
My Experience: This round focused on algorithm design, but with a real-world simulation twist. The problem involved organizing a multi-step process, with fairness and hierarchy at its core. I was asked to ensure consistency across multiple iterations of a logic-based scenario, requiring conditional updates and elimination rules. I got an email that they moved me to the next round just a couple of hours after my interview was complete.
What Made This Unique:
- The problem mimicked real-world event progression with layered constraints.
- I had to simulate progression through different phases while ensuring fairness and correctness in outcomes.
- Edge case handling was crucial, especially for small inputs and odd negative test cases.
Challenges Faced:
- Balancing correctness with clarity under time pressure
- Creating modular helper methods to avoid deep nesting and improve code readability
- Testing each simulated round accurately with dynamic updates
What Helped Me Succeed:
- Familiarity with simulation-style problems on LeetCode (Easy to learn)
- Strong debugging habits and print-based sanity checks to ensure variables are holding the right values during the dry run
- Talking through my assumptions aloud to keep the interviewer in sync with my thought process
- Clear breakdown of time complexity and space trade-offs (This is important even if the interviewer doesn’t explicitly ask for it)
💻 Round 2: Depth in Specialization (Coding)
Format:
- Duration: 1 hour long
- Environment: Zoom + CodeSignal
- Structure: 2 coding questions of increasing difficulty
Question 1:
This problem focused on binary tree traversal, but from a reverse engineering perspective(sometimes problem solving is easy this way), I was expected to infer certain elements based on rankings and simulate a specific query type efficiently.
Challenges Faced:
- Understanding traversal direction and optimal path logic
- Balancing recursive and iterative solutions to match constraints
- Handling nulls and partial subtrees gracefully
What Helped Me:
- Practicing BST-based variations ahead of time
- Reverse in-order traversal and efficient counter-based lookups
- Keeping my explanation tight — not just what I coded, but why
Question 2:
The second problem was a layered data structure design challenge, combining real-time constraints with enhanced internal stack operations(technically recursive call stack). Unfortunately, I wasn’t able to complete this one within the allotted time. My solution was partially correct, but I couldn’t code it with all the required test cases before time ran out. I was caught with brain fog and messed up the round.
Why It Was Tough:
- No starter code — full design and implementation required
- Needed to handle metadata across operations in constant time
- Pressure to balance speed with accuracy
Where I Fell Short:
- Spent a bit too much time perfecting edge case handling in Q1
- Didn’t allocate enough buffer time to test the second problem thoroughly
- Rushed to the final test logic, which led to some verification and logic issues in the end
What I Learned:
- Always allocate hard time limits per question and move on to the next approach if you can’t get ahead with the current one.
- When solving multi-part problems, think MVP (minimal viable product) first
- Even if incomplete, explaining your next steps shows clarity of thought and sometimes helps pass the interview. But don’t get stuck like me with brain fog :(
💻 Round 3: Algorithms & Data Structures (Coding)
Format:
- Duration: 1 hour long
- Environment: Zoom + CodeSignal
- Structure: 1 coding question + a short discussion toward the end
My Experience: This round involved traversing a multi-branched(N-ary)tree structure with a specific goal: to simulate a visual pattern that combined elements of breadth-first and directional logic. This was challenging as it was not a traditional binary tree, and it required a few additional considerations while coding.
What Made It Interesting:
- Had to handle irregularly structured trees (N-ary, not binary)
- Specific traversal order resembled a real-world viewing path
- Required combining queue-based logic with result shaping using an Array/List
Key Skills Tested:
- Level-order traversal using BFS
- Managing both ends of a data structure (using a deque, in Python)
- Thinking spatially about traversal results in the end
What Helped Me Succeed:
- Prior exposure to practicing N-ary trees on LeetCode
- Thinking in terms of layers and first/last element selection
- Using diagrams to explain my approach verbally before coding
- Creating my own test cases mid-interview to verify correctness
👥Round 4: Collaboration & Leadership Interview
Format:
- Duration: 1 hour long
- Environment: Zoom + CodeSignal
- Focus Areas: Teamwork, ownership, communication, leadership principles, values alignment
What This Round Looked Like
Unlike typical technical interviews, this round was purely behavioral and centered around assessing how well I could collaborate, communicate, and drive outcomes in a team setting, all within the context of Uber’s core cultural values such as Customer & Trip Obsession, Go get it, Build with Heart, and Stand for Safety, Do the right thing.
The interviewer was friendly and asked a bunch of structured, open-ended questions to explore my experiences across different dimensions:
- Ownership in complex projects: How I’ve led or contributed to critical features in past professional projects, especially under pressure.
- Team collaboration & conflict resolution: Times when I had to manage disagreements, align stakeholders within a diverse team.
- Adaptability & growth mindset: How I reacted when plans changed, deadlines shifted, or a strategy didn’t work as expected.
- Motivation and self-awareness: Why Uber? What drives me as an engineer beyond solving technical problems?
Some Behavioral Questions I Faced
While not verbatim, here are the types of questions I was asked:
- “Tell me about a time you had to influence a team decision without having formal authority.”
- “Describe a time when you received constructive feedback. How did you respond?”
- “Can you share a moment when your team’s priorities shifted suddenly? What did you do?”
- “What do you value more: fast execution or robust collaboration? Why?”
- “Why do you want to be part of Uber’s engineering org?”
What I think My Interviewer was looking for
The interviewer probably focused on how I think, communicate, and operate in ambiguous, high-risk scenarios — not just what I did, but:
- Why did I make specific decisions
- How I worked with others to resolve conflicts or improve results
- What I learned and would do differently next time(if there’s a chance)
They were especially tuned in to how my experiences reflected Uber’s cultural values, such as taking initiative, thinking big, and balancing individual excellence with team effectiveness.
💡 Tip: Use the STAR Method
To answer clearly and confidently, I leaned heavily on the STAR framework:
- Situation: Set the context clearly
- Task: Define what was expected of me
- Action: Explain what I did (with focus on how I did it)
- Result: Share outcomes — both metrics and learning
This structure helped me avoid confusion and kept my answers structured, focused and impactful.
Key Takeaways
- Simulation-based questions are Uber’s speciality. Be ready for fairness, scheduling, and tournament-style logic problems.
- Time-box aggressively. Two-question rounds demand strategic pacing — not every problem needs to be 100% perfect.
- Graph/tree logic comes in creative forms. Don’t just practice classic algorithms — explore hybrid traversal patterns and combinations of 2 or more data structures/algorithms.
- Explaining your thought process matters. Even if the code falls short, strong reasoning sometimes leaves a lasting impression with the interviewer.
📚 Resources I Found Helpful
- Uber’s Interview Guide (Must-read guide to know the process better)
- LeetCode (Uber company tag) (Past 6 months questions recommended)
- Uber Glassdoor Interview Experiences (Tip: Sort by Most Recent)
- CodeSignal Practice
- NeetCode 150 & Patterns
- Peer mock interviews with a timer: Interviewing.io
✨ Final Outcome and Takeaways
Despite performing well in two of the three coding rounds, based on my reflection, I believe Round 2 might have impacted the outcome due to an incomplete solution. It was disappointing, but I appreciated the detailed and respectful follow-up from Uber’s team and providing detailed feedback on what went well and what I could improve through Uber Connect!
While I didn’t land the Uber Software Engineering offer, I walked away with much more than just an interview experience. I gained clarity, resilience, and a renewed focus on where I can grow. The Uber team was kind, respectful, and clear in communication, and that made a big difference.

So if you’re reading this while prepping for a big tech interview, keep going. It’s okay to fall short. What matters is that you take that experience, reflect on the feedback/mistakes, and come back sharper and stronger next time.
Just Remember: Rejection isn’t the opposite of success; it’s often the path to it.
Keep an eye out for my upcoming blog posts, where I’ll share more of my interview experiences and resources to help you grow both technically and professionally. You won’t want to miss these valuable tips to help you on your journey and land the opportunities you deserve!
Check out my professional resume template here: https://topmate.io/tharun_polu/1611711
Connect with me through linktr.ee to know more!
Thank you for being a part of the community
*Before you go:*️️
- Follow us: X | LinkedIn | YouTube | Newsletter | Podcast | Twitch
- Start your own free AI-powered blog on Differ 🚀
- Join our content creators community on Discord 🧑🏻💻
- For more content, visit plainenglish.io + stackademic.com
