Java Times


Kanal geosi va tili: Butun dunyo, Ruscha


Время Java пришло.
Полезности, шпаргалки и вообще всё чем я пользуюсь при изучении языка Java
@anothertechrock

Связанные каналы  |  Похожие каналы

Kanal geosi va tili
Butun dunyo, Ruscha
Statistika
Postlar filtri


Вопрос с собеседования

Что произойдёт при передаче null в Optional.of()?

Ответ: Будет выброшено NullPointerException, так как метод Optional.of() не допускает null. Для безопасного создания используется Optional.ofNullable() — он возвращает пустой Optional при null.

tags: #собеседование

Java Times


Новая рубрика. Наши рассуждения о карьере Java-разработчика.

Как сейчас начинающему программисту изучить Java?

Java – один из самых популярных языков программирования до сих пор. Как его эффективно изучить новичку, чтобы реально уметь кодить на нем?

🔹 1. Определись, зачем тебе Java
Прежде чем начать, важно понять: куда ты с ней хочешь двигаться. Java используется в:
✅ Разработке backend-сервисов (Spring, Hibernate).
✅ Android-разработке (но сейчас Kotlin популярнее).
✅ Автотестировании (Selenium, Selenide, JUnit).
✅ Разработке enterprise-приложений.

Если цель просто "выучить язык", без понимания направления – мотивация быстро пропадет.

🔹 2. Освой основы языка
Начинать стоит с базовых вещей:
📌 Переменные, типы данных.
📌 Условные операторы, циклы.
📌 Массивы, списки, коллекции.
📌 Классы, объекты, наследование.
📌 Исключения и работа с файлами.

Лучший способ – писать код с первого дня. Можно сразу пробовать решать задачи на LeetCode, CodeWars, HackerRank.

🔹 3. Перейди к ООП и стандартным библиотекам
Java – объектно-ориентированный язык, и без понимания классов, интерфейсов, инкапсуляции, полиморфизма далеко не уйдешь. Изучи стандартные библиотеки:
✅ Collections Framework (ArrayList, HashMap и т. д.).
✅ Потоки ввода-вывода (Files, Streams).
✅ Работа с многопоточностью (Thread, ExecutorService).

🔹 4. Разберись с экосистемой
Java редко используется "сама по себе". Обычно это фреймворки и технологии, которые делают работу удобнее:
📌 Maven/Gradle – управление зависимостями.
📌 JUnit/TestNG – тестирование кода.
📌 Spring (Boot, MVC, Security) – основа для backend-приложений.
📌 JDBC/Hibernate – работа с базами данных.

🔹 5. Напиши пару пет-проектов
Курсы – это хорошо у нас много их рекламы, но без реальных проектов навыков не появится. Можно сделать:
💡 Консольное TODO-приложение с сохранением в файл.
💡 Бот для Telegram с Java + Spring Boot.
💡 Веб-приложение с базой данных (например, простой Task Manager).

🔹 6. Учись читать чужой код
На GitHub тонны open-source проектов на Java. Читай, разбирайся, контрибуть, если есть возможность.

🔹 7. Практика + решать задачи на алгоритмы
Если цель – попасть в крупную компанию, готовься к алгоритмическим собеседованиям. Практикуй:
📌 Структуры данных (стек, очередь, хеш-таблицы, графы).
📌 Алгоритмы сортировки, поиска, динамическое программирование.

⚡️ Вывод
Java – не самый простой язык для старта, но если учиться с практикой, а не просто смотреть курсы, то за 6-9 месяцев можно выйти на уровень Junior.

На какой стадии изучения вы сейчас и напишите еще темы для обсуждения?


Ответ на "Чем отличается Lambda от анонимного класса?"

Хотя в некоторых случаях они и могут быть использованы взаимозаменяемо, Lambda-выражения и анонимные классы имеют различия.

Разберем основные из них:

1. Синтаксис: Lambda-выражения имеют более краткий и лаконичный синтаксис по сравнению с анонимными классами.

2. Область применения: Lambda-выражения могут быть использованы только для функциональных интерфейсов, в то время как анонимные классы могут быть использованы для любых интерфейсов и абстрактных классов.

3. Ключевое слово this: В анонимных классах ключевое слово this ссылается на сам анонимный класс, в то время как в lambda-выражениях this ссылается на объемлющий.

4. Производительность: Lambda-выражения обычно имеют лучшую производительность по сравнению с анонимными классами, так как они компилируются в приватные методы и используют инструкцию invokedynamic.

