Описание
Яндекс развивает общую поисковую платформу, которая предоставляет другим командам полнотекстовый поиск, key-value-хранилище и kNN. Поисковый рантайм платформы маршрутизирует запросы, собирает, фильтрует и ранжирует документы из разных источников, работая под высокой нагрузкой и при частичных отказах.
Задачи
•Проектировать общий механизм исполнения поисковых запросов в виде графа стадий
•Обеспечивать устойчивую работу при отказах, выбирать стратегию частичного ответа и балансировать полноту результата со скоростью обработки запросов
•Развивать технологии работы с поисковыми индексами и внедрять новые структуры данных
•Разрабатывать SDK для отправки поисковых запросов и упрощения интеграции
•Улучшать средства диагностики, трассировку запросов и логирование поисковых стадий
•Спроектировать язык поисковых запросов, включая грамматику, планировщик и исполнитель
Требования
•Уверенно владеть C++
•Хорошо знать алгоритмы и структуры данных
•Глубоко разбираться в многопоточном программировании, моделях памяти, синхронизации и lock-free-алгоритмах
•Понимать устройство Linux, включая процессы, потоки, управление памятью и сеть
•Использовать инструменты профилирования и трассировки
•Иметь опыт разработки распределённых систем и понимать работу сервисов под нагрузкой и возможные точки отказа
•Понимать устройство поисковых систем, включая инвертированные индексы, векторный поиск, генерацию кандидатов и ранжирование
•Иметь опыт низкоуровневой оптимизации производительности, работы с кешами CPU и SIMD
•Иметь опыт работы с высоконагруженными системами и строгими требованиями ко времени обработки запросов
•Иметь опыт проектирования DSL, языков запросов, парсеров или планировщиков исполнения
Условия
Условий в вакансии нет