👔 Маєш вакансії? Публікуй все, що маєш — безкоштовно →
Назад

30 питань на технічній співбесіді Java Middle 2026: задачі + відповіді

I
Ivan K

HR-експерт

Опубліковано

26 Червня, 2026

Час читання

33 хвилин(-а)

Переглядів

78

0

Сергій, 3 роки комерційного Java-досвіду, працює в продуктовій компанії в Києві. За останній місяць пройшов 5 технічних співбесід на Middle Java позиції. Результат: 2 відмови після live coding, 2 відмови після System Design, один офер з пониженням грейду до Junior+. На питання про колекції, generics і garbage collection відповідав без проблем. Сипався там, де треба було показати інженерне мислення, а не вивчений матеріал.

Технічна співбесіда Java Middle у 2026 році перевіряє не обсяг знань — його перевіряє автотест. Перевіряє те, що автотест не вловлює: як ти розкладаєш незнайому задачу на кроки, як аргументуєш trade-offs, як працюєш з AI-асистентом, не втрачаючи розуміння коду. Нижче — 30 реальних питань з українських компаній (EPAM, SoftServe, GlobalLogic, Sigma Software, Intellias) за останні 4 місяці, з відповідями рівня Middle і типовими помилками.

Розділ 01

Що перевіряють на Java Middle співбесіді у 2026

Стек той самий. Контекст — зовсім інший.

За даними зимового зарплатного звіту DOU 2026, медіанна зарплата Middle Java-розробника в Україні становить $2500. Конкуренція за такі позиції зросла: на одну вакансію в середньому претендують 80+ кандидатів, тому компанії піднімають планку технічної перевірки.

За нашими спостереженнями у Hoorya, технічна Java Middle співбесіда у 2026 році має такі особливості:

  • Більшість вакансій Java Middle включає окремий етап live coding з обмеженням 40-60 хвилин
  • System Design сесія стала майже стандартом — рік тому її проводили вдвічі рідше
  • Алгоритмічні задачі залишились у переважній більшості воронок, але формат змінився: замість LeetCode Hard просять написати функцію з реального продакшен-сценарію (валідація IBAN, парсинг логів, дедуплікація подій з Kafka)

Чотири блоки, які перевіряють у 2026:

⚙️
Технічна база
Spring, Hibernate, JVM internals, concurrency. Питання глибокі, але передбачувані.
🏗️
System Design
Вміння оцінити навантаження і вибрати між PostgreSQL і Redis за 25 хвилин.
💻
Live coding
20-30 рядків коду під спостереженням, з обговоренням рішення вголос.
🤖
AI-fluency
Як ти користуєшся Copilot, що питаєш, що перевіряєш руками.
Найбільш частий фідбек після відмови у 2026: "сильна теорія, слабке інженерне мислення на практиці". Тут перевіряють не знання Java, а вміння застосувати її до незнайомої задачі під тиском.
Розділ 02

Spring Boot на Java Middle співбесіді: 8 типових питань

Spring 6 + Boot 3 — мінімальний поріг. Знання Spring 5 уже мінус.

Spring — найбільший блок технічної частини. Нижче 8 питань, які зустрічались у переважній більшості Java Middle співбесід в українських компаніях за останні півроку.

Питання 01 · Сценарій

У чому різниця між IoC і DI?

Як це звучить на співбесіді "Ти прийшов на новий проєкт. У сервісі бачиш конструктор з 7 параметрами, всі залежності інжектяться через нього. Чому Spring зробив саме так і яка тут різниця між IoC і DI?"

IoC (Inversion of Control) — принцип, при якому контроль над створенням і життєвим циклом об'єктів передається фреймворку. DI (Dependency Injection) — один зі способів реалізувати IoC: залежності об'єкта передаються йому ззовні, а не створюються всередині. Spring реалізує IoC через DI-контейнер. Constructor injection вважається кращим за field injection бо робить залежності явними і дозволяє immutable стан.

