Summary
I successfully interviewed for an SDE2 role at Grubhub, which included a phone screen and four on-site rounds, ultimately leading to an offer for the position.
Full Experience
My interview journey for the SDE2 position at Grubhub consisted of a phone screen followed by four comprehensive on-site rounds. For the phone screen, I was given the 'Coin Change' problem. I initially presented a brute-force solution and then optimized it using dynamic programming. Although I didn't fully complete the optimized solution, my explanation was thorough enough to satisfy the interviewer.
The on-site rounds were diverse. The first round was System Design, where I was tasked with designing a menu service. This involved creating a service to host restaurant menus and display them to diners. Following that, I had a Behavioral round, which felt more like a genuine conversation rather than a typical interrogation. The third round was an OOP design challenge: designing an air traffic controller. Finally, the last round was a coding session. I was given a list of lists, formatted as first [middle] last, 111-222-3333, and had to design an API to retrieve all phone numbers associated with a specified last name.
Overall, it was a great interview experience, and I truly enjoyed speaking with everyone. The coding questions were manageable but had enough complexity to keep them interesting.
Interview Questions (4)
Given an integer array coins representing coins of different denominations and an integer amount representing a total amount of money, return the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return -1. You may assume that you have an infinite number of each kind of coin.
Design a service that hosts various menus from restaurants and displays them to diners. This involved considering aspects like data models for menus and restaurants, API endpoints for creating, updating, and retrieving menus, scalability for high traffic, and how different user types (restaurants, diners) would interact with the system.
Design an object-oriented system for an air traffic controller. This included defining core entities such as Airport, Airplane, Runway, and AirTrafficController. The design needed to address how planes would request take-off and landing, manage runway assignments, handle conflicts, and maintain the state of various aircraft and airport resources within the system.
Given a list of lists, where each inner list contains strings formatted like first [middle] last, 111-222-3333, design an API that can efficiently retrieve all phone numbers associated with a specified last name. The challenge involved parsing the input format, storing the data in an accessible way, and designing the API interface.