fa
Feedback
Java Interview Tasks

Java Interview Tasks

رفتن به کانال در Telegram

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

نمایش بیشتر
4 521
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-107 روز
-2730 روز
آرشیو پست ها
Может ли метод print напечатать 0, 1 или 2?
Anonymous voting

Ответ к вопросу про инкремент под гонкой: Рассуждения аналогичные как и тут: https://t.me/java_interview_tasks/96 Для примера
Ответ к вопросу про инкремент под гонкой: Рассуждения аналогичные как и тут: https://t.me/java_interview_tasks/96 Для примера, посмотрим, как может получится 2 - это самый интересный случай (см. картинку к посту) Остальные варианты (больше 2) возможно получить аналогичными рассуждениями. Выводы: этот простой пример показывает, что не синхронизированный счётчик может терять много данных. Если вам нужно использовать счётчик под гонкой, то надо синхронизировать инкремент или использовать уже синхронизированные счётчики, например, AtomicInteger

Что может напечатать метод print?
Anonymous voting

Что может напечатать метод print?
Что может напечатать метод print?

Проблема, с которой мы сталкиваемся, связана с тем, как компилятор Java обрабатывает varargs внутри условных выражений, особенно когда ветви условия производят разные типы. Вот подробное объяснение и пошаговое решение: когда мы используем условное выражение, компилятор не может обернуть только одну из ветвей. Он воспринимает условное выражение как целое. Поскольку тип ветви then — String, а тип ветви else — Object[], тип всего условного выражения является общим суперклассом для String и Object[], то есть просто Object. Это не массив, поэтому компилятор добавляет автоматическое оборачивание, что означает, что массив params будет обернут ещё раз. Вы можете исправить это, если не будете полагаться на компилятор и обернете строку вручную: params.length == 0 ? new Object[]{"default"} : params. Однако, вероятно, будет менее запутанно вообще избегать условных выражений внутри вызова метода с varargs.

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

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

Тут может возникнуть ощущение что будет s=4, но сложение идет перед конкатенацией, однозначно бы выглядел код: String str = "s=" + (index + 1);

String str = "s=" + index + 1; Что будет в переменной str, если index = 3?
Anonymous voting

В приведенном коде ошибка заключается в том, что метод add класса BigInteger не изменяет текущее значение объекта, а возвращает новый объект BigInteger, который является результатом сложения. BigInteger является неизменяемым классом, что значит, что все его методы возвращают новые объекты, а не изменяют текущий объект. Поэтому, результат вызова value.add(BigInteger.ONE) не сохраняется и не присваивается обратно переменной value. Исходная переменная value остается прежней и не изменяется. Вот как выглядит исходный код:
BigInteger value = BigInteger.TWO;
value.add(BigInteger.ONE);

System.out.println(value);  // Выводит 2, а не 3
В этом коде System.out.println(value) выведет 2, потому что переменная value не была изменена. Чтобы исправить этот код и получить правильный результат, необходимо присвоить результат выполнения метода add обратно переменной value:
BigInteger value = BigInteger.TWO;
value = value.add(BigInteger.ONE);

System.out.println(value);  // Теперь выведет 3

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

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

Тут проблема в отсутствии скобок и поэтому отрицание пытается примениться к obj, а это Object и поэтому код не скомпилируется. Правильный вариант будет такой: if (!(obj instanceof String)) {...}

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

Что напечатает код, если obj = "123"?
Что напечатает код, если obj = "123"?

Тут опять проблема в порядке операций, что может ввести в заблуждение - тернарный оператор имеет низкий приоритет. Пример корректного варианта (который не вводит в заблуждение других): return "Str:" + (value != null ? value : "(---)");

Что напечатает код если value = null?
Anonymous voting

Что вернет метод, если value = null?
Что вернет метод, если value = null?

photo content

Text blocks появились с java 15, но после начала блока должен быть переход на новую строку, поэтому вариант из прошлого вопро
Text blocks появились с java 15, но после начала блока должен быть переход на новую строку, поэтому вариант из прошлого вопроса не компилируется, правильный вариант будет такой