August 8, 2009

Как устроиться на работу в Microsoft. Part 2

Начало рассказа здесь.

Перед телефонным собеседованием я читал в инете, что интервьюверы иногда опаздывают со звонком, и их не стоит доставать своими звонками, если прошло 2-3 минуты после назначенного времени. Но как я и предполагал, это касалось в основном HR-интервью. Когда у рекрутера десятки интервью за день, и расписание может сдвигаться.

В моем же случае было техническое интервью с членом потенциальной команды, который четко забронировал этот час в своем расписании. В итоге звонок у меня раздался за минуту до назначенного времени. К тому моменту я уже запустил лайв-митинг сессию (это рекомендуется делать заранее, особенно если у вас не установлена лайв-митинг консоль).


Собеседование началось с того, что интервьювер представился, рассказал немного о себе, о команде и чем предстоит заниматься. Он уже два года в компании, и устроился сразу после окончания колледжа. Потом он спросил видел ли я продукты их команды. На тот момент 2008й сервер еще не зарелизился, а до бетт как-то руки не доходили, так и сказал.

После этого прошлись по моему резюме, обсудили чем интересным занимался, как относился к возможности возглавлять проекты. Чему меня в универе учили, и почему я после специальности прикладная физика прикладная математика решил пойти на специальность “Control in Engineering and Organization Systems” в магистратуре.

Ну и после минут 20-ти общения “за жизнь” перешли на технические вопросы. Первый же вопрос был в каких случаях какую UI технологию стоит использовать WinForms или WPF. На тему когда лучше использовать WinForms я не смог привести много примеров, но зато качественно обосновал проблемы с производительностью. Еще парочку каких-то общих вопросов, в духе как я отношусь к ООП и паттернам и перешли собственно к задаче.

Интервьювер попросил открыть лайв митинг, и он скопипастил на своей стороне задачу, прочел ее, ну грит решай. В этот я почувствовал нехватку гарнитуры для телефона и интеллиСенса в лайв митинге. Как ни странно гарнитура для телефона у меня была, но далеко от меня. А через лайв митинг аудио они не гоняют, т.к. по умолчанию считают, что канал плохой, и аудио не потянет.

Как-то не очень все складывается… Надо “думать вслух” в телефон, и одновременно писать код на клаве, желательно двумя руками. Рассказал собеседнику, как я собираюсь решать эту задачу, и он мне предложил положить телефон, и просто писать код. А если у меня под рукой есть студия, то написать в студии, и потом скопипастить в лайв митинг, он ессно понимает, что в лайв митинге писать код еще менее удобно чем в ноутпаде. =))

Так и поступили. Я положил телефон на стол, и принялся писать код в студии, периодически поднимая трубку и говоря что я делаю, чтоб товарищ не заскучал на том конце.

В самом начале я спросил еще стоит ли мне беспокоится о плохих входных данных, или же полагаться что входные данные будут как описано в задаче. Он одобрил, что входные данные не проверять. А вдруг бы я написал не то что он хочет? Это кстати считается самой грубой ошибкой во время решения задач на доске, и если вы сделали совсем не то… скорее всего с вами попрощаются. Поэтому надо в начале завалить интервьювера уточняющими вопросами. Такой же совет я услышал от своего рекрутера перед финальными собеседованиями.

Когда я закончил – сбилдил код в студии, тестовые запуски в ней не стал делать, т.к. до конца собеседования оставалось минут 10. Скопипастил код в лайв митинг, там же написал пару инлайн комментов, и сказал что почти закончил, “осталось только xml-комментарии написать”. Вместе посмеялись, и начали обсуждать код.

Сначала он предложил мне пройтись по data-flows в моем коде, что куда и зачем входит, и где после этого вылезает. После естественно спросил как я буду тестировать код. Я предложил парочку простых комбинаций, парочку комбинаций на микширование случаев, ну и комбинации на переполнение. Т.к. входные данные мы не проверяем, я напомнил об этом, и сказал что плохой инпут тестировать не буду, но если надо было, обязательно бы проверил вот это, это и это.

На последок спросил про оптимальность моего решения. По процессору у меня было (1.5 +/- 0.5)*N итераций, а по памяти O(N). Ну я ему так и сказал – линейно по N, значит норм, в любом случае меньше одного прохода у нас ну никак не получится, так что это вполне нормальный способ. Он со мной согласился, и на этом его вопросы закончились (осталось пару минут до конца собеседования).

