Опыт интервью Flipkart для летней стажировки SDE | Виртуальный кампус 2020

Опубликовано: 7 Октября, 2022

Flipkart посетил наш кампус (виртуально ) в сентябре для участия в программе найма в кампусе (класс стажеров SDE 2021 года). Процесс продолжался в течение недели: этап кодирования был запланирован на понедельник, а собеседования — на субботу, а результаты были объявлены в воскресенье.

Раунд 1 (Оценка машинного кодирования, 90 минут): Было 3 задачи программирования, как показано ниже.

  1. Имея n групп певцов (в виде массива размера n, где arr[i] обозначает i-й размер группы) и m доступных микрофонов, мы должны были вывести минимальный размер самой большой группы, использующей один микрофон. Группа может быть разделена только на две дополнительные группы одновременно (т. е. в одном подразделении могут быть сформированы только две подгруппы. Кроме того, эти подгруппы также могут быть разделены с использованием того же подхода). Подход заключался в использовании бинарного поиска и проверке оптимальности размера группы. Например: ввод: [100, 60, 80, 40, 30] , m=9 вывод: 40 (группы после деления могут быть следующими [40,40,20,40,20,40,40,40,30]) Временная сложность: O(nlogn)
  2. На основе графика: В этой задаче было n узлов, пронумерованных от 1 до n, и m ребер, цель состояла в том, чтобы вернуть связанный компонент с наибольшей суммой приоритетов (для каждого узла был задан массив приоритетов). Возможно простое решение на основе DFS. Время и пространство: O(n)
  3. Учитывая число n (также может быть отрицательным), цель состояла в том, чтобы получить перестановку, имеющую наименьшую величину (без начальных нулей, где это разрешено). Пример: для 901 вывод должен быть 109. [Я сделал это, создав массив его цифр и отсортировав перестановку] Сложность времени: O (nlogn)
  4. Аналогичная проблема — https://practice.geeksforgeeks.org/problems/next-greater-number-set-digits3503/1

Я решил все три задачи и потратил около 45 минут, после чего сдал свой тест.[45 минут еще оставалось :)].

12 студентов были отобраны для прохождения технического собеседования. Интервью должны были пройти на платформе AMCAT.

Раунд 2 (техническое интервью 1, около 40 минут): я поприветствовал интервьюера, и он сделал то же самое. Сразу же, поскольку интервью было запланировано всего на 30 минут, он начал с вопросов по кодированию.

  1. На экране мелькнула первая проблема, и увидев ее, я слегка улыбнулся. Был задан отсортированный массив вместе с целевым числом, которое нужно найти, оператор должен был указать диапазон индексов [l,r], чтобы все элементы в этом диапазоне были целевыми. Если цель отсутствовала, вывод должен был быть пустым массивом [].https://practice.geeksforgeeks.org/problems/binary-search/1

    Например:

     Ввод: [5,11,15,80,80,101]  
    Вывод: [3,4] (на основе 0)

    Я дал 4 подхода к проблеме, и интервьюер выглядел очень убежденным.

    • Простой обход массива занимает время O(n).
    • Применив бинарный поиск, а затем расширив обе стороны от первого, мы нашли цель, но в худшем случае это также могло привести к O(n).
    • Применение двух бинарных поисков для первого и последнего вхождений отдельно. Сложность O(logn+logn). После этого интервьюер сказал, что если бы у меня был доступ к библиотечным функциям.
    • Я сказал ему, что мы можем использовать нижнюю и верхнюю границы, чтобы решить эту задачу.
  2. Затем мы подошли к следующей проблеме. Учитывая массив только чисел 0-9, мы должны были максимизировать количество сегментов в массиве при условии, что все вхождения определенной цифры должны находиться в одном сегменте.

    Например:

     Ввод: [0,0,1,1,2,1,7,8,7,9,9]
    Выход: 4 ([0,0],[1,1,2,1],[7,8,7],[9,9])

    Было возможно простое решение O (n), если мы храним первый и последний индекс каждого встречающегося числа в массиве.

  3. Затем была снята еще одна проблема, утверждение: для заданного n-арного дерева преобразовать его в двоичное дерево для хранения в памяти, поскольку хранить n-арное дерево было невозможно.

    Итак, нам пришлось реализовать функции encode() и decode() для одного и того же. Сначала мой подход был немного случайным, но я все равно продолжал говорить об этом, он дал мне тонкий намек и 30 секунд, чтобы найти решение. Я подошел к этому, используя создание фиктивных узлов, так как он уже освободил меня по пространственной и временной сложности в начале этой проблемы (а мы опаздывали на 10 минут). Наконец, он дал мне несколько тестовых случаев, и мое решение прошло их все, так что он был очень убежден.

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

Это был конец раунда. В следующий тур прошли 7 человек.

