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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python5 437
  • Облачные технологии4 076
  • QA вакансии1 588
  • Android1 093
  • Инженер данных805
  • Продакт-менеджер368

Разработка

  • iOS1 047
  • Backend вакансии996
  • Fullstack вакансии441
  • Frontend вакансии355
  • AI вакансии354
  • Mobile вакансии27

По стеку

  • Go2 987
  • Java1 810
  • Kotlin868
  • Node.js675
  • Rust436
  • .NET434
  • PHP248
  • C++204
  • C#190

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

  • Kubernetes2 308
  • Linux-инфраструктура1 890
  • DevOps вакансии1 678
  • Terraform / IaC1 406
  • CI/CD842
  • Мониторинг и Observability645
  • SRE226
  • Кибербезопасность84

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

  • Аналитик данных483
  • Data Scientist469
  • Бизнес-аналитик349
  • Системный аналитик48

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

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

По регионам

  • Вакансии в США24 791
  • Вакансии в Европе9 439
  • Работа в России2 924
  • Вакансии в Канаде2 178

По формату

  • Удалённые вакансии43 505
  • Релокация в США24 791
  • Гибридная работа3 370
  • Офисная работа2 525

По уровню

  • Senior вакансии20 898
  • Middle вакансии12 438
  • Junior вакансии3 864

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

Все компании
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Wise71 вакансия
  • Infobip28 вакансий
  • Darktrace17 вакансий
  • Spotify14 вакансий
  • Celonis11 вакансий
  • Razorpay9 вакансий
  • Adyen8 вакансий

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

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

Какие особенности runtime, type system или memory model Java реально влияют на архитектуру приложения?

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

JVM GC-паузы, JMM happens-before, erasure generics и Virtual Threads (Java 21) напрямую определяют выбор архитектурных паттернов — от пулов потоков до off-heap буферов.

JVM runtime и архитектурные решения

Java-приложения работают на JVM, и это напрямую влияет на архитектуру. JIT-компилятор (C1/C2 в HotSpot, Graal в GraalVM) достигает пиковой производительности через 10–30 секунд прогрева — это означает, что stateless-микросервисы с частыми перезапусками теряют на cold start. Решение: Java 21+ с Virtual Threads (Project Loom) и GraalVM Native Image для мгновенного старта.

Garbage Collector определяет характер пауз. G1GC (default с Java 9) даёт pause goals около 200 мс. ZGC и Shenandoah дают паузы менее 1 мс при heap до 16 TB — это критично для low-latency trading или real-time API. Архитектурное следствие: не держите огромные объекты в heap; используйте off-heap буферы (DirectByteBuffer) или разбивайте обработку на chunks.

// Пример off-heap буфера для I/O-intensive кода
ByteBuffer direct = ByteBuffer.allocateDirect(64 * 1024 * 1024); // 64 MB вне heap
// GC не трогает этот буфер — нет пауз при чтении/записи больших файлов

Memory model (JMM) и многопоточность

Java Memory Model гарантирует happens-before отношения. Без volatile или synchronized изменения в одном потоке не гарантированно видны в другом. Это влияет на архитектуру: double-checked locking без volatile на поле сломан до Java 5. Правильный Singleton:

public class Config {
    private static volatile Config instance; // volatile обязателен

    public static Config getInstance() {
        if (instance == null) {
            synchronized (Config.class) {
                if (instance == null) {
                    instance = new Config();
                }
            }
        }
        return instance;
    }
}

Лучше использовать Initialization-on-demand holder pattern или enum singleton — они thread-safe без явной синхронизации.

Type system и стирание типов

Generics в Java реализованы через erasure: List<String> и List<Integer> в байткоде одно и то же — List. Это ограничивает рефлексию и влияет на сериализацию. Jackson использует TypeReference для обхода:

// Неверно — тип стёрт, Jackson вернёт List<LinkedHashMap>
List<User> users = objectMapper.readValue(json, List.class);

// Верно — TypeReference сохраняет параметрический тип
List<User> users = objectMapper.readValue(json,
    new TypeReference<List<User>>() {});

Sealed classes (Java 17+) и records (Java 16+) дают алгебраические типы данных, что упрощает моделирование предметной области без null-проверок:

sealed interface PaymentResult permits Success, Failure, Pending {}
record Success(String transactionId) implements PaymentResult {}
record Failure(String reason) implements PaymentResult {}

// Pattern matching в switch (Java 21+)
String message = switch (result) {
    case Success s -> "OK: " + s.transactionId();
    case Failure f -> "Error: " + f.reason();
    case Pending p -> "Wait";
};

Virtual Threads (Java 21)

Project Loom добавил виртуальные потоки — легковесные потоки, которые не блокируют OS-поток при I/O. Это меняет архитектуру: больше не нужен реактивный стек (Reactor, RxJava) для масштабирования I/O-heavy сервисов. Spring Boot 3.2+ включает Virtual Threads одним свойством:

# application.yml
spring:
  threads:
    virtual:
      enabled: true

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

  • PermGen/Metaspace: до Java 8 утечки ClassLoader приводили к OutOfMemoryError в PermGen. Сейчас Metaspace в native memory, но динамическая генерация классов (Cglib, Groovy) всё ещё может его исчерпать.
  • String interning: String.intern() кладёт строку в String Pool. Злоупотребление — утечка памяти в Metaspace.
  • Finalizers устарели: System.gc() не гарантирует вызов finalize(). Используйте Cleaner API или try-with-resources.
  • ThreadLocal утечки в пулах потоков: если не очищать ThreadLocal в конце задачи, данные предыдущей задачи попадают в следующую.
  • JIT warmup в тестах: microbenchmark без JMH (Java Microbenchmark Harness) измеряет интерпретируемый код, а не оптимизированный JIT.
  • Checked exceptions ломают функциональные интерфейсы: лямбды не могут бросать checked exceptions — нужны обёртки или sneaky throws через Lombok.
  • equals/hashCode и коллекции: если переопределить equals без hashCode (или наоборот), объекты теряются в HashMap.
  • Integer кэш: Integer.valueOf(127) == Integer.valueOf(127) — true (кэш -128..127), но Integer.valueOf(200) == Integer.valueOf(200) — false. Используйте .equals().

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

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

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

  • Знать термины Java, но не понимать связи между абстракциями
  • Объяснять поведение через отдельные примеры вместо причинной модели
  • Не связывать mental model с диагностикой ошибок

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

  • Понимает ключевые абстракции Java
  • Может предсказывать поведение системы через mental model
  • Связывает модель с debugging и production decisions

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

Проверить себя по теме Java →
←Предыдущий вопросПредставьте, сервис на Java стал медленнее или нестабильнее после релиза. Какие language/runtime-specific причины вы проверите?Следующий вопрос→Как сравнить Java с ближайшими альтернативами по производительности, поддерживаемости, найму и экосистеме?

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

Javasystems-thinkingtechnical-communicationtechnology-selectiontrade-off-analysis

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

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