Опыт интервью стажировки DE Shaw | В кампусе 2021

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

В первую неделю августа 2020 года Д. Э. Шоу провел в кампусе набор на должность стажера SDE (2 месяца) в нашем кампусе.

Ниже приводится краткое изложение моего опыта.

Отборочный процесс состоял из трех туров:

Раунд 1: Технический тест (90 минут) | Хакер Ранг

В этом раунде было три кодовых вопроса. Один вопрос был о массивах, а два других — о динамическом программировании. Каждый вопрос имел установленный лимит времени, который не мог быть перенесен на следующий вопрос. Три вопроса были:

  1. Дан массив из n чисел. Найдите количество троек, таких что Ai<Aj<Ak или Ai>Aj>Ak, где I, j, k — индексы массива и i<j<k. Подход O (n ^ 3) не прошел бы все тестовые примеры, и решение необходимо было оптимизировать до O (n ^ 2) или O (n log (n)).
  2. Вам дано x львов, y тигров, z леопардов и w пантер. В ряду стоит m клеток, и вам нужно заполнить все m клеток так, чтобы никакие два одинаковых животных не стояли рядом друг с другом. Найдите общее количество способов сделать это. Данными ограничениями были: (0<=x,y,z,w<=51). Это должно было быть решено с помощью DP.
  3. Это был стандартный вопрос DP LCS из трех строк.

Я решил первый вопрос за 15-17 минут из 25 минут, на второй вопрос у меня ушло полных 30 минут, а третий вопрос я решил за 10-12 минут из 35 минут, благодаря чему я был выбран для следующего тура .

12 студентов были отобраны для прохождения технического собеседования из 101.

Раунд 2: Техническое интервью (раунд 1) | Кодовая пара (ранг хакера) | (60 минут)

Этот раунд должен был состояться через три дня после раунда кодирования. Там была группа из двух интервьюеров, оба весьма приятные. Вы можете использовать доску для кодирования и функции интерактивной доски платформы для описания своих решений. Количество вопросов, задаваемых в этом туре, не было фиксированным для каждого кандидата, но в основном оно зависит от интервьюера.

Этот раунд требовал хорошего понимания моего основного языка программирования: C++, а также DSA и алгоритмов. Подведение итогов раунда следующее:

  1. Они спросили меня, какой у меня основной язык и какие языки мне нравятся.
  2. Как бы вы реализовали свой собственный вектор (динамический массив) на C++? На что я ответил либо с помощью связанного списка, либо с помощью саморасширяющихся массивов, используя новые и удаляемые (фактический способ реализации векторов). Затем они попросили меня подробно описать реализацию процедур добавления, удаления, поиска и доступа обеих реализаций, их временные сложности и их сравнение с другим подходом.
  3. Как и в предыдущем вопросе, они также запросили подробную реализацию упорядоченных и неупорядоченных карт и наборов в C++.
  4. Различные способы предотвращения и разрешения коллизий при хешировании
  5. Объединить два несортированных массива размера n и m без лишнего пробела
  6. Проблема обмена монет, когда нам нужен DP и когда мы можем использовать жадный.
  7. Некоторые другие простые вопросы DP и Greedy
  8. Нарисуйте NFA, DFA для заданных грамматик (2-3 разных вопроса по одному и тому же)
  9. Использование NFA, DFA
  10. Работа микропроцессора
  11. Расчет времени для обработки 1 миллиарда инструкций с учетом времени для каждого цикла
  12. Некоторые другие вопросы по инструкциям и технологическим циклам.
  13. Небольшое обсуждение одного из проектов из моего резюме.
  14. Что такое сборщик мусора
  15. Типы интеллектуальных указателей в C++, их использование и работа
  16. Недостатки использования указателей, проблема висячих указателей, дикие указатели.
  17. Чтобы обойти дерево в пространстве O (1)
  18. Медиана потока бегущих целых чисел.
  19. Еще несколько вопросов по DSA

3 студента из 12 были переведены на следующий этап технического собеседования. Наиболее важными факторами являются ваши баллы за программирование, отношение, уверенность и коммуникативные способности. Вы должны иметь глубокие знания хотя бы одного из языков программирования.

Раунд 3: Техническое интервью (раунд 2) | Кодовая пара (ранг хакера) | (60 минут)

Этот тур был назначен на вечер того же дня. В этом раунде также было два интервьюера. Они также были очень полезны и давали полезные советы в подходящее время. Этот раунд был в основном основан на проектах и OOPS. Итоги раунда таковы:

  1. Подробное обсуждение моего последнего проекта, его работы, его применения в промышленности, используемых библиотек. Затем некоторые вопросы, например, почему вы использовали этот подход, а не другой, и почему вы использовали это или почему вы не использовали это в своем проекте.
  2. Изменения, которые вы должны внести, чтобы масштабировать проекты и способы обработки больших объемов данных.
  3. Вопросы по обходу дерева
  4. Как удалить узел в простом связанном списке за время O(1), если указан только его адрес
  5. Промежуточные вопросы DP.
  6. Некоторые другие вопросы по основным алгоритмам.
  7. Объяснить все концепции ООП и их реализацию на языке программирования.
  8. Реализовать список в стиле python (который может принимать разные типы данных в одном списке) на С++
  9. Реализовать одноэлементный класс в С++ (класс, который может иметь только один объект)
  10. Статические переменные и функции, глобальные переменные, внешние переменные и константные переменные.
  11. Некоторые другие основы C++
  12. Разница между строго типизированными и слабо типизированными языками, динамическими и статическими языками и их примерами.

В большинстве случаев есть еще и HR-раунд, хотя в нашей ситуации его не было, возможно, из-за нехватки времени.

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

После каждого раунда вы можете задать собеседнику любые вопросы, которые пожелаете. Например, вы можете узнать об используемых компанией технологиях или языках.