#вопросы_с_собеседований


☸️Хотите узнать, как деплоить ASP.NET-приложения в Kubernetes?

📅26 марта в 20:00 мск на открытом вебинаре мы разберем:

– PersistentVolume
– ConfigMap
– Secret
– Развернем БД в кластере и обсудим, почему секреты не такие уж секретные.

С Kubernetes ваши ASP.NET Core-приложения станут масштабируемыми и гибкими.

➡️ Регистрируйтесь на вебинар и получите скидку на курс «C# ASP.NET Core-разработчик»

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru


Чем отличается Lambda от анонимного класса?

Пишите в комментариях ваш вариант. Ответ будет у нас в канале.

#вопросы_с_собеседований


Стань экспертом в написании кода для баз данных на уровне Senior+ и получи лучший оффер!

Тестируешь на Java и до сих пор не знаешь, как эффективно работать с JDBC, PreparedStatement и Connection Pooling?

В школе QA.GURU Дмитрий Тучс — Head of QA в Dodo Engineering, спикер Codefest, Codetalks, EpicHey!, ментор и open-source контрибьютор — собрал все свои знания и фишки в одном курсе.

Ты научишься:

👉 Писать чистый и эффективный код с JDBC API

👉 Использовать PreparedStatement правильно и безопасно

👉 Разбираться в Connection Pooling и оптимизировать производительность тестов

👉 Избегать типичных ошибок при работе с БД

Почему именно наша школа поможет тебе достичь успеха?

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

👉 Индивидуальная поддержка наставников: В процессе обучения студенты получают детальную обратную связь на домашние задания, включая рекомендации по улучшению кода.

👉 Профессиональная поддержка: Наши эксперты помогут тебе подготовиться к трудоустройству, от портфолио до успешного прохождения интервью.

Первый урок уже доступен в записи! 

Занятие можно посмотреть на платформе школы, YouTube или Rutube. 

Скидка 10% действует для подписчиков канала только до завтра до 12 часов!


Что такое «анонимные классы»? Где они применяются?

Это вложенный локальный класс без имени, который разрешено декларировать в любом месте обрамляющего класса, разрешающем размещение выражений. Создание экземпляра анонимного класса происходит одновременно с его объявлением. В зависимости от местоположения анонимный класс ведет себя как статический либо как нестатический вложенный класс - в нестатическом контексте появляется окружающий его экземпляр.

Анонимные классы имеют несколько ограничений:

• Их использование разрешено только в одном месте программы - месте его создания;
• Применение возможно только в том случае, если после порождения экземпляра нет необходимости на него ссылаться;
• Реализует лишь методы своего интерфейса или суперкласса, т.е. не может объявлять каких-либо новых методов, так как для доступа к ним нет поименованного типа.

Анонимные классы обычно применяются для:

• создания объекта функции (function object), например, реализация интерфейса Comparator;
• создания объекта процесса (process object), такого как экземпляры классов Thread, Runnable и подобных;
• в статическом методе генерации;
• инициализации открытого статического поля final, которое соответствует сложному перечислению типов, когда для каждого экземпляра в перечислении требуется отдельный подкласс.

#вопросы_с_собеседований


Video oldindan ko‘rish uchun mavjud emas
Telegram'da ko‘rish
Научись писать код для работы с базами данных на уровне Senior+

Тестируешь на Java и до сих пор не знаешь, как эффективно работать с JDBC, PreparedStatement и Connection Pooling?

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

Автор программы, Дмитрий Тучс, Head of QA в Dodo Engineering, спикер Codefest, Codetalks, EpicHey!, ментор и open-source контрибьютор — собрал все важное на курсе Java Advanced.

Ты научишься:

👉 Писать чистый и эффективный код с JDBC API

👉 Использовать PreparedStatement правильно и безопасно

👉 Разбираться в Connection Pooling и оптимизировать производительность тестов

👉 Избегать типичных ошибок при работе с БД

Ждем тебя на открытом уроке завтра в 20:00 (МСК).

🔗 Зарегистрируйся по ссылке.


Шпаргалка. Все базовые, необходимые паттерны проектирования на Java в одном посте.

👩‍💻 Реализация паттернов проектирования на Java

🕯 Паттерн Decorator (Декоратор)

🕯 Паттерн Observer (Наблюдатель)

🕯 Паттерн Посетитель (Visitor)

🕯 Паттерн Factory Method (Фабричный метод)

🕯 Паттерн Proxy (Прокси)

