Google Interview Question for Backend Developers


Country: United States




Comment hidden because of low score. Click to expand.
0
of 0 vote

public Table bookReservation(Reservation req) {
  Table ret = null;
  if(req.startTime.between(openTime, closeTime) && 
     req.startTime.plus(reservationDurations.get(req.startTime)).between(openTime, closeTime)) {
    int minDifference=Integer.MAX_VALUE;
    for(Table t : tables) {
      if(!t.isTaken() && t.maxPartySize - req.partySize < minDifference) {
        minDifference = t.maxPartySize - req.partySize;
        ret = t;
      }
    }
  }
  ret.markTaken(); // so that future requests don't use this table
  return ret;
}

Although, I wouldn't use a List<> datastructure to store all the tables, since they are constantly being allocated and de-allocated based on requests. I'd use a hash map with it's key as party size, and value as a list of tables that serve that party size.

Every time we get a request to make a reservation, we can do binary search on the keys of this hashmap using the request partySize. Then we pull out the first available table of that size and return. If this is the last such table, we remove this key from the hashmap, so that any further requests will attempt to use a table of larger size. Similarly, as tables become available again, we can just add it back to the hash map using the table's maxPartySize. Such an implementation exists in Java, for example. It's called TreeMap.

- Killedsteel February 20, 2017 | Flag Reply
Comment hidden because of low score. Click to expand.
0
of 0 vote

Shouldn't you check if t.maxPartySize - req.partySize > 0
if t.maxPartySize - req.partySize = -1, if could also meet the condition
t.maxPartySize - req.partySize < minDifference

- joyfeng February 24, 2017 | Flag Reply


Add a Comment
Name:

Writing Code? Surround your code with {{{ and }}} to preserve whitespace.

Books

is a comprehensive book on getting a job at a top tech company, while focuses on dev interviews and does this for PMs.

Learn More

Videos

CareerCup's interview videos give you a real-life look at technical interviews. In these unscripted videos, watch how other candidates handle tough questions and how the interviewer thinks about their performance.

Learn More

Resume Review

Most engineers make critical mistakes on their resumes -- we can fix your resume with our custom resume review service. And, we use fellow engineers as our resume reviewers, so you can be sure that we "get" what you're saying.

Learn More

Mock Interviews

Our Mock Interviews will be conducted "in character" just like a real interview, and can focus on whatever topics you want. All our interviewers have worked for Microsoft, Google or Amazon, you know you'll get a true-to-life experience.

Learn More