Adobe | Computer Scientist II | Noida, India | 2020 [Reject]

adobe logo
adobe
Computer Scientist IINoida, India10 yearsRejected
December 2, 20200 reads

Summary

I interviewed for the Computer Scientist II role at Adobe in Noida, India, which involved two technical rounds covering C++, data structures, algorithms, system design, and OS concepts. Unfortunately, I didn't receive any feedback after the second round and assume I was rejected.

Full Experience

I recently interviewed for the Computer Scientist II position at Adobe, located in Noida, India. My total experience at the time was over 10 years. The virtual interview was conducted using BlueJean.

Round 1 (1 hour)

The first round covered a mix of probability, puzzles, system design, and data structures:

  1. We discussed a basic probability question involving biased dice.
  2. A puzzle based on the Lucky 7 dice game was presented. I was asked about the strategy for this game.
  3. I was asked to design the classic Snake game, with expectations for both high-level architecture and low-level class diagrams.
  4. Finally, there was a question involving a BST tree where each node had additional information about the number of children in its left subtree. With limited memory, the interviewer wanted to know how to divide the tree into multiple pages (files/parts) given a maximum number of nodes per page. I implemented a solution using a getPage method, and you can refer to my code via the provided link.

Round 2 (1 hour)

The second round focused heavily on C++ internals, operating system concepts, and more design challenges:

  1. We discussed move semantics in C++.
  2. The difference between std::move and std::forward in C++ was questioned.
  3. I was asked about methods pre-generated by the compiler in C++, specifically regarding C++11 and C++14 standards.
  4. The interviewer inquired about the mutable keyword in C++.
  5. Variadic templates in C++ were also a topic of discussion.
  6. I had to explain the differences between static linking and dynamic linking.
  7. The "copy on write" operating system concept was brought up.
  8. A design problem involved creating a class with the restriction that only two objects of it could be instantiated, followed by a discussion on how to handle this in multi-threaded environments.
  9. The final question required designing a class for managing meeting room intervals, including methods for adding/deleting intervals and getting the number of rooms, both generally and for a specific time range.

After completing Round 2, I did not receive any feedback call from HR. Based on this, I concluded that I was rejected for the position.

Interview Questions (12)

Q1
Lucky 7 Dice Game Strategy
Other

A puzzle based on the Lucky 7 dice game, requiring a strategy to play effectively.

Q2
Design Snake Game
System Design

Design the classic Snake game, including both high-level architecture and low-level details, with a focus on class diagrams.

Q3
Paginate BST with Left Subtree Count
Data Structures & Algorithms

Given a BST where each node includes the count of children in its left subtree, and with limited memory, design a way to paginate the tree into multiple files/parts, given a maximum number of nodes per page.

Q4
Explain C++ Move Semantics
Other

Describe the concept of move semantics in C++ and its benefits.

Q5
Compare C++ `std::move` and `std::forward`
Other

Explain the differences between std::move and std::forward in C++ and their appropriate use cases.

Q6
C++ Compiler Pre-Generated Methods
Other

Discuss methods automatically generated by the C++ compiler, specifically detailing differences or new features in C++11 and C++14 related to this.

Q7
C++ `mutable` Keyword
Other

Explain the purpose and usage of the mutable keyword in C++.

Q8
C++ Variadic Templates
Other

Describe variadic templates in C++ and provide examples of their application.

Q9
Static vs. Dynamic Linking
Other

Explain the differences, advantages, and disadvantages of static and dynamic linking.

Q10
Explain Copy-on-Write (CoW) OS Concept
Other

Describe the 'copy-on-write' optimization concept in operating systems, explaining its benefits and typical use cases.

Q11
Design a Class with Max 2 Instances
Data Structures & Algorithms

Design a C++ class such that only a maximum of two objects of that class can be instantiated. Discuss how to handle this in a multi-threaded environment (follow-up).

Q12
Meeting Room Interval Management System
Data Structures & Algorithms

Design a class to manage meeting room intervals with the following methods:

  • addInterval: Adds a room if a meeting is ongoing.
  • deleteInterval: Removes a room for a specific time interval.
  • getNumRoom(): Returns the total number of rooms; returns -1 if no meeting is ongoing.
  • getNumRoom(int start, int end): Returns the total number of rooms for a given interval; returns -1 if no meeting.

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!