🕯 Паттерн Command (Команда)

🔍 Что такое MVC?

👉 Java Rocks | #паттерны | пошарьте друзьям этот пост если считаете его полезным. 👍

361 0 17 1 11

Паттерн Factory (Фабрика)

Factory — это порождающий паттерн, который предоставляет интерфейс для создания объектов в суперклассе, но позволяет подклассам изменять тип создаваемых объектов.

Использование:

🔹 Когда заранее неизвестны конкретные классы объектов, с которыми придётся работать.
🔹 Когда нужно централизовать логику создания объектов, чтобы избежать дублирования кода.
🔹 Когда система должна быть независимой от процесса создания, композиции и представления объектов.

Преимущества:

1️⃣ Снижает связанность кода с конкретными классами, делая систему более гибкой.
2️⃣ Улучшает структуру кода за счёт выделения логики создания объектов в отдельные классы.
3️⃣ Упрощает добавление новых типов объектов, не изменяя существующий код.

Недостатки:

1️⃣ Увеличивает количество классов в проекте, что усложняет его поддержку.
2️⃣ Требует понимания принципов абстракции и иерархий, что может усложнить первоначальное восприятие.

📌 Factory широко применяется для создания объектов в системах, где тип создаваемого объекта зависит от условий, например, в логике обработки различных пользовательских запросов или для генерации разных типов документов.

👉 Java Times | #паттерны


🚨Данные растут, запросы тормозят, аналитика буксует. Знакомо?

Когда SQL-скрипты уже не справляются, а MapReduce заставляет вас страдать, пора переходить на Apache Spark.

На открытом вебинаре 19 марта в 20:00 мск разберём Spark API, научимся работать с DataFrame, RDD и Dataset, изучим практические примеры оптимизации.

➡️ Записывайтесь и получите скидку на большое обучение «Spark Developer»

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576


Как выучить язык программирования Java

👉 Java Times


Паттерн Мост (Bridge)

Bridge — это структурный паттерн, который разделяет абстракцию и её реализацию, позволяя изменять их независимо друг от друга. Это достигается созданием интерфейса (абстракции) и его конкретных реализаций, которые можно менять, не влияя на абстракцию.

Использование:


🔹 Когда нужно разделить сложные системы на отдельные, независимые части.
🔹 Когда требуется поддерживать множество вариантов реализации для одной и той же абстракции.
🔹 Когда необходимо минимизировать связанность между абстракцией и её реализацией, делая систему более гибкой и расширяемой.

Преимущества:

1️⃣ Снижает связанность между абстракцией и реализацией, что упрощает модификации.
2️⃣ Позволяет изменять реализации без изменения кода абстракции.
3️⃣ Упрощает расширение системы за счёт добавления новых абстракций и реализаций.

Недостатки:

1️⃣ Увеличивает сложность проекта из-за необходимости введения дополнительных классов.
2️⃣ Могут возникнуть трудности с отладкой, если абстракция и реализация сильно изолированы.

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

👉 Java Times | #паттерны


Паттерн Цепочка обязанностей (Chain of Responsibility)

Chain of Responsibility — это поведенческий паттерн, который позволяет передавать запросы по цепочке обработчиков, пока один из них не обработает запрос. Каждый обработчик в цепочке решает, может ли он обработать запрос или передать его следующему по цепочке.

Использование:

🔹 Когда нужно избежать жесткой привязки отправителя запроса к получателю.
🔹 Когда запрос должен быть обработан несколькими объектами, но заранее неизвестно, кто именно обработает запрос.
🔹 Когда необходимо гибко настраивать систему, добавляя или убирая обработчиков.

Преимущества:


1️⃣ Ослабляет связанность между объектами, отправляющими запросы, и объектами, обрабатывающими их.
2️⃣ Позволяет динамически добавлять новые обработчики в цепочку.
3️⃣ Способствует соблюдению принципа единственной ответственности, позволяя каждому обработчику заниматься своей задачей.

Недостатки:

1️⃣ Может быть сложнее отслеживать, кто в конечном итоге обработал запрос, особенно при длинных цепочках.
2️⃣ Не гарантирует, что запрос будет обработан, если ни один из обработчиков не способен это сделать.
3️⃣ Может усложнить структуру программы при использовании большого числа обработчиков.

📌 Паттерн полезен, когда необходимо разделить ответственность за обработку запросов между несколькими объектами, не создавая прямых зависимостей между ними.

👉 Java Times | #паттерны


