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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python11 001
  • Облачные технологии7 882
  • QA вакансии2 530
  • Android1 457
  • Инженер данных929
  • Продакт-менеджер312

Разработка

  • iOS1 361
  • Backend вакансии1 335
  • AI вакансии645
  • Fullstack вакансии521
  • Frontend вакансии460
  • Mobile вакансии28

По стеку

  • Go6 500
  • Java3 643
  • Node.js1 203
  • Kotlin1 161
  • Rust1 155
  • .NET787
  • PHP334
  • C++285
  • C#211

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

  • Kubernetes4 701
  • Linux-инфраструктура3 588
  • DevOps вакансии3 059
  • Terraform / IaC2 617
  • Мониторинг и Observability1 284
  • CI/CD929
  • SRE345
  • Кибербезопасность28

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

  • Аналитик данных556
  • Data Scientist443
  • Бизнес-аналитик412
  • Системный аналитик71

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

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

По регионам

  • Вакансии в США28 307
  • Вакансии в Европе10 602
  • Работа в России3 671
  • Вакансии в Канаде2 400

По формату

  • Удалённые вакансии44 927
  • Релокация в США28 307
  • Гибридная работа6 438
  • Офисная работа4 602

По уровню

  • Senior вакансии22 956
  • Middle вакансии11 692
  • Junior вакансии3 903

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML164 вакансии
  • Grab135 вакансий
  • Celonis45 вакансий
  • Spotify36 вакансий
  • Infobip28 вакансий
  • Adyen27 вакансий
  • Monzo19 вакансий
  • Darktrace16 вакансий

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

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

Как собрать нативный исполняемый файл Quarkus и каковы ограничения нативной компиляции?

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

Нативный бинарник собирается командой ./mvnw package -Pnative или с флагом -Dquarkus.native.container-build=true (без локального GraalVM). Ограничения: нет полной рефлексии, нет динамических прокси без регистрации, долгая сборка, нет Java agents.

Предварительные требования

Вариант 1 — локальный GraalVM:

sdk install java 21.0.3-graalce
java -version
# OpenJDK 64-Bit GraalVM CE 21.0.3+7

Вариант 2 — container build (рекомендуется для CI):

# Docker или Podman должны быть доступны
docker info

Сборка нативного исполняемого файла Quarkus

Команды сборки

# Локальный GraalVM
./mvnw package -Pnative

# Через Docker (использует quay.io/quarkus/ubi-quarkus-native-image)
./mvnw package -Pnative \
  -Dquarkus.native.container-build=true \
  -Dquarkus.native.container-runtime=docker

# Для ARM (Apple Silicon, Graviton)
./mvnw package -Pnative \
  -Dquarkus.native.container-build=true \
  -Dquarkus.native.builder-image=quay.io/quarkus/ubi-quarkus-native-image:22.3-java17-aarch64

# Результат
./target/app-1.0.0-SNAPSHOT-runner

Dockerfile для нативного образа

FROM quay.io/quarkus/ubi-quarkus-native-image:22.3-java21 AS build
WORKDIR /app
COPY pom.xml .
RUN mvn dependency:go-offline
COPY src ./src
RUN mvn package -Pnative -Dquarkus.native.container-build=false

FROM registry.access.redhat.com/ubi8/ubi-minimal
WORKDIR /app
COPY --from=build /app/target/*-runner /app/application
EXPOSE 8080
USER 1001
CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]

Настройка через application.properties

# Heap для native-image процесса (не приложения)
quarkus.native.native-image-xmx=8g

# Включить отладочные символы (для perf)
quarkus.native.debug.enabled=false

# Дополнительные флаги GraalVM
quarkus.native.additional-build-args=\
    -H:+ReportExceptionStackTraces,\
    --initialize-at-run-time=org.bouncycastle.jcajce.provider.drbg.DRBG

# Уровень оптимизации (O3 медленнее собирается)
quarkus.native.optimization-level=2

Ограничения нативной компиляции

1. Рефлексия

// Нужна явная регистрация
@RegisterForReflection(targets = {MyDto.class, AnotherDto.class})
public class ReflectionConfig {}

// Или через META-INF/native-image/reflect-config.json
// (генерируется агентом GraalVM: -agentlib:native-image-agent)

2. Динамические прокси

@RegisterForProxy(interfaces = {MyService.class})
public class ProxyConfig {}

3. Ресурсные файлы

# Включить ресурсы в бинарник
quarkus.native.resources.includes=templates/**,messages/*.properties

4. Диагностика с GraalVM Agent

# Запустить приложение с агентом для генерации конфигов рефлексии
java -agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image \
  -jar target/quarkus-app/quarkus-run.jar
# Прогнать тесты/запросы, затем остановить — агент сгенерирует json-файлы

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

  • Static initializer порядок — код в static-блоках, обращающийся к env vars или сети, выполняется во время сборки, а не запуска; используйте --initialize-at-run-time.
  • Сторонние библиотеки — не все библиотеки имеют native-совместимые конфиги; проверяйте https://quarkus.io/guides/native-reference перед добавлением зависимости.
  • Время сборки в CI — без кэширования слоёв Docker каждая сборка занимает 5–15 минут; кэшируйте ~/.m2 и Docker-слои в GitHub Actions/GitLab CI.
  • Кросс-компиляция — бинарник собранный на x86_64 не запустится на ARM без rebuild; используйте QEMU-эмуляцию или нативный ARM-runner в CI.
  • java.lang.Thread и virtual threads — Project Loom virtual threads в native поддерживаются с GraalVM 21+, но не все библиотеки с ними совместимы.
  • Нет JVM flags в runtime — -Xmx, -XX:+UseG1GC не применимы; управление памятью через -R:MaxHeapSize=256m при сборке или через env MALLOC_ARENA_MAX.
  • Log4j/Logback в native — нужны дополнительные рефлексионные конфиги; Quarkus рекомендует jboss-logmanager (встроен).

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

  • Как Quarkus достигает быстрого времени запуска и низкого потребления памяти?
  • Что такое Quarkus и какие проблемы он решает по сравнению с традиционными Java-фреймворками?
  • Как Quarkus поддерживает разработку RESTful API с помощью RESTEasy Reactive?
  • В чём разница между JVM-режимом и native-режимом Quarkus?

Типичные ошибки

  • Путать термин «native executable build» с соседним механизмом Quarkus.
  • Не называть границу lifecycle, transaction, thread или request для «native executable build».
  • Игнорировать production-эффекты «native executable build»: latency, SQL shape, memory, security или observability.

Что проверяет интервьюер

  • Попросить объяснить механизм «native executable build» на минимальном примере.
  • Проверить, видит ли кандидат failure mode и диагностику для «native executable build».
  • Уточнить, какие настройки или API меняют «native executable build» в реальном сервисе.

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

Проверить себя по теме Quarkus →

Источники

  • https://quarkus.io/guides/building-native-image
←Предыдущий вопросВ чём разница между JVM-режимом и native-режимом Quarkus?Следующий вопрос→В каких backend-проектах Quarkus является сильным выбором, а где лучше выбрать более простой или другой стек?

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

Quarkusarchitecture-tradeoffsimplementationproduction-readiness