Як прозвучить сильна відповідь
"IoC — це принцип, DI — реалізація. Spring контейнер сам створює об'єкти і передає їм залежності через конструктор. 7 параметрів — це сигнал що клас порушує SRP, але технічно через constructor injection ми отримуємо immutable стан і обов'язкові залежності на етапі компіляції. На останньому проєкті ми рефакторили подібний сервіс через @Configuration з grouping-методами — стало читабельніше."
Питання 02

Опиши Bean lifecycle у Spring.

Instantiation → Populate properties → BeanNameAware.setBeanName() → BeanFactoryAware.setBeanFactory() → ApplicationContextAware.setApplicationContext() → BeanPostProcessor.postProcessBeforeInitialization() → @PostConstruct → InitializingBean.afterPropertiesSet() → custom init-method → BeanPostProcessor.postProcessAfterInitialization() → готовий до використання → @PreDestroy → DisposableBean.destroy() → custom destroy-method.

На Middle очікують спрощену форму: створення → ін'єкція залежностей → ініціалізація → готовність → знищення.

Питання 03 · Сценарій

Як працює @Transactional і які бувають propagation levels?

Як це звучить на співбесіді "У нас метод A помічений @Transactional. Він викликає метод B того ж класу теж з @Transactional(REQUIRES_NEW). Тестуємо — створюється одна транзакція замість двох. Чому?"

@Transactional створює проксі навколо методу і керує транзакцією через PlatformTransactionManager. Шість основних propagation:

  • REQUIRED (default) — використовує існуючу транзакцію або створює нову
  • REQUIRES_NEW — завжди створює нову, призупиняючи поточну
  • NESTED — savepoint всередині існуючої
  • SUPPORTS — приєднується якщо є, працює без транзакції якщо немає
  • NOT_SUPPORTED — призупиняє існуючу
  • MANDATORY — кидає виняток якщо транзакції немає
Як прозвучить сильна відповідь
"Spring AOP працює через проксі-обгортку. Коли ви викликаєте B через this — виклик іде напряму, оминаючи проксі, тому анотація не активується. Рішення: винести B в окремий сервіс і інжектити його, або використати AopContext.currentProxy(), але це антипатерн. Я зустрічав цей баг на проєкті — після рефакторингу в окремий клас p99 на endpoint упало на 40%."
Питання 04

Як працює autoconfiguration у Spring Boot?

Spring Boot сканує classpath, читає META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (у Boot 3+), і умовно реєструє конфігурації через @ConditionalOnClass, @ConditionalOnMissingBean, @ConditionalOnProperty. Якщо HikariCP у classpath і немає кастомного DataSource — Boot створить його сам.

Питання 05

Що нового у Spring 6 / Spring Boot 3?

Базова Java 17, нативна підтримка Jakarta EE 9+ (javax.* → jakarta.*), GraalVM native image без додаткових плагінів, Virtual Threads через spring.threads.virtual.enabled=true, observation API замість старих Sleuth/Micrometer trace.

Питання 06

Як зробити кастомний Spring Boot starter?

Створити модуль з AutoConfiguration класом, додати його у META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports, опціонально — ConfigurationProperties для параметрів. Інший проєкт додає starter як залежність, конфігурація підтягується автоматично.

Питання 07

Як ти використовуєш Spring Profiles на проєкті?

Очікувана відповідь — конкретний кейс: application-dev.yml, application-prod.yml, активація через SPRING_PROFILES_ACTIVE=prod, або @Profile("prod") на бінах. Помилка — теоретично описувати без прикладу свого проєкту.

Питання 08

Що показує Spring Boot Actuator і які endpoint вмикав на проді?

/health — для k8s liveness/readiness probe, /metrics — для Prometheus, /info — версія застосунку, /loggers — зміна рівня логування в рантаймі. На проді не вмикають /env, /heapdump, /threaddump без authentication — це безпекова дірка.

Інтерв'юер на Middle позиції очікує не визубрених визначень, а ситуацій з твого досвіду. "Ми мали проблему з @Transactional коли викликали метод з того ж класу — переробили через окремий сервіс" — це Middle. "Propagation буває REQUIRED, REQUIRES_NEW..." без контексту — це Junior.

Що знати про Spring Security для Middle?