Бесплатный вебинар, который поможет начать изучение Spark с нуля!

👨‍💻🛠👨🏻‍💻 Кому будет полезно?
- Data-инженерам и аналитикам, работающим с большими объемами данных
- Программистам, переходящим с других технологий обработки данных на Spark

Не пропустите прямой эфир, где мы начнем изучение Big Data фреймворка и подробно разберем обработку графов с помощью Spark:
- ключевые понятия, включая структуру графов, а также алгоритмы, доступные в библиотеках GraphX и GraphFrames
- создание и обработку графов на основе различных типов данных
- эффективную работу с большими графами
- 2 популярных алгоритма для анализа данных: PageRank и Connected Components
- интеграцию графов в проекты
- практические примеры построения графов и их анализ

Все участники вебинара смогут продолжить обучение на курсе «Spark Developer» с выгодной скидкой.

➡️ Регистрация

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576


Java как первый язык

👉 Java Times


Вопрос с собеседования

Что такое String Pool в Java и как он работает?

Ответ: String Pool — это специальная область в памяти, где хранятся строковые литералы. Когда создается строка с помощью литерала (например, String s = "Hello";), JVM проверяет, существует ли уже такая строка в пуле. Если строка с таким значением уже есть, используется существующая строка, иначе создается новая строка и добавляется в пул. Это позволяет экономить память, так как одинаковые строковые литералы будут ссылаться на один и тот же объект в пуле.

👉 Java Times | #собеседование


🖥 Паттерн Прототип (Prototype)

Prototype — это порождающий паттерн, который позволяет создавать новые объекты путем клонирования уже существующих. Вместо создания объектов с нуля, можно копировать существующие, что сокращает время и ресурсы на создание объектов с похожими параметрами.

Использование:


🟡 Когда необходимо создать объект, похожий на уже существующий, без повторного создания его с нуля.
🟡 В случаях, когда создание объекта «вручную» слишком затратно (например, сложная инициализация).
🟡 Если объект имеет много различных вариантов состояния, и требуется быстро получать новый экземпляр с определенным набором свойств.

Преимущества:

1️⃣ Позволяет создавать новые объекты путем клонирования, что может быть гораздо быстрее, чем создание с нуля.
2️⃣ Можно легко менять клонированные объекты, не затрагивая исходный.
3️⃣ Клонирование полезно для объектов с множеством состояний или структур (например, сложные графические объекты).

Недостатки:

1️⃣ Если объект имеет сложные вложенные структуры, потребуется реализация глубокого копирования, что может быть сложно и затратно.
2️⃣ Для копирования объектов может потребоваться много памяти, особенно если объекты большие.
3️⃣ Клон напрямую зависит от структуры исходного объекта, что может затруднить масштабирование или изменение логики.

📌 Паттерн полезен, когда нужно быстро и гибко создавать объекты, особенно если они имеют множество состояний. Например, при работе с графическими редакторами или в играх, где нужно дублировать сложные сущности с минимальными изменениями.

@javatimes #java


Вопрос на собеседовании

Что такое ConcurrentHashMap в Java, как он работает и чем отличается от HashMap в многопоточной среде?

Ответ ⬇️
ConcurrentHashMap — это потокобезопасная версия HashMap, предназначенная для использования в многопоточной среде. В отличие от HashMap, который не является потокобезопасным и может приводить к состояниям гонки, ConcurrentHashMap позволяет нескольким потокам одновременно читать и изменять карту без блокировок всей коллекции. Он достигает этого за счёт сегментации и блокировок на уровне сегментов, а не всей структуры.

Пример использования ⚙️
import java.util.concurrent.ConcurrentHashMap;

public class Main {
public static void main(String[] args) {
ConcurrentHashMap map = new ConcurrentHashMap();

map.put("Alice", 1);
map.put("Bob", 2);

map.computeIfPresent("Alice", (key, val) -> val + 1);

System.out.println(map); // {Alice=2, Bob=2}
}
}


Ставь 👍 если знал ответ, 🙈 если нет
Забирай 📚 Базу книг по Java


Вопрос с собеседования

Что произойдет с ArrayList, если из него удалить почти все элементы?

Ответ: Размер внутреннего массива ArrayList не уменьшается автоматически после удаления элементов. Например, если в списке было 1 000 000 элементов, а осталось 100, он все равно занимает память для миллиона элементов, пока не будет вызван trimToSize().

👉 Java Times | #собеседование

20 ta oxirgi post ko‘rsatilgan.