ch
Feedback
Java | Фишки и трюки

Java | Фишки и трюки

前往频道在 Telegram

Java: примеры кода, интересные фишки и полезные трюки Купить рекламу: https://telega.in/c/java_tips_and_tricks ✍️По всем вопросам: @Pascal4eg Менеджер по рекламе: @shmyzna

显示更多
6 954
订阅者
-124 小时
-117
+1330
帖子存档
📌 Что такое volatile и как оно работает? Ключевое слово volatile в Java используется для переменных, к которым обращаются несколько потоков. Оно гарантирует, что изменения переменной одним потоком будут видны другим. ✔️ Основные особенности: 1️⃣ Обеспечивает чтение переменной из основной памяти, а не из кэша потока. 2️⃣ Гарантирует видимость изменений между потоками. Пример:
class SharedObject {
    volatile int count = 0;
}
💡 Ограничение: volatile не гарантирует атомарность операций. Для этого используйте synchronized или классы из java.util.concurrent. #java #volatile #multithreading

🔥 Разница между HashMap и ConcurrentHashMap 1️⃣ HashMap: • Не потокобезопасен. • Быстрее в однопоточном окружении. • Можно получить ConcurrentModificationException, если итерация выполняется параллельно с изменением данных. 2️⃣ ConcurrentHashMap: • Потокобезопасен. • Использует сегментацию для увеличения производительности в многопоточном режиме. • Не выбрасывает ConcurrentModificationException. Пример:
Map<String, String> map = new ConcurrentHashMap<>();
map.put("key", "value");
💡 Совет: Для многопоточных приложений используйте ConcurrentHashMap. #java #hashmap #concurrenthashmap

👋 Меня зовут Николай, я - техлид в крупном банке На текущий момент провел более 100 собеседований разработчиков уровня middle+, при этом сам регулярно прохожу собеседования и получаю офферы в крупнейшие компании: Яндекс, Альфу, Сбер и др. Благодаря этому я накопил большой опыт в прохождении собеседований, знаю какие вопросы задают и как правильно на них отвечать, чтобы получить заветный оффер Занимаюсь менторингом действующих разработчиков Java, кто хочет повысить свою зарплату, а также тех, кто имеет опыт самостоятельного обучения и хочет найти первую работу Java разработчиком (совсем без знаний будет трудно) На менторинге показываю каким образом ведется разработка реального проекта, расставляю приоритеты в обучении, готовлю к собеседованиям, даю домашнее задание и провожу ревью, отвечаю на любые вопросы. По окончании курса мы с вами напишем 3 микросервиса и 1 библиотеку (spring boot starter), которые могут вам встретится в реальной работе и станут частью вашего резюме Все ученики первого потока успешно трудоустроились, три человека получили оффер более 200 тысяч рублей в месяц Второй поток в самом разгаре, обучаются как ребята смежных IT специальностей (аналитики, специалисты сопровождения, разработчики других ЯП), так и действующие Java разработчики с несколькими годами опыта Всего обучение прошли или проходят 25 учеников Курс содержит 35 часов лекций и 15 часов живого разбора вопросов. Кроме того вы получите доступ к вопросам, которые задавали мне и моим ученикам на реальных собеседованиях Третий поток начинается 8 февраля, если хотите участвовать - заполните анкету и я с вами свяжусь Также я веду блог пишу статьи на habr

Что выведет код?
Anonymous voting

public class Quest {
    public static void main(String[] args) {
        Short b = 50;
        inc(b);
        System.out.println(b);
    }
    private static void inc(Short num) {
        num++;
    }
}

🔗 Разница между final, finally и finalize Эти три похожих термина часто путают в Java, но у каждого из них свое назначение. 1️⃣ final ключевое слово для объявления: • Констант (переменные, которые нельзя изменить). • Методов (которые нельзя переопределить). • Классов (которые нельзя наследовать). 2️⃣ finally блок, используемый с try-catch для выполнения кода независимо от того, было ли выброшено исключение. 3️⃣ finalize метод, вызываемый сборщиком мусора перед удалением объекта. Используется редко, так как считается устаревшим. Пример:
final int a = 10;