Раунд 3 (Техническое интервью 2, около 37-40 минут): Этот раунд начался по-другому, когда интервьюер сначала спросил меня обо мне, велел дать краткое описание всех проектов, перечисленных в моем резюме. Мы хорошо поболтали около 10 минут, а затем он начал с вопросов по кодированию. Меня спросили, нравятся ли мне графики или нет, на что я ответил, что это мой любимый.

  1. Вам дан массив целых чисел (причем arr[i] описывает индекс массива, к которому мы можем перейти с i-го индекса). Нам было позволено либо перейти от текущего индекса к следующему индексу, либо к arr[i], как описано. Цель состояла в том, чтобы определить минимальное количество прыжков (пройденных ребер), чтобы достичь последнего индекса.

    Я соединил каждый индекс с arr[i] и (i+1) направленными ребрами, чтобы смоделировать желаемый граф. Затем я дал решение грубой силы, чтобы сгенерировать все пути и посмотреть, сможем ли мы достичь конца или нет. Он сказал, что это слишком суматошно, и хотел, чтобы я решил, используя BFS вместо DFS. Я понял намек и рассказал ему, как работает вся процедура. Временная сложность: O(N) и пространственная сложность: O(N) Он сказал, что хочет проверить мои знания о BFS. (Тем не менее, код не нужен )

  2. Дана двоичная матрица (только 0 и 1), в которой все «строки» отсортированы. Нам нужно было найти максимальное количество нулей (в строке) и его индекс строки. https://practice.geeksforgeeks.org/problems/row-with-max-1s0023/1

    Например:

     Ввод: 0 0 0 0 1 1 1 1 1 1
           0 0 1 1 1 1 1 1 1 1
           1 1 1 1 1 1 1 1 1 1
           0 0 0 0 0 0 0 0 1 1
           0 0 0 1 1 1 1 1 1 1
    Выход: 8 нулей в 4-й строке

    Сначала я предложил метод грубой силы обхода всех строк и столбцов. Временная сложность: O(n*m). Он попросил оптимизировать его дальше.

    Я дал подход O (n + m). Начиная с первой строки и первого столбца, мы будем увеличивать индекс столбца, пока не найдем 1. Когда 1 будет найдено, обновите ответ и перейдите к следующей строке. Не забудьте позаботиться о крайних случаях.

    Меня попросили написать псевдокод, и я тоже с удовольствием это сделал.

Наконец, интервьюер спросил, есть ли у меня какие-либо вопросы к нему, на что я задал:

Каково быть частью Flipkart? Какие проекты будут поручены стажерам? Он дал ответ, мы немного поболтали, и раунд закончился.

6 человек смогли пройти в финальный этап Hiring Manager. Мое собеседование было назначено на первое место. Я был уверен, что все пройдет хорошо.

Раунд 4 (Раунд менеджера по найму около 25-30 минут): это был старший менеджер, который брал интервью, в отличие от предыдущих двух раундов. Он начал с того, что поприветствовал меня и спросил о сценарии Covid-19 в моем районе, где я остановился и так далее.

Затем он спросил меня о семестре, в котором я учился, и о предметах, которые до этого преподавались.

Он снова попросил меня рассказать о себе. Я кратко рассказал о своем путешествии в области компьютерных наук и о том, куда я направляюсь.

Затем он живо расспросил меня о моих навыках и ценностях (типичные вопросы HR). Я всегда связывал вопросы с анекдотом из моей жизни и продолжал рассказывать о том, как я потерпел неудачу, попытался, сделал все возможное, преуспел и т. д. Я не был готов ни к одному вопросу, все, что я говорил, было очень естественным, что делало его очень впечатление, и он продолжал копаться глубоко в те переживания, о которых я рассказал ему. Моя история ЕГЭ, викторины как страсть в школе, драматическое искусство в колледже (он даже спросил меня всю историю пьесы «Ты не можешь взять это с собой») и т. д. Я был так счастлив угодить, это была мечта сбывшийся HR раунд для меня. Он был таким смиренным в том, как он говорил, задавал вопросы и охотно откликался на все мои ответы. Через 21 минуту он сказал, что со своей стороны закончил, и спросил, есть ли у меня к нему вопросы.

Я задал тот же вопрос, что и в предыдущем раунде, и он продолжил рассказывать об этом очень подробно, объясняя каждый аспект, с которым они в настоящее время сталкиваются, и возможности для исследований в этих областях.

После этого я сказал, что у меня больше нет вопросов, и, наконец, мы поприветствовали друг друга, и интервью закончилось. Я знал, что поступил хорошо.

На следующий день были оглашены результаты и отобрано 5 человек для стажировки, в том числе и я.

Некоторые предложения с моей стороны:

  • Не теряйте уверенности, если не пройдете собеседование. На это влияет множество факторов, и вы всегда должны узнавать что-то новое из каждого опыта.
  • Оденьтесь формально перед собеседованием и обязательно хорошо выспитесь перед Днем Д.
  • Не стесняйтесь высказывать свое сердце на интервью, даже если подход не является четко определенным, интервьюер захочет помочь вам, если вы будете взаимодействовать с ним и поддерживать цель проблем с ним.
  • Убедитесь, что вы очень точно понимаете проблему, задавайте вопросы, повторяйте, не стесняйтесь. Вы также можете попросить этого человека запустить для вас тестовый пример.
  • Начинайте писать код только тогда, когда он будет согласован и полностью оптимизирован. Сделайте это за один раз, проверьте наличие ошибок и отладьте их.
  • Сохраняйте улыбку на лице, не пытайтесь ничего подделать. Эти люди прекрасно знают ваше отношение к роли.
  • Наконец, для раунда HR расскажите примеры из своей жизни, где вы проявили качества, о которых хочет знать интервьюер. Он легко относился бы к ним таким образом, и да, старался бы сделать это как можно более естественным.

Иди на сцену (Потому что ты этого заслуживаешь!)