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

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

По рекламе: @alexzelentsov и https://telega.in/c/java_interview_tasks
Download Telegram
Ответ к задаче про рыбаков и работников на заводе:

🔍 Условия:

Каждый третий рыбак работает на заводе.
Каждый четвертый работник на заводе — рыбак.
📊 Если обозначить количество рыбаков как ( R ), а работников на заводе как ( W ), то:

Рыбаки, работающие на заводе: ( \frac{R}{3} ).
Работники завода, которые являются рыбаками: ( \frac{W}{4} ).
Так как это одно и то же количество, у нас получается уравнение: [ R/3 = W/4 ]

🙌 Тогда: [ 4R = 3W ]

💡 Это значит, что: [ R/W = 3/4 ]

А это уже говорит о том, что работников на заводе в 1.33 раза больше, чем рыбаков!

🛥 Вывод: Работников на заводе больше, чем рыбаков! 🤔
👍6👏1
Что напечатает код?
👍6🔥1
Что напечатает код?
Anonymous Quiz
16%
1.5
72%
1
7%
1.49999
1%
1.51111
3%
другой ответ
👍7🤷‍♂3🔥3
Ответ на вопрос про деление int:
Операция деления в Java для целых чисел (int) отбрасывает дробную часть. Таким образом, 3 / 2 будет равно 1
🔥8👍2🐳2
🔥8👍3🐳21🥱1
🔥7👍32🙏1🥱1
Ответ на вопросы про сравнение double:
Сравнение 0.0 > -0.0 возвращает false, поскольку 0.0 не больше -0.0. Если бы использовался оператор == для сравнения, то 0.0 == -0.0 вернуло бы true.

Это происходит потому, что в Java 0.0 и -0.0 считаются разными значениями с плавающей точкой. Однако при сравнении с использованием оператора > (больше) Java считает оба значения равными.
👍6🔥1🙏1
Что напечатает код?
👍7🔥3🙏1
Ответ на вопрос про передачу переменных и их влияние на результаты

🔍 Пояснение:

Первый вызов: recalculate(i)

Переменная i имеет значение 1.
При передаче i в метод recalculate(int i), создаётся копия значения 1.
Внутри метода i присваивается значение 2, и метод возвращает 2.
Однако, оригинальная переменная i в main остаётся равной 1.
Вывод: 2 (результат метода)
Второй вывод: System.out.print(i)

Печатаем оригинальное значение i, которое осталось 1.
Вывод: 1
Третий вызов: recalculateInt(j)

j - это объект типа Integer, который также имеет значение 1.
Передача j в метод recalculateInt(Integer i) создает ссылку на объект, однако при присваивании i = 2 мы создаем новую ссылку, которая не влияет на оригинальный объект j в main.
Метод возвращает 2.
Вывод: 2 (результат метода)
Четвёртый вывод: System.out.print(j)

Оригинальная переменная j остается равной 1, потому что Integer является неизменяемым классом в Java.
Вывод: 1
📌 Итоговый вывод программы:
2121

⚡️ Вывод: В Java важно понимать различие между примитивными типами и объектами. Примитивы передаются по значению, а объекты – по ссылке, что приводит к таким результатам. 🎉
👍82🔥2
#concurrency корректно ли будет работать код в многопоточной среде?
🔥4👍2😐1
корректно ли будет работать код в многопоточной среде?
Anonymous Quiz
20%
да
65%
нет
14%
узнать ответ
🔥4👍21
Ответ про код с ConcurrencyStorage:
Тут concurrency проблема, связанная с тем,
что ссылка на storage заново присваивается в методе fillStorage()
и нет гарантий что другой поток, который вызовет метод getValue() увидит данные,
обновленные в fillStorage();
Что бы эту проблему исправить, можно, например, сделать поле storage volatile:
private volatile ConcurrentMap<String, String> storage = new ConcurrentHashMap<>();
👍6🔥2🙏1
#concurrency2 корректно ли будет работать код в многопоточной среде?
🔥3👍21
корректно ли будет работать код в многопоточной среде?
Anonymous Quiz
22%
да
67%
нет
11%
узнать ответ
🔥3👍2🙏1
Ответ про второй код с ConcurrencyStorage2:
Тут тоже concurrency проблема, связанная с тем, что теперь поле volatile, но сама мапа не thread-safe и поэтому нет гарантий,
что другие потоки увидят данные обновленные в fillStorage();
Что бы исправить эту проблему, можно взять ConcurrentHashMap и использовать его как storage;
👍11🔥1🙏1
Что будет в результате выполнения кода?
👍5🔥21
👍3🔥2🙏2😭1
Что будет в результате выполнения кода?
👍7💩2🔥1
🔥6👍21
Ответ на вопросы про List<?>:
List<?> это список элементов неизвестного типа. Он применяется в ситуациях, когда важно работать с самим списком, но конкретный тип элементов в нём не имеет значения. Из такого списка можно только извлекать значения, но нельзя добавлять новые элементы (кроме null). Поэтому в первом коде будет ошибка компиляции, а во втором будет все хорошо.
👍13🔥3🤔1🙏1