Ozon·Россия·13 авг.
Старший разработчик Java, Гео спайдер
Ориентир по рынку≈ 229 000 – 306 000 ₽наша приблизительная оценка по 9 вакансиям этой роли и грейда, у работодателя вилка не указана
≈ 2,8 тыс.–3,7 тыс. $
🌍 УдалённоSeniorПолная занятость
Стоит ли откликаться
Стоит откликнуться, но спросите про деньги
Сумму в объявлении не указали. Сколько платят за похожую работу, видно в разборе. Правда, вакансия открыта уже давно.
2 из 4 в норме
Открыта долго: как понять до отклика, ищут ли ещё
Деньги
Сумму в объявлении не указали. Ориентир на созвон: столько платят в 9 похожих вакансиях Java Developer уровня Senior.
Живость
Висит 69 дней. Источник её не снимает, но так долго открытые позиции бывают трудными для найма или набором в резерв.
- Зарплата не указана
Описание
Расписано подробно: обязанностей 13, требований 14. Картина ясна до первого созвона.
- Обещают
- аккредитованная IT-компания
- Известно
- высокие нагрузки
- Не сказано
- как оформят, из каких стран можно работать и часовой пояс команды
Что требуют
ОбязательноJavaCassandraRedisFlink
ПлюсомKafkaSparkElasticsearchgRPC
Надбавка к зарплате на этом уровне: Kafka +9%.
Полный разбор в Pro
Это короткий разбор. В Pro полный: под эту вакансию и ваше резюме
Сколько просить
Не продешевите: сумма под ваше резюме, нижняя граница и готовые фразы для торга
Ваше резюме против требований
Пройдёт ли ваше резюме фильтр: что совпало с требованиями и что дописать до отклика
Спросить у работодателя
10 вопросов именно к этой вакансии: что спросить на первом созвоне
Когда откликаться
Стоит ли спешить: за сколько дней Ozon обычно закрывает вакансии
30 дней Pro: полный разбор каждой вакансииЧто ещё входит в Pro
Наша компания
Привет! Это команда специализированных индексов поиска. Миллионы пользователей каждый день ищут товары на Ozon. Чтобы предложить релевантные товары, поиску нужно учитывать не только текст запроса, но и сотни факторов: доступность товара в регионе, сроки доставки, итоговую цену со скидками. За эти факторы отвечают специализированные индексы — отдельные высокопроизводительные структуры данных, которые в реальном времени обогащают поисковую выдачу точной информацией о каждом товаре.
О роли
Мы строим распределённую систему специализированных индексов, которая собирается и обновляется через потоковую обработку на Apache Flink и выдаёт ответы за миллисекунды под нагрузкой в десятки тысяч запросов в секунду.
Чем предстоит заниматься
Разрабатываем и поддерживаем индекс доступности — фильтруем товары, которые недоступны для доставки в регион пользователя с учётом всей логистической цепочки
Разрабатываем и поддерживаем индекс сроков доставки — показываем только те товары, которые укладываются в заданный пользователем временной промежуток
Проектируем индекс цен — точное определение цены товара в поиске с учётом логистики, региональных коэффициентов и пользовательских скидок
Строим надёжные пайплайны потоковой обработки данных на Flink для постоянной синхронизации индексов с мастер-данными
Оптимизируем время построения и обновления индексов, чтобы изменения в логистике или ценах доходили до поиска за минуты, а не часы
Интегрируемся с командами ранжирования, чтобы специализированные индексы эффективно использовались в формулах поиска
Проектируем архитектуру хранения: балансируем между полнотой данных, скоростью записи и чтения, потреблением памяти
Проектировать и разрабатывать новые специализированные индексы (в том числе индекс цен) — от исследования требований до продакшена
Писать высоконагруженный код на Java, работающий под нагрузкой тысяч RPS с жёсткими SLA по latency
Работать с Apache Flink — строить потоковые пайплайны для сбора, агрегации и доставки данных в индекс
Оптимизировать структуры данных и форматы хранения для быстрого поиска и фильтрации (битовые карты, compressed sorted sets, вещественные числа с заданной точностью)
Участвовать в интеграции индексов в поисковый движок
Проектировать A/B-эксперименты и следить за метриками качества поиска при изменениях в индексах
Наши требования
Хорошее знание Java и опыт разработки от 5 лет
Понимание классических алгоритмов и структур данных (особенно работающих с множествами, диапазонами, эффективной сериализацией)
Опыт разработки многопоточных приложений и работы с распределёнными системами
Опыт использования реляционных СУБД и/или NoSQL-хранилищ (Cassandra, ScyllaDB, Redis)
Умение тестировать собственный код и работать с чужой кодовой базой
Ответственность и аккуратность, готовность доводить задачи до конца
Умение работать в команде и договариваться с продуктовыми и DS-командами
Опыт работы с Apache Flink (или другими стриминговыми движками: Kafka Streams, Spark Streaming)
Опыт разработки специализированных поисковых индексов или работы с Lucene / Elasticsearch / OpenSearch
Опыт алгоритмической разработки: сжатие данных, BitSet / RoaringBitmap, range-индексы, работа с floating-point в условиях компромисса скорости и точности
Опыт с протоколами gRPC, Avro / Protobuf
Образование, связанное с математикой или Computer Science
Понимание Data Science и/или ML Engineering (как модели ранжирования потребляют факторы из индексов)
Опыт работы с логистическими или ценообразовательными системами