Я приступил к своим записанным 5ти вопросам, т.к. за этот час о новых вопросах у меня не было возможности подумать. И связь оборвалась. На телефоне было 0:59:59 – видимо у Мегалола ограничение на продолжительность разговора равно одному часу. Заокеанский товарищ позвонил, извинился, оправдался, что у него тоже было час ровно, и это не вина Майкрософт что связь оборвалась. =) Еще минут 5 мы обсуждали мои вопросы, пока они у меня не кончились. Потом он начал требовать, чтоб я еще задавал вопросы, а они ну никак в голову не лезли. Вот блин… подумает еще что мне компания и позиция не интересны… Так что я сказал, что я вижу что мы уже out of time, и я не хочу мешать работать – если что напишу вопросы по почте. “Не против?” – Не против.

У меня всегда по английскому были тройки везде где я его учил (по другим языкам как ни странно так же). Но сложностей как-то не возникло. Возможно из-за сотен часов веб-кастов от людей с американским пронансом, или от 10-ти сезонов Friends, или от небольшого общения с носителями, не знаю. Но послушать американскую речь хотя бы в веб-кастах стОит! И если нет возможности общаться - найдите подругу или друга по skype, и потренируйтесь. Заодно привыкните к телефонным помехам во время разговора на чужом языке, ну и акцент будет не столь ужасен как он мог бы быть. Кстати интервьюверы понимают потенциальные проблемы с языком, и нормально к этому относятся. Так этот товарищ говорил на английском быстрее чем я говорю на русском когда что-то надо быстро рассказать, потом спросил не быстро ли говорит, я сказал что можно чуть помедленнее, и стало совсем все ОК. =)

Приготовил себе ужин, перед едой чекаю почту, а там уже письмо “Good news!”. Молодцы, в теме письма пишут результат, не то что некоторые.. пока найдешь резалт в конце письма сердце уже выпрыгнет.

Судя по времени, письмо пришло через 25 мин после окончания собеседования – совсем молодцы! Я их уже люблю.

Читаю письмо – хотим личной встречи в Редмонде. Билеты сами купим, гостиницу сами оплатим, напоим, накормим, машину снимем, на бензин дадим (O_o они меня тоже любят). Ну вообще круто!! Ну а че? Ни разу не слажал, по требованиям прохожу, иначе бы телефонное не сетапили.

Каково было мое удивление, когда я задачу с телефонного дал на техническом интервью в мою компанию пару неделю спустя. И человек довольно быстро решил ее за N итераций по времени и O(1) по памяти. =))
Задачу не публикую, т.к. она довольно простая, и как я понял у каждого из интервьюверов есть по сотне задач, так что запоминать ее не имеет смысла.


С меня для сетапа интервью в кампусе соответственно нужен ряд документов для верификации, могу ли я потенциально работать в U.S.. Скан паспорта, прошлых виз, cv, скан и перевод диплома, скан и перевод транскрипта. Вот здесь и начались чудеса.

Т.к. я поступил в магистратуру не забирая документов – мой диплом сразу никто не печатал, обычно их печатают где-нить к ноябрю. Но естественно когда он нужен, его не будет. Так и у меня. Январь месяц, а его еще нет. Точнее он есть, но его повезли на подпись в базовый институт, который в двух часах езды от университета. Туда он не доехал, а из универа он уже две недели назад уехал.
Человек который его вез появляется на работе на несколько часов в неделю, ну и поймать его не возможно. Мне обещают, что диплом будет максимум через 10 дней. Ну я соответственно оттягиваю время передачи этих документов на 3 недели (ну так, про запас). Копию диплома я в итоге получил через 4 недели. И почему-то оказалось, что под дипломом подразумевался диплом без приложения. Приложение к диплому вообще я увижу в конце 6-го курса, и оценки никто вбивать раньше времени не собирается.

В итоге американцы плюнули на мои документы, и мы засетапили интервью без транскрипта на начало апреля (на тот момент уже был конец февраля).

Ближе к делу они меня конечно начали не слабо прессовать с моим транскриптом. Как оказалось можно обойтись выпиской из зачетной книжки, если нет транскрипта. Так мы и поступили, за одно я отправил скан зачетки, чтоб было меньше сомнений. Для тех у кого будут проблемы и с дипломом, мне кажется можно будет отправить просто справку с универа, что у вас есть диплом бакалавра. Ну а уже на визовое собеседование принести оригиналы всех документов.

Как оказалось, они на меня давили, т.к. надо успеть подать заявку на рабочую визу в начале апреля. Это та еще тема. В год выделяется приблизительно 50 000 рабочих виз, а за 5 рабочих дней приема документов на рабочие визы приходит порядка 150 000 заявок. В итоге визы разыгрывают в лотерее. В этом году если не ошибаюсь было 85k виз, 20k из которых полагаются мастерам или докторам американского производства. А оставшиеся 65k как минимум бакалаврам любых вузов. Получилось еще так, что заявку на меня зафайлили еще до получения оффера, и до последнего собеседования. 

To Be Continued...