Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+651новая вакансия за сутки·50 282вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 544
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 394 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python5 917
  • Облачные технологии4 462
  • QA вакансии1 683
  • Android1 136
  • Инженер данных753
  • Продакт-менеджер293

Разработка

  • iOS1 085
  • Backend вакансии982
  • Fullstack вакансии435
  • AI вакансии362
  • Frontend вакансии361
  • Mobile вакансии27

По стеку

  • Go3 333
  • Java2 015
  • Kotlin904
  • Node.js734
  • Rust490
  • .NET474
  • PHP271
  • C++208
  • C#191

DevOps и инфраструктура

  • Kubernetes2 532
  • Linux-инфраструктура2 017
  • DevOps вакансии1 827
  • Terraform / IaC1 535
  • CI/CD848
  • Мониторинг и Observability707
  • SRE221
  • Кибербезопасность37

Аналитика и данные

  • Аналитик данных467
  • Data Scientist417
  • Бизнес-аналитик335
  • Системный аналитик49

Другие направления

  • Проджект-менеджер100
  • UI/UX дизайн66
  • Ручное тестирование14

По регионам

  • Вакансии в США22 951
  • Вакансии в Европе9 026
  • Работа в России2 963
  • Вакансии в Канаде2 034

По формату

  • Удалённые вакансии39 691
  • Релокация в США22 951
  • Гибридная работа3 633
  • Офисная работа2 761

По уровню

  • Senior вакансии19 599
  • Middle вакансии11 130
  • Junior вакансии3 562

Сейчас нанимают

Все компании
  • Rakuten189 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Wise81 вакансия
  • Infobip28 вакансий
  • Darktrace17 вакансий
  • Spotify17 вакансий
  • Celonis14 вакансий
  • UiPath13 вакансий
  • Adyen9 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К подготовке по вакансии←К теме JavaВсе вопросы
JavaSeniorОпыт

Представьте, сервис на Java стал медленнее или нестабильнее после релиза. Какие language/runtime-specific причины вы проверите?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Проверяют JIT-прогрев, давление на GC (heap dump + GC-логи), thread contention (jstack/jcmd), изменение флагов JVM, рост Metaspace и регрессии в зависимостях.

3. Изменение политики или алгоритма GC

Если в новом релизе обновили версию JDK (например, с 17 на 21), или изменили флаги запуска, алгоритм GC мог поменяться. G1 стал дефолтом с Java 9, ZGC и Shenandoah — опциональные низколатентные коллекторы. Убедитесь, что флаги в docker-образе совпадают с желаемыми:

java -XX:+UseZGC -Xms512m -Xmx2g -jar app.jar
# или для G1
java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -jar app.jar

Диагностика деградации производительности Java-сервиса после релиза

Когда сервис начинает тормозить или нестабильно работать именно после релиза, первым делом важно отделить регрессию в коде от изменения нагрузки. Ниже — систематический список Java/JVM-специфичных причин, которые стоит проверить в первую очередь.

1. JIT-компиляция и прогрев (Warm-up)

После перезапуска JVM начинает интерпретировать байткод и только постепенно JIT-компилирует горячие методы. Если метрики сняты сразу после деплоя, они покажут деградацию, которая исчезнет через 5–15 минут. Проверяйте графики с разбивкой по времени жизни пода.

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

2. Утечка памяти и давление на GC

Самая частая причина — новый код создаёт больше объектов или удерживает ссылки дольше, чем нужно. Симптомы: растущий heap, учащающиеся Full GC, длинные паузы STW (Stop-The-World).

Диагностика:

  • Включить GC-логирование: -Xlog:gc*:file=/var/log/gc.log:time,uptime:filecount=5,filesize=20m
  • Снять heap dump: jcmd <pid> GC.heap_dump /tmp/heap.hprof и открыть в Eclipse MAT или VisualVM
  • Проверить метрику jvm_gc_pause_seconds в Prometheus

4. Блокировки и contention

Новый код мог ввести синхронизацию там, где её раньше не было: synchronized-блок, ReentrantLock, или неосторожное использование Collections.synchronizedMap вместо ConcurrentHashMap. Под нагрузкой это превращается в узкое горло.

Диагностика через thread dump:

