Booking.com interview

Howdy

2 months ago I started interview process at Booking.com in Amsterdam for position Full Stack Developer

I will share with you how it goes, what questions I was asked and what was the result 🙂

Disclaimer

First of all I dont want this post content to affect Booking.com’s interview process in any matter, so if you’re from Booking.com and you find it inappropriate – please let me know – I will modify or unpublish it right away

4 steps intervew

The whole interview process was 4 steps:

  1. I was referred by my friend who works at Booking.com, 2 days after he gave my CV to HR they send me a test from https://www.hackerrank.com
  2. After passing the test, in 2 days I got an email from HR to schedule a small-talk with him (30 min)
  3. After the small talk there was an online code-writing technical interview scheduled 3 days after
  4. After the online technical interview I was invited to face-2-face interview in Amsterdam, it took about 1 month to prepare visa and go therel; on F2F there was 3 parts: front-end, back-end and commercial-awareness part

So after this small briefing lets look at each part in detail

Hackerrank test task

I got an email with the link

(I thought because it says that “you can take this challenge any time” I have time to prepare, so I started preparing myself and started the actual test in about 2 weeks)

It was an online 90-min test, I could use internet of course and I did

There were 2 parts: first about 15 small questions, second – 2 open / code-writing questions

I wont post the exact questions here but here are the approximate topics:

  • name HTTP code used for … (like Bad Gateway, or Gateway Timeout)
  • consider you have unsorted list of numbers 1...10^9 – which of the following data structures would better fit to find min / max element (and examples like binary tree, blockchain, linked list, heap)
  • what is the time complexity of the following code
    for (i=0; i<N; i++) {
      for (j=0; j<i; j++) {
        // do things
      }
    }

    and options like O(N), O(N^2), O(log N), O(N log N)

  • consider you have N data centers and each operate with 30 computers; now each of those computers can serve 1000 users per day; also every month there is high-load and at least one of data centers is not functioning; your load is smth like 10^6 users per day

    blah-blah, cannot remember the rest :)anyway the question was like: how many data centers you need to be able to serve all user requests anytime – simple math
  • for the 2nd part there were 2 code-writing questions; the code was in javascript
    because it’s part of hackerrank platform – there was a nice editor in which you can compile the code and run a bunch of tests on it (just like on regular hackerrank)

    • The first question was about analyse the code like find it’s vunlerable parts – describe them, propose a fix
    • The second question was to write fib(x) fibbonacci function or mergeSort(array) function or something like this, dont remember

So to perpare for this part I suggest you to go to https://www.hackerrank.com/domains/algorithms and to solve at least 1-2-3 problems in each category: strings, greedy, sorting, dynamic programming. This experience + ability to google should be enough for you to pass.

As you can see the 1st part of interview includes basic / easy-googlable questions about web, HTTP, javascript and a couple of coding tasks – nothing serious. Done. Onto the next part.

Small talk with HR specialist

HR called my by phone. Connection was poor but interviewer had a good international english and even though sometimes it was not clear what he wants / meant – I just asked again and it was fine – no pressure.

We talked about my previous career, my motivation, my skills. The recruter was very easy-talking / polite and supportive. Actualy this feeling of support is something which I really liked about Booking.com, as they say “Booking cares” and it’s simply true – during interview process you really feel like they need you and they care about you.

HR asked a few questions about my commercial awareness – this is very important part of Booking.com interview. You should read about Booking.com in the internet, know how company earns money, be able to distinguish “merchant model” vs “agent model”. You should know what A/B testing is (Booking.com is using a lot of it) and what data-driven company means.

2nd part was not very hard – just tell about yourself, about your motivation and be ready to answer questions I described above.

AND ALSO: ask questions – they really like it.

Online technical interview

A call took 2 hours. There were 2 interviewers, both full stack developers.

They prepared a template of javascript / html / backend API template in Harckerrank’s CodePair – very good looking online code editor.

The guys were very easy-talking, again – no pressure, all questions were fully answered.

Now about the task: I was asked to write both: front- and back-end code to display list of hotels which has rating > value from <input>

The initial code looked smth like this:

(function() {
  let minRating = document.getElementById("rating");
  // assign your event listener here
  let template = function() {
    // write your template function here
  }
  ...
})
<html>
  <input id="rating">
  <ul id="hotels">
  </ul>
</html>

(its not exact code, just an example)

I was asked to understand the given template and write code which will fetch data from some backend – write AJAX function, like using XMLHttpRequest and think of API contract between client and server.

I was aware about DOM optimisations, so I used Document Fragments to add <li> elements to <ul> one single time usign fragment which results in only 1 repaing / reflow.

FOR SURE you should read about DOM optimisation, event delegation, currying and other popular modern javascript / HTML / CSS techniques to succeed in this part.

F2F interview in Amsterdam

I was invited to Amsterdam for the final round! Amsterdam is a beautiful city

Company helped me with visa + bought all tickets and of course booked a hotel 🙂

This is the view from Booking.com’s main building called “The Bank”

There is the whole floor for recruting people with kitchen and separate small rooms for candidates.

First I had a talk with recruter about how we gonna proceed today. She said there would be 3 separate interviews:

  • Front-end (1 hour)
  • Back-end (1 hour)
  • Commercial awareness (1 hour)

All interviews went one after another so it was a bit exhausting but not that much.

On the front-end part I was asked to draw a tooltip for HTML element, always on top with fixed width. We discussed the positioning of this <div class="tooltip"> element, it’s place in DOM – should be in <body> because this way it’s independent of parent container. Also I was asked about event delegation, offsetHeight, .getBoundingClientRect() methods to calculate tooltip’s position on page. There was almost no CSS related direct questions, but it’s important to understand how display  works and position: absolute behaves in different situations

On the back-end part I was asked to write a function which will calculate hotel room’s availability for the time period.
INPUT: room, start date, end date (like on booking’s main site) + list of [room, start date, end date] already booked properties
OUPTUT: available or not
The task was not quite obvious if you think of it, but I managed to solve it but slowly (you need to sort the list of already booked ranges first).

After coding I was asked to implement the same solution with 7.000.000 bookings per day, which is a lot. We were talking about choosing appropriate data store like Cassandra, storing pre-calculated result of availability and sharding this data. I was asked how to choose the good shard key for this case.

On commercial awareness part we discussed how would I build the hotel rating system for Booking.com, without technical details – just pure business thinking. We talked about different customer groups: avarage, rich, big family. Do you need to consider history? Which hotels should be TOP-3?

Result

I didnt make it 🙂 but that’s totaly my fault.

I made very stupid mistakes on front-end part, was too-slowly on back-end part and, but did well on the last part!

I’m gonna try again in half a year / year though.

Perparation tips

I suggest you to go thru every review at glassdoor – its really helpful

Also as I mentioned earlier – solve hackerrank algorithm problems

Read about the company in the internet, spend some time analysing their web site, think of some ideas to enhance the web site

Put some effort to think of system design: consider writing youtube, uber or reddit from scratch – where should you start from? what are the pitfalls? how you choose database? all those questions may be asked

Thanks a lot for reading, I hope you enjoyed, wish you best luck if you’re going to apply for this position!

Leave a Reply

Your email address will not be published.