Мінімум: фільтр-ланцюг (SecurityFilterChain у Spring Security 6), різниця між Session-based і Stateless (JWT) автентифікацією, як працює UserDetailsService, як налаштувати CORS і CSRF, OAuth2 resource server для перевірки JWT від Keycloak/Auth0. Глибше зазвичай не питають — це територія Senior.

Quiz 01 · Spring
Метод A класу OrderService помічений як @Transactional(propagation = REQUIRES_NEW). Метод B того ж класу викликає this.A(). Що станеться при виклику B з REST-контролера?
Правильна відповідь: B. Spring AOP працює через проксі. Виклик this.method() йде напряму, оминаючи проксі — тому анотація не активується. Це класична пастка, яку показують саме на Middle співбесідах.
Розділ 03

Hibernate і робота з базами даних на Java Middle

N+1 problem — базова перевірка, на якій відсіюють найшвидше.

Якщо кандидат не знає що таке N+1 problem — інтерв'юер часто просто завершує блок раніше. У 2026 році це базова перевірка, не складна.

Питання 09 · Сценарій

Що таке N+1 problem і як її вирішити?

Як це звучить на співбесіді "У нас є endpoint /orders який повертає 50 замовлень з даними клієнта. p99 latency = 800ms на staging. Що перевіриш першим?"

Першим — увімкнути spring.jpa.show-sql=true. Якщо завантажити список з 100 Order сутностей, у кожній з яких є @ManyToOne User, Hibernate зробить 1 запит на Orders + 100 запитів на Users (N+1 = 101 запит). Рішення:

  • JOIN FETCH у JPQL: SELECT o FROM Order o JOIN FETCH o.user
  • @EntityGraph на репозиторії — кращий варіант якщо запит використовується в кількох місцях
  • Batch fetching: @BatchSize(size = 50) на entity
  • Перехід на DTO projection через interface-based projections у Spring Data
Як прозвучить сильна відповідь
"Включаю show-sql у логах. Якщо бачу 51 запит замість одного — це N+1. У мене два варіанти: швидкий хотфікс через JOIN FETCH у методі репозиторію, або правильне рішення через @EntityGraph, якщо ендпойнт використовується в кількох сервісах. На останньому проєкті ми переробили 4 такі ендпойнти за тиждень — p99 упало з 600 до 80ms. Ще варіант — DTO projection, якщо повертаємо обмежений набір полів."
Питання 10

У чому різниця між FetchType.LAZY і FetchType.EAGER?

LAZY — Hibernate генерує проксі і завантажує дані тільки при першому зверненні. EAGER — завантаження одразу разом з основною сутністю. Default для @OneToMany/@ManyToMany — LAZY, для @ManyToOne/@OneToOne — EAGER.

Правило Middle: ставити LAZY скрізь, а eager робити явно через JOIN FETCH на конкретному запиті.

Питання 11

Що таке second-level cache і коли він шкодить?

Second-level cache (Ehcache, Hazelcast, Infinispan) живе на рівні SessionFactory і шерится між сесіями. Корисний для read-mostly довідників (країни, валюти). Шкодить коли:

  • Дані часто змінюються — постійні інвалідації
  • Кілька інстансів додатку без розподіленого кешу — рассинхронізація
  • Запити з умовами, що не індексуються в кеші — все одно йдуть у БД
Питання 12

Як налагодити повільний запит у Hibernate?

  • Увімкнути spring.jpa.show-sql=true і hibernate.format_sql=true
  • Скопіювати SQL і запустити EXPLAIN ANALYZE у PostgreSQL/MySQL
  • Подивитись чи використовуються індекси (Seq Scan vs Index Scan)
  • Перевірити p99 через Hibernate Statistics або APM (Datadog, New Relic)
Питання 13

Які isolation levels існують і яку проблему вирішує SERIALIZABLE?

READ UNCOMMITTED → READ COMMITTED → REPEATABLE READ → SERIALIZABLE. По наростаючій захищають від: dirty read, non-repeatable read, phantom read. SERIALIZABLE гарантує що транзакції виконуються "ніби послідовно" — найбезпечніше, але найповільніше.

