ar
Feedback

لا تقع ضحية للمخادعين! تيليمتريو يكتشف ويُميّز هذه القنوات 👉 إذا كنت تريد رؤية العلامة، اشترك

Java Geek

Java Geek

الذهاب إلى القناة على Telegram

Практичные советы, лайфхаки и код для Java-разработчиков. Каждый пост — реальная польза. Учим Java на примерах. По всем вопросам @evgenycarter

إظهار المزيد
2 354
المشتركون
-124 ساعات
-37 أيام
-1530 أيام
أرشيف المشاركات
Что будет, если в static блоке кода возникнет исключение? Если в static блоке кода возникнет исключение, то это приведет к ошибке инициализации класса. Static блок выполняется при загрузке класса, и любые исключения в нем приведут к сбою и невозможности загрузить класс. Поэтому нужно либо обрабатывать исключения в static блоке, либо избегать кода, который может привести к исключениям. Лучше выносить в static блок только простую инициализацию, а сложную логику помещать в конструктор или методы класса. 👉 @java_geek

Pattern.asPredicate() Pattern.asPredicate() превращает регулярное выражение в Predicate, который можно использовать прямо в п
Pattern.asPredicate() Pattern.asPredicate() превращает регулярное выражение в Predicate<String>, который можно использовать прямо в потоках (Stream). Это полезно для фильтрации строк без явного вызова .matches(). 👉 @java_geek

Как определить, содержит ли массив определенное значение в Java с помощью потоков? Чтобы проверить, содержит ли массив значен
Как определить, содержит ли массив определенное значение в Java с помощью потоков? Чтобы проверить, содержит ли массив значений int, double или long значение, используйте IntStream, DoubleStream или LongStream соответственно. 👉 @java_geek

Дайте краткую характеристику Enum в Java Enum — перечисление, набор строковых констант, объединенных общим типом. Объявляется
Дайте краткую характеристику Enum в Java Enum — перечисление, набор строковых констант, объединенных общим типом. Объявляется через ключевое слово — enum. Вот пример с enum — допустимые роли в некоторой школе (см картинку). Слова, написанные большими буквами, и есть те самые константы перечисления, которые объявляются упрощенно, без использования оператора new. Использование перечислений заметно упрощает жизнь, так как они помогают избежать ошибок и путаницы в наименованиях (так как может быть только определенный перечень значений). 👉 @java_geek

🔍Тестовое собеседование с Java-разработчиком из МТС уже завтра 1 октября (уже завтра!) в 19:00 по мск приходи онлайн на откр
🔍Тестовое собеседование с Java-разработчиком из МТС уже завтра 1 октября (уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика. Как это будет: 📂 Илья Аров, старший разработчик в МТС, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Илья будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Илье Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot Реклама. О рекламодателе.

Что такое «fail-fast поведение»? fail-fast поведение означает, что при возникновении ошибки или состояния, которое может привести к ошибке, система немедленно прекращает дальнейшую работу и уведомляет об этом. Использование fail-fast подхода позволяет избежать недетерминированного поведения программы в течение времени. В Java Collections API некоторые итераторы ведут себя как fail-fast и выбрасывают ConcurrentModificationException, если после его создания была произведена модификация коллекции, т.е. добавлен или удален элемент напрямую из коллекции, а не используя методы итератора. Реализация такого поведения осуществляется за счет подсчета количества модификаций коллекции (modification count): • при изменении коллекции счетчик модификаций так же изменяется; • при создании итератора ему передается текущее значение счетчика; • при каждом обращении к итератору сохраненное значение счетчика сравнивается с текущим, и, если они не совпадают, возникает исключение. 👉 @java_geek

В чем разница между sleep() и wait(), notify() и notifyAll() методами? Метод sleep() заставляет поток "заснуть" на определенное время (указывается в миллисекундах), после чего поток продолжит свою работу. Метод wait() освобождает монитор, занятый потоком, так что другие потоки могут использовать указанный блок кода и поток переходит в состояние waiting — поток будет ждать вызова метода notify() или notifyAll() другим потоком. Разница между notify() и notifyAll() в том, что notify() "высвободит" один поток (какой именно определить нельзя), а notifyAll() "освободит" все потоки из состояния waiting в состояние running. 👉 @java_geek

Маршрут построен: в пятницу – на VK JT Meetup! Это неформальная встреча для ML-инженеров и Java-разработчиков от VK. О чём ра
Маршрут построен: в пятницу – на VK JT Meetup! Это неформальная встреча для ML-инженеров и Java-разработчиков от VK. О чём расскажут: • Какие вызовы возникают перед бэкендером в процессе создания B2B-продукта • Как строят единую инфраструктуру поисковой платформы А также поделятся пошаговым гайдом по выпуску RAG в прод Дальше гостей ждут два потока: нетворкинг-зона и групповое решение кейсов по ML и Java. Мероприятие пройдёт только офлайн — редкий шанс пообщаться с коллегами, задать вопросы экспертам и выиграть призы от VK. Регистрируйтесь! 📍 Нижний Новгород, только офлайн 📅 3 октября, сбор с 18:00 🎟 Вход по регистрации

Что такое маркерный интерфейс? Каковы известные примеры таких интерфейсов в Java? Маркерный интерфейс — это интерфейс без каких-либо методов. Обычно он реализуется классом или расширяется другим интерфейсом для обозначения определенного свойства. Наиболее широко известными маркерами в стандартной библиотеке Java являются следующие: Serializable используется для явного указания того, что этот класс может быть сериализован; Cloneable позволяет клонировать объекты с помощью метода clone (без интерфейса Cloneable этот метод выдает исключение CloneNotSupportedException); Remote используется в RMI для указания интерфейса, методы которого можно вызывать удаленно. 👉 @java_geek

Сколько различных типов конструкторов существует в Java? В Java есть 2 типа конструкторов: 1) Конструктор по умолчанию — не принимает никаких параметров. 2) Параметризованный конструктор — принимает как минимум один параметр. 👉 @java_geek

