{"resource":{"author":{"id":"3eh0kijZwMrHum8TkMqX","name":"Devtools Tech","username":"devtoolstech"},"content":{"link":"","difficulty":4,"domain":2,"type":1,"isInternal":true,"body":"Note: This interview experience was contributed by a user of [devtools.tech](https://devtools.tech) platform. You can contribute your interview experiences [here](https://forms.gle/FsFk4YBaWjbLRThb6) and interview questions [here](https://forms.gle/Kve2m3bKHRCtKDKq5).\r\n\r\n## Round 1: Online Assessment (CodeSignal)\r\n\r\nUber's first round is usually an online test conducted on platforms like CodeSignal.\r\n\r\n### Structure\r\n\r\n* **Total Questions:** 10\r\n* **Coding Questions:** 2 (DSA)\r\n* **MCQs:** 8\r\n* **Time Limit:** 35-45 minutes\r\n\r\n### Topics Covered\r\n\r\n**MCQs focused on:**\r\n\r\n* JavaScript fundamentals (closures, scope, async/await, event loop)\r\n* HTML and CSS basics\r\n* React lifecycle methods and performance concepts\r\n\r\n**Some of the coding problems involved:**\r\n\r\n* String manipulation based on Hashmap and Sliding window ([Example](https://leetcode.com/problems/longest-substring-without-repeating-characters/))\r\n* Array traversal and basic algorithmic reasoning\r\n\r\n### Preparation Tip\r\n\r\n- A strong understanding of JavaScript internals—especially the event loop, asynchronous execution, and time/space complexity—goes a long way in clearing this round.\r\n- Both questions had 20 test cases each. It is important you pass at least 18 for each question.\r\n\r\n## Round 2: DSA Coding round\r\n\r\n- **Time Limit**: 60 mins\r\n- I was asked to use JavaScript/TypeScript in this round.\r\n- There were multiple questions like: [executing K tasks in parallel](https://devtools.tech/questions/s/how-to-implement-custom-map-function-with-limit-on-number-of-operations-or-paytm-frontend-interview-question-or-javascript-interview-questions-or-frontend-problem-solving---qid---ZVNw2lUMguEZIsnvzjC1?companies=uber), Zombie in a matrix, [Asynchronous Task Runner](https://devtools.tech/questions/s/how-to-implement-an-asynchronous-task-runner-with-concurrency-control-rippling-frontend-interview-question---qid---QCu4pbqp5zgxZQaQzh0D)\r\n\r\n## Round 3: Machine Coding (Frontend)\r\n\r\nThis round started with a discussion about my past frontend projects, followed by a live machine-coding exercise.\r\n\r\n### Discussion Areas\r\n\r\n* Performance bottlenecks in real projects\r\n* Tradeoffs made during implementation\r\n* Real-world challenges and how they were resolved\r\n\r\n### Machine Coding Problems: \r\n\r\n- [Grid Light Box](https://devtools.tech/questions/s/how-to-create-an-grid-lights-interactive-shape-uber-frontend-interview-question-or-javascript-or-react-js---qid---6FVH1ZMWMXd4uZ8WAGEi?companies=uber)\r\n- [Priority Based Models](https://devtools.tech/questions/s/priority-based-modals---qid---qQfSEsjIr4C6j5vQMBED?companies=uber)\r\n- [Detect Overlapping Circles](https://devtools.tech/questions/s/how-to-detect-overlapping-circles-in-react-js-uber-frontend-interview-question---qid---ixSxPTedmz1CyVZSab1N?companies=uber)\r\n- [Building an Autocomplete](https://devtools.tech/questions/s/build-an-autocomplete-using-react-js-or-type-one-or-frontend-coding-challenge-or-javascript-interview-question---qid---wIsJwxPV1Ka0GdmTIXQX?companies=uber)\r\n\r\n>💡More Uber specific questions: https://devtools.tech/questions/all?companies=uber\r\n\r\n### Evaluation Criteria\r\n\r\n* Code quality and readability\r\n* State management approach\r\n* Reusable and composable components\r\n* Edge-case handling\r\n* UI clarity and interactivity\r\n\r\n## Round 4: Design & Architecture / System Design\r\n\r\n- **Time Limit**: 60 mins\r\n- Usually, Uber ask either designing [WhatsApp Web UI](https://devtools.tech/dashboard/fsd/chat-app) or [Google Calendar](https://devtools.tech/dashboard/fsd/calendar). I got Google Calendar ([Question with Solution](https://devtools.tech/dashboard/fsd/calendar)).\r\n\r\n### Discussion Areas\r\n\r\n* Requirements Gathering\r\n* API design and payload structures\r\n* Real-time communication (WebSockets vs polling)\r\n* Performance optimizations\r\n\r\n## Round 5: Behavioral and Collaboration Round (Bar Raiser)\r\n\r\n- **Time Limit**: 60 mins\r\n\r\nThis was a culture-fit and communication-focused interview.\r\n\r\n### Topics Discussed\r\n\r\n* Handling disagreements with PMs, designers, or engineers\r\n* Mentoring or leadership experiences\r\n* Motivation for joining Uber\r\n* Product or UX feedback for Uber\r\n\r\n### Takeaway\r\n\r\n* Be honest about failures and what you learned\r\n* Emphasize ownership and accountability\r\n* Focus on impact rather than just tasks completed\r\n* Prepare examples from your past experiences that align with Uber's core values (https://www.uber.com/in/en/careers/values/)\r\n\r\n## Final Thoughts\r\n\r\nThe Uber Frontend Engineer interview process is rigorous and well-balanced. It evaluates not just your ability to write code, but also how you think about performance, scalability, collaboration, and real-world tradeoffs.\r\n\r\n### Key Takeaways\r\n\r\n* Prepare concrete examples from your past projects\r\n* Be fluent in JavaScript fundamentals and React performance patterns\r\n* [Practice machine-coding problems with real UI constraints](https://devtools.tech/questions/all?companies=uber)\r\n* Think in terms of scalability, reusability, and user experience\r\n* [Communicate clearly and justify your design decisions](https://devtools.tech/dashboard/fsd/guide)","languages":[],"editorConfig":"undefined"},"stats":{"views":5227,"used":0,"likes":0},"description":"","published":true,"isActive":true,"tags":["javascript","ui","ux","devtools tech","coding"],"slug":"uber-frontend-interview-experience-sde-2---rid---dCWHwzvBTfbpsf7QzzqX","isPremium":false,"categories":[],"requires":[],"_id":"696a34bc132ce4e954b82594","title":"Uber Frontend Interview Experience (SDE-2)","resourceId":"dCWHwzvBTfbpsf7QzzqX","createdAt":1768567996941,"modifiedAt":1768567996941},"currentUser":null,"isOwner":false,"recommendations":{"questions":[{"_id":"6919ae3bbf1a48f85e0910f4","content":{"languages":["react"],"difficulty":1},"tags":["javascript","ui","ux","razorpay frontend interview question","coding","problem solving","interview question","dropdown component","search"],"slug":"reusable-dropdown-component-with-search---qid---h1IRuH69b5ckioqUugrt","title":"Reusable Dropdown Component with Search","questionId":"h1IRuH69b5ckioqUugrt"},{"_id":"5ec0e5f65b57cb40dd43fa22","content":{"languages":["javascript"],"difficulty":1},"tags":["javascript"],"slug":"what-is-the-output-of-the-following-code---qid---L8tDGiiqFKc1qim91nTj","title":"What is the output of the following code?","questionId":"L8tDGiiqFKc1qim91nTj"},{"_id":"646dcf2fd12c1e240202f234","content":{"languages":["javascript","typescript"],"difficulty":1},"tags":["problem solving","frontend","code","interview","ui","ux","lodash","polyfills","coding","tooling","frontend coding challenge","interview questions","leetcode"],"slug":"implement-a-function-to-generate-a-range-of-numbers-or-range-i-or-javascript-interview-question-or-lodash-polyfills---qid---ZfQeEBCKkGiCvLpYqcLt","title":"Implement a function to generate a range of numbers | Range I | JavaScript Interview Question | Lodash Polyfills","questionId":"ZfQeEBCKkGiCvLpYqcLt"},{"_id":"687cbc6850393ab55084626f","content":{"languages":["javascript","typescript"],"difficulty":1},"tags":["javascriot","frontend","ui","ux","devtools tech","coding","frontend challenge","apple","problem solving","tutorial"],"slug":"domain-operation-simulator---qid---d4fgYR94c54mF2I8sqFA","title":"Domain Operation Simulator","questionId":"d4fgYR94c54mF2I8sqFA"},{"_id":"5e9c68f1982bd3483e04bcc8","content":{"languages":["javascript"],"difficulty":1},"tags":["node.js","promises","react.js","javascript","frontend","programming","code","interview","frontend fundamentals"],"title":"What would be the output of the following code snippet? | Promise Based Output Question | Part One","questionId":"TQBJFJPPHX4VxH0MrxBt","slug":"what-would-be-the-output-of-the-following-code-snippet-or-promise-based-output-question-or-part-one---qid---TQBJFJPPHX4VxH0MrxBt"}],"resources":[{"_id":"5f202cd7cbec5f7ffc0c2fbb","content":{"difficulty":1,"domain":2,"type":1},"tags":["Cookies"," LocalStorage"," SessionStorage"," JavaScript"," Web Development"],"slug":"cookies-vs-localstorage-vs-sessionstorage---rid---1Hhlnl4V1QExC6zXn0wT","title":"Cookies Vs LocalStorage Vs SessionStorage","resourceId":"1Hhlnl4V1QExC6zXn0wT"},{"_id":"61fe386fe12bce537863cbb4","content":{"difficulty":4,"domain":1,"type":1,"isInternal":true},"tags":["javascript","frontend","coding","scoping","closure","lexcial scope","devtools","tutorial","js fundamentals"],"slug":"scoping-in-javascript-explained-or-javascript-interview-questions---rid---Iahbvfkg5H86a6KL8yBD","title":"Scoping in JavaScript Explained | JavaScript Interview Questions","resourceId":"Iahbvfkg5H86a6KL8yBD"},{"_id":"6a12e5104b3e6d922c54a0cf","content":{"difficulty":1,"domain":1,"type":1,"isInternal":true,"languages":[]},"tags":["javascript","ui","ux","devtools tech","coding","frontend"," web performance"],"slug":"reducing-image-bytes---rid---eoeW8SDZdwwNWBtFqfOh","title":"Reducing Image Bytes","resourceId":"eoeW8SDZdwwNWBtFqfOh"},{"_id":"61eeae76c596de5b12fea561","content":{"difficulty":4,"domain":2,"type":1,"isInternal":true},"tags":["remix","js framework","dev tooling","sass","css","styling","frontend"],"slug":"setting-up-sass-with-remix-run---rid---lXDyMjDSdDZDXxNcJ2ep","title":"Setting Up SASS With Remix Run","resourceId":"lXDyMjDSdDZDXxNcJ2ep"},{"_id":"6a12f6954b3e6d922c54a4bb","content":{"difficulty":1,"domain":1,"type":1,"isInternal":true,"languages":[]},"tags":["javascript","ui","ux","devtools tech","prioritising critical images","web performance"],"slug":"prioritising-critical-images---rid---BlV5X4YylAW61dYwFmyG","title":"Prioritising Critical Images","resourceId":"BlV5X4YylAW61dYwFmyG"}]}}