У PostgreSQL default — READ COMMITTED, в Oracle і Spring @Transactional без параметрів — теж READ COMMITTED.

Питання 14

Як ти створюєш індекс на колонці і коли цього робити не варто?

Через @Index на entity або міграцією Flyway/Liquibase. Не варто індексувати:

  • Колонки з низькою кардинальністю (boolean, status з 3 значеннями)
  • Колонки, які часто оновлюються (індекс перебудовується)
  • Маленькі таблиці (<1000 рядків) — Seq Scan швидший
Розділ 04

System Design на Java Middle співбесіді

25 хвилин на 4 кроки: вимоги, оцінка RPS, API, масштабування.

System Design на Middle — це не "побудуй Netflix". Це 4 кроки, які треба пройти за 25-30 хвилин:

КрокЩо зробити
1. УточненняСкільки користувачів? Read/Write ratio? Latency requirements? Geographic distribution?
2. Оцінка1M DAU × 10 запитів = ~115 RPS середньо, ~500 RPS у пік
3. API + дані3-5 endpoint, основні сутності, тип сховища (SQL vs NoSQL і чому)
4. МасштабуванняДе bottleneck: cache, read replicas, sharding, queue
Питання 15 · Сценарій

Спроектуй URL shortener (як bit.ly).

Як це звучить на співбесіді "100M URL у системі, 10:1 read/write ratio. Покажи API, БД, кеш. 25 хвилин."

Кодування: base62 від auto-increment ID (8 символів покривають 200T URL) або хеш-функція з обробкою колізій. API: POST /shorten, GET /{code}. БД: PostgreSQL для метаданих + Redis для гарячого кешу redirect (TTL = 24h). Аналітика: асинхронна через Kafka в окремий ClickHouse — щоб не блокувати redirect.

Як прозвучить сильна відповідь
"Спочатку уточнення: 100M URL — це ~50GB метаданих, влізе в один PostgreSQL без шардингу. 10:1 read/write при 100M URL і середньому TTL... припускаю ~1000 RPS на читання у пік. Тут вже потрібен кеш. Іду по кроках: base62-кодування ID, INSERT у PG, redirect через Redis з фоллбеком у PG. Аналітика — окремо, бо вона не критична для основного флоу. Перевірю чи це збігається з твоїми вимогами до latency."
Питання 16

Спроектуй rate limiter.

Algorithm: Token Bucket або Sliding Window. Сховище: Redis з INCR + TTL. Ключ: rate_limit:{user_id}:{endpoint}. Якщо count > limit — повертаємо 429.

На Middle очікують, що ти знаєш про відмінність Token Bucket (burst tolerance) і Fixed Window (boundary problem).

Питання 17

Як побудувати чат на 10k одночасних користувачів?

WebSocket з'єднання через Spring WebFlux або Netty напряму. Стан з'єднань — sticky session або Redis pub/sub для горизонтального масштабування. Зберігання повідомлень — Cassandra (write-heavy, time-series доступ). Гарантія доставки — message queue + retry з ack від клієнта.

Питання 18

Як зробити sharding для таблиці orders на 500M рядків?

Shard key: user_id (запити завжди по користувачу — добре). Алгоритм: consistent hashing для додавання шардів без масової міграції. Cross-shard запити: через aggregator-сервіс або BI-replica. Hot partitions: додати випадковий суфікс до ключа.

Помилка №1 у System Design на Middle: одразу малювати схему з Kafka, Elasticsearch, Redis і 5 мікросервісами. Інтерв'юер чекає, що ти спочатку запитаєш про вимоги, оціниш RPS і покажеш чому саме твої компоненти.
Готуєшся до Java Middle співбесіди?
Перевір своє резюме до того, як рекрутер його закриє за 6 секунд. Безкоштовний інструмент Hoorya дасть конкретні правки.
Перевірити резюме
Розділ 05

Алгоритми на Java Middle співбесіді: 5 реальних задач

Не LeetCode Hard. Завдання, які можуть зустрітися в коді.

Задачі нижче — з ротації EPAM, SoftServe і GlobalLogic за останні півроку. Усі — рівня LeetCode Easy/Medium, з очікуваним рішенням за 15-20 хвилин. Зверни увагу на коментарі в коді — саме так має виглядати твоє рішення на live coding.

