ch
Feedback
Java Interview Tasks

Java Interview Tasks

前往频道在 Telegram

Реальные вопросы и задачи с собеседований. Оригинальный авторский контент. Актуальный материал. Уровень вопросов от junior до supersenior. Автор канала - @alexzelentsov По рекламе: @alexzelentsov и https://telega.in/c/java_interview_tasks

显示更多
4 521
订阅者
-324 小时
-97
-2730
帖子存档
Ответ про второй код с ConcurrencyStorage2: Тут тоже concurrency проблема, связанная с тем, что теперь поле volatile, но сама мапа не thread-safe и поэтому нет гарантий, что другие потоки увидят данные обновленные в fillStorage(); Что бы исправить эту проблему, можно взять ConcurrentHashMap и использовать его как storage;

корректно ли будет работать код в многопоточной среде?
Anonymous voting

#concurrency2 корректно ли будет работать код в многопоточной среде?
#concurrency2 корректно ли будет работать код в многопоточной среде?

Ответ про код с ConcurrencyStorage: Тут concurrency проблема, связанная с тем, что ссылка на storage заново присваивается в методе fillStorage() и нет гарантий что другой поток, который вызовет метод getValue() увидит данные, обновленные в fillStorage(); Что бы эту проблему исправить, можно, например, сделать поле storage volatile: private volatile ConcurrentMap<String, String> storage = new ConcurrentHashMap<>();

корректно ли будет работать код в многопоточной среде?
Anonymous voting

#concurrency корректно ли будет работать код в многопоточной среде?
#concurrency корректно ли будет работать код в многопоточной среде?

✨ Ответ на вопрос про передачу переменных и их влияние на результаты ✨ 🔍 Пояснение: Первый вызов: 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 важно понимать различие между примитивными типами и объектами. Примитивы передаются по значению, а объекты – по ссылке, что приводит к таким результатам. 🎉

Что напечатает код?
Что напечатает код?

Уже в 4-ый раз встречаю на собеседовании задачу про зацикленный поезд. Вот здесь хорошее объяснение: https://youtu.be/YMYjjoiE0xI?si=66g8-2EfNVgJ79DZ

Ответ на вопросы про сравнение double: Сравнение 0.0 > -0.0 возвращает false, поскольку 0.0 не больше -0.0. Если бы использовался оператор == для сравнения, то 0.0 == -0.0 вернуло бы true. Это происходит потому, что в Java 0.0 и -0.0 считаются разными значениями с плавающей точкой. Однако при сравнении с использованием оператора > (больше) Java считает оба значения равными.

var b = 0.0 == -0.0;
Anonymous voting

var b = 0.0 > -0.0;
Anonymous voting

Ответ на вопрос про деление int: Операция деления в Java для целых чисел (int) отбрасывает дробную часть. Таким образом, 3 / 2 будет равно 1

Что напечатает код?
Anonymous voting

Что напечатает код?
Что напечатает код?

Ответ к задаче про рыбаков и работников на заводе: 🔍 Условия: Каждый третий рыбак работает на заводе. Каждый четвертый работник на заводе — рыбак. 📊 Если обозначить количество рыбаков как ( R ), а работников на заводе как ( W ), то: Рыбаки, работающие на заводе: ( \frac{R}{3} ). Работники завода, которые являются рыбаками: ( \frac{W}{4} ). Так как это одно и то же количество, у нас получается уравнение: [ R/3 = W/4 ] 🙌 Тогда: [ 4R = 3W ] 💡 Это значит, что: [ R/W = 3/4 ] А это уже говорит о том, что работников на заводе в 1.33 раза больше, чем рыбаков! 🛥 Вывод: Работников на заводе больше, чем рыбаков! 🤔✨

Задача на логику: Каждый третий рыбак — работает на заводе, а каждый четвертый работник на заводе — рыбак. Кого больше, рыбаков или работников на заводе?

Ответ на вопрос про FailedConstruction и делеление на 0: В конструкторе происходит деление на ноль (100 / 0.0). В отличие от целочисленного деления, деление на ноль с плавающей точкой (double) не вызывает исключение, а результатом будет Infinity. ✅ Таким образом, программа не завершится с ошибкой, и код успешно выполнится. В результате в консоль будет выведено 1.

Что напечатает код?
Anonymous voting

Что напечатает код?
Что напечатает код?