Status: New grad, MS CS
Position: SDE at Uber Movements team(New Grad was closed).
Location: SF, Cal. (Virtual Interview)
Date: March 10, 2020.
Phone Interview: Flood Fill
Onsite: Virtual Interview using Zoom*
Round1: Coding Round: taken by a senior engineer: 1 hr
- Given a list of Meetings and list of rooms. Allocate meetings to rooms.
- List of meetings: [{meeting:1, start_time: 5, end_time: 8, attendees: 6},{meeting:2, start_time: 6, end_time: 11, attendees: 9}]
- List of rooms: [{room: 1, capacity: 6}, {room: 2, capacity: 8}]
- Interviewer mentioned complexity wont be important, but need production ready code. I wrote straight forward O(n^2) complexity code, where i consider each meeting and loop through rooms list.
- Sorted the meetings by start time. When considered a room, i added that room to a min priority queue to later free up rooms if time passed.
Round 2: Architectural round: taken by senior engineer: 1 hr
- Design Notification service: got feedback as solution seems good. Said that use of queues to decouple services was good.
Round 3: Behavioural: taken by 2 Hiring Managers: 45 min
- Explain in detailed about last project.
- tell me about a conflict with senior developers ? How did you solve it ?
- tell me about a challenge you faced ?
- tell me about a time with deadline to submit ?
Round 4: Bar Raiser: taken by senior engineer from different team, with one engineer shadowing: 45 min
- questions like conflicts, challenges, initiatives taken. Similar to Manager round, but with more pressure and digging deeper.
- All questions where behavioural and seemed like the interviewer was not satisified about answers on conflict resolution.
- select a project and explain in details ? Why did you do that project intially ?
Round 5: Algorithms: taken by senior engineer: 1 hr
- Max points on a line
- I knew the idea of slope, but i forgot the case of y intercept, where 2 lines can have same slope but different intercept if they are parallel. Use:
y = mx + c
- Solution is to find slope m and y intercept c of each 2 points and add that to a
Map<String, Set<Points>>, where key is m_c. Since slope will be same for 2 parallel lines, we need to find c as well to be unique.
- Couldnt figure edge case like: when slope is infinity ((y2-y1)/(x2-x1)), c = 0.
- when slope is 0, c = y.