Oyo Rooms Interview Experience

Last Updated : 26 Dec, 2024

Recently, I had the opportunity to appear for an interview process at Oyo Rooms. It was an enlightening experience that included multiple rounds and provided me with valuable insights into technical problem-solving, coding, and soft skills. Here's a detailed account of my journey through the process.

Round 1: Online Assessment (90 Minutes)

The online assessment consisted of three problems with varying levels of difficulty, which had to be solved in 1 hour and 30 minutes. The questions were as follows:

  • A Binary Palindrome: A question focused on identifying binary palindromes, which tested my understanding of binary representations and string manipulation.
  • Falling Apples: A problem involving logical reasoning and array manipulation.
  • Bob and Bot: A moderately challenging problem requiring an understanding of algorithms and data structures.

The questions were easy to medium in difficulty, and I managed to solve them within the allotted time.

Round 2: Technical Interview (45 Minutes, Offline)

This round started with a discussion about my performance in the online assessment. The interviewer had the report from the OA and asked me to:

Explain the OA Questions:

  • I explained my approach to each question and clarified my thought process.
  • Code for Falling Apples: The interviewer asked me to write and explain the code for the "Falling Apples" problem. She understood my approach and was satisfied with the explanation.

Next, we dived into problem-solving:

Sudoku Solver:

  • I began with the brute force approach.
  • She then guided me towards optimizing the solution using backtracking.
  • We discussed the time and space complexity and eventually explored a Dynamic Programming (DP) approach, though I didn’t write its code as I was unfamiliar with DP.

House Robber Problem:

  • The problem involved maximizing the value a thief could rob without stealing from adjacent houses.
  • I started with a brute force approach and then discussed using a priority queue.
  • The interviewer asked about the time complexity of priority queues, differences between Max Heap, Min Heap, and Binary Search Tree, and how to insert elements in a Max Heap.
  • The Interview asked, how will the code be modified if the array contains negative integers.
  • After writing and dry-running my code, we discussed a DP-based optimization strategy for this problem as well.

Merge Intervals:

  • I explained my approach and wrote the code.
  • The interviewer asked me to dry run the code and analyze its time and space complexity.

Takeaway: Be thorough with Dynamic Programming approaches and their complexities, as they are often revisited during interviews.

Round 3: Technical Interview (45 Minutes, Offline)

This round began with an introduction and a discussion about my projects. The interviewer asked about the questions from my previous round and then proceeded with the following:

Triplet Sum:

  • I started with the brute force approach and explained its time and space complexity.
  • Then I optimized it using the two-pointer approach and performed a dry run to demonstrate its efficiency.

Generalized Subset Sum Problem:

  • The problem required selecting x elements from an array whose sum equals k.
  • We brainstormed and implemented a recursive approach.
  • We discussed optimizing it using DP, though I couldn’t write its code due to a lack of familiarity with the concept.

Project Discussion:

The interviewer asked about my website project, the technologies I used, and how I implemented it.

  • Questions about APIs, including the difference between PUT and PATCH methods.

JavaScript and React:

  • Differences between synchronous and asynchronous JavaScript.
  • Concepts of callback, promises, async/await.
  • Asked about React hooks like useState(), useNavigate(), and useEffect().
  • Discussed a code snippet to understand the behavior of useEffect().

Database and System Concepts:

  • Differences between NoSQL and SQL databases, and why I chose MongoDB for my project.
  • Differences between processes and threads.
  • Challenges of multithreading and strategies to resolve them.

The interviewer concluded by asking if I had any questions. I requested feedback, and he emphasized the importance of mastering Dynamic Programming.

Key Takeaways:

  • Be thorough with fundamental data structures and algorithms, especially Dynamic Programming.
  • Focus on understanding time and space complexities for all approaches.
  • Be prepared to explain your projects in depth, including the technologies used and the rationale behind them.
  • Practice problem-solving with both brute force and optimized approaches.
  • Understand core concepts of JavaScript, React, and API development.

This interview experience was a great learning opportunity, and I hope it helps others in their preparation journey!

Comment