ru
Feedback

Не попадитесь на канал ботавода! Telemetrio находит и помечает такие каналы 👉 Хотите видеть метку — оформите подписку 👈

Java Interview Tasks

Java Interview Tasks

Открыть в Telegram

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

Больше
4 896
Подписчики
Нет данных24 часа
+137 дней
+18830 дней
Архив постов
Задача для супер сеньоров, часть 2, что напечатается?
Anonymous voting

Задача для супер сеньоров, часть 2, что напечатается?
Задача для супер сеньоров, часть 2, что напечатается?

Что напечатается в результате выполнения этого кода?
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