Опыт собеседования с Microsoft SWE

Опубликовано: 21 Августа, 2021

Раунд 1 (составление короткого списка): было три вопроса по кодированию. Уровень сложности был легким-умеренным. Первый вопрос касался карт, второй - проблемы обмена монет, но с простыми числами вместо номиналов монет, а третий был повторен с прошлого года.

Интервью (декабрь 2020 г.): у меня было одно интервью. Интервьюер был из Редмонда с 22-летним опытом работы. Он задал мне один вопрос:

  • Для несортированного массива найдите в нем бинарные элементы с возможностью поиска. Двоичный поиск работает для отсортированных массивов, потому что средний элемент всегда больше, чем все элементы слева от него, и меньше, чем все элементы справа от него (для массивов, имеющих отдельные элементы). Следовательно, поиск массивов и элементов leftmax и rightmin, которые находятся в позициях, где leftmax и rightmin совпадают с элементами массива, даст элементы с возможностью двоичного поиска.

Опыт и мыслительный процесс: мне повезло с интервьюером, который очень спокойно объяснил вопрос. Он дал мне ссылку codility, которая представляет собой платформу, на которой Microsoft обычно задает вопросы. Я попросил его пояснить диапазон чисел, количество элементов в массиве и могут ли они быть отрицательными или нет. Я предложил ему тривиальное решение, объяснив его временную и пространственную сложность. Затем он сказал мне, что хочет решение O (n). Это когда я открыл окно блокнота и поделился им с командами (интервью было виртуальным). Размышляя о решении, я убедился, что говорю все, о чем думал. Таким образом, он остановит меня, если ход моих мыслей пойдет в неправильном направлении. Я начал с того, как работает бинарный поиск, и, поскольку впервые столкнулся с этим вопросом, я постарался быть как можно более базовым в своем начале. Я пытался сказать ему, что элементы можно искать, когда раздел (средний элемент) находится в правильном положении. Я все это набирал в блокноте, когда говорил об этом. Затем я взял пример и показал ему, как это работает, создав отдельные строки для данного массива, leftmax и rightmin, а также массив bool, представляющий элементы, доступные для поиска. В этот момент он был действительно впечатлен моим мыслительным процессом и структурой, с которой я построил свое решение. Я сказал ему, что сейчас буду писать код на платформе. Им также нужны чистые коды, поэтому я начал с ввода, определения массивов с хорошими именами переменных, а не просто «A» или «arr». Именование помогло мне игнорировать комментарии, так как из кода все было ясно. Сначала я сделал массив leftmax, затем массив rightmin и, наконец, подсчитал количество элементов. Интервьюер сказал мне, что ему нравится мой стиль программирования. Я сказал ему все, что можно было сделать в одном цикле, но создание трех помогло понять код для всех, кто видит его впервые. После этого он сказал мне, что запускать код не нужно, потому что он знал, что он выглядит правильно. Я все равно запустил его, и он был принят с первого раза.

Далее он спросил меня, есть ли у меня вопросы, и я спросил его, доволен ли он в Microsoft и что позволило ему проработать 22 года на одном месте. Он дал на это очень длинный ответ. Старайтесь интересоваться, когда интервьюер что-то говорит. После этого он сказал мне, что закончил интервью. Спустя 7 тревожных часов я получил свое предложение. В целом, очень положительный опыт.

TL; DR? Очень важно как можно яснее рассказать интервьюеру о процессе мышления и вашем подходе к проблеме. Одного решения недостаточно.

Подготовка: до августа 2020 года у меня не было ни одной проблемы с кодированием. В июле 2018 года я прошел базовый курс по структуре данных, вот и все. Я начал писать код сначала на GeeksforGeeks, затем на leetcode и интервьюbit . Первый месяц был беспорядком. В первую неделю я не мог ответить ни на один вопрос. Я начал с простых вопросов, затем переходил к задачам среднего, а затем - к сложным. Даже по прошествии первого месяца я мог задавать только несколько простых вопросов. Я продолжал кодировать, вначале ища решения для большинства вопросов. Я начал с самых важных вопросов о GFG, заполнил их все, сделал еще несколько, а затем переключился на leetcode. Я смог решить некоторые простые вопросы, некоторые средние, но сложные вопросы все еще оставались сложными даже через 2 месяца. На третьем месяце я выложился на полную, кодируя с утра до ночи. Я попытался подумать о том, как другие подходят к подобным проблемам, в разделе обсуждения leetcode и в комментариях GFG. Постепенно я стал видеть, как становлюсь лучше в решении. Я предпочел C ++. Мне очень помогли мои друзья из CSE. Я спрашивал каждую мелочь, которую не мог понять, снова читал о структурах данных и снова и снова искал решения, пока не смог решить проблемы самостоятельно. Наконец, в конце концов, с августа по ноябрь я решил в общей сложности около 800 вопросов, многие из них более двух раз.

Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию . Если вы готовы, проверьте свои навыки с помощью серий тестов TCS, Wipro, Amazon и Microsoft.