Java Interview Tasks
4.18K subscribers
199 photos
1 file
124 links
Реальные вопросы и задачи с собеседований.
Оригинальный авторский контент.
Актуальный материал.
Уровень вопросов от junior до supersenior.

Автор канала - @alexzelentsov

По рекламе: @alexzelentsov и https://telega.in/c/java_interview_tasks
Download Telegram
Оцените код по 10-ти бальной системе (10 - наилучший код в истории человечества)
Anonymous Poll
18%
1
8%
2
8%
3
4%
4
15%
5
4%
6
11%
7
4%
8
2%
9
27%
10
🤣5👍3🔥2
Что произойдет при выполнении следующего кода на Java?
🔥3👍1
Что произойдет при выполнении следующего кода на Java?
Anonymous Quiz
4%
A, B, C, D, E
72%
A, C, D, E
7%
A, D
1%
A, C, E
4%
узнать ответ
13%
делить на ноль нельзя
🔥4👍2
🔍 Ответ на задачу про исключения в Java

Давайте разберемся, что произойдет при выполнении представленного кода! ⬇️
public class ExceptionTest {
public static void main(String[] args) {
try {
System.out.println("A");
int result = 10 / 0; // Здесь возникнет ArithmeticException
System.out.println("B"); // Эта строка не будет выполнена
} catch (ArithmeticException e) {
System.out.println("C");
} finally {
System.out.println("D");
}
System.out.println("E");
}
}

Рассмотрим выполнение программы по шагам:

"A" будет напечатано, так как это первое действие в блоке try.
Далее происходит деление на ноль (10 / 0), что вызывает ArithmeticException.
Блок catch перехватывает исключение, и "C" выводится на экран.
Блок finally выполняется всегда, независимо от того, поймано ли исключение, таким образом, "D" будет напечатано.
После выполнения всех блоков try-catch-finally программа продолжает выполнение, поэтому "E" также будет напечатано.
Итак, правильная последовательность вывода: A, C, D, E. 🎉

Не забудьте поставить лайк, подписаться на наш канал и оставляйте комментарии! 💬👉

#Java #Исключения #ОбработкаИсключений #java_interview_tasks
👍10🔥3🙏2
Что произойдет при запуске следующего кода?
🔥4
Что произойдет при запуске следующего кода?
Anonymous Quiz
9%
Код скомпилируется и выполнится, одновременно будут запущены два потока.
56%
Код скомпилируется и выполнится, но "thread.run()" будет выполняться в основном потоке.
16%
Код скомпилируется, но вызовет исключение во время выполнения.
8%
Код не скомпилируется.
13%
Узнать что произойдет
🔥4👍1
🔍 Ответ на задачу про работу с многопоточностью в Java

Давайте разберёмся, что происходит при запуске данного кода! 🔍
public class ThreadTest {
public static void main(String[] args) {
Thread thread = new Thread(() -> {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + " - " + i);
}
});

thread.start();
thread.run();
}
}

Объяснение:

thread::start — запускает новый поток, который выполняет переданное лямбда-выражение. В отдельном потоке выводятся значения от 0 до 4. Поток выполняет метод run, и будет выполняться параллельно с основным потоком.

thread::run — здесь метод run вызывается в основном потоке так, как если это был обычный метод, а не в отдельном потоке. Это означает, что в основном потоке без создания нового потока пойдет выполнение того же самого кода ещё раз, так как метод run просто выполняется в потоке, из которого он был вызван.

Следовательно, программа завершится успешным выполнением, и будут выведены две последовательности от 0 до 4. Таким образом, правильный ответ — Код скомпилируется и выполнится, но "thread::run()" будет выполняться в основном потоке.

Эта ситуация — прекрасный пример, демонстрирующий разницу между методами start() и run() в многопоточности. 🌟

Не забудьте поставить лайк, подписаться на канал и оставлять комментарии с вашими идеями и вопросами! 💬👉

#Java #Многопоточность #Concurrency #java_interview_tasks
🔥8👍63
Что напечатает код?
🔥5👍2
🔥8👍2😢1
🔍 Ответ на задачу про исключение в стримах Java! 🚨

При выполнении данного кода возникнет исключение NullPointerException.
Давайте разберём, почему это происходит. 🤔

Код:
 
public static class Fee {
private String description;

public Fee(String description) {
this.description = description;
}

public String getDescription() {
return description;
}
}

public static void main(String[] args) {
List<Fee> fees = List.of(new Fee(null));
String s = fees.stream()
.map(Fee::getDescription)
.findFirst()
.orElse("1");
System.out.println(s);
}


Проблема возникает в строчке findFirst(). Метод .map(Fee::getDescription) создаёт стрим, где первый элемент имеет значение null из-за description равного null в объекте Fee.

Когда findFirst() пытается вернуть найденное значение — а это null — метод Optional.of() выбрасывает NullPointerException, поскольку Optional.of() не позволяет обёртывать null значениями. Для обработки null значений нужно использовать Optional.ofNullable().

