Java Guru 🤓

channel icon
Канал с вопросами и задачами с собеседований!

Условия размещения

Цена за 48 часов в ленте 4500,00
Цена за 1 час закрепления N/A
Взаимопиар Нет
Дополнительные условия рекламы Отсутствуют
+7
12 977
подписчиков
+34
~2.6k
охват 1 публикации
0
~4
постов / день
+0,3%
19,9%
ERR % ?

Статистика

Последние публикации

Java Guru 🤓
20 декабря 2024 г. 18:42
Как работает вывод типов?

Для
Для начала разберемся, что такое вывод типов. Type inference – это способность компилятора догадаться, какой тип нужно подставить, и сделать это за вас. На обычном интервью никто не спросит детали алгоритма вывода типов, достаточно будет сказать, что вывод происходит статически, только на основании типов аргументов и ожидаемого типа результата. По сути, вопрос заключается не в «как работает?», а «что это и когда возникает?».

Первое, что многим приходит в голову при фразе «вывод типов» – diamond operator <>. Он появился в Java с версии 7. Его применяют к конструкторам дженерик классов, чтобы отличать требование автоматического вывода типа от raw type.

С Java 9 diamond operator заработал и для анонимных классов.

Для дженерик методов можно указывать параметр явно, но diamond синтаксически недопустим – вывод и так сработает по умолчанию.

В Java 10 для вывода типа локальной переменной добавлено ключевое слово var. Работает это так же, как в большинстве современных языков – ключевое слово ставится вместо типа при объявлении.

Типы выводимых параметров лямбда-выражения также можно не указывать. С Java 11 вместо типа указывается ключевое слово var. Такой синтаксис дает возможность добавлять параметру модификаторы и аннотации.
Java Guru 🤓
20 декабря 2024 г. 14:20
Приглашаем вас на открытый вебинар: «Основы многопоточности в Java»

⏰Дата: 25 декабря в 20:00 мск
Спикер: Борис Кириллов

📚Программа урока:
- Введение в многопоточность: что это и зачем это нужно.
- Изучение базовых классов для работы с потоками.
- Разбор типовых проблем многопоточности и подходов к их решению.

🔥Урок будет полезен тем, кто хочет:
- Разобраться в основах многопоточности в Java.
- Понять, как писать многопоточные программы.
- Узнать, какие классы используются для работы с потоками в Java.

🚀В результате урока вы:
- Поймете подходы к многопоточности в Java.
- Изучите базовые классы и синтаксис многопоточной обработки.
- Сможете применять полученные знания для создания более эффективных Java-приложений.

Участники всех открытых уроков получат скидку🎁 на большое обучение

👉Регистрируйтесь на открытый вебинар по ссылке: https://vk.cc/cGf2Wp

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Java Guru 🤓
19 декабря 2024 г. 16:44
Что выведет программа?
Опрос
  • Ошибка компиляции, так как нельзя изменять финальный список.
  • RuntimeException, так как нельзя изменять финальный список.
  • IllegalStateException, так как нельзя изменять финальный список.
  • Java is The best!, так как список изменяемый.
Java Guru 🤓
19 декабря 2024 г. 16:44
Что выведет программа?
Java Guru 🤓
18 декабря 2024 г. 16:30
⚡️Хотите стать экспертом в разработке на Spring Framework?

Обучение «Разработчик на Spring Framework» от OTUS — это практический подход к освоению самого востребованного фреймворка для Java-разработчиков. Узнайте, как создавать веб-приложения на микросервисной архитектуре, автоматизировать задачи с Spring Boot и реализовывать высокоуровневые решения!

В конце курса у вас будет портфолио из готовых приложений и глубокое понимание работы со Spring. Пройдите вебинар-собеседование, чтобы быть готовым к реальным интервью.

👉Запишитесь на курс сейчас и перейдите на новый профессиональный уровень с дипломом, признанным крупными компаниями: https://vk.cc/cG9Swb

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Java Guru 🤓
18 декабря 2024 г. 16:01
Что такое ковариантность и контравариантность?

Формально, ковариантность/контравариантность типов – это сохранение/обращение порядка наследования для производных типов. Проще говоря, когда у ковариантных сущностей типами-параметрами являются родитель и наследник, они сами становятся как бы родителем и наследником. Контравариантные наоборот, становятся наследником и родителем.

