🔍 Ответ на задачу про Pattern Matching: Прощай, кастинг! 👋
В Java 16 появился Pattern Matching for instanceof. Теперь мы можем объявить переменную
Вывод:
Так как длина строки 10 (> 5), условие сработает. Результат:
⚡️ Не перепутайте:
Переменная
#java #java16 #patternmatching #basics #syntax #интервью #java_interview_tasks
В Java 16 появился Pattern Matching for instanceof. Теперь мы можем объявить переменную
s прямо в проверке. Если obj является строкой, Java сама сделает приведение типов и запишет результат в s. Область видимости s ограничена блоком if.Вывод:
Так как длина строки 10 (> 5), условие сработает. Результат:
HELLO JAVA.⚡️ Не перепутайте:
Переменная
s доступна только там, где компилятор уверен в её инициализации. Например, в if (...) { здесь s доступна }.#java #java16 #patternmatching #basics #syntax #интервью #java_interview_tasks
✍5
Ответ на задачу про 3200021:
Заметим, что 32 · 100 000 = 3 200 000 = 20⁵ (потому что 32 = 2⁵, 100 000 = 10⁵, а 2⁵ · 10⁵ = 20⁵).
Тогда 3 200 021 = 20⁵ + 20 + 1, то есть это выражение x⁵ + x + 1 при x = 20.
Есть известное разложение:
x⁵ + x + 1 = (x² + x + 1)(x³ − x² + 1)
Подставляем x = 20:
x² + x + 1 = 400 + 20 + 1 = 421
x³ − x² + 1 = 8000 − 400 + 1 = 7601
7601 = 7700 − 99
7700 = 77 · 100 = 11 · 700
99 = 11 · 9
Значит, 7601 = 11 · (700 − 9) = 11 · 691.
Итого: 3 200 021 = 11 · 421 · 691.
Заметим, что 32 · 100 000 = 3 200 000 = 20⁵ (потому что 32 = 2⁵, 100 000 = 10⁵, а 2⁵ · 10⁵ = 20⁵).
Тогда 3 200 021 = 20⁵ + 20 + 1, то есть это выражение x⁵ + x + 1 при x = 20.
Есть известное разложение:
x⁵ + x + 1 = (x² + x + 1)(x³ − x² + 1)
Подставляем x = 20:
x² + x + 1 = 400 + 20 + 1 = 421
x³ − x² + 1 = 8000 − 400 + 1 = 7601
7601 = 7700 − 99
7700 = 77 · 100 = 11 · 700
99 = 11 · 9
Значит, 7601 = 11 · (700 − 9) = 11 · 691.
Итого: 3 200 021 = 11 · 421 · 691.
🥴9🤨3🔥1
Как текстовые блоки \(Java 15\+\) определяют, где начинается контент, а где — просто отступы кода?
Сколько пробелов будет перед словом "Hello" в строке `result`?
Сколько пробелов будет перед словом "Hello" в строке `result`?
Anonymous Quiz
30%
0
59%
2
7%
6
5%
4
👍3
Как текстовые блоки (Java 15+) определяют, где начинается контент, а где — просто отступы кода?
Сколько пробелов будет перед словом "Hello" в строке
Сколько пробелов будет перед словом "Hello" в строке
result?String result = """
Hello
World
""";
👍3
🔍 Ответ на задачу про Text Blocks: Считаем пробелы 📏
Текстовые блоки используют "алгоритм смещения" (incidental whitespace). Java находит самую левую границу текста во всем блоке (в данном случае это начало слова "World") и считает её за "ноль". Всё, что находится левее этой границы, отбрасывается.
Вывод:
Так как "Hello" смещено на 2 пробела относительно "World", в итоговой строке перед ним останется именно 2 пробела.
⚡️ Не перепутайте:
Положение закрывающих кавычек
#java #java15 #textblocks #syntax #basics #интервью #java_interview_tasks
Текстовые блоки используют "алгоритм смещения" (incidental whitespace). Java находит самую левую границу текста во всем блоке (в данном случае это начало слова "World") и считает её за "ноль". Всё, что находится левее этой границы, отбрасывается.
Вывод:
Так как "Hello" смещено на 2 пробела относительно "World", в итоговой строке перед ним останется именно 2 пробела.
⚡️ Не перепутайте:
Положение закрывающих кавычек
""" тоже влияет на отступы! Если вы сдвинете их левее текста, это создаст дополнительные пробелы.#java #java15 #textblocks #syntax #basics #интервью #java_interview_tasks
🔥6❤3👍1
🤯4
Какая строка НЕ скомпилируется?
var a = 10; // 1
var b = "Java"; // 2
var c = null; // 3
var d = (String) null; // 4
👍2🔥2
🔍 Ответ на задачу про var: Не всё так просто с null 🚫
Ключевое слово
Однако, если сделать явное приведение
Вывод:
Не скомпилируется только строка 3.
⚡️ Не перепутайте:
#java #java10 #var #inference #basics #интервью #java_interview_tasks
Ключевое слово
var (Java 10+) выводит тип переменной на основе инициализатора. Если мы пишем var c = null, компилятор не имеет ни малейшего представления, список это, строка или ваш кастомный класс. Поэтому такая запись запрещена.Однако, если сделать явное приведение
(String) null, тип становится известен, и var сработает.Вывод:
Не скомпилируется только строка 3.
⚡️ Не перепутайте:
var — это не динамическая типизация как в JS. Тип определяется один раз при компиляции и не может быть изменен позже.#java #java10 #var #inference #basics #интервью #java_interview_tasks
❤5👍1🔥1
Что произойдет, если виртуальный поток заблокируется внутри `synchronized` блока при выполнении долгой I/O операции?
Anonymous Quiz
30%
Виртуальный поток корректно освободит системный поток ("отпаркуется").
46%
Произойдет "закрепление" (pinning): системный поток будет заблокирован вместе с виртуальным.
16%
Виртуальный поток автоматически превратится в обычный платформенный поток.
8%
Ошибка RuntimeException.
🔥4
🔍 Ответ на задачу про Virtual Threads: Опасность synchronized 📌
В текущей реализации , начиная с Java 21 виртуальные потоки не могут освобождать системный (carrier) поток, если они находятся внутри
Вывод:
Системный поток будет заблокирован (ответ 2). Рекомендуется использовать
⚡️ Не перепутайте:
Это не значит, что
#java #java21 #virtualthreads #loom #concurrency #интервью #java_interview_tasks
В текущей реализации , начиная с Java 21 виртуальные потоки не могут освобождать системный (carrier) поток, если они находятся внутри
synchronized блока или вызывают нативный метод. Это называется Pinning. Если ваш код делает тяжелые сетевые вызовы внутри synchronized, вы можете забить все системные потоки и свести на нет всю пользу от виртуальных потоков.Вывод:
Системный поток будет заблокирован (ответ 2). Рекомендуется использовать
ReentrantLock, так как он не вызывает закрепления потока.⚡️ Не перепутайте:
Это не значит, что
synchronized — зло. Если операция внутри блока быстрая (просто инкремент), закрепление не будет проблемой.#java #java21 #virtualthreads #loom #concurrency #интервью #java_interview_tasks
👍4🔥1
Devoxx Belgium 2026 только закончилась:
https://youtube.com/playlist?list=PLKlmOVksNGoE&si=_BvX8q8qFK4hR4ig
https://youtube.com/playlist?list=PLKlmOVksNGoE&si=_BvX8q8qFK4hR4ig
🔥3
Что произойдет, если поток вызовет `tryLock()`, а замок уже занят другим потоком?
Anonymous Quiz
40%
Поток будет ждать (заблокируется), пока замок не освободится.
42%
Поток сразу напечатает "Busy" и пойдет дальше.
12%
Выбросится IllegalMonitorStateException.
5%
Произойдет Deadlock.
🔥3
Что произойдет, если поток вызовет
tryLock(), а замок уже занят другим потоком?ReentrantLock lock = new ReentrantLock();
// ... где-то в другом потоке lock.lock() ...
if (lock.tryLock()) {
try { /* работа */ }
finally { lock.unlock(); }
} else {
System.out.print("Busy");
}
🤯4❤1
🔍 Ответ на задачу про ReentrantLock: Попытка не пытка 🚪
Метод
Вывод:
Поток напечатает "Busy" и не будет блокироваться.
⚡️ Не перепутайте:
При использовании
#java #concurrency #multithreading #reentrantlock #интервью #java_interview_tasks
Метод
tryLock() — неблокирующий. Он мгновенно возвращает true, если замок удалось захватить, и false, если нет. Это позволяет потоку избежать ожидания и заняться чем-то другим или реализовать свою логику повторных попыток.Вывод:
Поток напечатает "Busy" и не будет блокироваться.
⚡️ Не перепутайте:
При использовании
lock() всегда вызывайте unlock() в блоке finally. Со synchronized об этом заботится сама JVM.#java #concurrency #multithreading #reentrantlock #интервью #java_interview_tasks
🔥4👍1🤨1
📂 Подборка интересных каналов по IT, AI & HR Tech ✔️
ИИ прямо сейчас переписывает правила работы с аналитикой, текстами, в продажах и дизайне. Вопрос уже не в том, заменит ли он людей, а в том, кто использует его раньше остальных.
В Подборке вы найдёте (кратко):
🔗 [ Добавить подборку ]
📩 Записаться в папку
ИИ прямо сейчас переписывает правила работы с аналитикой, текстами, в продажах и дизайне. Вопрос уже не в том, заменит ли он людей, а в том, кто использует его раньше остальных.
В Подборке вы найдёте (кратко):
AI-блок: новости, нейросети, ИИ-инструменты и кейсы внедрения, стартапы, датасеты
Dev-блок: Java, Python, JS (Frontend/Backend), Mobile, QA, промышленная автоматизация (IIoT)
Отдельно: HR Tech, IT-вакансии, биржа фриланса, SciPop, Cybersecurity, бизнес-новости, Agile/PMP-менеджмент
Бонус: IT-мемы и юмор
🔗 [ Добавить подборку ]
📩 Записаться в папку
👍4❤1🤝1
🇨🇳Kimi K3 VS GPT-5.6 Sol🇺🇸: что выбрать? ... чем хорош Kimi
Все обсуждают ChatGPT, но у Kimi от Moonshot AI из Китая есть свои сильные стороны:
— Kimi K3: $3 / $15 — открытые веса, 2.8T параметров;
— 1M токенов — ещё и с нативным видео;
— AA Intelligence Index v4.3 — 57 в v4.1;
— сложные задачи, контроль и приватность + видео ;
— можно развернуть у себя — нужен сервер от 64 GPU;
Если попросить Kimi собрать инфополе по IT и AI с нуля: он сформирует чистую подборку. Вот пример того, как получилась прекрасная информационная Лента из 20+ каналов по IT & AI: AI-воркфлоу, нейрогенерации, ИИ-инструменты и их внедрение, IT технологии: тренды, обзоры, инсайты от первых лиц и др.
🔗 [Посмотреть ИнфоЛенту от KIMI]
Все обсуждают ChatGPT, но у Kimi от Moonshot AI из Китая есть свои сильные стороны:
— Kimi K3: $3 / $15 — открытые веса, 2.8T параметров;
— 1M токенов — ещё и с нативным видео;
— AA Intelligence Index v4.3 — 57 в v4.1;
— сложные задачи, контроль и приватность + видео ;
— можно развернуть у себя — нужен сервер от 64 GPU;
Если попросить Kimi собрать инфополе по IT и AI с нуля: он сформирует чистую подборку. Вот пример того, как получилась прекрасная информационная Лента из 20+ каналов по IT & AI: AI-воркфлоу, нейрогенерации, ИИ-инструменты и их внедрение, IT технологии: тренды, обзоры, инсайты от первых лиц и др.
🔗 [Посмотреть ИнфоЛенту от KIMI]
❤3🔥1👌1
🤨6
Что выведет этот код?
Semaphore sem = new Semaphore(0);
sem.release();
sem.release();
System.out.println(sem.availablePermits());
🥴4
🔍 Ответ на задачу про Semaphore: Кто потерял ключи? 🔑
В отличие от многих других синхронизаторов,
Вывод:
Код напечатает 2. Это свойство часто используют для передачи сигналов между потоками: один поток ждет (
⚡️ Не перепутайте:
Если вам нужен строгий замок, где отдать ключ может только тот, кто его взял — используйте
#java #concurrency #semaphore #multithreading #интервью #java_interview_tasks
В отличие от многих других синхронизаторов,
Semaphore в Java — это просто счетчик. Метод release() просто увеличивает счетчик разрешений на единицу. Ему совершенно всё равно, вызывали ли вы acquire() до этого.Вывод:
Код напечатает 2. Это свойство часто используют для передачи сигналов между потоками: один поток ждет (
acquire), а другой подает сигнал о готовности (release).⚡️ Не перепутайте:
Если вам нужен строгий замок, где отдать ключ может только тот, кто его взял — используйте
ReentrantLock.#java #concurrency #semaphore #multithreading #интервью #java_interview_tasks
🔥2