Задача 19 · EPAM, скринінг

Anagram check

Дано два рядки. Перевір чи є вони анаграмами один одного.

public boolean isAnagram(String a, String b) {
    // Швидка перевірка: різна довжина = не анаграми
    if (a.length() != b.length()) return false;

    // Лічильник для 26 літер латиниці
    int[] counts = new int[26];

    // Інкрементуємо для a, декрементуємо для b
    for (int i = 0; i < a.length(); i++) {
        counts[a.charAt(i) - 'a']++;
        counts[b.charAt(i) - 'a']--;
    }

    // Якщо хоч одна літера лишилась з ненулем — не анаграми
    for (int c : counts) if (c != 0) return false;
    return true;
}

Складність: O(n) час, O(1) пам'ять (26 літер — константа). Типова помилка: сортувати обидва рядки — O(n log n) і втрата балів за оптимальність.

Задача 20 · SoftServe, технічна

Longest substring without repeating characters

Знайди довжину найдовшого підрядка без повторень символів. Класична задача на sliding window.

public int lengthOfLongestSubstring(String s) {
    // Зберігаємо останню позицію кожного символу
    Map<Character, Integer> lastIndex = new HashMap<>();
    int max = 0;
    int start = 0;  // Ліва межа поточного вікна

    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        // Якщо символ був усередині поточного вікна — рухаємо start вправо
        if (lastIndex.containsKey(c) && lastIndex.get(c) >= start) {
            start = lastIndex.get(c) + 1;
        }
        lastIndex.put(c, i);
        max = Math.max(max, i - start + 1);
    }
    return max;
}

Складність: O(n) час, O(min(n, alphabet)) пам'ять. Sliding window — патерн, який треба знати на Middle напам'ять.

Задача 21 · GlobalLogic, продуктова

Merge intervals

Дано список інтервалів [[1,3], [2,6], [8,10]]. Об'єднай ті, що перетинаються.

public int[][] merge(int[][] intervals) {
    // Сортуємо за початком — це дозволяє йти лінійно
    Arrays.sort(intervals, (a, b) -> a[0] - b[0]);

    List<int[]> result = new ArrayList<>();
    int[] current = intervals[0];

    for (int i = 1; i < intervals.length; i++) {
        // Якщо новий інтервал починається до кінця поточного — об'єднуємо
        if (intervals[i][0] <= current[1]) {
            current[1] = Math.max(current[1], intervals[i][1]);
        } else {
            // Інакше — закриваємо поточний, починаємо новий
            result.add(current);
            current = intervals[i];
        }
    }

    // Не забути додати останній — типова помилка
    result.add(current);
    return result.toArray(new int[0][]);
}

Складність: O(n log n) через сортування. Типова помилка: забути додати останній інтервал після циклу — і втратити частину результату.

Задача 22 · Sigma Software

LRU Cache

Реалізуй кеш з фіксованою місткістю, де при перевищенні викидається найдавніше використаний елемент.

public class LRUCache<K, V> extends LinkedHashMap<K, V> {
    private final int capacity;

    public LRUCache(int capacity) {
        // accessOrder=true — порядок за останнім доступом, не вставкою
        super(capacity, 0.75f, true);
        this.capacity = capacity;
    }

    // Викликається після кожної вставки — викидаємо найстаріший
    @Override
    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
        return size() > capacity;
    }
}

Складність: O(1) на get/put. Підвох: інтерв'юер часто просить написати без LinkedHashMap — через HashMap + двозв'язний список. Це варіант для Senior.

Задача 23 · Intellias

Two-sum з відсортованим масивом

Дано відсортований масив чисел і target. Знайди два індекси, сума яких = target.

public int[] twoSum(int[] nums, int target) {
    // Two pointers працює тільки на відсортованому
    int left = 0;
    int right = nums.length - 1;

    while (left < right) {
        int sum = nums[left] + nums[right];
        if (sum == target) return new int[]{left, right};

        // Сума замала — рухаємо лівий вказівник вправо
        if (sum < target) left++;
        // Сума завелика — рухаємо правий вліво
        else right--;
    }
    return new int[]{-1, -1};
}

Складність: O(n) час, O(1) пам'ять. Якщо масив не відсортований — HashMap-варіант теж O(n) часу, але O(n) пам'яті.

Чи питають leetcode-задачі на Middle Java у 2026?

Так, але не LeetCode Hard. Стандартний пул — Easy і Medium з тегами Array, String, HashMap, Sliding Window, Two Pointers. Готуватись — 30-40 задач з цих категорій. Hard-задачі (DP на матриці, складні графи) — це Senior+ і FAANG, не український Middle. Детальні приклади завдань з UA-компаній є в публікаціях DOU.

Розділ 06

Live coding під тиском — техніка проходження

Виграє той, хто думає вголос і пише ітеративно.

Live coding провалюють не на синтаксисі — провалюють на мовчанні. Інтерв'юер 30 хвилин дивиться як кандидат пише код без коментарів, і не розуміє хід думок. Висновок: "слабке інженерне мислення".

Реальний кейс · SoftServe, березень 2026
Як провалити live coding за 2 хвилини

Кандидат: 4 роки на Java, попередня роль — Middle у банку. Задача на live coding: знайти всі дублікати у масиві з 1000 елементів.

За 2 хвилини написав рішення через два вкладені цикли — O(n²). Інтерв'юер мовчав. Через 5 хвилин кандидат сам помітив проблему і додав HashMap для підрахунку — O(n). Інтерв'юер задав одне питання: "А чому не одразу через Set?"

Кандидат відповів: "ну Set же не зберігає кількість". Інтерв'юер: "А вам потрібна кількість, чи факт що елемент уже зустрічався?" Кандидат не зміг швидко переключитися. Фідбек після відмови: "слабке знання базових структур даних".

Реальна проблема — не структури. Кандидат знав і HashMap, і HashSet. Проблема була в тому, що він жодного разу не озвучив вибір вголос. Якби сказав на старті: "Я бачу два варіанти — HashMap для частоти, HashSet для факту повтору. Тут потрібен факт, тому HashSet" — інтерв'юер не задав би жодного follow-up.

Чотири правила, які витягують live coding навіть якщо рішення не ідеальне:

⏱️
3 хв — уточнення
Чи можуть бути null значення? Що повертати на порожній вхід? Чи дозволено модифікувати вхідний масив?
🦴
4-7 хв — скелет
Напиши заголовок методу, оголоси змінні, додай TODO в тіло. Скажи: "спочатку наївне, потім оптимізуємо".
🗣️
8-25 хв — вголос
"Тут ітерую і додаю в HashMap, складність O(n)". Застряг — скажи: "думаю над крайнім випадком".
✅
5 хв — тести
Прогон на 2-3 прикладах вручну. Назвати складність. Запропонувати оптимізацію навіть якщо часу немає.

Як готуватись до live coding за тиждень?

7 днів по 1.5 години:

  • День 1-2: Arrays + Strings (10 задач Easy)
  • День 3: HashMap + Set (5 задач Medium)
  • День 4: Two Pointers + Sliding Window (5 задач)
  • День 5: Stack + Queue (3 задачі)
  • День 6: Mock-співбесіда з другом по Zoom — обов'язково говорити вголос
  • День 7: Перегляд минулих рішень + відпочинок

Без mock-співбесіди підготовка неповна. Писати код наодинці і писати код під спостереженням — два різних навики.

Чи можна користуватись Copilot під час live coding?

У переважній більшості компаній — заборонено явно (озвучують на початку). У частині — дозволено, але інтерв'юер уважно дивиться чи розумієш ти що Copilot згенерував. У окремих випадках — дозволено вільно, перевіряють саме вміння працювати з AI. Універсальне правило: запитай на початку. Користуватись без дозволу — autoreject.