Легче всего осознать эти понятия на примерах:
🔘 Ковариантность: List можно присвоить в переменную типа List (как будто он наследник List).
🔘 Контравариантность: в качестве параметра метода List
#sort#sort типа Comparator может быть передан Comparator (как будто он родитель Comparator)

Отношение типов «можно присвоить» – не совсем наследование, такие типы называются совместимыми (отношение «is a»).

Существует еще одно связанное понятие – инвариантность. Инвариантность – это отсутствие свойств ковариантности и контрвариантности. Дженерики без вайлдкардов инвариантны: List нельзя положить ни в переменную типа List, ни в List.

Массивы ковариантны: в переменную Object[] можно присвоить значение типа String[].

Переопределение методов начиная с Java 5 ковариантно относительно типа результата и типов исключений.
Java Guru 🤓
18 декабря 2024 г. 12:02
Приглашаем на митап Мир Plat.Form «Платежные технологии: биометрия и быстрые кешбэки»

🌐 Онлайн
📆 20 декабря в 17:00 (МСК, GMT+3)

В программе — два доклада:

🗣 Идентификация и оплата: как работает платформа биометрических сервисов (ПБС) — Сергей Лысенко, Алексей Бобруцков
Определим место НСПК в биоэквайринге. Поговорим об архитектуре и механизмах ПБС. Выясним, как совершается оплата с точки зрения клиента, с кем в разных процессах взаимодействует команда и как технологию применяют в нефинансовых сервисах.

🗣 Быстрые кешбэки для быстрых платежей: как работает платформа лояльности СБП — Константин Гузаров
Разберем, что скрывается под капотом программы лояльности «Привет!» в части СБП. Обсудим механику акций, потоки данных внутри системы лояльности, требования к сервису и историю его развития.

Вы сможете задать вопросы спикерам в чате митапа. За лучшие вопросы Мир Plat.Form подарит призы.

Регистрируйтесь на сайте митапа.

Реклама. АО "НСПК". ИНН 77068121597706812159
Java Guru 🤓
18 декабря 2024 г. 11:11
Как узнать, является ли A подтипом B?

В Java доступны три способа проверки совместимости типов. Функционально они ничем не отличаются, применяются для разных наборов аргументов. В порядке убывания быстродействия:

instanceof – бинарный оператор, самый быстрый и самый используемый. Если есть экземпляр A и можно указать B явно, выбирать надо его. Если A (точнее тип хранящей экземпляр A переменной) и B не из одной цепочки наследования – экземпляр точно не может быть подтипом B и компиляция упадет с ошибкой inconvertible types.

Class::isInstance – метод принимает параметром объект типа A. Его стоит выбрать, когда экземпляр A в наличии, но B – неизвестный на этапе компиляции тип. То есть, для переменных A a и Class bClass, можем проверить bClass.isInstance(a).

Class::isAssignableFrom – принимает Class. Единственное, что остается, если экземпляра A нет. bClass.isAssignableFrom(aClass).

Есть еще четвертый способ – имея экземпляр типа A привести его к B. Если типы были несовместимы, приведение выбросит ClassCastException. Это во всех смыслах плохой способ, построению логики программы на исключениях нет оправдания. Подробная аргументация описана в Effective Java Item 57.
instanceof – бинарный оператор, самый быстрый и самый используемый. Если есть экземпляр A и можно указать B явно, выбирать надо его. Если A (точнее тип хранящей экземпляр A переменной) и B не из одной цепочки наследования – экземпляр точно не может быть подтипом B и компиляция упадет с ошибкой inconvertible types.

Class::isInstance – метод принимает параметром объект типа A. Его стоит выбрать, когда экземпляр A в наличии, но B – неизвестный на этапе компиляции тип. То есть, для переменных A a и Class bClass, можем проверить bClass.isInstance(a).

Class::isAssignableFrom – принимает Class<A>. Единственное, что остается, если экземпляра A нет. bClass.isAssignableFrom(aClass).

Есть еще четвертый способ – имея экземпляр типа A привести его к B. Если типы были несовместимы, приведение выбросит ClassCastException. Это во всех смыслах плохой способ, построению логики программы на исключениях нет оправдания. Подробная аргументация описана в Effective Java Item 57.
Java Guru 🤓
17 декабря 2024 г. 17:01
IT здорового человека.