try {
    System.out.println(a);
} finally {
    System.out.println("This always executes!");
}
💡 Совет: Используйте final для повышения читаемости кода, а finally для освобождения ресурсов. Метод finalize лучше избегать. #java #final #finally #finalize

🔒 1219 ГБ платного контента для JAVA программистов выложили БЕСПЛАТНО Получите доступ к библиотеке от FAANG School только в
🔒 1219 ГБ платного контента для JAVA программистов выложили БЕСПЛАТНО Получите доступ к библиотеке от FAANG School только в течение 24 часов: – Пошаговая RoadMap по Java – Redis - 5 улучшений для твоего пет-проекта – Мануал по Docker. Основные команды и концепции – Микросервисы. Вопросы с собеседований – Шпаргалка с горячими клавишами JetBrains IDE. Ускоришь работу в 10 раз – Desk setup. Подборка аксессуаров для комфортной работы – Шпаргалка по Kafka – Шпаргалка по Spring с разбором паттерна Наблюдатель – Инструкция по работе с Git – Подробный гайд, как найти работу в IT без опыта – Подборка платформ с вакансиями для java-разработчиков - Шпаргалка по основным командам SQL Свежее пополнение - гайд «Топ пет-проектов с AI». Сборник идей, который поможет создать пет-проект не только для портфолио, но и для пассивного дохода 🫢 Это возможность для джуна продвинуться по карьерной лестнице со скоростью лифта. Переходи по ссылке, жми на оранжевую кнопку и забирай.

🔍 Что такое аннотация @Override и зачем она нужна? Аннотация @Override используется для явного указания, что метод переопределяет метод суперкласса. ✔️ Преимущества: 1️⃣ Помогает избежать ошибок, если метод из суперкласса изменен или не существует. 2️⃣ Улучшает читаемость кода. Пример:
class Parent {
    void display() {
        System.out.println("Parent");
    }
}

class Child extends Parent {
    @Override
    void display() {
        System.out.println("Child");
    }
}
💡 Совет: Всегда используйте @Override, чтобы избежать случайных ошибок при переопределении методов. #java #override #annotations

Онлайн-курс «Java-разработчик» от EdMe: 6-8 месяцев, гарантия получения работы, оплата обучения после трудоустройства Образов
Онлайн-курс «Java-разработчик» от EdMe: 6-8 месяцев, гарантия получения работы, оплата обучения после трудоустройства Образовательный проект EdMe открывает набор на курс по Java-разработке, который стартует в январе. Новый год — идеальный момент, чтобы выполнить обещания себе и сделать шаг к новой профессии! Обучение построено на менторстве и направлено на комплексную подготовку к трудоустройству. Программа подойдет для начинающих и тех, кто хочет улучшить свои навыки. За 6-8 месяцев вы сможете достичь уровня middle, для этого нужно уделять обучению от 20 часов в неделю. Вы будете взаимодействовать с опытным разработчиком, который объяснит, что нужно учить и как это делать, а также чего избегать, чтобы быстрее освоить необходимые навыки и получить оффер. Ментор будет направлять вас, советовать, как решать технические вопросы, и помогать готовиться к собеседованиям. Плюсы курса:Гарантированное трудоустройство с зарплатой от 140 000 рублей. Оплата после выхода на работу: вы платите только 20% от зарплаты в течение 18 месяцев. ➕Карьерная поддержка даже после окончания курса. ➕Если по каким-то причинам вы не сможете завершить обучение, это можно сделать без оплаты. Во время обучения вы будете использовать Jira, Confluence, Bitbucket, GitLab – те самые системы, которые станут вашими рабочими инструментами в IT-компаниях. Программа курса: ▪️Основы Java: Java Core, List, JDBC, Hibernate, Spring (Core, MVC, Security), Spring Boot, Git ▪️Проект ▪️Подготовка к собеседованиям (составление резюме, прохождение тестовых собеседований) ▪️Прохождение реальных собеседований 🖋 Узнать подробности и записаться на курс «Java-разработчик» можно на EdMe.pro Отбор включает тестовое задание, которое под силу выполнить человеку без опыта, и собеседование. Реклама. ООО "БАКСЭТ", ИНН 4345115602. Erid 2VtzqxXev2F