Маршрут построен: в пятницу – на VK JT Meetup! Это неформальная встреча для ML-инженеров и Java-разработчиков от VK. О чём ра
Маршрут построен: в пятницу – на VK JT Meetup! Это неформальная встреча для ML-инженеров и Java-разработчиков от VK. О чём расскажут: • Какие вызовы возникают перед бэкендером в процессе создания B2B-продукта • Как строят единую инфраструктуру поисковой платформы А также поделятся пошаговым гайдом по выпуску RAG в прод Дальше гостей ждут два потока: нетворкинг-зона и групповое решение кейсов по ML и Java. Мероприятие пройдёт только офлайн — редкий шанс пообщаться с коллегами, задать вопросы экспертам и выиграть призы от VK. Регистрируйтесь! 📍 Нижний Новгород, только офлайн 📅 3 октября, сбор с 18:00 🎟 Вход по регистрации

Многопоточность в Java В Java многопоточность реализована через класс Thread и интерфейс Runnable. Вот основные моменты, которые могут быть полезны при работе с многопоточностью: 🔵1. Создание и запуск потока - Поток может быть создан двумя способами: - Наследование от класса Thread:

       class MyThread extends Thread {
           public void run() {
               // Код, выполняемый в потоке
           }
       }
       MyThread t = new MyThread();
       t.start();
       
- Реализация интерфейса Runnable:

       class MyRunnable implements Runnable {
           public void run() {
               // Код, выполняемый в потоке
           }
       }
       Thread t = new Thread(new MyRunnable());
       t.start();
       
🔵2. Основные методы класса Thread - start() — запуск потока. - sleep(long millis) — приостановка потока на определенное время. - join() — ожидание завершения потока. - interrupt() — прерывание потока. - isAlive() — проверка, работает ли поток. 🔵3. Синхронизация - Чтобы избежать проблем с конкурентным доступом к данным, используется синхронизация:

     synchronized (this) {
         // Критическая секция
     }
     
Это гарантирует, что только один поток может выполнить код внутри синхронизированного блока. 🔵4. Пул потоков - Для управления большим количеством потоков используется пул потоков, который управляется через ExecutorService. Пример:

     ExecutorService executor = Executors.newFixedThreadPool(10);
     executor.submit(() -> {
         // Задача для потока
     });
     executor.shutdown();
     
🔵5. Состояния потока Потоки могут находиться в разных состояниях: - NEW: Поток создан, но не запущен. - RUNNABLE: Поток готов к выполнению. - WAITING: Поток ожидает другого потока. - TIMED_WAITING: Поток ожидает в течение определенного времени. - TERMINATED: Поток завершен. 🔵6. Проблемы многопоточности - Состояние гонки (Race condition) — ситуация, когда несколько потоков одновременно пытаются изменить данные, что может привести к некорректным результатам. - Блокировки — проблемы с мертвыми блокировками (deadlocks), когда потоки навсегда блокируются, ожидая друг друга. 🔵7. Современные подходы и классы - ForkJoinPool — используется для параллельного выполнения задач с разделением на подзадачи. - CountDownLatch, CyclicBarrier, Semaphore — различные утилиты для синхронизации между потоками. 🔵8. Параллельное выполнение коллекций - Коллекции в Java также могут работать с потоками через parallelStream():

     List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
     list.parallelStream().forEach(System.out::println);
     