Илья Мирин, инженер, CEO, CTO, DS и цифровой художник с 19 летним опытом работы в индустрии IT помогает *прокачать soft skills*

В том числе ты узнаешь:
- Как получить *job offer выше рынка?
- Как рассказать про свой опыт работы, чтобы *люди на собесе не уснули?
- Почему продуктовые *задачи всегда приносят в последний момент?
- Как быть, если *коллеги тебя не слушают?
- Как работая на удалёнке *быть в курсе всех важных событий и быть в "тусовке"
- Есть ли благодетели айтишника кроме *"удачи", "трудолюбия" и "нужных контактов"*, чтобы целенаправленно двигаться к цели

Илья знает про жизнь внутри IT все, он сам не сошел от этого с ума, и тебе поможет.

Подписывайся на https://t.me/healthyit
Java Guru 🤓
17 декабря 2024 г. 14:50
Перечислите целочисленные битовые операторы

Во-первых, стоит освежить знания о бинарном представлении целых знаковых чисел. В Java используется подход two's complement – для значения 0 все биты нули, при переполнении максимального значения на 1 получается минимальное.

Бинарные битовые операторы &, | и ^ действуют очевидным образом: выполняют побитовые «И», «ИЛИ» и «исключающее ИЛИ» (XOR) соответственно. Здесь особенно интересен XOR:

Применение к значению «исключающего или» с одним и тем же параметром два раза дает то же значение. За счет этого его можно использовать как простейшее шифрование, аргумент выступит ключом;
С помощью XOR реализуется XOR-обмен – алгоритм обмена значениями переменных без дополнительной памяти и без риска переполнения. Это также один из популярных вопросов для собеседования.

Унарный оператор битового отрицания (дополнения) ~. Эквивалентен «исключающему или» с самим собой – все биты инвертируются. ~x эквивалентно -x-1. ~0 == -1.
Битовые сдвиги: левый << правый знаковый >> и правый беззнаковый >>>. Левый операнд – что сдвигать, правый – на сколько битов.

Второй параметр, дистанция сдвига, должен быть не больше доступных разрядов – 31 для int и 63 для long. Если передано значение больше – используются младшие 5 и 7 битов соответственно. То есть для int переменной x << 33 эквивалентно x << 2.

a << b эквивалентно умножению a на 2 в степени b.
a >> b совпадает с делением на 2 в степени b, с округлением вниз. Для положительных a то же что a/pow(2,b). Для не делящихся нацело на pow(2,b) отрицательных это a/pow(2,b)-1.

Беззнаковый сдвиг вправо трактует число не как two's complement, а как беззнаковое. То есть Integer.MIN_VALUE будет сдвинут так, как будто это сдвигается число на 1 большее чем Integer.MAX_VALUE.

Беззнакового сдвига влево не существует, потому что он совпадал бы со знаковым сдвигом, и был бы избыточным.


@javatasks@javatasks #java#java
Java Guru 🤓
17 декабря 2024 г. 11:30
Обработка исключений и SOLID

Присоединяйтесь к нашему открытому урокуПрисоединяйтесь к нашему открытому уроку и погрузитесь в основы обработки исключений и SOLID

🚀На вебинаре вы узнаете:

1. Как реализовать обработку исключений в соответствии с принципами SOLID

2. Как избежать распространения ошибок при обработке исключений

3. Как минимизировать подверженность программного кода изменениям

Практика: На этом вебинаре мы разберём, как грамотно организовать включение исключений в программном коде, следуя принципам SOLID. Вы научитесь писать код, который не только легко поддерживается, но и который надежно обрабатывает ошибки, минимизируя их влияние на работу системы.

👉 Регистрация и подробности о курсе «Архитектура и шаблоны проектирования» https://vk.cc/cG7iL5https://vk.cc/cG7iL5

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Java Guru 🤓
17 декабря 2024 г. 9:34
Какой результат выведет программа?
Опрос
  • 10
  • 11
  • 12
  • 13
  • Когда выведет, тогда и скажу 😂
Java Guru 🤓
17 декабря 2024 г. 9:34
Какой результат выведет программа?
Java Guru 🤓
16 декабря 2024 г. 16:40
Вы опытный Java-разработчик, но хотите большего?

📚 Углубитесь в устройство JVM, научитесь профилировать приложения, оптимизировать их для облаков и развертывать в Kubernetes. Это повышение квалификации для тех, кто готов выйти на новый уровень.

