AlphaGrep Securities - это компания, занимающаяся высокочастотной торговлей или алгоритмической торговлей, с офисами в Бангалоре и Мумбаи (местах, где они нанимают новичков). Роль Quant Trader не открывалась в KGP, они приходили только с профилем системного инженера. Один из моих старших сотрудников работает в Alphagrep, и я поговорил с ним о компании, и, честно говоря, был очень очарован работой там. Все, что я хочу здесь сказать, это то, что они работают над низкоуровневой оптимизацией, чтобы ускорить свой конвейер пересылки запросов трейдерам, которые отправляют назад заказы для дальнейшего продвижения на рынок. Поскольку все это высокочастотно, важны даже самые незначительные оптимизации. Большой объем работы проделан в области общей памяти, распределенных систем, управления рисками, а также основных систем и программирования сокетов. Кроме того, они работают исключительно на техническом стеке C / C ++.

Раунд1

Меня приветствовал интервьюер, которого, кстати, также звали Химаншу! После базового введения я продолжил описывать один из моих текущих проектов по его запросу. Так как я примерно знал, с какой работой они работают, я решил разработать один из тех соответствующих проектов, в которых были задействованы концепции и методы, которые, как я думал, могут произвести на него впечатление. Я выбрал один, который включал программирование в ядре, а другой один, который включал в себя множество концепций системного программирования и сокетов, таких как fork (), select (), signal (). Не знаю, насколько это помогло, но все же считаю, что это умный ход.

Пока я описывал свой проект, связанный с сетью, мы постепенно начали двигаться к таким концепциям, как сращивание, пространство ядра и разделение пространства пользователя, стек сетевых протоколов, и я думаю, что это обсуждение закончилось конкретным TCP - механизмом контроля перегрузки. Честно говоря, я чувствую, что привел его к этому, и что они вообще не будут спрашивать обо всем этом. Мне не повезло, что я не подготовил все это и даже то, что изучал в Advanced OS и Computer Networks, я вообще не пересмотрел. Если кто-то хочет попасть в один из этих HFT, постарайтесь иметь солидный системный фон и, пожалуйста, исправьте его.

Затем он попросил меня спроектировать какую-то систему с некоторыми спецификациями - это не вопрос типа системного проектирования, это был скорее тест шаблонов проектирования и ООП. Он заставил меня запрограммировать классы на Java на бумаге и некоторое время уговаривал меня над этим.

После этого он попросил меня написать простую реализацию общего указателя. Точно не помню, но это было примерно так: Поскольку на объект может указывать более одного указателя, нам необходимо поддерживать эту информацию и правильно управлять созданием и освобождением указателей. Хотя я работал с интеллектуальными указателями, мое решение было не очень убедительным. Одна вещь, которую я сделал здесь, - это продолжала думать вслух, и благодаря моему обсуждению и некоторым из его междометий я нашла работоспособное решение.
Это интервью, вероятно, длилось около часа или около того, изначально было задано так много мелких вопросов. что я даже не могу вспомнить все, о чем спрашивали.

Раунд 2

Я пошел на второй раунд, и мы начали так же. Я объяснил проект модуля ядра и файловую систему на диске, которую я создал в шестом семестре во время лабораторной работы по ОС. Модуль ядра включал BST, и она отвлеклась, чтобы задать мне вопрос по алгоритму BST и кучи.

Предположим, у меня есть вектор пар. Можно ли создать такое дерево, чтобы второе значение пары соответствовало свойству кучи (с некоторой релаксацией), а первое значение пары соответствовало свойству BST?
Это был действительно красивый вопрос, я взял несколько примеров и разработал алгоритм. Даже в тот момент я был действительно потрясен тем, что смог решить этот вопрос, потому что он казался очень элегантным и незнающим, мне было очень весело. Она попросила меня запрограммировать это с максимально возможной временной сложностью. Мое первоначальное решение было не тем, чего она ожидала, поэтому она посоветовала мне попробовать по-другому. Я закодировал это таким образом, изменив свой алгоритм. После некоторых дебатов и дискуссий; мы пришли к выводу, что хотя наихудшая сложность для обоих будет O (N * N), в среднем второй даст лучший результат.

Затем она спросила меня о static_cast и reinterpret_cast. Я пинал себя, потому что использовал их летом, и хотя я смутно просматривал значения, я не мог объяснить, что именно. Я просто знал, когда что использовать, и объяснил ей это.

Затем она спросила меня, в чем разница между чисто виртуальными и виртуальными функциями. Именно здесь я столкнулся с ошибкой в ​​моих ООП из-за несоответствий между Java и C ++. Я отвечал, что знаю interface и abstract, тогда как это было немного иначе. Я даже не знал честно, что ключевое слово interface не существует в C ++, и я не имел ни малейшего представления о том, каким другим способом оно реализовано.

struct A {B b, int c}; Что означает (B *) & a?
Не совсем уверен, но что-то в этих строках. Поначалу я немного запутался, что заставляет меня думать, что это было немного сложнее, чем это, но да, я дал ответ на этот.

Больше ничего не помню, было около 10:30, и я был изрядно голоден, поэтому к концу собеседования мы уже ели печенье и вскользь обсуждали офисную среду и возможности роста в качестве инженера. Я знал, что я как бы облажался с предложением здесь, но в глубине души я был спокоен, потому что я был уверен в Google. И я действительно очень приятный человек, когда я спокоен - думаю, это то, что заставило меня ждать, а не отвергать меня сразу.
Я вышел из комнаты, и AlphaGrep PlaceCom сообщил мне, что Google сделал для меня! Я все же пошел в Google Corridor, чтобы подтвердить это, а затем пошел знакомиться с другими людьми, которые работали в разных компаниях. Через некоторое время меня снова вызвали в AlphaGrep для еще одного блиц-раунда, особенно для меня, потому что они все еще не были убеждены. Несмотря на то, что я хотел получить их предложение, я думаю, что уже ослабил бдительность.

Раунд3

Начал с того, что мой интервьюер сказал мне, что он тоже был выпускником KGP прошлых лет. Они задали мне вопрос-головоломку в стиле DP, который я мог решить только после подсказки (Ура) и нескольких простых вопросов ООП и дизайна. Как я уже сказал, моя бдительность упала, и этот раунд был похож на два других - НЕ ДОСТАТОЧНО УБЕДИТЕЛЬНО.

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