Quiz 02 · Live coding
Інтерв'юер просить написати функцію перевірки паліндрома. Ти за 30 секунд написав рішення через new StringBuilder(s).reverse().toString().equals(s). Інтерв'юер мовчить. Що це означає найімовірніше?
Правильна відповідь: B. Two pointers рішення — O(n) час і O(1) пам'ять. Через StringBuilder — O(n) час але O(n) пам'ять. На Middle очікують саме оптимальний варіант або хоча б озвучення trade-off.
Розділ 07

AI як третій учасник співбесіди — нові правила

Тепер перевіряють як ти працюєш з AI — а не чи без нього виживеш.

За нашими спостереженнями у Hoorya, більшість Java-розробників щодня використовують AI-асистент (Copilot, Cursor, Claude Code). Це стало частиною професії — і частиною співбесіди.

Що змінилось у питаннях:

РанішеЗараз
Напиши функцію X без використання Stream API Опиши свій workflow з Copilot за останній тиждень. Які промпти давали найкращий результат? Де AI помилявся і як ти це ловив?
Поясни як працює GC Ти спитав Claude як налаштувати G1GC і він дав параметри. Як перевіриш чи вони правильні до того, як деплоїти?

Очікувана відповідь на друге питання: подивитись JVM docs, перевірити версію Java, прогнати на staging з навантаженням, поміряти p99 latency через Datadog, порівняти з baseline. Це і є інженерне мислення на Middle у 2026.

Скільки часу готуватись до Middle співбесіди?

Якщо ти вже 2+ роки на комерційній Java з реальним Spring-проєктом — 3-4 тижні цільової підготовки. Розклад:

  • Тиждень 1: Spring/Hibernate глибокий повтор + 5 mock-співбесід по теорії
  • Тиждень 2: System Design (книга "System Design Interview" Alex Xu, 10 кейсів)
  • Тиждень 3: Алгоритми (30 задач LeetCode Easy/Medium з UA-тегів)
  • Тиждень 4: Mock live coding x5, перегляд слабких місць

Якщо досвід менше 2 років — додай 2-3 тижні на fundamentals (JVM, multithreading, collections internals).

7-денний план

Інтерактивна схема: тиждень підготовки

Натискай на день — побачиш деталі.
День 01Аудит знань +
Список 30 питань вище, проставити "знаю/частково/не знаю". Закрити прогалини читанням Spring docs.
День 02Spring + Hibernate +
Перечитати власні попередні проєкти, виписати 5 нетривіальних кейсів з реального досвіду.
День 03System Design +
2 кейси (URL shortener + rate limiter) — намалювати на дошці, проговорити вголос.
День 04Алгоритми +
5 задач з пулу вище, кожна — на чистому аркуші без IDE.
День 05Live coding mock +
Друг або Pramp.com — 2 сесії, обов'язково з відеозаписом для розбору.
День 06AI workflow +
Підготувати 3 конкретних кейси з власного досвіду роботи з Copilot/Claude.
День 07Відпочинок +
Не вчити нове — закріпити старе. Переглянути складні моменти, виспатись перед співбесідою.
Чекліст

7 пунктів готовності до співбесіди

Постав галочку — закрий пункт.
Готовність до Java Middle співбесіди
0/7 виконано
1. 60-секундний self-pitch Хто я, де працював, що робив у останньому проєкті, чому шукаю нову роль. Без цього перші 5 хвилин звучатимуть мляво.
2. 3 нетривіальні технічні рішення з минулого Конкретний баг, складна оптимізація, складна архітектурна суперечка. Закриває 70% behavioral питань.
3. Налаштоване середовище для live coding IDE без зайвих відволікань, шрифт 16+ для шеринга екрану, чорновик для нотаток поряд.
4. Перевірив звук і відео за день до Технічні проблеми зі зв'язком регулярно зриваюь співбесіди — перевіряти треба не за 5 хвилин до старту.
5. Підготував 3 питання до інтерв'юера Про команду, кодрев'ю-процес, технічний борг. Питання "коли я можу очікувати фідбек" не рахується.
6. 15 хвилин про компанію Продукт, нещодавні новини, тех-стек у вакансіях. Інтерв'юер відчуває, що ти прийшов конкретно до них.
7. Mock-співбесіда за останні 3 дні Навіть з другом по Zoom. Закриває розрив між "знаю в голові" і "можу сказати вголос".

