en
Feedback
Java Interview Tasks

Java Interview Tasks

Open in Telegram

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

Show more
4 521
Subscribers
-324 hours
-97 days
-2730 days
Posts Archive
Что может напечатать код? (actor1 и actor2 вызываются параллельно в разных потоках).
Что может напечатать код? (actor1 и actor2 вызываются параллельно в разных потоках).

🔍 Ответ на задачу про то, как Java выбирает перегрузку метода? 🚀🚀🚀Когда вы вызываете метод в Java, который имеет несколько перегруженных вариантов, компилятор должен решить, какой из них использовать. Давайте разберёмся, как он это делает на примере вызова метода printFor(42). Вот правила, которыми руководствуется компилятор: 🚀 Точный тип: Ищет метод с точным совпадением типа аргумента. У нас его нет для int, так как метода printFor(int) нет. 🚀 Примитивное расширение (widening): Далее проверяется, можно ли расширить примитивный тип. 42 (int) может быть преобразован в long, и метод printFor(long) подходит. 🚀 Автоупаковка (boxing): Если расширение невозможно, оценивается автоупаковка. int может стать Integer, что делает метод printFor(Integer) возможным, но менее предпочтительным, чем printFor(long). 🚀 Varargs (массив произвольной длины): Как запасной вариант, компилятор рассматривает использование varargs. Метод printFor(int...) подходит, но также менее предпочтителен. 🚀 Автоупаковка в Object: Ещё менее специфичный вариант — преобразование в Integer и затем в Object для printFor(Object). 🔗🔗 🔗 В итоге, компилятор выбирает printFor(long), потому что расширение примитивного типа более предпочтительно, чем автоупаковка и varargs. Это позволяет Java эффективно и предсказуемо обрабатывать вызовы методов! 🎓 Надеюсь, это было полезно! Оставьте свои вопросы, лайки и комментарии ниже. 👇 #Java #Программирование #CodingTips #JavaTips #java_interview_tasks

#реклама 🔥 Хочешь быть в авангарде технологий и управлять будущим? Тогда это твой билет в мир ИТ, ИИ и нейросетей! 🤖✨ Представь, что ты всегда на шаг впереди: знаешь о самых свежих трендах, получаешь эксклюзивные знания и открываешь двери к новым карьерным вершинам. Звучит круто? Тогда не упусти шанс! Почему стоит подписаться прямо сейчас? 🚀 Быть на гребне технологической волны и опережать конкурентов 🚀 Получать доступ к уникальным курсам, вебинарам и инсайтам от экспертов 🚀 Прокачивать свои навыки и строить карьеру мечты
🔥 Только для тех, кто хочет больше — присоединяйся к нашей подборке и начни менять своё будущее уже сегодня!
👉 Жми сюда и будь в числе первых: https://t.me/addlist/qmGQb4T5fpZjYWY6 Не упусти свой шанс стать профи, за которым будущее!

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

Что напечатает код? (Ответ с разъяснениями как обычно завтра)
Что напечатает код? (Ответ с разъяснениями как обычно завтра)

sticker.webp0.10 KB

#реклама ☀️ Летние новости в мире AI, IT и маркетинга: https://t.me/addlist/XRNhqFy2oug3MjJi — Apple превратила Siri в умного
#реклама ☀️ Летние новости в мире AI, IT и маркетинга: https://t.me/addlist/XRNhqFy2oug3MjJi — Apple превратила Siri в умного собеседника — теперь она не только включит таймер, но и подскажет, как тебе жить. — Маркетологи бегут из Google — нейросети отвечают быстрее и умнее. — LinkedIn сам пишет за тебя — посты, вакансии и даже диалоги. 📂 Пока все делают "генерик-контент с AI", мы собрали неочевидную, но качественную подборку: — нестандартные промты, которые открывают новый взгляд на твой продукт; — микс ИИ-инструментов, которые не только «вау», но и «дело»; — контентные ходы, которые цепляют даже тех, кто всё уже видел. 🔗 ЗАБРАТЬ ПОДБОРКУ ЛЕТНИХ НОВОСТЕЙ

🔍 Ответ на вопрос про volatile и массивы в Java: 📌 Многие разработчики могут ошибочно полагать, что при объявлении массива volatile все его элементы также будут обладать свойствами volatile. Однако это не так! Пример выше как раз демонстрирует эту особенность. 🔎 Объяснение: volatile int[] arr делает переменную arr ссылкой volatile. Это означает, что любые изменения ссылки на массив будут видны другим потокам. Однако элементы массива не наследуют volatile-свойство. Таким образом, arr[0] и arr[1] не имеют гарантий видимости друг для друга. ➖➖➖➖➖ Ставьте лайк , если нашли это полезным и задавайте свои вопросы и комментарии ниже для получения дополнительных знаний! 🚀 #java #многопоточность #volatile #программирование

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

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