🤔 Что такое Optional и как его использовать? Optional — это контейнер, который помогает избежать NullPointerException, упрощая работу с отсутствующими значениями. Появился в Java 8. 📌 Основные методы: 1️⃣ Optional.of(value) — создаёт Optional с непустым значением. 2️⃣ Optional.empty() — создаёт пустой Optional. 3️⃣ Optional.ofNullable(value) — создаёт Optional, который может быть пустым, если value == null. 4️⃣ isPresent() / ifPresent() — проверяет, есть ли значение, или выполняет действие. Пример:
Optional<String> optionalName = Optional.ofNullable(null);

optionalName.ifPresent(name -> System.out.println(name));
System.out.println(optionalName.orElse("Default Name")); // Default Name
💡 Совет: Используйте Optional вместо null для более чистого и безопасного кода. #java #optional #nullsafe

Решаем алгоритмические задачи с собеседований в канале Backend Interviewer Научитесь успешно проходить секции лайвкодинг! При
Решаем алгоритмические задачи с собеседований в канале Backend Interviewer Научитесь успешно проходить секции лайвкодинг! Присоединяйтесь @backend_interviewer

⚙️ Что такое функциональный интерфейс? Функциональный интерфейс — это интерфейс, содержащий ровно один абстрактный метод. В Java 8 и выше они активно используются для работы с лямбда-выражениями и потоками (Stream API). Пример:
@FunctionalInterface
interface MyFunctionalInterface {
    void execute();
}

public class Main {
    public static void main(String[] args) {
        MyFunctionalInterface task = () -> System.out.println("Hello, Functional Interface!");
        task.execute();
    }
}
✔️ Особенности: 1️⃣ Интерфейс с аннотацией @FunctionalInterface может содержать только один абстрактный метод. 2️⃣ Можно добавлять default или static методы без ограничения их количества. 💡 Совет: Используйте функциональные интерфейсы для создания компактного и чистого кода с лямбда-выражениями. #java #functionalinterface #lambda

🚀 Что такое Stream API и зачем оно нужно? Stream API — мощный инструмент для работы с коллекциями, появившийся в Java 8. Он позволяет писать лаконичный и читаемый код для обработки данных. 🔍 Преимущества: 1️⃣ Чистый код: меньше циклов и условных конструкций. 2️⃣ Ленивая обработка: Stream API выполняет операции только тогда, когда это необходимо. 3️⃣ Параллелизм: можно легко выполнять операции в несколько потоков. Пример:
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.stream()
     .filter(name -> name.startsWith("A"))
     .forEach(System.out::println); // Alice
💡 Совет: Stream API отлично подходит для работы с большими объемами данных. #java #streamapi #java8

Почему строки в Java неизменяемы (immutable)? В Java объект String неизменяемый, что означает, что после создания его состояние нельзя изменить. Но зачем это нужно? 1️⃣ Безопасность: неизменяемые строки делают код более безопасным, особенно при работе с потоками или использованием строк в ключах коллекций (например, HashMap). 2️⃣ Производительность: строковые объекты кэшируются в пуле строк (String Pool), что позволяет Java эффективно управлять памятью. 3️⃣ Совместимость: неизменяемость строк облегчает работу с множеством библиотек, так как они не могут непреднамеренно изменить строку. Пример:
String str = "Hello";
str.concat(" World");
System.out.println(str); // Hello
Хотя метод concat добавляет строку, оригинальный объект остается неизменным, создавая новый объект в памяти. 💡 Совет: если нужно часто изменять строки, используйте StringBuilder или StringBuffer. #java #string #immutable

