Представляем вашему вниманию перевод статьи «My Interview Experience With Microsoft» автора Ashwin Goel.
В этой статье автор делится своим опытом прохождения собеседований в Microsoft и дает некоторые советы.
Около 2-3 месяцев назад я заметил на Linkedin несколько сообщений от сотрудников Microsoft о проведении кампании по отбору кандидатов на летнюю стажировку. Я долго ждал этого и не хотел упустить возможность.
Я отправил резюме с подробным описанием моих достижений и опыта, включая все мои проекты, 15-20 людям из Microsoft в надежде на то, что хотя бы один из них пригласит меня на онлайн-тестирование.
Основные моменты в собеседование в Microsoft
- Не стесняйтесь, прежде чем связаться с незнакомцем. В конце концов, это все о создании сетей. Чем лучше вы имеете, тем легче вы можете сделать свою работу.
- При общении с кем-то не будьте как “Привет! Не могли бы вы, пожалуйста, направить меня в компанию?”Вместо этого напишите хорошее сообщение, объясняющее ваши проекты, опыт, достижения, и дайте им причины, чтобы направить вас.
В течение 1-2 часов после рассылки я получил приглашение от Microsoft на первый раунд интервью, который был чисто кодовым раундом.
Это было 22 сентября 2019 года, когда у меня был первый раунд.
Я получил три проблемных вопроса, и время, отведенное на то же самое, было достаточно приличным.
Одним из вопросов было
Учитывая массив размера n, переставьте номера массива таким образом, чтобы четные и нечетные номера были расположены попеременно в порядке возрастания.
P.S.: Это был самый простой вопрос.
Во время этого раунда, когда оставалось всего 5 минут, мой ноутбук разбился. Возможно, это самое худшее, что может случиться, но, к счастью, я могу возобновить тест через некоторое время.
Я смог закодировать все три вопроса, пройдя все тестовые случаи, включая граничные случаи и сложные тестовые случаи.
Я был действительно уверен в первом раунде и с нетерпением ждал результатов.
Результаты были объявлены 11 октября, и да, меня выбрали для второго тура.
Следующий раунд должен был стать онлайн-видеоинтервью. Я предполагал, что интервью будет главным образом структурами данных, и начал готовиться к тому же.
Интервью было назначено на 14 октября. Все началось с краткого вступления, а затем интервьюер начал тестировать меня на концепции OOPS. Я был счастлив, потому что это была одна тема, к которой я никогда не готовился в своей жизни в колледже, потому что мои концепции были ясны прямо с 10+2.
Меня спросили о некоторых концепциях наследования, таких как полиморфизм, разница между перегрузкой метода и переопределением метода, виртуальные ключевые слова и абстракция.
Совет если вам задают вопрос с Microsoft а вы его не знаете
- Если вы не знаете фактического понятия, то вместо того, чтобы давать неуместные ответы, просто примите его. А также попытайтесь расспросить их об этом подробнее. Это дает хорошее впечатление, что вы готовы узнать новые вещи. Я не знал о виртуальном ключевом слове, и вместо того, чтобы давать неопределенные ответы, я сказал ему, что никогда не слышал о нем, и мы хорошо обсудили его в течение 2-3 минут.
Теперь идет вторая половина интервью, которая была посвящена решению проблем. Их главная цель-проверить, как мы думаем и каков наш подход к новой проблеме. Поэтому абсолютно важно говорить о том, что у вас на уме.
Данная проблема заключалась в следующем:
Предположим, что существует 3D массив, который сортируется следующим спиральным образом:
01 02 03 04
12 13 14 05
11 16 15 06
10 09 08 07Итак, каков наилучший способ поиска числа в таком массиве?
Сначала я не мог придумать хорошее решение, поэтому я предложил худшее решение(O(n2)), а затем начал думать об оптимизированном.
Поскольку я говорил вслух, поэтому интервьюер также помогал мне и давал мне подсказки, достаточно хорошие, чтобы привести меня к правильному пути.
Основные моменты когда тебя заваливают в Microsoft
- Говорить вслух. Пусть интервьюер знает, что вы думаете, и он может помочь вам думать в правильном направлении.
- Задавайте вопросы интервьюеру, чтобы получить ясность по этому вопросу, чтобы двигаться дальше.
- Начните с худшего решения, а затем начните его оптимизировать.
- С любым решением, которое вы предлагаете, они ожидают, что вы также закодируете его, поэтому будьте готовы к этому.
P.S.: Я начал с решения сложности O(n2) и закончил с O(log (n)), и удовлетворение после достижения этого не может быть определено простыми словами.
Я был действительно уверен даже в этом раунде, и, к счастью, я получил приглашение на следующий тур по кампусу.
Я посетил офис Microsoft Bangalore 17 ноября среди моих экзаменов в конце семестра только потому, что я не хотел упустить эту прекрасную возможность.
Честно говоря, их кампус был просто рабочим местом мечты. Действительно удивительно!
Поскольку я приехал рано, мне пришлось ждать на ресепшне. Я не тратил времени зря, повторяя структуры данных на GeekforGeeks.
Вскоре нас пригласили в переговорную и объявили, что нас (около 20 студентов) выбрали из более чем 11 тыс. претендентов.
После приветствия началось интервью.
Второе собеседование в Microsoft
Это собеседования было посвящено резюме. Собеседник заявил, что им понравилось мое резюме. Он спрашивал меня о проектах, пытаясь лучше понять, какую работу мне приходилось выполнять.
Совет что нужно писать в резюме для Microsoft
- Вы должны быть уверены в каждом слове вашего резюме.
- Не пишите того, в чем плохо разбираетесь.
После этого собеседник решил проверить мои мыслительные способности, задав два вопроса по структурам данных.
Одним из них был вопрос про то, как «реверсировать» связный список. Я читал про это на GfG прошлой ночью в автобусе и помнил решение частично. После некоторого размышления, я смог полностью объяснить весь алгоритм. Он попросил меня реализовать его на C++ и протестировать на нескольких примерах.
P.S.: Microsoft стремится к совершенству, это было заметно по каждому собеседнику. Каждый алгоритм и код подвергались тестированию.
Второй вопрос состоял в следующем:
У вас есть модифицированный связный список, где кроме нормального узла с данными и указателя на следующий узел, у каждого узла имеется еще один указатель на любой другой случайный узел. Задача - клонировать эту структуру данных.
Пусть каждый узел указывает на следующий и произвольный узлы.
Вопрос был с подвохом, поэтому пришлось хорошенько подумать.
Третье собеседование в Microsoft
Это собеседование было посвящено преимущественно кодированию.
Я получил две задачи:
- Напишите код для определения высоты бинарного дерева.
- Напишите код для определения того, является ли бинарное дерево двоичным.
Я быстро написал код, но потребовалось довольно много времени на устранение некоторых маленьких ошибок.
Обе задачи могут быть решены при помощи рекурсии. Вы можете найти решения на GfG.
Ключевой момент:
- Написать код — половина успеха. Валидация — важная часть процесса.
Это был финальный раунд и тестировать меня пришел старший разработчик, проработавший в компании более 8 лет. Интервью началось с нескольких вопросов по резюме. Собеседника заинтересовал один из моих проектов — алгоритм планирования процессора IGBTQ. Я подробно объяснил ему проект на доске.
Вторая часть была посвящена решению проблем. Он задал мне такой вопрос:
Имеется последовательность числе от 1 до n.
На каждой итерации (i) мы удаляем каждый i+1 элемент.
Например:
Пусть n = 20
На первой итерации мы удаляем каждый второй элемент.
1 3 5 7 9 11 13 15 17 19
На второй - каждый третий
1 3 7 9 15 19
На третьей - каждый четвертый
1 2 7 13 15
И т.д.
Числа, оставшиеся после всех итераций, называются счастливыми.
Задача - определить, является ли число "n" счастливым.
После некоторых размышлений, обсуждения решения с собеседником, получения от него дополнительной информации, я смог найти подходящий шаблон проектирования и решить задачу.
Затем собеседник задал парочку вопросов обо мне и о том, над чем я хочу работать. На этом интервью закончилось.
Ключевые моменты:
- Будьте честными в том, почему вы хотите присоединиться к компании. Изучите их текущие проекты и начинания (инициативы), и имейте четкое понимание того, чего от вас ждут.
- Перед собеседованием подготовьте четкие и ясные ответы о том, почему вы хотите работать в компании и почему компания должна нанять именно вас.
- Не говорите таких вещей как: «Я уверен в своих силах» или «Я трудоголик», бла-бла-бла. Будьте максимально конкретными и приводите примеры из реальной жизни в подтверждение своих слов.
Заключение
В заключение хотелось бы отметить, что это было лучшее интервью в моей жизни. Я побывал на многих интервью в топовых компаниях, но никогда не чувствовал такой связи с собеседниками и не проникался настолько процессом собеседования. Другие компании проверяют фактические знания и ожидают средних ответов, Microsoft сосредоточена на процессе мышления и уверенных навыках по написанию кода. Вот какие выводы я сделал из попытки устроиться на работу в Microsoft.
Почем я говорю попытки? Потому что меня не взяли. Я говорю об этом в самом конце, поскольку людей моего возраста, в первую очередь, должно интересовать получение хорошего опыта и возможность дальнейшего совершенствования. В начале карьеры не следует придавать большого значения неудачам, зарплате и выгоде. Причина, по которой меня не приняли на работу, остается для меня загадкой. Мое последнее интервью прошло очень гладко и я, определенно, ждал приглашения.
Как бы то ни было, то, что я потерял, я потерял на время, а то, что приобрел, приобрел навсегда.