🔍 Ответ на вопрос про пропавший эксепшен: Привет, друзья! Сегодня обсудим скрытую проблему с логированием исключений, которая часто возникает в многопоточной среде. На первый взгляд все кажется довольно обычным: мы отправляем задачу на выполнение, которая вызывает метод logString с null значением. Это должно вызвать NullPointerException. ❓ Где же исключение? Вы могли заметить, что исключение не будет напечатано в логи, даже если оно происходит. Почему? 🔎 Объяснение: Исключения в Java, возникающие в потоке, обрабатываются контекстом этого потока. В случае использования ExecutorService.submit(...), если задача выбрасывает исключение, оно остается незамеченным, потому что submit возвращает Future, который просто тихо удаляет это исключение. Если вы не вызываете методы get() у Future и не обрабатываете возможное исключение, вы его просто не увидите. 💡 Как это исправить? Чтобы исключение стало видимым, можно сделать следующее: public static void main(String[] args) { ExecutorService executorService = Executors.newSingleThreadExecutor(); Future<?> future = executorService.submit(() -> logString(null)); try { future.get(); // Обрабатываем возможное исключение } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); // Выводим исключение в логи } finally { executorService.shutdown(); } } 📌 В этом изменении future.get() либо вернёт результат, либо выбросит ExecutionException, если что-то пошло не так, позволяя вам логировать и обрабатывать ситуацию корректно. 👨‍💻 Вывод: Будьте внимательны при работе с многопоточностью. Убедитесь, что вы корректно обрабатываете возможные исключения, особенно при использовании ExecutorService. ➖➖➖➖➖ 🎓 Надеюсь, это было полезно! Оставьте свои вопросы и комментарии ниже. 👇 Подписывайтесь, чтобы не пропустить важные советы и приемы! 🔥 #java #многопоточность #исключения #программирование #лучшиепрактики

Что произойдет при запуске кода?
Anonymous voting

Что произойдет при запуске кода?
Что произойдет при запуске кода?

🔍 Ответ на вопрос про сравнение объектов в Java: Разберемся, как Java сравнивает объекты и что скрывается за методами equals() и hashCode(). У нас есть два объекта: Object o1 = new Object(); Object o2 = new Object(); Теперь давайте посмотрим, что произойдет, если мы их сравним: 1️⃣ Сравнение ссылок (оператор ==): System.out.println((o1 == o2)); // Выводит: false 🔸 Оператор == сравнивает адреса в памяти. Поскольку o1 и o2 — разные объекты, они находятся по разным адресам, что возвращает false. 2️⃣ Сравнение методом equals(): System.out.println(o1.equals(o2)); // Выводит: false 🔸 Метод equals() по умолчанию в классе Object работает как ==, сравнивая ссылки. Без переопределения возвращает false. 3️⃣ Сравнение значений hashCode(): System.out.println(o1.hashCode() == o2.hashCode()); // Выводит: false 🔸 Метод hashCode() вычисляет уникальное значение на основе текущего объекта (реализация может быть различна и может зависеть от платформы). Обычно для двух разных объектов значения будут уникальными. Почитать подробнее можно тут. 💡 Итак, вывод программы: false false false ➖➖➖➖➖ ✍️ В реальной практике нужно переопределять equals() и hashCode(), чтобы они отражали бизнес-логику ваших объектов. Будьте внимательны и прописывайте правильные сравнения! 🤓 ➖➖➖➖➖ 🎓 Надеюсь, это было полезно! Оставьте свои вопросы и комментарии ниже. 👇 #java #программирование #equals #hashcode #разработка

#реклама 📂 Папка, которую вы бы хотели найти полгода назад https://t.me/addlist/xjhUe5s57kg4NWNi 📈 Развиваешь экспертный ка
#реклама 📂 Папка, которую вы бы хотели найти полгода назад https://t.me/addlist/xjhUe5s57kg4NWNi 📈 Развиваешь экспертный канал в IT, AI или маркетинге? В подборке собрали только практиков: специалисты и команды, которые действительно работают с ИИ и IT-продуктами. Никакой теории ради охватов, репостов с трендами и «обёрток» без содержания. Без марафонов, геймификации и чат-ботов для вовлечённости. Только прикладной опыт, который помогает расти бизнесу. Что в папке: — Маркетинг ИИ-продуктов: без буллшита и по шагам — Опыт запуска и масштабирования IT-продуктов — Контент, который действительно читает ЦА — Настоящие кейсы. Настоящие люди. https://t.me/addlist/xjhUe5s57kg4NWNi

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

Что напечатает код? (Супермаловероятными событиями тут пренебрегаем)
Что напечатает код? (Супермаловероятными событиями тут пренебрегаем)

Ответ на вопрос про нестатический блок инициализации: здесь пример неочевидной опережающей инициализации поля, такой синтаксис в джаве разрешен, внутри блока инициализации s будет равно "456", но значение поля будет переопределено в строке 15, поэтому ответ "123".

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

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