{"id":2924670,"url":"https://alion.io/job/agregatoreat-java-razrabotchik","title":"Java-разработчик","company":{"id":2789510,"name":"Agregatoreat","domain":"agregatoreat.ru","url":"https://alion.io/company/agregatoreat","size_band":null,"is_staffing_agency":false,"employer_type":"direct","is_intermediary":false,"listed_via":null,"ats_vendor":"HeadHunter","truth_index":null},"role":"Backend","role_family":"Backend","seniority":"middle","employment_type":"full_time","work_mode":"on_site","remote_scope":null,"remote_scope_basis":null,"remote_working_hours":null,"hiring_geo_confidence":"structured","locations":["Moscow, Russia"],"countries":["RU"],"hiring_countries":[],"hiring_countries_total":0,"salary":{"min":300000,"max":400000,"currency":"RUB","period":"month","gross":false,"usd_annual":55320},"salary_estimate":null,"experience_years_min":null,"visa_sponsorship":false,"relocation_package":false,"has_equity":false,"technologies":[{"name":"Java","optional":false},{"name":"Spring Boot","optional":false},{"name":"Apache Kafka","optional":true},{"name":"Flyway","optional":true},{"name":"Git","optional":true},{"name":"Gradle","optional":true},{"name":"gRPC","optional":true},{"name":"Hibernate","optional":true},{"name":"JUnit","optional":true},{"name":"Kotlin","optional":true},{"name":"Liquibase","optional":true},{"name":"Maven","optional":true},{"name":"Mockito","optional":true},{"name":"PostgreSQL","optional":true},{"name":"RabbitMQ","optional":true},{"name":"Rest API","optional":true},{"name":"SQL","optional":true},{"name":"Testcontainers","optional":true},{"name":"WebSockets","optional":true},{"name":"КриптоПро","optional":true}],"status":"live","first_seen_at":"2026-10-20T13:08:19Z","employer_posted_date":"2026-10-20","last_verified_at":"2026-10-22T22:02:53Z","board_verified":true,"closed_at":null,"days_open":2,"trust":{"level":"ok","repost_count":null,"flags":[],"days_open":2},"description":"Ищем Middle Java Developer для разработки backend на Java и Spring Boot. Предстоит самостоятельно реализовывать функции в принятой архитектуре, писать тесты и сопровождать код. Решения обсуждаем с архитектором и Senior-разработчиками. Рассматриваем также Senior-кандидатов с опытом из раздела «Будет преимуществом».\n Особые условия (обратить внимание):\n Формат работы: только офис\n Тип занятости: проектная работа до 30.07.2027. После выполнения проекта рассматривается возможность оформления в штат на постоянной основе.\n Чем предстоит заниматься\n Разрабатывать backend-компоненты, REST/gRPC API, WebSocket-взаимодействие, обработчики сообщений и операции с БД.\n Реализовывать транзакции, проверки данных и фоновые задачи; работать с XML/XSD и интеграцией с КриптоПро.\n Писать unit- и интеграционные тесты, исправлять ошибки, оптимизировать Java-код и SQL; участвовать в code review, обсуждении требований и документировании API.\n Обязательные требования\n От 3 лет коммерческой разработки на Java; опыт самостоятельной реализации и сопровождения функций в промышленной эксплуатации.\n Java 17+ и многопоточность. Generics, коллекции, Stream API, records, исключения, equals/hashCode и изменяемость объектов. Понимание race condition и deadlock; применение synchronized, concurrent collections, ExecutorService и CompletableFuture. Обработка ошибок, тайм-аутов и прерываний, закрытие ресурсов через try-with-resources, контроль числа задач и потребления ресурсов.\n Spring. Spring Boot, Framework и Data: DI, конфигурация, жизненный цикл и scope бинов, AOP-прокси. Применение @Transactional: границы транзакций, rollback и self-invocation. Работа с @Async и executors; понимание границ транзакции при переходе в другой поток и рисков ожидания внешнего ответа внутри транзакции.\n PostgreSQL. SQL: JOIN, группировки, подзапросы; PK/FK/UNIQUE/CHECK, индексы и чтение EXPLAIN. Понимание ACID и уровней изоляции; атомарные обновления, блокировки и обработка конфликтов записи по принятой схеме. Миграции Flyway/Liquibase с учётом существующих данных и совместимости с кодом.\n JPA и Hibernate. Маппинг сущностей и связей, persistence context, жизненный цикл entity, lazy/eager loading, границы сессии и транзакции, разделение entity/DTO. Устранение N+1 через fetch join, EntityGraph или DTO-проекции; контроль SQL-запросов, применение @Version и обработка конфликтов.\n Kafka или RabbitMQ. Практика с одним из брокеров: topics/partitions/consumer groups/offsets либо queues/exchanges/routing keys/ack/nack. Публикация и обработка сообщений, подтверждения, повторная доставка, дедупликация, ограниченные retry и DLQ. Применение существующего механизма согласования записи в БД и отправки сообщения.\n REST и HTTP. Реализация API по OpenAPI-контрактам: DTO, валидация, ошибки, пагинация и серверные проверки. HTTP-клиенты, тайм-ауты, обработка временных и постоянных ошибок; безопасные повторы, идемпотентность изменяющих запросов и обработка конкурентных обращений.\n gRPC. Работа с Protobuf-контрактами, генерация stubs и серверных интерфейсов, реализация unary RPC. Deadlines, коды ошибок, отмена вызовов и совместимость сообщений при изменении контрактов.\n WebSocket. Серверная реализация средствами Spring: обмен сообщениями, жизненный цикл соединений, обработка ошибок и разрывов, освобождение ресурсов. Валидация сообщений, проверка прав доступа, ограничения размера сообщений и буферов.\n XML и XSD. JAXB/Jakarta XML Binding, пространства имён, атрибуты и кодировки. Чтение и изменение XSD: типы, ограничения, include/import. Валидация через JAXP (SchemaFactory, Validator), разбор ошибок, защита от XXE и ограничение доступа к внешним сущностям и схемам.\n КриптоПро. Опыт JCP и/или JCSP, JCA/JCE: формирование и проверка подписи по ГОСТ, доработка существующей интеграции. X.509, KeyStore, ключевые контейнеры; обработка результатов проверки цепочки доверия, срока действия и отзыва сертификата. Диагностика ошибок подписи, сертификата и доступа к ключу.\n Состояния и фоновые задачи. Реализация переходов по заданной модели, проверок допустимости и атомарных изменений; учёт повторных и конкурентных команд. Работа с принятыми механизмами запуска, повторов и восстановления задач; расширение обработчиков с сохранением контрактов.\n Тестирование и инструменты. JUnit 5, Mockito; интеграционные тесты с PostgreSQL и брокером через Testcontainers или аналог. Проверка валидации, rollback, повторов и ошибок. WireMock для HTTP, Awaitility для асинхронных результатов. Отладчик, логи, stack trace и анализ SQL; Git, Maven/Gradle, разрешение конфликтов зависимостей.\n Будет преимуществом\n Дополнительные навыки для задач уровня Senior и профессионального роста. Для позиции Middle владение всем перечнем не требуется.\n Самостоятельное проектирование компонентов, интерфейсов и взаимодействий, обоснование решений. Разработка переиспользуемых библиотек, Spring Boot starters и валидаторов конфигураций; применение Strategy, State, Specification и версионирование конфигураций.\n Java Memory Model, happens-before, volatile, ReentrantLock, Atomic-классы. Настройка ThreadPoolExecutor, размеров пулов, очередей и политик перегрузки; диагностика deadlock и исчерпания пула. Практика Virtual Threads в Java 21+.\n Сложные транзакционные сценарии: REQUIRED/REQUIRES_NEW, выбор изоляции и rollback; анализ взаимодействия транзакций, блокировок и асинхронного выполнения.\n PostgreSQL: MVCC, CTE, оконные функции, SELECT FOR UPDATE, составные и частичные индексы; EXPLAIN (ANALYZE, BUFFERS), оптимизация JOIN, сортировок и пагинации, планирование совместимых миграций.\n Hibernate: dirty checking, flush, batch fetching, pessimistic locking и пакетные операции; управление persistence context, загрузкой коллекций и её влиянием на пагинацию.\n Надёжная обработка сообщений: порядок событий и rebalance в Kafka, prefetch и publisher confirms в RabbitMQ; Transactional Outbox, границы at-least-once/exactly-once для БД и внешних вызовов.\n Проектирование и версионирование REST API, совместимость контрактов; реализация идемпотентности через ключ операции, ограничения уникальности и сохранение результата при конкурентных запросах.\n DOM/SAX/StAX, потоковая обработка больших XML; проектирование XSD и совместимость версий схем.\n Самостоятельная интеграция с КриптоПро: CMS/CAdES, XMLDSig, каноникализация XML и кодирование подписываемых данных; диагностика сложных ошибок провайдера и сертификатов.\n Оркестрация многошаговых процессов на Camunda/Flowable или аналогах либо реализация машин состояний без готового движка. Состояния, переходы, условия, события и таймеры; сохранение состояния в БД, восстановление после перезапуска, повторные события и защита от конкурентных переходов и захвата задач несколькими экземплярами приложения. Опыт Spring Statemachine и Drools.\n Тестирование конкурентных обновлений, прерывания и восстановления обработки с latch/barrier и управляемой синхронизацией; контрактные и property-based тесты.\n Анализ thread dump/heap dump, утечек памяти, блокировок и GC; JFR/JMC, async-profiler или аналоги. Применение JMH, проверка результатов оптимизации измерениями.\n Условия\n Только офис в Москве. Оформление по ТК РФ. Вознаграждение от 300 000 рублей на руки, итоговый уровень - по результатам собеседования.\n Проектная работа до 30.07.2027. После завершения проекта рассматривается возможность перехода в постоянный штат.\n Разработка нового продукта вместе с архитектором и опытными разработчиками, возможность развивать технические навыки и брать более сложные задачи.","description_format":"text","description_chars":7472,"description_truncated":false,"requirements":{"experience_years_min":null,"management_years_min":null,"team_size_min":null,"manages_managers":false,"education":null,"security_clearance":false,"languages":[{"language":"Russian","level":"Advanced (C1)","optional":false}]},"benefits":[],"hiring_locations":[],"hiring_excludes":[],"relocation_offered":false,"industries":[],"lifecycle":[{"event":"open","at":"2026-10-20T13:11:08Z"}],"visa":[],"liveness":{"score":86,"band":"hot","label":"Hiring now","p_open":1,"p_active":0.86,"p_room":1,"age_days":1,"expected_fill_days":23,"reasons":["conf:9","win:early"],"computed_at":"2026-10-22T06:10:10Z"},"pay":{"stated_usd_annual":55320,"is_top_pay":false},"html_url":"https://alion.io/job/agregatoreat-java-razrabotchik","json_url":"https://alion.io/job/agregatoreat-java-razrabotchik.json","meta":{"generated_at":"2026-10-22T23:08:10Z","cache_seconds":300,"methodology":"https://alion.io/methodology","terms":"https://alion.io/terms","contact":"https://alion.io/contact","api":"https://alion.io/developers","about":"Alion is a live layer of people, companies and AI agents: who they are, whether they are real and active right now, what they do and how to work with them, readable by people and by agents and paid per call.","catalog":"https://alion.io/catalog.json","usage":{"tier":"crawler_verified","counted_by":"address","units_charged":1,"used_today":8658,"day_limit":null,"remaining_today":null,"minute_limit":300,"resets_at":"2026-10-23T00:00:00Z"}},"offers":[{"id":"company.slices","title":"One company in depth, by slice","status":"live","price":{"credits":0.02,"usd":0.002,"plus_per_slice":{"credits":0.05,"usd":0.005}},"unit":"per company, plus each slice with data","note":"the employer in depth","call":{"mcp_tool":"get_company","arguments":{"id":2789510},"rest":"https://alion.io/mcp/rest/get_company?id=2789510"},"human":"https://alion.io/catalog?offer=company.slices&for=job%2Fagregatoreat-java-razrabotchik"},{"id":"market.stats","title":"A market slice: pay, demand and time to fill","status":"live","price":{"credits":1,"usd":0.1},"unit":"per slice","note":"pay, demand and time to fill for this role and place","call":{"mcp_tool":"market_stats"},"human":"https://alion.io/catalog?offer=market.stats&for=job%2Fagregatoreat-java-razrabotchik"},{"id":"job.search","title":"Open jobs by role, technology, place, pay and visa","status":"live","price":{"credits":0.02,"usd":0.002},"unit":"per posting in a list","note":"similar open postings","call":{"mcp_tool":"search_jobs"},"human":"https://alion.io/catalog?offer=job.search&for=job%2Fagregatoreat-java-razrabotchik"},{"id":"company.verify","title":"Is this company real and active right now","status":"pilot","price":null,"unit":"per company","request":{"url":"https://alion.io/catalog/request","method":"POST","body":"{\"offer\": \"company.verify\", \"for\": \"job/agregatoreat-java-razrabotchik\", \"note\": \"what you need it for\"}"},"human":"https://alion.io/catalog?offer=company.verify&for=job%2Fagregatoreat-java-razrabotchik"}]}