📱 Java Developer — мастхев для любого джависта Канал Team Lead'a, где публикуются полезные советы и практики для Java-разраб
📱 Java Developer — мастхев для любого джависта Канал Team Lead'a, где публикуются полезные советы и практики для Java-разработчиков: Книги, статьи, тестыSpring, Hibernate, Docker, SQLАлгоритмы, вопросы и задачи с собеседований Присоединяйтесь: @java_tg

🔗 В чем разница между == и .equals()? При сравнении объектов в Java важно понимать различие между == и .equals(). ✔️ == сравнивает ссылки на объекты, проверяя, указывают ли они на одну и ту же область памяти. ✔️ .equals() используется для сравнения содержимого объектов, если метод переопределен. Пример:
String a = new String("Java");
String b = new String("Java");

System.out.println(a == b); // false (разные ссылки)
System.out.println(a.equals(b)); // true (сравнение содержимого)
💡 Совет: для корректного сравнения объектов всегда переопределяйте метод equals() в вашем классе. #java #equals #comparison

👩‍💻 Работаете с Java, но хотите попробовать себя в Android-разработке? 👩‍💻 Начните с простой и полезной задачи — приложен
👩‍💻 Работаете с Java, но хотите попробовать себя в Android-разработке? 👩‍💻 Начните с простой и полезной задачи — приложения для заметок! На открытом уроке 27 января 2025 в 20:00 вы освоите: — Создание списков через RecyclerView. — Работу с базой данных Room. — Использование Flow для обновления данных. Это отличный шанс погрузиться в мир Android. К тому же, все участники вебинара получат скидку на обучение на курсе «Android Developer»! ➡️ Регистрация на вебинар: https://otus.pw/ZyDc/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Что выведет код?
Anonymous voting

public class Quest {
    public static synchronized void main(String[] a) throws InterruptedException {
        Thread t = new Thread() {
            public void run() {
                pong();
            }
        };
        t.start();
        Thread.sleep(1000);
        System.out.print("Ping");
    }

    static synchronized void pong() {
        System.out.print("Pong");
    }
}

⌨️ Что такое "статический класс"? Это вложенный класс, объявленный с использованием ключевого слова static. К классам верхнего уровня модификатор static неприменим. Статический вложенный класс имеет несколько особенностей, отличающих его от обычных вложенных классов: 1️⃣ Нет привязки к экземпляру внешнего класса Статический вложенный класс не связан с экземпляром внешнего класса. Это означает, что он может быть создан без необходимости создавать объект внешнего класса. В отличие от обычного вложенного класса, который всегда ассоциирован с экземпляром внешнего класса, статический вложенный класс может быть использован независимо. 2️⃣ Доступ к членам внешнего класса Статический вложенный класс может обращаться только к статическим членам (поля и методы) внешнего класса. Он не имеет доступа к нестатическим членам внешнего класса, поскольку не существует привязки к экземпляру внешнего класса. Пример:

public class OuterClass {
    private static int staticVar = 10;
    private int nonStaticVar = 20;

    static class StaticNestedClass {
        void display() {
            // Доступ к статическому полю внешнего класса
            System.out.println("Static variable from outer class: " + staticVar);
            
            // Ошибка компиляции: нестатическое поле нельзя использовать в статическом вложенном классе
            // System.out.println("Non-static variable from outer class: " + nonStaticVar); 
        }
    }
}

public class Main {
    public static void main(String[] args) {
        // Создаем экземпляр статического вложенного класса
        OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
        nestedObject.display();
    }
}
Для чего используется: ✔️ Когда вложенный класс не должен иметь доступа к состоянию экземпляра внешнего класса. ✔️ Когда вложенный класс используется для представления логически связанного функционала, но не зависит от состояния внешнего объекта. #java #static #class