9 собесов в HFT — один паттерн

Первый пост этого лета — как и обещал, о моём опыте собеседований в HFT.

Изучая заметки о своих собеседованиях, я понял, что проходил испытания в 9 разных HFT-компаний. Казалось бы, компании сильно разные и должны как-то по-разному собеседовать кандидатов. На деле — детали отличаются, но по сути почти везде проверяют один и тот же набор навыков.

1. В 100% случаев надо писать код на C++.

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

Но суть одна: можешь ли ты быстро понять условие, придумать решение, аккуратно реализовать его на C++ и не утонуть в краевых случаях.

2. Большинство компаний спрашивают про то, как работает компьютер.

Про процессор, кеши, виртуальную память, когерентность кэшей, false sharing. Почему одна программа тормозит, хотя асимптотически всё хорошо. И это уже не уровень «ну, есть L1, L2, L3». Там довольно быстро становится видно, понимаешь ли ты, как исполняется твой код на железе.

3. Почти везде всплывают сети

У меня опыта в сетях не так много, поэтому глубоко меня обычно не копали. Я честно говорил, что понимаю HTTP и базовые вещи, но не работал плотно на уровне TCP, kernel bypass и всего такого. Но сам вопрос возникал регулярно. И понятно почему: если компания зарабатывает на скорости, ей важно, чтобы разработчик понимал, где могут теряться микросекунды и как это исправить.

4. Глубина знания C++

Не «язык программирования вообще», а конкретно C++ со всеми его прекрасными способами выстрелить себе в ногу.

Могут дать тест. Могут показать код и попросить объяснить, что он делает. Могут попросить написать решение так, чтобы там были шаблоны, виртуальные методы, концепты или аккуратная работа с move-семантикой. И здесь снова важно не просто знать слова copy elision, std::move, virtual dispatch или cache line. Важно понимать, какой код реально получится после компиляции и как он будет исполняться.

Этот мой опыт наталкивает на интересный вывод. Если цель — устроиться в HFT, есть вполне ограниченный набор тем, которые достаточно освоить (правда достаточно глубоко и обязательно набрав реального опыта), чтобы чувствовать себя уверенно на техническом собеседовании.

Просьба

Мне стало интересно выйти за пределы личного опыта. Если вы сейчас целитесь в HFT или уже ходили на такие собесы, у меня к вам просьба — поставьте + в комментариях или напишите в личку @ishfb. Я хочу минут за 15-20 задать ряд вопросов про процесс подготовки и опыт общения с компаниями. Взамен расскажу, что сам заметил по 9 HFT, где собеседовался.