Собеседование в Booking.com (часть 1, московская)
В последнее время здесь стали популярными статьи на тему рабочей иммиграции в Европу. Поскольку я также являюсь IT-иммигрантом и работаю в Амстердамском офисе Booking.com, я решил, что у меня тоже есть, что рассказать.
Меня зовут Георгий, и вот уже полтора года я живу в Голландии и работаю разработчиком/тим-лидом в Booking.com. Начать свой рассказ про жизнь в Амстердаме я хочу с истории о том, с чего вообще все это началось. История эта будет про то, как и почему я выбрал для работы свою текущую компанию, как проходил процесс собеседования и последующего сопровождения.
Как любая авантюрная затея, все начинается с идеи. В моем случае — весьма спонтанной. Я очень люблю путешествовать в другие страны. Чаще всего я посещал Европу, причем на довольно непродолжительное время (неделя — две). Однако в этом году я совершил свое по настоящему крупное путешествие, которое надолго запомнится (и я очень надеюсь написать про это отдельные статьи когда-нибудь). В феврале 2014 года я женился, и мы с супругой поехали на край света — в Новую Зеландию. Поскольку за три недели нам хотелось успеть выжать максимум впечатлений из страны, в которую чтобы только добраться нужно пролететь 30 часов (а это, скажу вам, крайне изнурительно), наша поездка состояла из множества переездов с места на место с постоянной сменой отелей и городов. Планирование и выбор жилья, особенно когда нужно выбирать его не на длительный срок в одном городе, а на 1–2 дня и в 15 различных местах — процесс довольно хлопотный.
И в тот момент мне очень помог известный многим путешественникам сайт Booking.com.
С его помощью я сумел забронировать лучшие отели по цене/качеству, причем ни разу нигде не было накладок или каких-то проблем. По возвращении домой, на волне такого воодушевления и искренней благодарности к букингу, я с чего-то вдруг решил посмотреть, а нет ли у них вакансий. Это было просто какой-то спонтанной идеей, родившейся у меня в голове на волне переизбытка эмоций.
Ничего конкретного я не ожидал и не планировал. Я даже не знал, ни в какой стране находится головной офис, ни сколько в нем сотрудников, ни какие технологии разработки они используют. На сайте с вакансиями мне бросилась в глаза работа с названием «Developer (Willing to learn Perl)», в которой говорилось, если кратко, о том, что поскольку специалистов по языку программирования Perl в мире не то, чтобы много, и что язык этот не очень популярный, компания ищет просто умного и опытного разработчика, который не знает, но хотел бы выучить Perl. Честно говоря мне такой подход очень нравится, поскольку я считаю, что язык программирования — лишь инструмент в арсенале настоящего программиста. И вовсе не язык определяет, кто ты есть. Например, опытному автомеханику будет не важно, жигули перед ним или мерседес. Да, сначала ему придется прочитать инструкцию к автомобилю, чтобы понять различия конструкции, однако в конечном счете, если руки растут из правильного места, ему будет все равно, что чинить.
Стоит еще сказать, что в своей работе мне всегда не хватало ощущения того, что я работаю ради чьего-то блага. Да, я создавал программные комплексы различной сложности, но все они делались для некого ограниченного круга людей, под заказ, и отдачи от своей работы было мало.
Поэтому мне хотелось также найти такое место, работать над таким проектом, который бы реально помогал конкретным людям. И чтобы я мог прийти домой, запустить эту программу или сайт на свое компьютере, и сказать родным: «Смотрите, вот эту удобную штуку сделал я, своими руками».
Совокупность воодушевления, восхищения и желания помогать другим сложились вместе, поэтому я решил попытать счастья и откликнулся на вакансию. К тому моменту у меня уже было составленное резюме на английском, оставшееся с прежних времен. Я немного актуализировал его, обновил навыки и прочие вещи и отправил без особой надежды, что оно кому-то будет интересно. Сами посудите — некий программист из России, с опытом, абсолютно никак не пересекающимся с тем, что использует букинг (у меня за плечами куча навыков в области всего, что связано с Microsoft, а им требуется сотрудник для работы с Perl, что подразумевает использование Linux и прочих Open Source решений). Поэтому я отправил и забыл. Но, как оказалось, зря, ибо они меня заметили.
В один прекрасный день я как обычно находился в офисе на своей тогда еще основной работе. И тут вдруг зазвонил телефон с неизвестного и явно не российского номера. Никаких иностранных друзей или коллег у меня не было, поэтому подобный звонок несколько меня смутил. Каково же было мое удивление, когда на том конце «провода» мне сказали, что это звонят из Booking.com по поводу моего резюме. Так начался процесс рекрутинга. Чтобы представлять себе длительность этого процесса, скажу, что первый звонок поступил в районе 20 марта или около того (спустя примерно неделю-две после отправки заявки).
Этот звонок был по сути первым собеседованием. К счастью для многих, самое первое собеседование не является техническим. Это сделано для того, чтобы во-первых, познакомиться с человеком более детально и поговорить с ним голосом, а во-вторых, чтобы дать кандидату время на подготовку к действительно техническим частям. Первый звонок совершает рекрутер. В моем случае это была девушка с приятным голосом, которая довольно вежливо и любезно рассказала мне немного о компании, о позиции и т.д., после чего начала спрашивать обо мне: кем работаю, что именно на работе делаю, почему хочу пойти в букинг ну и подобное. Таким образом вы проходите первичный фильтр: компания понимает, соответствуете ли вы описанию из резюме, да и вообще как вы в целом общаетесь. Что то вроде защиты от дурака, чтобы не звать на технические собеседования откровенно не подходящих людей.
Важно! Booking.com — международная компания, в которой работают люди из 113 стран мира, штаб квартира которой находится в Амстердаме. Чтобы уметь понимать друг друга, официальным языком компании был признан английский. Поэтому прежде, чем подавать резюме в букинг, очень важно понимать, что вам придется всегда и везде говорить на английском.
Я знаю английский довольно неплохо, однако мне не хватало разговорной практики. Поэтому наше общение было довольно сумбурным, учитывая неожиданность звонка. Но в целом все прошло довольно неплохо, хотя я вспоминаю, что изрядно вспотел, а в горле образовалась маленькая пустыня.
После первого звонка мы договорились, что мне напишут email с результатами, и что если все будет положительно, назначат еще один звонок, но на сей раз технического характера. Письмо не заставило себя ждать. Примерно спустя еще одну неделю (или даже меньше), мне написала все та же девушка (кстати, тут стоить заметить, что она потом вела мою кандидатуру в течении всего времени до момента выдачи оффера. Довольно приятно, чувствуется, что тебе уделяется персональное внимание. К тому же вы всегда остаетесь в контексте с одним человеком).
В письме говорилось, что я успешно прошел HR интервью и теперь настало время показать на что я способен. Для этого компания организует еще один звонок со мной (по телефону или по скайпу, как мне угодно), в ходе которого я буду решать реальные задачки. Меня спросили, в какой день и в какое примерно время мне было бы удобно созвониться. Я предложил несколько альтернатив, учитывая разницу во времени, свой график и т.д. Через пару дней пришло еще одно письмо, в котором мне назначили звонок. И я стал готовиться.
Подготовка
Прежде чем рассказать о самом звонке и что там было, стоит уделить несколько слов о том, как я готовился ко всему этому. Если вы ни разу не проходили собеседование в компанию такого рода, то вам очень трудно представить, чего ожидать. В большинстве российских компаний на собеседовании принято больше спрашивать о каких-то технических и платформозависимых вещах. Например, если вы хотите работать C# программистом, то вас будут спрашивать про устройство Garbage Collector или про какие-то иные внутренние вещи. Но в моем случае такого быть заведомо не могло, потому что я шел на позицию Perl-разработчика без опыта.
К счастью я представлял себе, как набирает Google, Microsoft и тому подобные гиганты. Есть одна очень хорошая книжка Gayle Laakmann McDowell под названием «Cracking the Coding Interview». Там очень хорошо расписан процесс найма в Google, Amazon и Microsoft (без деталей, но чтобы понять принцип), и при этом даются примерные темы, которые там спрашивают. Так вот, оказалось, что в подобных компаниях интересуются не столько языком программирования, сколько знаниями основ программирования в принципе. Это значит, что вас будут спрашивать про структуры данных и алгоритмы, и просить решить некие задачки, для которых сложно придумать решение, но когда оно есть, программируется оно за считанные минуты. Принимая во внимание, что букинг — компания иностранная, я решил, что скорее всего принцип вопросов будет схожим с гигантами индустрии, и принялся вспоминать то, что успел забыть после университета.
Я вновь открыл для себя прекрасный мир алгоритмов и структур данных, научился отличать связный список от дерева, хеш от массива, а также начал понимать, что такое O (n) и как дать оценку сложности алгоритма. Даже если бы все эти знания мне не пригодились бы на собеседовании, я все равно не пожалел бы, что все это вспомнил.
Но они пригодились, и еще как.
Сам звонок
В назначенное время (примерно середина апреля), я не пошел на работу, чтобы остаться дома и пройти собеседование. Строго в условленное время, с небольшой задержкой в 5 минут, в скайп позвонили. На другой стороне были два парня по имени Сергей и Иван. Естественно это были русскоговорящие ребята, но несмотря на это наше общение было полностью на английском. Честно говоря, у меня даже мысли не было заговорить с ними на русском.
Мне сразу же предложили открыть общий онлайн документ, где мне предстояло писать код. Особенность такого подхода — все, что вы пишете, сразу же доступно всем пользователям. Иными словами, любое ваше действие заметно. Поэтому надо быть очень внимательным и аккуратным, продумывать каждое выражение как можно тщательнее, чтобы не выглядеть неряхой и не профессионалом. Вторая особенность — вы лишаетесь своей привычной IDE со всякими умными подсказчиками, автоподстановками и прочим. Только вы и код и ничего больше. Именно по этой причине в книге, про которую я писал выше, настоятельно рекомендуют выполнять все задания на листе обычной бумаги — привыкнуть полагаться только на себя.
Меня очень удивил и порадовал тот факт, что компания, основными технологиями которой являются продукты Open Source, постаралась и пригласила на собеседование людей, которые немного понимают C# (мой основной язык, с помощью которого я и выполнял задания).
Очень важно еще на этапе собеседования видеть, что компания заботится не только о своих сотрудниках, но и о тех, кого она еще не наняла.
Если бы мне сказали выполнять задания на чем-то, что нужно и важно букингу (на C++ или Perl или хотя бы Java), то я скорее всего провалил бы задание. Но с подобным подходом все гораздно спокойнее и комфортнее.
Задания
Я не буду говорить здесь, какие у меня были задания в ходе телефонного интервью. Причина довольно банальная — я просто на просто их не помню. Но даже если бы и помнил, то это было бы нечестно с моей стороны (и скорее всего незаконно). Я лишь постараюсь привести несколько аналогий того, что может повстречаться на телефонном интервью в букинг.
- Например, вас могут попросить написать алгоритм поиска и удаления элемента из односвязного списка. Довольно простой и известный алгоритм, который позволит определить ваши фундаментальные знания.
- Или же вам могут дать задачку на вычисление чисел Фибоначчи (1, 1, 2, 3, 5, 8, 13 и т.д.). Сделать это можно несколькими способами, и лучше рассказать о них всех, проблемах и преимуществах каждого.
Важно уметь оценивать сложность алгоритма, который вы написали. Надо понимать, что Booking.com ежедневно посещают миллионы пользователей. И если тот или иной алгоритм написан неэффективно, работает медленно или требует много памяти, даже незначительная лишняя работа выльется в огромные затраты.
В большинстве случаев при реализации задачи на собеседовании, будет два пути её решения. Первый — самый очевидный и простой. Например, вам надо понять, является ли введенное число степенью двойки или нет. Для этого вы можете просто делить это число на 2, пока не получите двойку на последнем шаге. Этот алгоритм будет работать, он выдаст результат, но на больших числах будет тратить много лишнего времени. А можете написать простое выражение в одну строку: x & (x-1) == 0. Тут используется немного битовой магии, но результат будет тем же, но за гораздо меньшее время. А теперь представьте, что данная функция выполняется каждый раз, когда на сервер приходит запрос от пользователя. И подобная оптимизация алгоритма сэкономит кучу времени пользователю и денег компании.
В ходе интервью очень важно понимать, что весь код, который вы напишете, может быть использован против вас. Поэтому надо подходить к этому очень серьезно. Никогда не принимать поспешных решений и не начинать писать до того, как подумали. Сначала надо проанализировать задачу, понять её ограничения, подводные камни, возможные допущения и только после того, как вся картина сложится в голове и у вас появится примерный алгоритм решения, только тогда стоит браться за клавиатуру. Все эти советы описаны в книге. Мне она очень помогла, и если вы тоже собираетесь работать в Booking.com, Google, Microsoft или даже Яндексе (где весьма схожие ценности), я очень советую её прочитать.
Окончание
В конце телефонного интервью мне дали возможность самому задать свои вопросы. Это очень удобный момент чтобы из первых рук узнать особенности работы в компании, проекты, в которых работают люди, какие-то еще специфические вещи, которые недоступны публично. К тому же в своих вопросах вы также отражаете часть себя — что вам важно, что вы хотите понять в первую очередь. Поэтому очень нежелательно спрашивать про деньги. Лично я спросил, над какими вещами работают ребята в данный момент, как проходит их обычный день и чем они любят заниматься в свободное время. На эти вопросы отводится примерно 5–10 минут, так что узнать получится не очень много, однако это хороший шанс получить информацию из первых рук.
После завершения моего звонка я был весь как на иголках. Мне было жутко любопытно, хорошо ли я справился с заданиями. Потому что, честно говоря, я считал, что выступил не очень хорошо. Я долго засиделся над одной из задачек и мне не хватило времени на её завершение. Конечно я не сильно рассчитывал получить эту работу и все еще относился к этому несерьезно, но какая-то часть меня (наверное гордость) крайне желала, чтобы я прошел дальше.
К чести сотрудников Booking.com, ответ пришел довольно скоро. Спустя уже три дня после звонка мне пришло заветное письмо. Я отчетливо помню этот момент — чувство, когда ты понимаешь, что вот оно, заветное сообщение, которое ты так долго ждал. Стоит всего лишь взять телефон, открыть почту и прочитать. Но ты оттягиваешь этот момент, потому что знаешь — чем дольше тянешь, тем приятнее будет само чтение. Я видел отправителя письма, ей была моя HR рекрутер. Но что важнее, я видел тему этого письма. Там было написано всего четыре слова:
Что означало, что я успешно справился с заданиями по телефону и теперь меня приглашают в Амстердам, чтобы пообщаться уже вживую. Что ж, на этом я решил закончить этот рассказ. Получилось и так уже довольно много текста, а тема собеседования в Амстердаме заслуживает не менее подробного освещения. Если аудитории понравится, я также опубликую её тут.
P.S. Мы всегда активно ищем талантливых IT-людей: разработчиков (бекенд, фронтенд, апп), дизайнеров, продакт-оунеров. Если вам хочется к нам присоединиться — пишите в личку или соцсети, я с удовольствием отвечу на любые вопросы. А также могу отправить ваше резюме напрямую в HR для ускорения процесса его рассмотрения.
© Megamozg