Спільнота Java-розробників у Telegram

Розбір реальних кейсів зі співбесід, відгуки про компанії, mock-партнери для тренувань.

Приєднатись
FAQ

Часті питання про Java Middle співбесіду

Те, що питають кандидати, але соромляться питати в інтерв'юера.
Скільки питань зазвичай у технічній співбесіді Java Middle? +
Середня воронка: 8-12 питань теорії (Spring/Hibernate/Java core), 1 System Design кейс на 25-30 хвилин, 1-2 live coding задачі. Загальна тривалість — 90-120 хвилин.
Що частіше провалюють — теорію чи практику? +
Практику. Більшість відмов на Middle Java у 2026 році відбуваються після live coding або System Design. Теорію зазвичай завалюють тільки ті, хто йде на грейд вище за реальний рівень.
Чи треба готувати "tell me about yourself" українською і англійською? +
Так, обома. Більшість компаній з продуктовою орієнтацією переходять на англомовну співбесіду після представлення. Перевірка soft skills і English level одночасно. Окремий розбір behavioral-питань про себе є в нашій статті про найскладніші питання співбесіди.
Як відповідати на питання про слабкі сторони? +
Назвати реальну слабкість (не "перфекціонізм"), показати що ти знаєш про неї і працюєш. Приклад: "Раніше затягував code review бо хотів зробити ідеально — зараз ставлю собі ліміт у 2 години на review і пишу LGTM with comments, якщо немає блокерів".
Чи питають про hard skills англійською на технічних співбесідах? +
Так, частіше у продуктових і outstaff компаніях. Терміни типу "race condition", "thread safety", "transaction isolation" треба знати англійською.
Що робити, якщо не знаєш відповіді на питання? +
Чесно сказати "не зустрічав на практиці, але можу припустити" і озвучити логічне припущення. Краще ніж мовчати чи фантазувати. Більшість інтерв'юерів цінують чесність більше ніж точну відповідь.
Чи треба знати Kafka і Kubernetes на Middle Java? +
Базове — так. Не глибокі internals, а: "налаштовував Kafka producer, був ребаланс партишенів", "деплоїв у k8s через Helm, налаштовував liveness probe". Без цього на більшості Middle вакансій навіть не запросять на технічну.

Висновок

Технічна співбесіда Java Middle у 2026 — це 90 хвилин, де інтерв'юер дивиться три речі: чи можеш розкласти незнайому задачу на кроки, чи аргументуєш рішення вголос, чи працюєш з AI як з інструментом, не втрачаючи розуміння. Знання Spring і Hibernate — поріг входу, а не перевага. Перевага — в тому, як ти ці знання застосовуєш під тиском.

Готуйся до 30 ключових питань, які повторюються у переважній більшості воронок. Прокачай live coding на 5 mock-сесіях. Підготуй 3 конкретні кейси з власного досвіду на кожен великий блок. І перевір своє резюме до того, як рекрутер його закриє за 6 секунд.

Шукаєш Java Middle позицію в Україні чи ЄС?
На Hoorya — тільки IT-вакансії від перевірених роботодавців. Без агентств і спаму. Junior, Middle, Senior з прозорими умовами.
Дивитись Java вакансії
0
0
0
0
Шукаєш роботу в IT або креативі?

Переглянь актуальні вакансії від провідних компаній

Переглянути вакансії
Хочеш не пропускати важливі оновлення?

Підпишись на наш Telegram-канал та отримуй свіжі статті та вакансії

Підписатися на Telegram
guest
0 Коментарі
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

Ваш коментар

Your email address will not be published. Required fields are marked *

Курси та тести

Розвивай навички з нашими безкоштовними курсами

Переглянути
📊
Коротке опитування — для кращого Hoorya
2–3 хвилини · Анонімно · Отримаєш персональний IT-профіль
Пройти →

Увійди в Hoorya

Увійди або зареєструйся, щоб залишати реакції та ділитися статтями.

або

Немає акаунту?

Увійдіть у Hoorya

Система сама відкриє ваш кабінет — кандидата чи рекрутера

або