13937
Обучающий канал по Java Ссылка для друга - https://t.me/+ZEYYht6-46w5MDM6 По всем вопросам @valentin_mascarov Реклама на бирже - https://telega.in/c/Java_per_month
Тестовое собеседование на Middle Java-разработчика в среду
Заходи 9 октября, в среду в 19:00 по мск на открытое онлайн-собеседование от ШОРТКАТ, чтобы узнать:
● Чего ждут от кандидатов на Middle позиции в Java-разработке
● Какие вопросы задают на интервью и зачем
● Как подготовиться к собесу, чтобы получить оффер
Интервью проведёт Роман Половинцев, ex. TeamLead в Сбере.
Чтобы записаться на эфир, переходи в бот → @shortcut_sh_bot
Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2Vtzqv9YAqY
➡️ Использование Scoped Values для безопасной передачи данных в потоки
Scoped Values — новая функциональность в Java 21, позволяющая безопасно и эффективно передавать неизменяемые данные между потоками и методами. Они предоставляют более простой и безопасный API по сравнению с ThreadLocal, уменьшая риск утечек памяти и ошибок, связанных с потоками.
🗣 Scoped Values упрощают управление контекстом приложения и повышают надежность многопоточных программ.
Java Learning 👩💻
❓ Вопрос на собеседовании
Что такое "false sharing" в многопоточном Java-приложении и как его можно избежать?
Ответ ⬇️
"False sharing" — это ситуация, когда несколько потоков обновляют разные переменные, находящиеся в одном кэше процессора. Это приводит к снижению производительности из-за необходимости синхронизации кэшей. Чтобы избежать "false sharing", можно использовать аннотацию @Contended (с включенной опцией JVM) или добавлять дополнительные поля для выравнивания.
🗣 Пример:
public class Main {
private static class Counter {
// Добавляем дополнительные поля для выравнивания
private long p1, p2, p3, p4, p5, p6, p7;
public volatile long count = 0;
private long q1, q2, q3, q4, q5, q6, q7;
}
public static void main(String[] args) throws InterruptedException {
Counter counter = new Counter();
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 1_000_000; i++) {
counter.count++;
}
});
Thread thread2 = new Thread(() -> {
for (int i = 0; i < 1_000_000; i++) {
counter.count++;
}
});
thread1.start();
thread2.start();
thread1.join();
thread2.join();
System.out.println("Итоговое значение: " + counter.count);
}
}
// Результат выполнения:
// Итоговое значение: 2000000
👩💻 Открытый урок «Знакомство со Spring Cloud».
Как эффективно использовать самый популярный фреймворк в Java-мире для профессиональной разработки приложений?
📆 Узнайте на открытом вебинаре 10 октября в 20:00 мск.
Где мы разберем:
- что такое Spring Cloud и для чего он нужен;
- из каких основных компонентов состоит Spring Cloud;
- как использовать ключевые функции Spring Cloud для разработки.
Спикер Сергей Петрелевич — опытный Java/Kotlin-разработчик и преподаватель.
Встречаемся в преддверии старта курса «Java Developer. Professional». Все участники вебинара получат специальную цену на обучение!
👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://clck.ru/3DgE26Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🔒 6895 ГБ платного контента для программистов выложили в Telegram
Тонны курсов, уроков и видео теперь в открытом доступе:
🖥 Python — 724 ГБ
🖥 Frontend — 981 ГБ
🖥 Backend — 817 ГБ
👩💻 Все языки — 4373 ГБ
Успей подать заявку, пока не удалили
Шпаргалка по основам Java с примерами кода.
В ней есть всё, что может пригодиться начинающему разработчику.
Оригинал в хорошем качестве можно взять тут
Java Learning 👩💻
Виртуальные потоки Java 21 — чувак, где мой lock?
Смотреть статью
Java Learning 👩💻
➡️ Использование библиотеки Jodd для упрощения повседневных задач в Java
Jodd — это набор утилит и инструментов для Java, который содержит множество полезных компонентов для работы с JSON, HTTP, Email, файловой системой и многим другим. В отличие от узкоспециализированных библиотек, Jodd предоставляет универсальные и лёгкие в использовании утилиты для повседневных задач.• Jodd — отличный выбор, если вам нужен набор небольших и эффективных инструментов для решения повседневных проблем в Java-программировании.
🔗 Ссылочка на доку
Java Learning 👩💻
Хотите узнать, чем Clojure выделяется среди других бэкендовых языков и что он может вам предложить?
Ждем вас на открытом вебинаре 3 октября в 20:00 мск, где мы разберем:
- с какими задачами сталкиваются разработчики Clojure;
- основные особенности и преимущества Clojure по сравнению с другими языками;
- какие возможности и перспективы предлагает Clojure для разработчиков.
Встречаемся в преддверии старта курса «Clojure Developer». Все участники вебинара получат специальную цену на обучение!
Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://otus.pw/L4aA/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
⌛ Что будет выведено при выполнении кода?
Java Learning 👩💻
#вопросы_с_собеседований
🤔 Что будет, если в static блоке кода возникнет исключение?
Если в static блоке кода возникнет исключение, то это приведет к ошибке инициализации класса.
Static блок выполняется при загрузке класса, и любые исключения в нем приведут к сбою и невозможности загрузить класс.
Поэтому нужно либо обрабатывать исключения в static блоке, либо избегать кода, который может привести к исключениям.
Лучше выносить в static блок только простую инициализацию, а сложную логику помещать в конструктор или методы класса.
Java Learning 👩💻
Функциональные коллекции в Java с Vavr: обзор и применение
Смотреть статью
➡️ Использование метода formatted для более простого форматирования строк (Java 15+)
Метод formatted — это новая функция, появившаяся в Java 15, которая позволяет легко форматировать строки. Этот метод является лаконичной и более читабельной альтернативой методу String.format(). Теперь вы можете напрямую вызывать метод форматирования на строковом литерале или объекте String.• formatted упрощает форматирование строк, делая код более компактным и понятным.
Java Learning 👩💻
➡️ Использование класса OptionalInt для работы с необязательными числовыми значениями
OptionalInt — это специальный контейнер, введённый в Java 8, который позволяет работать с числовыми значениями, которые могут отсутствовать. Он полезен в ситуациях, когда метод возвращает необязательное числовое значение, избегая использования null и уменьшая вероятность возникновения ошибок.• OptionalInt предоставляет методы для проверки наличия значения, его безопасного извлечения и задания дефолтных значений, если значение отсутствует.
Java Learning 👩💻
👩💻 Курс для Java-разработчиков, которые хотят профессионального роста.
Пройди тест по Java и проверь свои знания, готов ли ты к обучению на курсе.
Ответишь — пройдешь на продвинутый курс "Java Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса
➡️ ПРОЙТИ ТЕСТ: https://clck.ru/3DYcu3Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
➡️ Использование библиотеки Jsoup для парсинга HTML в Java
Jsoup позволяет загружать HTML-страницы, разбирать их и выбирать элементы с использованием CSS-селекторов, а также безопасно изменять и генерировать HTML-код. Это отличный инструмент для задач парсинга веб-страниц, обработки HTML-контента и веб-скрапинга.• Jsoup — идеальный выбор для тех, кому нужно быстро и безопасно работать с HTML в Java.
🔗 Ссылочка на доку
Java Learning 👩💻
➡️ Использование библиотеки Hutool для ускорения Java-разработки
Hutool — это универсальная библиотека Java с множеством утилит для работы с датами, файлами, HTTP-запросами, кэшированием и многим другим. Она разработана для облегчения повседневных задач и улучшения производительности.• В отличие от других библиотек, Hutool имеет богатый набор функций, интегрированных в единую библиотеку.• Hutool — отличный выбор, если вы ищете многофункциональный инструмент для решения повседневных задач в Java.
🔗 Ссылочка на доку
Java Learning 👩💻
#Вопросы_с_собеседования
🎙️ Какие два класса не наследуются от Object?
Ответ:
Не ведитесь на провокации, нет таких классов: все классы прямо или через предков наследуются от класса Object!
Java Learning 👩💻
➡️ Использование ConcurrentLinkedDeque для многопоточного доступа к двухсторонней очереди
ConcurrentLinkedDeque — это неблокирующая двухсторонняя очередь, которая обеспечивает высокую производительность в многопоточных средах. Она позволяет добавлять и удалять элементы с обоих концов, при этом сохраняя потокобезопасность.
🗣 ConcurrentLinkedDeque — отличный выбор для задач, требующих гибкого доступа к элементам и безопасной работы в многопоточной среде.
Java Learning 👩💻
➡️ Использование ReentrantReadWriteLock для оптимизации многопоточной работы с общими ресурсами
ReentrantReadWriteLock — это механизм синхронизации из пакета java.util.concurrent.locks, который позволяет разделить блокировки на чтение и запись. Благодаря этому множество потоков могут одновременно читать данные, но запись блокирует все другие операции. Это оптимизирует доступ к ресурсу, когда операции чтения преобладают над операциями записи.
🗣 ReentrantReadWriteLock — отличный выбор для сценариев, когда многопоточная работа преимущественно связана с чтением данных.
Java Learning 👩💻
👩💻 Программирование теперь в Telegram!
Вот 10 обучающих каналов по самым востребованным направлениям в IT.
Выбирай своё направление:
👩💻 Python: @python_ready
👩💻 Java: @java_ready
👩💻 Backend: @backend_ready
👩💻 Frontend: @code_ready
👩💻 Весь IT: @roadmap_ready
👩💻 C#: @csharp_ready
👩💻 C/C++: @cpp_ready
🖥 Базы Данных & SQL: @sql_ready
📖 IT Архив: @archive_ready
🖥 Design: @time_design
📌 Ресурсы, гайды, шпаргалки, книги и задачи для каждого языка программирования.
Используйте умные ссылки – создавайте и настраивайте сервисы для динамического управления редиректами
Как именно, спросите вы?
А очень просто: приходите на открытый урок OTUS «Проектирование сервиса умных ссылок»
Вы узнаете:
- как спроектировать сервис умных ссылок и создавать ссылки с динамическими правилами редиректа
- как настраивать редирект в зависимости от геолокации, устройства пользователя и других параметров
- как разрабатывать и оптимизировать масштабируемый и гибкий сервис умных ссылок
Вебинар проведёт действующий директор компании по разработке ПО, в прошлом – профессиональный разработчик на C++
👨💻🛠👨🏻💻 Будет интересно: бэкенд-разработчикам, фулстек-разработчикам, техническим архитекторам
📅 8 октября, 20:00
🆓 Бесплатно. Урок в рамках старта курса «Microservice Architecture»
🔴 Записаться на открытый урок: https://clck.ru/3DeWDGРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
➡️ Использование библиотеки Flyweight для кэширования объектов в Java
Flyweight — это структурный паттерн проектирования, который позволяет кэшировать и переиспользовать объекты для экономии памяти. Часто применяется в библиотеках, работающих с графикой или большими объемами данных, чтобы оптимизировать потребление ресурсов.
🗣 Flyweight подойдет, когда нужно работать с большим количеством мелких объектов.
Java Learning 👩💻
#Вопросы_с_собеседования
❓Как одной строчкой преобразовать ArrayList в HashSet?
Ответ на картинке.
💸 Вакансии для IT'шников
Выбери своё направление ⤵
1. Frontend
2. Python
3. Java
4. Тестировщик QA
5. Data Science
6. DevOps
7. C#
8. C/C++
9. Golang
10. PHP
11. Kotlin
12. Swift
Разбираем как решать задачи на LeetCode
✅ Примеры решений
✅ Пояснения
Выбери своё направление:
1. Python
2. JavaScript
3. Java
4. C#
5. Golang
6. C/C++
7. PHP
8. Kotlin
9. Swift
Подними свои скилы до небес! 🚀
Надоели скучные задачи по программированию? 💻
Время перейти на новый уровень!
🥇Приглашаем бекендеров и инженеров инфраструктуры на уникальный трехмесячный курс по системному дизайну и архитектуре высоконагруженных систем от Алексея Рыбака - главы разработки Bumble/Badoo с 20-летним опытом в highload проектировании.
В чем ценность данного курса?
🖥 Огненная практика с первых дней обучения на реальных кейсах и собственной инфраструктуре
🖥 Погружение «под капот» хайлоад систем, изучение паттернов и приемов масштабирования
🖥 Топовые фишки и знания по архитектуре проектов и системному дизайну больших проектов (1-100M DAU)
🖥 Живые сессии, брейнштормы, проектирование “у доски”
На выходе у вас появится реальный опыт:
✅ Проектирования сложных систем
✅ Нагрузочного тестирования своей инфраструктуры (выжмете 100К запросов)
✅ Планирования ресурсов для проектов с большим количеством пользователей
✅ Масштабирования IT-проектов
✅ Практический опыт работы с кластерами Redis, CockroachDB и шардированными PostgreSQL/MySQL
✅ И многое другое!
⚡️ Регистрируйся и погружайся в нескучный хайлоад
Реклама ИП Рыбак А. А. ИНН 771407709607
➡️ Использование библиотеки Reflections для работы с классами и методами
Reflections — это небольшая, но мощная библиотека для Java, которая позволяет сканировать классы, методы, поля и аннотации во время выполнения. С её помощью можно быстро находить компоненты по заданным критериям, например, все классы, реализующие определённый интерфейс, или все методы, помеченные определённой аннотацией.• Reflections упрощает динамический анализ классов и может быть полезен при реализации системы плагинов, регистрации классов или поиске обработчиков событий.
🔗 Ссылочка на доку
Java Learning 👩💻
➡️ Tinylog — легковесная и простая библиотека логирования для Java
Tinylog — это минималистичная и быстрая библиотека логирования, которая имеет простой синтаксис и богатый набор возможностей, включая асинхронное логирование, конфигурацию через файлы и фильтрацию по уровням. Она идеально подходит для приложений, которым требуется базовое логирование с минимальными затратами ресурсов.• Tinylog — отличный выбор для небольших проектов, где не нужны сложные системы логирования.
🔗 Ссылочка на доку
Java Learning 👩💻