Многопоточность — мощный инструмент для улучшения производительности приложений, но требует внимательности при реализации, чтобы избежать ошибок, таких как мертвые блокировки или некорректный доступ к данным. 👉 @java_geek

Совет 💡 Обычно при сортировке в Spring Data мы указываем свойство, по которому хотим отсортировать, как строку. Однако сущес
Совет 💡 Обычно при сортировке в Spring Data мы указываем свойство, по которому хотим отсортировать, как строку. Однако существует класс TypedSort, который дает нам возможность передавать функцию в качестве параметра для сортировки. Это повышает безопасность типов в нашем коде. 👉 @java_geek

📕 Архитектура и написание backend тестов для разработчиков Java, QA инженеров, автоматизаторов, QA Lead и DevOps-специалисто
📕 Архитектура и написание backend тестов для разработчиков Java, QA инженеров, автоматизаторов, QA Lead и DevOps-специалистов На открытом уроке 17 сентября в 20:00 мск мы погрузимся в тонкости построения архитектуры надежных и понятных backend-тестов: 📗 На вебинаре разберём: 1. Использование Java и RestAssured для API-тестирования, приёмы структурирования и переиспользования кода. 2. Архитектурные принципы построения надёжных тестов. 📘 В результате на практике освоите построение надежных backend-тестов, научитесь писать чистый, гибкий и поддерживаемый код на Java с RestAssured и получите архитектурные шаблоны и рабочие примеры для своих проектов. 👉 Регистрация и подробности о курсе Java QA Engineer. Professional: https://vk.cc/cPz94k Все участники открытого урока получат скидку на курс "Java QA Engineer. Professional" Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Можно ли указывать конструктор внутри Enum? Да, конечно. Именно через конструктор и задаются значения внутренних переменных e
Можно ли указывать конструктор внутри Enum? Да, конечно. Именно через конструктор и задаются значения внутренних переменных enum. В качестве примера добавим два поля - ageFrom и ageTo - чтобы обозначить возрастные рамки для каждой роли. 👉 @java_geek

🔍Тестовое собеседование с Java-разработчиком из МТС уже завтра 17 сентября(уже завтра!) в 19:00 по мск приходи онлайн на отк
🔍Тестовое собеседование с Java-разработчиком из МТС уже завтра 17 сентября(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика. Как это будет: 📂 Илья Аров, старший разработчик в МТС, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Илья будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Илье Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot Реклама. О рекламодателе.

Какая проблема возникнет с этим кодом? Ответ: Данный код не с компилируется. Этот вопрос на знание иерархии исключений, в дан
Какая проблема возникнет с этим кодом? Ответ: Данный код не с компилируется. Этот вопрос на знание иерархии исключений, в данном случае FileNotFoundException унаследован от IOException, первый catch будет перехватывать все исключения и в следующий блок catch управление не будет передано. 👉 @java_geek

Что такое стек-трейс? Стек-трейс (stack trace) представляет собой список вызовов методов в обратном хронологическом порядке,
Что такое стек-трейс? Стек-трейс (stack trace) представляет собой список вызовов методов в обратном хронологическом порядке, начиная с метода, в котором произошло исключение. Стек-трейс позволяет отследить, какие методы были вызваны перед возникновением исключения, и предоставляет информацию о местоположении, где произошло исключение. 👉 @java_geek

Можно ли перегружать метод main() в Java? Да, метод main() может быть перегружен, но JVM или виртуальная машина Java вызывает только исходный метод main(). 👉 @java_geek

Array vs ArrayList Выбор между Array (стандартным Java-массивом) и ArrayList зависит от специфики задачи на Java, которую тре
Array vs ArrayList Выбор между Array (стандартным Java-массивом) и ArrayList зависит от специфики задачи на Java, которую требуется решить. Помните о следующих особенностях этих типов: ☕️ Array имеет фиксированный размер и память для него выделяется в момент объявления, а размер ArrayList может динамически изменяться; ☕️ Массивы Java работают гораздо быстрее, а в ArrayList намного проще добавлять/удалять элементы; ☕️ При работе с Array велика вероятность получить ошибку ArrayIndexOutOfBoundsException; ☕️ У ArrayList только одно измерение, а вот массивы Java могут быть многомерными. 👉 @java_geek