Applied via referral.
Round 1 - Phone Screen:
Driver delivery system :
addDriver(driverId, hourlyRate) : Add driver to system
assignDelivery(driverId, startTime, endTime) : Assign delivery to driver
getTotalCost() : Get total cost for all drivers
-- FollowUp --
payUptoTime(time) : Pay deliveries ending before time
getUnpaidCost() : Get cost from unpaid deliveries
Round 2 - Department Screen (HM):
Discussion on past projects, oncalls, standard behavioural questions.
Loop (in-person):
Round 3 (Machine coding) :
Design article voting system
addArticle(articleName)
upvote()
downvote()
getLast3Flips() : A flip is defined as a flipped vote ie user upvoted an article they downvoted before and vice versa
---FollowUp---
getArticlesByScore() - return all articles sorted by score (upvote - downvote)
getUserLastVote(userId)
Round 4 (Machine Coding) :
Design business expense rules engine - Standard Rippling problem.
Expense level rules, followed by trip level rules.
Round 5 (System Design) :
Design a news aggregator system like Google News.