🌍Откройте мир Clojure: сфера разработки, основные фишки и преимущества языка.
Изучите, чем Clojure выделяется среди других бэкендовых языков и какие преимущества он предлагает. Узнайте, как Clojure может улучшить вашу разработку и открыть новые карьерные возможности.
Мероприятие для опытных разработчиков.
📅Открытый вебинар 3 октября в 20:00 мск пройдет в рамках большого курса. После занятия вы сможете продолжить обучение по специальной цене и даже в рассрочку!
Регистрация: https://vk.cc/cBwbDC
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
➡️ HikariCP — высокопроизводительный пул соединений для баз данных
HikariCP — это лёгкий и быстрый пул соединений для баз данных, который считается одним из самых производительных в экосистеме Java.
Он минимизирует задержки при подключении к базам данных, обеспечивая быстрый доступ к ресурсам и высокую масштабируемость. Благодаря простоте настройки и высокой производительности, HikariCP является отличным выбором для проектов, где требуется эффективное управление соединениями с базой данных.
🗣 HikariCP — отличный выбор для высоконагруженных приложений, где важна производительность и стабильность соединений с базой данных.
🔗 Ссылочка на доку
➡️ Использование метода String::indent
для удобной работы с отступами строк
Начиная с Java 12, был добавлен метод String.indent()
, который позволяет легко добавлять или удалять отступы у каждой строки в многострочном тексте.•
Это полезно для форматирования строк, когда нужно управлять отступами, особенно при создании сложных текстовых структур.•
Метод String.indent()
делает управление отступами более удобным и чистым, особенно при работе с форматированными текстами в Java.
Создаем графическое окно и меняем цвет фона при клике мышью с помощью Java
Программа создает окно размером 400x400 пикселей, где при клике мышью меняется цвет фона на случайный. Здесь используются следующие компоненты:
1) JFrame - основное окно программы.
2) JPanel - панель внутри окна, цвет фона которой меняется.
3) MouseAdapter - класс для обработки событий мыши. В данном случае мы переопределяем метод mouseClicked, чтобы изменить цвет фона панели при клике мыши.
➡️ Zt-Exec — простая и удобная работа с процессами в Java
Zt-Exec — это легковесная библиотека для выполнения и управления внешними процессами в Java-приложениях. Она предоставляет удобный API для запуска командных процессов, чтения их вывода и обработки ошибок, предлагая более гибкие возможности по сравнению со стандартным ProcessBuilder.
🗣 Zt-Exec — отличный выбор, если нужно просто и эффективно запускать внешние команды или управлять процессами прямо из Java-кода.
🔗 Ссылочка на доку
Разбираем как решать задачи на LeetCode
✅ Примеры решений
✅ Пояснения
Выбери своё направление:
1. Python
2. JavaScript
3. Java
4. C#
5. Golang
6. C/C++
7. PHP
8. Kotlin
9. Swift
Обучайся ИТ и строй карьеру уже во время учебы
Это возможно в «Школе 21» — школе цифровых технологий, проекте Сбера
Вот лишь несколько особенностей:
— обучение в школе бесплатное, от тебя нужна только мотивация
— 100% выпускников работают в крутых ИТ-компаниях
— стажировка входит в образовательный трек
— во время обучения соберешь портфолио и получишь реальный опыт
Кампусы школы открыты уже в 13 городах России и работают 24/7.
Узнавай больше и подавай заявку на сайте «Школы 21» уже сейчас!
Реклама. Заказчик АНО "Школа 21" ИНН 7736316133
#вопросы_с_собеседований
Из за чего может возникать NoClassDefFoundError, NoSuchMethodError?
🔸 NoClassDefFoundError может возникнуть, если нужной библиотеки с этим классом нет в classpath
🔸 NoSuchMethodError может возникнуть из-за несовместимости ваших библиотек, если зависимая библиотека A вызывает метод из старой версии библиотеки B, но в classpath есть более новая версия библиотеки B, c другой сигнатурой этого метода
Метод Collections.shuffle
Метод shuffle() случайным образом перемешивает все элементы переданного списка.
Что такое ReadWriteLock?ReadWriteLock
— это интерфейс, расширяющий базовый интерфейс Lock
. Используется для улучшения производительности в многопоточном процессе и оперирует парой связанных блокировок (одна - для операций чтения, другая - для записи). Блокировка чтения может удерживаться одновременно несколькими читающими потоками, до тех пор, пока не появится записывающий. Блокировка записи является эксклюзивной.
Существует реализующий интерфейс ReadWriteLock
класс ReentrantReadWriteLock
, который поддерживает до 65535 блокировок записи и до стольки же блокировок чтения.
Присоединяйся к всероссийскому чемпионату по программированию МТС True Tech Champ 2024 с призовым фондом в 10 250 000 ₽. Решай алгоритмические задачи или программируй роботов.
Какие задания и этапы ждут участников, расскажут на вводном вебинаре создатели треков 26 сентября в 17:00. Регистрируйся по ссылке.
В чемпионате найдутся задачи для начинающих ИТ-специалистов и опытных разработчиков.
✔️ В алгоритмическом треке участники будут работать со структурами данных, покажут математические навыки и умение решать алгоритмические задачи.
✔️ В треке по программированию роботов нужно будет соревноваться на скорость прохождения лабиринта робомышью.
Подробнее о чемпионате — по ссылке.
Регистрация участников: до 12 октября
Старт онлайн-этапов: с 1 октября
Финал в офлайне: 8 ноября
🔥Тесты для подготовки к собеседованию🔥
Выбери своё направление:
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
👩💻 Пройди тест по Java
Проверь насколько хорошо ты знаешь Java и готов освоить 👩💻 Spring!
Ответишь — пройдешь на продвинутый курс "Разработчик на Spring Framework" от OTUS по специальной цене.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cBkfFYРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Как остановить поток?
На данный момент в Java
принят уведомительный порядок остановки потока (хотя JDK 1.0
и имеет несколько управляющих выполнением потока методов, например stop()
, suspend()
и resume()
- в следующих версиях JDK
все они были помечены как deprecated
из-за потенциальных угроз взаимной блокировки).
Для корректной остановки потока можно использовать метод класса Thread - interrupt()
. Этот метод выставляет некоторый внутренний флаг-статус прерывания. В дальнейшем состояние этого флага можно проверить с помощью метода isInterrupted()
или Thread.interrupted()
(для текущего потока). Метод interrupt()
также способен вывести поток из состояния ожидания или спячки. Т.е. если у потока были вызваны методы sleep()
или wait()
– текущее состояние прервется и будет выброшено исключение InterruptedException
. Флаг в этом случае не выставляется.
Схема действия при этом получается следующей:
• Реализовать поток.
• В потоке периодически проводить проверку статуса прерывания через вызов isInterrupted()
.
• Если состояние флага изменилось или было выброшено исключение во время ожидания/спячки, следовательно поток пытаются остановить извне.
• Принять решение – продолжить работу (если по каким-то причинам остановиться невозможно) или освободить заблокированные потоком ресурсы и закончить выполнение.
Возможная проблема, которая присутствует в этом подходе – блокировки на потоковом вводе-выводе. Если поток заблокирован на чтении данных - вызов interrupt()
из этого состояния его не выведет. Решения тут различаются в зависимости от типа источника данных. Если чтение идет из файла – долговременная блокировка крайне маловероятна и тогда можно просто дождаться выхода из метода read(). Если же чтение каким-то образом связано с сетью – стоит использовать неблокирующий ввод-вывод из Java NIO
.
Второй вариант реализации метода остановки (а также и приостановки) – сделать собственный аналог interrupt()
. Т.е. объявить в классе потока флаги – на остановку и/или приостановку и выставлять их путем вызова заранее определённых методов извне. Методика действия при этом остаётся прежней – проверять установку флагов и принимать решения при их изменении. Недостатки такого подхода. Во-первых, потоки в состоянии ожидания таким способом не «оживить». Во-вторых, выставление флага одним потоком совсем не означает, что второй поток тут же его увидит. Для увеличения производительности виртуальная машина использует кеш данных потока, в результате чего обновление переменной у второго потока может произойти через неопределенный промежуток времени (хотя допустимым решением будет объявить переменную-флаг как volatile
).
#вопросы_с_собеседований
Сколько создается новых объектов, когда вы добавляете новый элемент в HashMap?
Создается один новый объект статического вложенного класса Entry<K,V>
.
Встроенные исключения
Java определяет несколько классов исключений внутри стандартного пакета java.lang.
Наиболее общие из этих исключений являются подклассами стандартного типа RuntimeException. Поскольку java.lang неявно импортируется во все java-программы, то большинство исключений, полученных из RuntimeException, автоматические.
Java определяет несколько других типов исключений, которые относятся к его различным библиотекам класса. Ниже приведен список неконтролируемых исключений на этапе выполнения (Unchecked RuntimeException).
➡️ Picocli — мощный инструмент для создания CLI-приложений в Java
Picocli — это простая и гибкая библиотека для создания командных интерфейсов (CLI) в Java. Она поддерживает аннотации для автоматической генерации документации по командам, обработку аргументов, подкоманд, автодополнение и много других возможностей, которые упрощают создание сложных CLI-приложений.
🗣 Picocli — это отличный выбор для разработчиков, которым нужно быстро и просто создать CLI-приложение с минимальным количеством кода и мощными функциями.
🔗 Ссылочка на доку
➡️ Использование Pattern.compile().flags()
для получения флагов регулярного выражения
В Java 9 был добавлен метод flags()
в класс Pattern, который позволяет получить флаги, используемые при компиляции регулярного выражения.•
Это может быть полезно для анализа и отладки регулярных выражений, особенно в сложных системах, где нужно понимать, с какими опциями было создано регулярное выражение.•
В этом примере создаётся регулярное выражение с несколькими флагами, и затем с помощью метода flags()
мы можем получить информацию о них
💸 Вакансии для 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
Как работают методы wait() и notify()(notifyAll())?
Эти методы определены у класса Object
и предназначены для взаимодействия потоков между собой при межпоточной синхронизации.
• wait()
: освобождает монитор и переводит вызывающий поток в состояние ожидания до тех пор, пока другой поток не вызовет метод notify()/notifyAll()
;
• notify()
: продолжает работу потока, у которого ранее был вызван метод wait()
;
• notifyAll()
: возобновляет работу всех потоков, у которых ранее был вызван метод wait()
.
Когда вызван метод wait()
, поток освобождает блокировку на объекте и переходит из состояния Работающий (Running
) в состояние Ожидания (Waiting
). Метод notify()
подаёт сигнал одному из потоков, ожидающих на объекте, чтобы перейти в состояние Работоспособный (Runnable
). При этом невозможно определить, какой из ожидающих потоков должен стать работоспособным. Метод notifyAll()
заставляет все ожидающие потоки для объекта вернуться в состояние Работоспособный (Runnable
). Если ни один поток не находится в ожидании на методе wait()
, то при вызове notify()
или notifyAll()
ничего не происходит.
Поток может вызвать методы wait()
или notify()
для определённого объекта, только если он в данный момент имеет блокировку на этот объект. wait()
, notify()
и notifyAll()
должны вызываться только из синхронизированного кода.
Что такое перегрузка методов?
Перегрузка методов — это свойство полиморфизма, в котором при помощи изменения сигнатуры метода можно создать различные реализации методов для одной и той же операции:
- одинаковое имя метода;
- различные аргументы;
- различный порядок аргументов;
Например, один и тот же add() из List может быть перегружен следующим образом и будет выполнять добавление разным способом, в зависимости от аргументов метода:
- add(Object o) — просто добавляет объект;
- add(int index, Object o) — добавляет объект в определенный индекс;
- add(Collection<Object> c) — добавляет список объектов;
- add(int index, Collection<Object> c) — добавляет список объектов, начиная с определенного индекса.
#вопросы_с_собеседований
Можем ли мы перегрузить методы по возвращаемому типу?
Мы не можем перегружать по возвращаемому типу. Это поведение аналогично C++.
Приглашаем опытных Java-разработчиков на конференцию Joker 2024
📆 9 октября онлайн и 15–16 октября в Санкт-Петербурге
🗣 45 докладов и дискуссий в программе
Спикеры расскажут про библиотеки и фреймворки, инструменты и инфраструктуру, Spring, JVM, API, хранение и обработку данных, перформанс, архитектуру, асинхронное программирование, фичи языка — новые и уже известные.
Также в программе — 4 кейноута:
— доклад про обратную совместимость в Java;
— история китайского хостинга репозиториев Gitee от его создателя;
— введение в проект LLVM для Java-разработчиков;
— обзор возможностей ИИ на примере современного искусства.
Вас ждет большая встреча Java-сообщества и целых три дня общения с опытными разработчиками.
Билет на Joker 2024 можно купить за счет компании — читайте в статье на VC, почему это выгодно не только вам, но и вашему работодателю.
При покупке билета за свой счет («Для частных лиц») используйте промокод для скидки 15% — SENIORJAVIST
Реклама. ООО «Джуг Ру Груп». ИНН 7801341446
🏓 Знакомимся с Java на примере пинг-понга
Хотите узнать, как создавать программы на Java, даже если никогда не программировали?
Ждем вас на открытом вебинаре 26 сентября в 20:00 мск,
где мы разберем:
➡️ что такое программирование и язык Java;
➡️ как создать игру пинг-понг с нуля на Java;
➡️ как работать с двумерной графикой в Java.
Урок полезен для тех, кто хочет начать изучать Java с нуля и увидеть на практике, как создаются приложения.
🎙 Спикер Александр Фисунов — Senior Kotlin Developer в SSP Software на проекте ВТБ, опытный Java-разработчик и кандидат технических наук.
Встречаемся в преддверии старта курса «Специализация Java-разработчик».
Все участники вебинара получат специальную цену на обучение!
➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cBpdaEРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
#вопросы_с_собеседований
Как не допустить сериализацию?
Чтобы не допустить автоматическую сериализацию, можно переопределить private методы для создания исключительной ситуации NotSerializableException.
Любая попытка записать или прочитать этот объект теперь приведет к возникновению исключения.
#вопросы_с_собеседований
Какие конечные методы работы со стримами вы знаете?
findFirst() возвращает первый элемент;
findAny() возвращает любой подходящий элемент;
collect() представление результатов в виде коллекций и других структур данных;
count() возвращает количество элементов;
anyMatch() возвращает true, если условие выполняется хотя бы для одного элемента;
noneMatch() возвращает true, если условие не выполняется ни для одного элемента;
allMatch() возвращает true, если условие выполняется для всех элементов;
min() возвращает минимальный элемент, используя в качестве условия Comparator;
max() возвращает максимальный элемент, используя в качестве условия Comparator;
forEach() применяет функцию к каждому объекту (порядок при параллельном выполнении не гарантируется);
forEachOrdered() применяет функцию к каждому объекту с сохранением порядка элементов;
toArray() возвращает массив значений;
reduce() позволяет выполнять агрегатные функции и возвращать один результат.
Для числовых стримов дополнительно доступны:
sum() возвращает сумму всех чисел;
average() возвращает среднее арифметическое всех чисел.
Задача
Пользователь вводит три слова, программа сортирует их в алфавитном порядке
Пример:
Пользователь вводит слова:
папа
сын
мама
Программа выводит:
мама
папа
сын.
#вопросы_с_собеседований
Укажите различия между конструктором и методами в Java
Ответ на картинке.
Тестовое собеседование на Middle Java-разработчика завтра
Уже завтра, 25 сентября в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
1. Мария Ядерцова ведущий Java-разработчик в МТС Диджитал и ex. Сбербанк-Технологии будет задавать реальные вопросы и задачи разработчику-добровольцу
2. Мария будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
3. В конце можно будет задать любой вопрос Марии
Что узнаешь на прямом эфире от ШОРТКАТ:
· Чего ждут от кандидатов на Middle позиции в Java-разработке
· Какие вопросы задают на интервью и зачем
· Как подготовиться к собесу, чтобы получить оффер
Это бесплатно? Бесплатно
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqvBftJ4
«Хочешь сделать хорошо? Сделай сам!» (с)
Распространённый подход и, одновременно, стратегическая ошибка многих руководителей.
Да, даже опытные менеджеры испытывают сложности с делегированием.
Однако передача функций – это развитие команды, экономия времени, снижение фактора автобуса и куча других преимуществ, которыми надо пользоваться.
Как правильно делегировать задачи – вы узнаете на открытом вебинаре
«Делегирование и управление временем: как балансировать между кодом и командой?»
Спикер – Илья Прахт, опытный менеджер в IT, тренер, консультант и ментор
Вы сможете:
- Делегировать задачи, но сохранять контроль над ними
- Уделять больше времени себе и команде
- Добиваться больших результатов вместе с командой
Ну и чаще ходить в отпуск, конечно же!
26 сентября, 19:00 МСК
Участие бесплатное
Записаться на вебинар: https://vk.cc/cB0z4N
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru