Alexandr Zelentsov
🔍 Ответ на задачу про Stream.reduce: Опасность identity 🚩
Первый аргумент reduce — это identity. Это значение, которое возвращается, если стрим пуст, и которое используется как начальное при вычислении.
Вычисление идет так: identity + element1 + element2...
В нашем случае: 10 + 1 + 2 + 3 = 16.
Вывод:
Напечатается 16. Если вы хотите просто сумму — identity должен быть 0. Если произведение — 1.
⚡️ Не перепутайте:
Identity должен быть нейтральным элементом для вашей операции. Для сложения это 0, для умножения 1, для конкатенации строк — пустая строка.
#java #streamapi #reduce #basics #интервью #java_interview_tasks
1 · 734 · Alexandr Zelentsov
Что выведет этот код?
LocalDate date = LocalDate.of(2024, 1, 1);
date.plusDays(10);
System.out.println(date.getDayOfMonth());
1 · 516 · Опрос
нажмите — покажем
1 · 558 · нажмите — покажем
Alexandr Zelentsov
🔍 Ответ на задачу про LocalDate: Ловушка иммутабельности 📅
Классы из пакета java.time (LocalDate, LocalTime, etc.) — immutable (неизменяемые), как и String. Любой метод, который якобы "меняет" объект, на самом деле возвращает новый объект с измененным состоянием. Исходный объект date остается прежним.
Вывод:
Напечатается 1. Чтобы получить 11, нужно было написать date = date.plusDays(10).
⚡️ Не перепутайте:
Всегда проверяйте, что вы используете возвращаемое значение методов java.time. Это одна из самых частых ошибок при переходе со старого Calendar.
#java #datetime #immutable #bug #basics #интервью #java_interview_tasks
1 · 568 · Что произойдет при вызове new User("")?
record User(String name) {
public User {
if (name.isEmpty()) throw new IllegalArgumentException();
}
}
2 · 588 · Alexandr Zelentsov
🔍 Ответ на задачу про Records: Компактный конструктор 📝
В рекордах (Java 16+) есть "компактный конструктор". У него нет круглых скобок с параметрами. Он автоматически получает те же параметры, что объявлены в заголовке рекорда. Это идеальное место для валидации или нормализации данных (например, name = name.trim()).
Вывод:
Код скомпилируется и выбросит исключение. Это правильный способ гарантировать валидность данных в Immutable записях.
⚡️ Не перепутайте:
В компактном конструкторе не нужно писать this.name = name, Java сделает это сама в конце.
#java #records #java17 #clean_code #basics #интервью #java_interview_tasks
1 · 605 · Какой класс НЕ сможет наследоваться от Shape?
sealed class Shape permits Circle, Square { }
final class Circle extends Shape { }
non-sealed class Square extends Shape { }
class Triangle extends Shape { }
1 · 478 · Alexandr Zelentsov
🔍 Ответ на задачу про Sealed Classes: Закрытая иерархия 🔒
Ключевое слово sealed (Java 17) разрешает наследование только тем классам, которые перечислены в списке permits. Любой другой класс (как Triangle) получит ошибку компиляции при попытке расширить Shape.
Наследники sealed класса обязаны быть либо final, либо sealed, либо non-sealed (открывающим иерархию обратно).
Вывод:
Triangle нет в списке разрешенных. Поэтому вариант с Triangle не скомпилируется.
⚡️ Не перепутайте:
Sealed-классы отлично работают вместе с Pattern Matching в switch, позволяя компилятору проверять, все ли возможные подтипы вы обработали.
#java #java17 #sealedclasses #oop #basics #интервью #java_interview_tasks
1 · 447 · Что выведет код?
int x = 1;
String result = switch (x) {
case 1 -> {
System.out.print("One");
yield "Result";
}
default -> "Other";
};
System.out.print(result);
1 · 374 · Alexandr Zelentsov
🔍 Ответ на задачу про Switch Expressions: yield или return? 🔄
В новых switch expressions (Java 14+) если вам нужно выполнить несколько действий в одном case, вы используете блок {}. Чтобы вернуть значение из такого блока наружу в переменную, используется ключевое слово yield.
Вывод:
Сначала выполнится System.out.print, затем значение "Result" вернется в переменную. Итого: OneResult.
⚡️ Не перепутайте:
yield используется только внутри switch. Не пытайтесь использовать его вместо return в обычных методах.
#java #switch #java14 #basics #syntax #интервью #java_interview_tasks
353 · Фотография
нажмите — покажем
нажмите — покажем
📂 Подборка каналов по AI, IT технологиям & HR Tech
Мы собрали полезные каналы для тех, кто работает в IT сфере, интересуется AI и хочет расширить свой кругозор без необходимости мониторить сотни источников самому, а также сделать качественный АПГРЕЙД своей новостной Ленты.
Что внутри:
– AI: реальные инструменты и внедрения, без хайпа;
– IT технологии: тренды, обзоры, инсайты от первых лиц;
– Карьера: как расти и не выгорать;
– HR Tech: кто и как нанимает профессионалов сейчас;
– AI life hacks: применение ИИ для тех, кто находиться за границей и ищет там удаленную работу.
🔗 [ Добавить подборку ]
* Сделай свою подписку умнее, пока другие читают вчерашние новости
📩 Записаться в папку
2 · 349 · Alexandr Zelentsov
Фотография
нажмите — покажем
нажмите — покажем
Если вы работаете в сфере IT, развиваетесь в технологиях или просто хотите быть в курсе самых важных новостей и трендов - эта папка для вас!
Что внутри:
▪️ IT-новости и главные события технологического мира
▪️ Полезные сервисы и инструменты для работы
▪️ Полезные материалы, которые можно сразу применять в работе
А также в папке есть Чат-нетворкинг: "ЗАЯВИ О СЕБЕ", где вы можете разместить информацию о себе, своих услугах, кейсах и оставить свои контакты.
🔥 Изучайте, подписывайтесь на интересные каналы и забирайте полезные знания, собранные в одной папке!
Жми на ссылку и присоединяйся: 👇
https://t.me/addlist/pOCltuM_vVk3NWI8
ЗАПИСАТЬ СВОЙ КАНАЛ В ПАПКУ
370 · Опрос
нажмите — покажем
1 · 376 · нажмите — покажем
Что выведет этот код?
Object obj = "Hello Java";
if (obj instanceof String s && s.length() > 5) {
System.out.print(s.toUpperCase());
} else {
System.out.print("Short or not a string");
}
1 · 398 · Alexandr Zelentsov
🔍 Ответ на задачу про Pattern Matching: Прощай, кастинг! 👋
В 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
2 · 389 · Собес в гугл:
3200021 разложить на множители
4 · 371 · Alexandr Zelentsov
Ответ на задачу про 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.
1 · 206 · Как текстовые блоки (Java 15+) определяют, где начинается контент, а где — просто отступы кода?
Сколько пробелов будет перед словом "Hello" в строке result?
String result = """
Hello
World
""";
2 · 314 · Alexandr Zelentsov
🔍 Ответ на задачу про Text Blocks: Считаем пробелы 📏
Текстовые блоки используют "алгоритм смещения" (incidental whitespace). Java находит самую левую границу текста во всем блоке (в данном случае это начало слова "World") и считает её за "ноль". Всё, что находится левее этой границы, отбрасывается.
Вывод:
Так как "Hello" смещено на 2 пробела относительно "World", в итоговой строке перед ним останется именно 2 пробела.
⚡️ Не перепутайте:
Положение закрывающих кавычек """ тоже влияет на отступы! Если вы сдвинете их левее текста, это создаст дополнительные пробелы.
#java #java15 #textblocks #syntax #basics #интервью #java_interview_tasks
2 · 253 · Фотография
нажмите — покажем
нажмите — покажем
😊 Ламповое комьюнити про ИТ, ИИ и digital
Наш канал вошел в подборку тг-каналов про ИТ, диджитал и Tech — это ламповое комьюнити для своих, где собраны люди из индустрии, кейсы, инструменты и полезные наблюдения.
В папке — каналы про:
➕новые инструменты, реальные кейсы и применение в работе
➕тренды, обзоры и взгляд tech-практиков
➕карьера и развитие в tech
➕поиск рабочих подходов и инструментов для ежедневных задач
🔠 Тык на папку https://t.me/addlist/Jyt5789h67djMDBi
1 · 218 ·