Java Interview Tasks
Open in Telegram
Реальные вопросы и задачи с собеседований. Оригинальный авторский контент. Актуальный материал. Уровень вопросов от junior до supersenior. Автор канала - @alexzelentsov По рекламе: @alexzelentsov
Show more4 899
Subscribers
+624 hours
+757 days
+19030 days
Posts Archive
4 899
Что вернет метод `thenRun()`, если предыдущий этап вернул строку "Success"?
4 899
🔍 Ответ на задачу про instanceof: А если там null? 🧐
Согласно спецификации Java, оператор
instanceof всегда возвращает false, если левый операнд равен null. При этом никакой ошибки (NPE) не возникает.
Вывод:
Оба сравнения вернут false. null не является экземпляром ни одного класса, даже Object.
⚡️ Не перепутайте:
Вам не нужно проверять s != null перед использованием instanceof. Сам оператор уже делает эту проверку за вас.
#java #instanceof #null #basics #интервью #java_interview_tasks4 899
Оператор
instanceof кажется простым, но его поведение с null иногда застает врасплох.
Что выведет код?
String s = null;
System.out.println(s instanceof String);
System.out.println(s instanceof Object);4 899
🔍 Ответ на задачу про SQL: LEFT JOIN + WHERE — скрытый баг 🐛
LEFT JOIN гарантирует, что все строки из левой таблицы (customers) попадут в результат, даже если в правой таблице (products) нет совпадений — в этом случае столбцы правой таблицы заполняются NULL.
Однако условие WHERE p.status = 'SHIPPED' отфильтровывает все строки, где p.status IS NULL. Это означает, что клиенты без заказов будут исключены из результата, и LEFT JOIN фактически превратится в INNER JOIN.
Вывод:
WHERE по правой таблице превращает LEFT JOIN в INNER JOIN.
Чтобы сохранить поведение LEFT JOIN, условие фильтрации нужно перенести в ON:
SELECT c.NAME,
p.product_id
FROM customers c
LEFT JOIN products p
ON c.id = p.customer_id
AND p.status = 'SHIPPED';
#sql #leftjoin #where #bug #database #интервью #java_interview_tasks4 899
🔍 Ответ на задачу про Double.NaN: Неуловимое "Не число" 👻
- Согласно стандарту IEEE 754, `NaN` не равен самому себе. Поэтому `x == y` всегда `false`.
- Однако `Double.equals()` реализован так, что он считает два `NaN` равными. Это сделано для того, чтобы `NaN` можно было использовать в коллекциях (например, как ключ в `HashMap`).
Вывод:
Сравнение примитивов даст `false`, а объектов — `true`.
⚡️ Не перепутайте:
Для проверки на `NaN` у примитивов используйте `Double.isNaN(x)`.
#java #double #nan #floatingpoint #интервью #java_interview_tasks
4 899
🔍 Ответ на задачу про try-with-resources: Куда делось исключение? 🛡
В try-with-resources основным считается исключение, возникшее в блоке
try. Если при автоматическом закрытии ресурсов тоже возникнет исключение, оно не затрет основное, а будет добавлено в список "подавленных" (доступно через e.getSuppressed()).
Вывод:
Метод getMessage() вернет только основное исключение — "Try Error".
⚡️ Не перепутайте:
В старом стиле (через finally) исключение из finally могло "проглотить" исключение из try. Try-with-resources решает эту проблему.
#java #exceptions #trywithresources #suppressed #clean_code #интервью #java_interview_tasks4 899
Друзья, собрали с коллегами для вас новую папку с каналами
В Подборке вы найдёте (кратко):
AI-блок: новости, нейросети, ИИ-инструменты и кейсы внедрения, стартапы, датасеты
Dev-блок: Java, Python, JS (Frontend/Backend), Mobile, QA, промышленная автоматизация (IIoT)
Отдельно: Cybersecurity, SciPop, IT-вакансии, биржа фриланса, бизнес-новости, Agile/PMP-менеджмент
Бонус: IT-мемы и юмор
Посмотреть и подписаться можно здесь ⬇️ https://t.me/addlist/3rXhpT3aSR02YzA0
📩 Записаться в папку
4 899
Механизм try-with-resources (Java 7+) сильно упростил жизнь, но у него есть нюанс с "подавленными" (suppressed) исключениями.
Что напечатает программа, если и
close(), и тело try кидают исключения?
class Door implements AutoCloseable {
public void close() { throw new RuntimeException("Close Error"); }
}
try (Door d = new Door()) {
throw new RuntimeException("Try Error");
} catch (Exception e) {
System.out.println(e.getMessage());
}4 899
Что напечатает программа, если и `close()`, и тело `try` кидают исключения?
4 899
Десятки обновлений нейросетей и новых AI-инструментов выходят еженедельно. Вопрос только в том — узнаешь ли ты об этом первым?
Хочешь быть в их числе?
Мы собрали ПОДБОРКУ со всеми свежими ИИ-инструментами, фишками и апдейтами. Никакой воды — только то, что реально упрощает работу и приносит результат.
👉 Делимся знаниями и аудиторией — растём вместе ⚡️
Отписаться можно в любой момент. Остаться — тоже ✔️
Добавляй ПАПКУ в свой актив и делись с друзьями! 📌
4 899
🔍 Ответ на задачу про порядок инициализации: Кто первый — блок или конструктор? 🏗
Правило:
1. Сначала статические блоки родителя, потом ребенка (при первой загрузке класса).
2. Затем нестатические блоки родителя и его конструктор.
3. Только после этого нестатические блоки ребенка и его конструктор.
Вывод:
Сначала статика: 1, 4. Затем родитель: 2, 3. Затем ребенок: 5, 6. Итого: 142356.
⚡️ Не перепутайте:
Статика выполняется только один раз при загрузке класса, а обычные блоки — при каждом создании объекта перед конструктором.
#java #initialization #static #constructor #oop #интервью #java_interview_tasks
4 899
Понимание порядка инициализации полей и блоков — база для предсказания поведения сложных объектов.
В каком порядке выведутся цифры?
class Parent {
static { System.out.print("1"); }
{ System.out.print("2"); }
Parent() { System.out.print("3"); }
}
class Child extends Parent {
static { System.out.print("4"); }
{ System.out.print("5"); }
Child() { System.out.print("6"); }
}
public class Main {
public static void main(String[] args) {
new Child();
}
}4 899
🔍 Ответ на задачу про CompletableFuture: join() vs get() 🥊
Объяснение:
Оба метода ждут завершения задачи, но делают это по-разному.
get() объявлен в интерфейсе Future и выбрасывает InterruptedException и ExecutionException (оба checked). Это заставляет вас писать try-catch. join() — это метод CompletableFuture, он выбрасывает CompletionException (runtime), что гораздо удобнее при использовании в Stream API и лямбдах.
Вывод:
Логика ожидания у них одинаковая, разница только в обработке ошибок.
#java #completablefuture #concurrency #exception #java8 #backend #интервью #java_interview_tasks4 899
В чем главное отличие CompletableFuture `join()` от `get()`?
4 899
🔍 Ответ на задачу про String Pool: Магия intern() или где живет ваша строка? 🧵
Сравнение строк в Java через
== — это классика интервью. Но что произойдет, если мы начнем вручную управлять пулом строк?
Объяснение:
- s1 — это строковый литерал, он сразу попадает в String Pool.
- s2 создается через new String(), поэтому в куче (heap) создается новый объект, отличный от того, что в пуле. Сравнение s1 == s2 дает false.
- Метод intern() ищет строку в пуле. Если она там есть, он возвращает ссылку на объект из пула. Так как "Java" уже там была (от s1), s3 получит ту же самую ссылку.
Вывод:
s1 == s3 вернет true, так как обе переменные теперь ссылаются на один и тот же объект в String Pool.
⚡️ Не перепутайте:
- == сравнивает ссылки.
- equals() сравнивает содержимое.
- intern() — полезный инструмент для экономии памяти, если у вас много повторяющихся строк, созданных динамически.
#java #string #stringpool #intern #jvm #interview #java_interview_tasks