es
Feedback
Java Interview Tasks

Java Interview Tasks

Ir al canal en Telegram

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

Mostrar más
4 521
Suscriptores
Sin datos24 horas
-107 días
-2730 días
Archivo de publicaciones
Что напечатается в результате выполнения этого кода?
Anonymous voting

Задача для супер сеньоров: что напечатается в результате выполнения этого кода?
Задача для супер сеньоров: что напечатается в результате выполнения этого кода?

Ответ к вопросу про хеш: 1) Если класс не immutable и метод расчета хеш-код зависит от полей объекта , то такой хеш код скорее всего не годится, так как после изменения полей объекта, хеш меняться не будет - это обычно приводит к проблемам 2) Если класс неизменяемый, то первой проблемы нет, зато есть concurrency баг - поле hash никак не синхронизировано, и внутри метода hashcode состояние этого поля меняется под гонкой => могут быть разные эффекты: - пересчет hashcode может вызваться несколько раз, если поток увидит в поле hash 0 - в методе hashcode два чтения поля hash, может возникнуть ситуация когда эти два чтения будут разные, например даже так: первый раз прочитается поле и поток увидет не ноль , а второй раз в return увидит 0 Похожий код был в старых версиях jdk в классе String, вот подробности - https://bugs.openjdk.org/browse/JDK-8166842

photo content

Какие проблемы есть в этом коде?

Repost from Java Developer
Ответ: "test" Способ вычисления хэша map, set, list - это часть контракта соответствующих интерфейсов. Каждая реализация должна использовать формулу, указанную в контракте. Поэтому поведение будет общим для всех JDK. Посмотрим теперь, какой же контракт и конкретные формулы для подсчета хеша у мапы. "The hash code of a map is defined to be the sum of the hash codes of each entry in the map's entrySet() view." Посмотрим, как вычисляется хешкод у Map.Entry: "The hash code of a map entry e is defined to be: (e.getKey()==null ? 0 : e.getKey().hashCode()) ^ (e.getValue()==null ? 0 : e.getValue().hashCode())" Зная это, мы можем посчитать хешкод нашей мапы: он будет равен 0. Почему? Так как у единственной Map.Entry совпадают значения ключа и значения, то их хешкоды будут совпадать, а значит хешкод Map.Entry будет равен 0 (XOR двух одинаковых чисел дает всегда 0). После добавления второго Map.Entry хешкод останется равным 0, так как там тоже совпадают значения ключа и значения. Повезло, повезло. В итоге при вызове метод get будет искать Map.Entry в нужном бакете и, встретив нужную ноду, вызовет equals, который вернет true, так как при вставке значение ключа не копируется, и он будет отображать все изменения, которые с ним происходили. Естественно, изменять ключ после вставки в HashMap крайне не рекомендуется, иначе потом можно его не найти. Но в данном конкретном случае нам повезло, что хешкод не изменился.

Repost from Java Developer
photo content

Repost from Java Developer
Что выведет код ниже?
Anonymous voting

Привет, это команда Тинькофф 💡 Наше большое Java-комьюнити решает крутые задачи — создает высоконагруженные сервисы для 27 м
Привет, это команда Тинькофф 💡 Наше большое Java-комьюнити решает крутые задачи — создает высоконагруженные сервисы для 27 миллионов клиентов. Мы экспериментируем и ищем новые решения. Приглашаем в команду Java-разработчиков с опытом от трех лет! Работать с нами значит: — не ограничивать свои скиллы и вводить в сервисы новые фичи; — делать жизнь миллионов людей удобнее и технологичней; — расти в грейде по скиллам, а не по стажу в компании; — становиться заметным в Java-комьюнити. А еще мы всегда «за» действительно комфортную работу. Поэтому большинство бытовых забот делегируем компании: от расширенного ДМС и юридической помощи до питания и разных активностей. Откликнуться и узнать подробнее о Java-команде Тинькофф: https://o.tinkoff.ru/kotlin.java

Использовали ли вы когда-нибудь StampedLock?
Anonymous voting

Проблема тут в том, что параллельный стрим запускается в commonThreadPool , этот тред пул один - он предназначен для неблокирующих операций, а в данном примере кода в нем будут запускаться сетевые запросы. Это может привести к тому, что пока данный стрим будет работать и блокироваться на сетевых вызовах, остальные параллельные стримы и CompletableFuture's в системе будут висеть в очереди. Статьи на эту тему: https://dzone.com/articles/be-aware-of-forkjoinpoolcommonpool https://www.baeldung.com/java-8-parallel-streams-custom-threadpool

Какие проблемы могут быть с этим кодом?
Какие проблемы могут быть с этим кодом?

Ответ к задаче про atomic (https://t.me/java_interview_tasks/195): Проблема в том, что внутри класса AtomicInteger поле value
Ответ к задаче про atomic (https://t.me/java_interview_tasks/195): Проблема в том, что внутри класса AtomicInteger поле value не final, а volatile поле не имеет final семантики, поэтому если мы публикуем ссылку объекта пол гонкой, то можно увидеть дефолтное значение поля (0 в данном случае) Похожая задача была тут - https://t.me/java_interview_tasks/140 0 можно получить на AArch64: RESULT SAMPLES FREQ -1 1,358,737,999 90.09% 0 8,322 <0.01% 42 149,426,735 9.91%

Какие значения может напечатать код (thread1 и thread2 запускаются одновременно в разных потоках)?
Anonymous voting

Какие значения может напечатать код (thread1 и thread2 запускаются одновременно в разных потоках)?
Какие значения может напечатать код (thread1 и thread2 запускаются одновременно в разных потоках)?

Начни карьеру разработчика с Java ✈️ Вечером, 10 ноября в 19:00 (мск), обсудим, с чего лучше начать карьеру в Java, какие воз
Начни карьеру разработчика с Java ✈️ Вечером, 10 ноября в 19:00 (мск), обсудим, с чего лучше начать карьеру в Java, какие возможности есть у разработчиков на сегодняшний день и какой уровень зарплат стоит ожидать специалистам. Заметно повысились требования работодателей к Junior и Middle-специалистам, поэтому важно понимать, какими навыками следует обладать современным разработчикам и каких ошибок избегать, чтобы успешно конкурировать в мире IT. Также на вебинаре мы презентуем курс «Backend Java Developer», который стартует в ноябре. Во время онлайн-вебинара вы сможете задавать вопросы. Все участники получат специальный бонус - Чек-лист «Как вырасти с Джуна до уровня Сеньор в backend разработке». Ждем тебя на бесплатном вебинаре 10 ноября! Только онлайн, никакой записи))) Регистрируйся, до встречи!

Здесь проблема в том, что сумма будет ровна 1,0..01е199 , где в мантиссе числа 199 нулей и поэтому это число нельзя представить точно в виде double (там на мантиссу выделяется 53 бита), поэтому будет округление Еще вопросы про double: https://t.me/java_interview_tasks/85 https://t.me/java_interview_tasks/150

Что будет напечатано? List list = List.of(null, "1", "2"); String result = list.stream().findFirst().orElse(""); System.out.println(result);
Anonymous voting

ывыв