Собеседование в Microsoft Bing: как это было
Собеседование в Microsoft - это всегда длительный и увлекательный процесс, особенно если речь идет о Bing (также мне очень импонирует Microsoft Research). Хочу поделиться впечатлениями от общения с представителями компании, а также о самом интервью, ошибках и сделанных выводах.
В этом году процесс рекрутинга был слегка упрощенный: телефонное интервью, если его проходишь успешно - сразу приглашают в Москву на полноценное оффлайн интервью.
Телефонное интервью было около получаса, вопросы были следующие:
- стандартное Why Microsoft?
- опыт работы с технологиями;
- многопоточность: семафор и мютекс;
- как работает GC и почему вы любите (не любите) managed / unmanaged code;
- как вы тестируете программы, как следите за качеством кода и почему;
- задачка в стиле "почему люки круглые", только с шариками.
В Москве интервью проходило 4 часа (4 человека по одному часу). Задачи, которые задавали, были связанными с такими областями знаний:
- комбинаторика и теория ероятности (мне не попалась, но других спрашивали);
- реализация LinkedList и его использование в реальных задачах;
- оценка сложности алгоритмов;
- да, да, структуры данных и оптимальные алгоритмы работы с ними;
- работа с массивами за сублинейное время;
- теория графов;
- численные методы и математика.
Кстати да, не было ни одного вопроса, сязанного с технологиями. Единственное, что спрашивали - на каком языке удобнее писать программки.
Собственно, мои мнения по поводу задач:
- задачи достаточно сложные, хотя если приблизительно ориентируешься в той или иной области - можно попытаться решить. Хотя у меня сложилось мнение, что больше все таки надо знать, чем думать на месте (дальше объясню почему). Лично я не смог за отведенное мне время решить две задачи, хотя понимал, что rocket science там нет :(
- к собеседованиям надо готовиться (то, что будет оценка сложности алгоритмов знал точно);
- без математического бэкграунда будет гораздо сложнее успешно пройти интервью.
На одной из задач хочу остановиться более подробно. Необходимо было рассказать, как работает итерационный метод Ньютона для решения уравнений общего вида, после чего на его основе вывести формулу для расчета корня квадратного с учетом требования, что количество необходимых операций должно быть минимальным. За 20 минут мы вывели на листочке итерационную формулу Ньютона, рассмотрели призводные функций, расписали 2 листа формул для находжения корня и даже вспомнили лимиты. Мне с одной стороны повезло - я как раз пишу приложение для вп7 для решения математических задач с помощью численных методов, с другой стороны, если бы раньше не слышал об этом методе - шансов решить задачу задачу у меня не было. Microsoft акцентирует внимание на логику, а не на знание алгоритмов или конкретных структур данных. Хотя, опять таки, повторюсь, у меня сложилось другое мнение, что знать о чем речь нужно.
В любом случае, структуры данных, оценку сложности алгоритмов и LinkedList надо знать назубок, ну а дальше как повезет.
Для себя я сделал такой вывод: если вы считаете, что вы афигеный ИТ-перец, сходите на собеседование в Bing - очень сильно помогает опуститься на землю :)
Если будут какие то конкретные вопросы - с удовольствием отвечу в комментариях.
P.S. Также рекомендую статьи @outcoldman - Прохождение интервью в Microsoft. Часть 1. Часть 2., который уже уехал работать в буржуйский Microsoft.
Компании из статьи
Microsoft Украина | Украинское подразделение компании Microsoft. |