Мой опыт собеседования с PhonePe на постоянную роль SDE — 2022 [Предложение]
Резюме :
Как я получил возможность интервью?
Это была возможность на кампусе, предоставленная моим колледжем — PICT (Институт компьютерных технологий Пуны), Пуна. PhonePe является одной из ведущих компаний, посещающих наш кампус, и известна тем, что задает вопросы DSA хорошего уровня. А также это была моя компания мечты с самого первого года, так как все лучшие программисты из нашего колледжа занимали места в PhonePe. Так что я был в восторге от процесса интервью.
Они были первой компанией, посетившей нашу партию 2022 года примерно на прошлой неделе июля 2021 года. Итак, после того, как мы зарегистрировались в PhonePe, мы получили ссылку на онлайн-тест, который был первым шагом процесса.
Раунд онлайн-оценки:
Этот раунд проводился на платформе DoSelect от PhonePe, которая похожа на любую другую тестовую среду DSA. Продолжительность теста составила 2 часа. Было 4 вопроса по кодированию. Уровень сложности — средний-сложный.
- Подсчитайте способы выхода из матрицы [N][M] (движения в 4 смежных направлениях) из заданной (Sx, Sy) начальной точки не более чем за K шагов.
→ Решаемо за O( N * M * К) с использованием ДП - Вы можете увеличить любой A[i] на 1 (всего не более K раз), найти максимальную возможную частоту любого A[i].
→ Доступно на LeetCode. Решается за O(NlogN)
→ Подход: сортировка массива. Исправьте L, найдите лучший R с помощью двоичного поиска (требуются суммы префиксов) - Теория игр: учитывая A и C, начните со значения A! (факториал), каждый игрок удаляет B (B ‹= A!), и B должен иметь не более C различных простых множителей.
→ A,C‹=106
→ Ответ: Подсчитать уникальные множители A !, если это ‹= C, выигрывает первый, иначе выигрывает второй - Какая-то трудная задача на Дереве, которая была непонятной и никто ее не решил.
Отсечка в этом раунде составила 200 из 400, 100 баллов за каждый принятый вопрос и частичные ответы. 9 студентов, включая меня, со всего колледжа, которые явились на тест, были отобраны для следующих раундов собеседования. На следующий день я получил письмо о том, что я очистил OA, а также была предоставлена ссылка на первое собеседование, которое было запланировано на следующий день.
Первое техническое собеседование (1 час):
Раунд проводился на Google Meet и CodeSignal.
Уровень сложности: Легкий-средний.
Интервьюером был SDE-1 в PhonePe с опытом работы 1,5 года. Основной поток интервью начался с моего общего представления.
Затем он захотел узнать больше о моей стажировке в Hackerearth. Он подробно рассказал о постановке задач и спросил меня об основных шагах, как можно установить проблемы в рабочей области Hackerearth, как генерировать тестовые примеры и как мы можем их автоматизировать.
Затем интервьюер начал с вопросов DSA -
- Дан отсортированный массив размера N-1, состоящий из всех чисел от 1 до N, кроме одного числа. Найдите недостающее число.
Мое решение: ожидаемое значение O(logN) → решение Двоичный поиск. (Очень простая задача) - Данный массив целых чисел. Вы можете взять либо первый элемент, либо последний элемент. Нужно взять K элементов так, чтобы их сумма была максимальной.
Мое решение. Повторить подсчет элементов prefix, чтобы взять от 0 до K и, соответственно, взять элементы suffix. Ожидаемый O(N). (Простая задача) - Дав массив целых чисел, вы должны ответить на запрос типа: L R D – количество таких чисел от L до R, где количество цифр в этом числе ›= D.
Мое решение: предварительное вычисление O(N*logN) и запрос O(1). Сохранение префиксного ответа в двумерном массиве формы Pre[index][digit]. (Средняя проблема)
Общий раунд был простым, и его мог решить тот, у кого есть базовый опыт работы с Leetcoding. Мне позвонили и сообщили, что я прошел квалификацию с 5 другими людьми для следующего раунда. Поскольку это было в кампусе, прогресс был намного быстрее :)
Второе техническое собеседование (1 час):
Платформа была такой же, как и в Раунде 1. Интервьюер имел опыт работы в PhonePe более 3 лет.
Было основное введение нас обоих, а затем он начал с вопросов по кодированию.
- Дано бинарное дерево, где каждый узел — это человек, а конечный узел с максимальной глубиной получает Covid+ и распространяется на соседние узлы за 1 секунду. Найдите общее время распространения по всему дереву.
Мое решение: ответом будет диаметр двоичного дерева, и это будут самые дальние узлы, а один из конечных узлов будет первым Covid+. Рекурсивное решение возвращает лучший ответ в своем поддереве.
Временная сложность: O(N). - Дано математическое выражение, содержащее скобки, оператор и числа в виде строки. Оцените выражение и верните ответ. В одной паре скобок может быть несколько чисел и операторов.
Мое решение: можно решить, используя знание постфиксного префикса. Мое решение включало использование двух стеков: один для операндов и скобок, а другой для чисел. Не знаю стандартного решения этой задачи.
Временная сложность: O(N).
Раунд был на уровне Medium-Hard. Я должен был объяснить все решения проблемы из Brute -> Optimized и их сложности, а также закодировать лучшее решение с выполнением некоторых тестовых случаев в обоих раундах.
Мои ожидания после этого раунда были нейтральными, так как изначально я не имел большого представления об обоих вопросах. Но после некоторого ручного запуска тестов и размышлений я нашел решения. Но, по моему мнению, то, как я подошел к решениям, действительно сыграло важную роль. Я объяснил каждую мысль, которая пришла мне в голову, ведущую к Решению.
Через некоторое время мне позвонили и сказали, что я прошел квалификацию с двумя другими людьми в следующий раунд, который должен был стать финальным.
Третье собеседование с персоналом (1 час):
Это был финальный раунд, и я был счастлив, что занял первое место, потому что мне каким-то образом удалось пройти квалификацию до последнего раунда. Я сохранил «Никаких ожиданий» от этого раунда, моим главным мотивом было получить как можно больше опыта в этом раунде. Потому что опыт собеседования с такой хорошей компанией определенно очень поможет мне в будущем.
Платформой для интервью был Google Meet. Интервьюер был очень опытным и руководил каким-то отделом в PhonePe. Это был раунд HR, поэтому ожидалось очень мало технических/DSA.
Основной ход раунда был следующим:
- Раунд начался с краткого представления Интервьюера и того, чем он занимается в PhonePe, а затем я представил свое вступительное слово.
- Позже он увидел мое резюме и задал несколько вопросов о моей паре стажировок. Задаваемые вопросы на стажировке HackerEarth о том, какие темы я обычно задаю.
- Затем он спросил о моей второй стажировке в Vicevio. Это была стажировка во Флаттере. Он спросил меня, как я помог в улучшении архитектуры и какой другой вклад.
- Разрабатывали ли вы какое-либо приложение для Android, которое решало проблему, с которой вы сталкивались в повседневной жизни? (Большого проекта не ожидается, только небольшие приложения). К счастью, у меня было множество примеров, но я ответил двумя из них:
1. Пользовательское приложение Todolist (Мое пользовательское приложение, имеющее несколько функций, недоступных в текущих списках задач).
2. Приложение CodeForces Rating (Пользователи могут видеть изменения рейтинга конкурсов Codeforces без входа в систему с помощью Codeforces API). - Как вы управляли уведомлением о вашем приложении TodoList. Что произойдет, если кто-то случайно проведет его?
- Задача кодирования: Даны числа от 1 до N. Найдите количество различных двоичных деревьев поиска, которые мы можем сформировать. (кодировать не нужно).
- Разработайте приложение для фермеров, где они могут загружать ежедневные отчеты, например, отчет о погоде. Этот вопрос ожидал самых основ системного проектирования. Некоторые из вопросов, которые я помню:
1. Что будет Дизайн и Архитектура?
2. Какие функции важны и другие дополнения.< br /> 3. Как улучшить Взаимодействие с приложением?
4. Взаимодействие с приложением и удобство.
5. Хранение Отчет в разделе База данных и файловые системы. И разные альтернативы. Какой выбор лучше? Почему?
6. Как повысить скорость загрузки отчета?
7. Есть ли альтернативы ускорению загрузки? - Почему вы думаете, что лучше всего подходите для PhonePe?
После этого Раунд был открыт для вопросов и любых других дискуссий. Я задал некоторые общие сомнения и информацию о работе в PhonePe.
Интервьюер был очень дружелюбным, поэтому для меня это был удивительный опыт. Я был уверен, что меня выберут, так как это был мой лучший раунд из всех раундов.
Результат :
Меня выбрали!
Некоторые советы:
- Уровень открытого доступа был сложным. Но в раундах интервью уровень был легкий-средний, а вопросы были больше в стиле Leetcode.
- Продолжайте взаимодействовать с интервьюером и не делайте длительных пауз в интервью, даже если вы думаете о решении. Поговорите о подходе, о котором вы думаете.
- Когда вы сталкиваетесь с какой-либо простой задачей, постарайтесь объяснить ее очень хорошо, так как большинство учащихся решат ее, но хорошее объяснение может быть отличительной чертой.
- Если в случае, если у вас нет никакого представления о решении заданного вопроса, я бы лично предпочел бы сначала сказать интервьюеру, что у вас нет хорошего представления об этом, вместо того, чтобы идти в глубине, ничего не зная правильно. Это действительно может сделать/сломать ваше интервью.
Предложение и праздник:
Итак, через 2–3 часа мне позвонили из PhonePe и сказали, что меня выбрали. Для меня это было особенным, так как попасть в PhonePe было моей мечтой с первого года обучения в колледже. И это тоже в первый день сезона размещения. Члены моей семьи и все мои друзья были очень счастливы и горды.
Заключение :
Это был подробный обзор процесса собеседования, который я прошел. Я надеюсь, что вы найдете его информативным. Если у вас есть какой-либо конкретный вопрос, я буду более чем рад помочь (Мой профиль LinkedIn).
С наилучшими пожеланиями 😊