Чтобы исправить это и избежать исключения, можно немного изменить этот код:

String s = fees.stream()
.map(Fee::getDescription)
.filter(Objects::nonNull) // добавляем этот фильтр
.findFirst()
.orElse("1");
Этот код сначала фильтрует все null значения из стрима и предотвращает NullPointerException.

Если вам понравился разбор, не забудьте поставить лайк, подписаться и оставить комментарий! 😊

#streamAPI #nullHandling #java_interview_tasks
🔥21👍91🤝1
Нужно найти элемент в коллекции по значению, какую реализацию лучше выбрать с точки зрения асимптотической сложности?
Anonymous Quiz
36%
ArrayList
15%
LinkedList
47%
Разницы нет
2%
Узнать ответ
👍5🔥3
Ответ к вопросу про поиск элемента в коллекции по значению:
В случае обеих предложенных реализаций нужно будет последовательно перебрать все элементы в коллекции. Поэтому сложность будет О(n) и для случая linked list и для array list. В данном варианте разницы с точки зрения сложности поиска нет.
👍5🔥31
Что напечатает код?
🔥7🥴2😢1
🔍 Ответ на задачу про MegaClass 📊

Давайте разберём, что именно будет напечатано при выполнении данного кода. Здесь мы имеем класс MegaClass с переопределёнными методами equals() и hashCode(), и работаем с объектами этого класса в HashSet. Обратите внимание на влияние изменения состояния объекта на результат работы методов, связанных с коллекциями.

Пояснения:

A: set.add(o) - Возвращает true, потому что объект o только что добавлен в set.

B: set.contains(new MegaClass(10)) - Возвращает false, так как после изменения поля i, o имеет hashCode = 1000, который не совпадает с 1000 у new MegaClass(10).

C: set.add(new MegaClass(10)) - Возвращает true, объект с hashCode равным 10 не найден в set, потому что изменили o.

D: set.contains(new MegaClass(1000)) - Возвращает false, так как теперь oбъект, у которого hashcode 1000, содержится в set, но предыдущий объект был добавлен с хешкодом 10 и поэтому он не найдется теперь.

E: new MegaClass(10).equals(new MegaClass(1000)) - Возвращает false, так как поля i отличаются.

📈 Этот пример отлично демонстрирует, насколько важно соблюдать неизменяемость полей, участвующих в вычислении hashCode() и equals(), при работе с коллекциями.

Если вам понравился анализ этого кода и вы хотите узнавать больше, ставьте лайк, подписывайтесь на канал и делитесь своими мыслями в комментариях! 👍💬

#java #hashcode #equals #collections #java_interview_tasks
🔥8👍53
Задача с собеседования.
🔥7👍2🐳1
#реклама
Ваш конкурент уже использует ИИ не так, как пишут в блогах. И вот почему вы этого не видите.

Каждый день выходит сотня статей: «10 нейросетей, которые изменят всё». Вы пробуете ChatGPT, Midjourney, но результат — как у всех. Милые картинки и шаблонные тексты. Где же прорывная эффективность? Где то самое конкурентное преимущество?

Секрет в том, что по-настоящему крутые кейсы и инсайты рождаются не в публичном поле, а в закрытых коммьюнити и чатах практиков. Пока мы читаем новости о вчерашнем дне, они:
🔹 Уже тестируют свежие, нераскрученные модели с открытым весом.
🔹 Делятся промтами, которые дают на 80% более качественный результат.
🔹 Спорят о том, какой стек технологий умрет через год, а какой — взорвет рынок.
🔹 Находят подводные камни в API новых моделей, экономя своим компаниям тысячи долларов.


Я устал рыскать по всему интернету и собрал их всех в одну папку.

Подписка на эту папку — это как иметь личный канал в Slack с лучшими умами в области ИИ.
Это не про «какую нейросеть выбрать для картинок». Это про то, как сделать ИИ вашим реальным инструментом для роста, а не игрушкой.


Если готовы? Подписывайтесь здесь
😐4
Если машина проехала весь путь в одну сторону со скоростью 40 км/ч, а обратно - со скоростью 60 км/ч, какова была её средняя скорость?
Anonymous Quiz
57%
50
25%
48
5%
45
1%
40
0%
30
5%
Другой ответ
7%
Узнать ответ
🤔13🐳3🔥2😁21
Ответ на контринтуитивную задачу про среднюю скорость:
Пусть длина пути в одну сторону будет 1. Тогда весь путь, пройденный машиной, будет 2.
Время, затраченное на путь в одну сторону со скоростью 40 км/ч, равно:
t1=1/40 часов

Время, затраченное на обратный путь со скоростью 60 км/ч, равно:
t2=1/60 часов

Общее время, затраченное на весь путь, будет:
t=t1+t2=1/40+1/60=5/120=1/24

Средняя скорость определяется как отношение всего пройденного пути к общему времени:
vср=2/t=48
Ответ:48км/ч
👍7😡2🔥1👌1