👉 Вы освоите реактивный подход, работу с метриками и логированием, научитесь анализировать дампы памяти и создавать REST API с OpenAPI и Protobuf.

🎁 Присоединяйтесь к курсу «Java Developer. Advanced» и получите скидку! Ваша карьера в IT ждет апгрейда: https://vk.cc/cG5e5Nhttps://vk.cc/cG5e5N

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Java Guru 🤓
16 декабря 2024 г. 15:25
Что такое короткое замыкание логического оператора?

Логические операторы || и && лево-ассоциативны, то есть их параметры вычисляются слева направо. Если первое значение оказалось true в || или false в && – конечный результат уже предрешен, он будет тем же. В этом случае происходит так называемое «короткое замыкание» (short-circuiting) – оставшийся второй аргумент не вычисляется за ненадобностью.

Эту особенность иногда удобно эксплуатировать, например для проверки на null в одну строку:
return param != null && param.getBoolMember();


Но иногда такая ситуация влечет за собой неожиданные плавающие баги, если второй аргумент – не переменная, а функция с побочным эффектом. Для этой ситуации введены версии операторов без короткого замыкания: | и &. Это логические вариации «битового и» и «битового или».

Вдобавок доступен оператор «исключающее или» ^. Он почти никогда не используется для булевых параметров, потому что абсолютно эквивалентен более интуитивно понятному !=. Другие битовые операторы для логических аргументов недоступны.


@javatasks@javatasks #java#java
Java Guru 🤓
16 декабря 2024 г. 12:02
🚨 Хотите знать про backend разработку больше, чем ваши коллеги? Глубоко анализировать архитектуру и предвидеть узкие места? Больше не стрессовать на system design собеседованиях?

👨🏻‍🎓 Меня зовут Андрей Суховицкий. Я разработчик c десятилетним опытом, tech lead, разрабатываю высоконагруженные системы. В 2021 и 2024 годах получил премию, как лучший преподаватель университета ИТМО.

🔥 На своем каналесвоем канале я пишу только о том, что кажется мне интересным, описываю случаи из практики. Темы, которые мне близки: java, kotlin, coroutines, многопоточное программирование, system design, реализация высоконагруженных и надежных систем. Я сам пишу все посты в моем телеграм канале, даже этот не исключение.

🧠 Мои посты затрагивают непростые темы и не всегда написаны простыми словами. Будем говорить с вами, как с профессионалами, тянуть вверх, расширять видение, заставлять задумываться и глубже анализировать пространство решений, делать небольшое усилие над собой, чтобы учиться.

💎 Присоединяйтесь к каналуПрисоединяйтесь к каналу, если готовы выйти на новый уровень.
Java Guru 🤓
13 декабря 2024 г. 16:20
Что делает аннотация @CsvSource в данном тесте?
Опрос
  • Передаёт набор данных для выполнения параметризованных тестов
  • Загружает данные для тестов из внешнего CSV-файла
  • Генерирует случайные параметры для теста
  • Осуществляет запуск тестов в определённой последовательности
  • Изменяет поведение метода, чтобы возвращать значения из CSV
Java Guru 🤓
13 декабря 2024 г. 16:20
Что делает аннотация @CsvSource в данном тесте?
Java Guru 🤓
13 декабря 2024 г. 15:00
Хочешь вывести карьеру на новый уровень?

Прояви себя в Лиге Цифровой Экономики!

У нас ты:
- Станешь частью команды профессионалов, работающих над амбициозными проектами
- Получишь возможность реализовать творческий потенциал и внести свой вклад в развитие ключевых отраслей
- Будешь работать над сложными и интересными задачами, которые позволят расширить твои знания и навыки
- Сможешь влиять на развитие компании и рынка, участвуя в масштабных внедрениях

Не упусти шанс стать частью команды, которая меняет мир ИТ!

Подписывайся на наш канал и узнай все о наших вакансиях и проектах.

https://tglink.io/6b23b4b3dae1?erid=LjN8JuFb3 

Реклама. ООО "ЭЙТИ КОНСАЛТИНГ". ИНН 7715744096.
Java Guru 🤓
13 декабря 2024 г. 11:08
Как оптимизировать код?
Опрос
  • Использовать Мар для хранения скидок
  • Использовать switch-case
  • Добавить новые условия
  • Применить цепочку тернарных операторов
  • Использовать регулярные выражения