jcmd <pid> Thread.print > /tmp/threads.txt
# или через jstack
jstack <pid> | grep -A5 "BLOCKED"

В Prometheus смотрите jvm_threads_states_threads{state="blocked"}.

5. ClassLoader и метаспейс

Активное использование рефлексии, Proxy, Groovy/scripting или фреймворков, генерирующих классы в runtime (например, Hibernate Proxy), может привести к росту Metaspace. Если Metaspace переполняется, JVM выполняет Full GC для его очистки.

Симптом: OutOfMemoryError: Metaspace или резкие Full GC при стабильном heap.

java -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -jar app.jar

6. Компиляция с другими флагами оптимизации

Убедитесь, что production-сборка не компилируется с -g (debug info) или без -O. Также проверьте, не включён ли агент наподобие Jacoco или AspectJ в production-образе — они серьёзно замедляют выполнение.

7. Проблемы с профилем загрузки классов (CDS / AppCDS)

Если проект использует Class Data Sharing (-Xshare:on), устаревший archive после релиза может вызывать падения или игнорироваться JVM, лишая выигрыша в старте.

8. Регрессия в зависимостях

Обновлённая версия библиотеки (Jackson, Hibernate, Netty) может иметь регрессию производительности. Сравните pom.xml или build.gradle между релизами. Используйте mvn dependency:tree для проверки транзитивных зависимостей.

Практический чеклист диагностики

  • Сравнить GC-логи до и после релиза: частота Full GC, паузы STW
  • Снять профиль CPU через async-profiler: ./profiler.sh -d 30 -f /tmp/profile.html <pid>
  • Сравнить thread dumps под нагрузкой: искать BLOCKED/WAITING потоки
  • Проверить heap dump: топ объектов по retained size
  • Сверить JVM-флаги в новом и старом образе
  • Проверить агенты и javaagent-параметры в Dockerfile/Helm

Подводные камни

  • Снятие метрик сразу после старта даёт ложную деградацию из-за отсутствия JIT-прогрева — дождитесь нескольких минут стабильной нагрузки.
  • Heap dump под нагрузкой временно останавливает JVM — не снимайте его на единственном экземпляре в prod.
  • async-profiler требует perf_events или -XX:+PreserveFramePointer — без этого CPU-профиль будет неполным.
  • Увеличение MaxMetaspaceSize без ограничения может привести к OOM на уровне ОС, а не JVM.
  • Переход с Serial/Parallel GC на G1 при той же настройке heap может увеличить паузы в случае небольшого heap (<1GB).
  • Synchronized-блок на this — распространённая ловушка: если объект используется в разных контекстах, блокировка распространяется шире, чем ожидалось.
  • Transitive dependency bump (например, logback через Spring) может незаметно изменить поведение сериализации/логирования.
  • AppCDS archive привязан к конкретному JAR-файлу; при смене артефакта его нужно перегенерировать.

Что портит ответ

  • Сразу обвинять Java, не проверив соседние слои системы
  • Чинить симптом без минимального воспроизведения и evidence
  • Не учитывать версии, конфигурацию, окружение и recent changes

Что слушает интервьюер

  • Умеет локализовать проблему вокруг Java
  • Двигается от симптома к гипотезам и проверкам
  • Отличает баг инструмента от ошибки использования или окружения

Как вы знаете этот вопрос?

Проверить себя по теме Java →
←Предыдущий вопросЧто такое JFR и как использовать его для диагностики production performance?Следующий вопрос→Какие особенности runtime, type system или memory model Java реально влияют на архитектуру приложения?

Связанные темы

JavaDebuggingtechnical-communicationtechnology-selectiontrade-off-analysis

Вакансии с этим навыком

Java вакансии
  • AI Enablement Lead (GenAI Value Lab) (#5686)
  • Senior Full Stack Mobile Developer (#5704)
  • Middle General QA Engineer (#5796)
  • Full-stack Technical Lead (Java+React) (#5710)
  • Lead Application Security Engineer

Частые вопросы на собеседовании

  • Как работает сборка мусора в Java? Объясните G1GC, ZGC и Shenandoah.
  • Как работает модель памяти Java? В чём разница между heap и stack?
  • Объясните Java Memory Model (JMM) и концепцию happens-before.
  • Что такое virtual threads (Project Loom) и чем они отличаются от platform threads?