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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 122
  • Облачные технологии14 088
  • QA вакансии3 457
  • Backend вакансии2 114
  • Инженер данных1 805
  • Продакт-менеджер1 262

Разработка

  • Android1 864
  • iOS1 697
  • Fullstack вакансии986
  • AI вакансии949
  • Frontend вакансии742
  • Mobile вакансии44

По стеку

  • Go8 660
  • Java6 537
  • Node.js2 020
  • .NET1 721
  • Kotlin1 614
  • Rust1 455
  • C#710
  • PHP681
  • C++571

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

  • Kubernetes7 769
  • DevOps вакансии6 052
  • Linux-инфраструктура5 493
  • Terraform / IaC4 266
  • CI/CD3 240
  • Мониторинг и Observability1 788
  • SRE567
  • Кибербезопасность453

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

  • Data Scientist1 141
  • Бизнес-аналитик927
  • Аналитик данных854
  • Системный аналитик153

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

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

По регионам

  • Вакансии в США44 266
  • Вакансии в Европе23 871
  • Вакансии в Канаде4 475
  • Работа в России3 922

По формату

  • Удалённые вакансии75 000
  • Релокация в США44 263
  • Гибридная работа12 377
  • Офисная работа7 078

По уровню

  • Senior вакансии42 642
  • Middle вакансии20 877
  • Junior вакансии6 721

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 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, но не понимать связи между абстракциями
  • Объяснять поведение через отдельные примеры вместо причинной модели
  • Не связывать mental model с диагностикой ошибок

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

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

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

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

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

Javasystems-thinkingtechnical-communicationtechnology-selectiontrade-off-analysis

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

Java вакансии
  • Staff Product Security Engineer
  • VPII, Data Engineering Manager
  • Senor Scala Engineer (#6032)
  • Senior Software Engineer (Java)
  • Software Engineer, Manufacturing

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

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