№ 4931127152 Изучаем Java. По вопросам сотрудничества: @adv_and_pr Канал на бирже: https://telega.in/c/seniorjavist
Что такое ключевое слово final и где его использовать?
Ключевое слово final можно использовать для переменных, методов и классов.
1. final переменную нельзя переназначить на другой объект.
2. final класс бесплоден, у него не может быть наследников.
3. final метод не может быть переопределен у предка.
Пробежали по верхам, теперь обсудим более подробно final переменные. Java даёт нам два способа создать переменную и присвоить ей некоторое значение:
1. Можно объявить переменную и инициализировать ее позже.
2. Можно объявить переменную и сразу же назначить ее.
Пример с использованием final переменной для этих случаев приведен выше на картинке.
Класс-оболочка и тип данных
В приведенном выше примере второй оператор печати не будет отображать значение true, поскольку сравниваются ссылки на объекты класса-оболочки, а не их значения.
#вопросы_с_собеседований
Какие два класса не наследуются от Object?
Ответ: Не ведитесь на провокации, нет таких классов: все классы прямо или через предков наследуются от класса Object!
Метод fill()
Присваивает определенное значение int к каждому элементу указанного целочисленного массива. Такой же метод может быть использован всеми другими примитивными типами данных (byte, short, int и т.д.).
🔥 Хардкорный тест для разработчиков, тимлидов и архитекторов! 💻 Ответьте на 11 вопросов и узнайте, достаточно ли у вас знаний, чтобы пройти онлайн-курс «Software Architect» в OTUS по спец.цене.
🦾 Курс поможет прокачать весь арсенал навыков, необходимых архитектору ПО.
❇️ Пройти тест - https://otus.pw/5ano/
💣 Знание продвинутых техник построения архитектуры — это топ-компетенции для программистов в 2025 году. За 4 месяца обучения вы изучите тактики работы с атрибутами качества и архитектурные решения, а также узнаете, как проектировать архитектуру мобильных приложений, микросервисов, баз данных и ML архитектуру пайплайнов.
🎁 Для получения спец.цены используйте промокод, который дает скидку на обучение - SoftwareArc_06
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Generics
Всегда старайтесь типизировать ваши коллекции, методы и классы. Это избавляет сразу от 2-х потенциальных проблем: приведение типов и ошибок выполнения. Также назначение таких коллекций легче воспринимать. Особенно часто этим пренебрегают мои американо-индусские коллеги. Если же ваша коллекция должна содержать обьекты разных типов — используйте <?>, а еще лучше <? extends someType> тогда зная общий класс/интерфейс для всех обьектов вам не прийдется делать приведение типов и применять оператор instanceOf.
Битва титанов: Java vs Kotlin
Один из старейших языков программирования Java и один из наиболее молодых Kotlin — активно используются для мобильной разработки. Но они также подходят для создания десктопных и серверных решений. Главный разработчик Группы «Иннотех» Владимир Полховцев сравнивает двух гигантов Android-разработки.
Смотреть статью
#вопросы_с_собеседований
Что такое исключение? Какой пакет содержит все определения классов исключений в Java?
Исключения (Exceptions) — это нештатные ситуации, возникающие во время выполнения программы. Они могут произойти в результате неправильного ввода пользователем или неправильной логики кодера. Пакет java.lang.Exception содержит все определения классов исключений в Java.
#вопросы_с_собеседований
Какие есть примитивные типы данных в Java?
В Java существует 8 примитивных типов данных:
1. short
2. byte
3. char
4. int
5. float
6. double
7. long
8. boolean
⁉️ Монолит или микросервисы? Руководство для архитекторов, которые ценят свои нервы
Приглашаем на открытый урок.
🗓 17 июня в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Software Architect».
📌 Что будет на вебинаре:
✔️ Как не попасть в ловушку “модных” микросервисов;
✔️ Разбор признаков, что пора выходить из монолита;
✔️ Архитектурные паттерны для перехода к микросервисам (Strangler Fig, BFF, Self-contained systems);
✔️ Организационные и технические риски — что точно пойдёт не так и как это предсказать;
✔️ Роль DevOps, CI/CD и мониторинга в выборе архитектуры.
🎯 После вебинара вы:
- Получите пошаговое руководство по выбору архитектуры под ваш проект;
- Научитесь оценивать реальные риски и стоимость микросервисов;
- Поймёте, как внедрять архитектурные изменения без сбоев и хаоса;
- Увидите, как принимать взвешенные архитектурные решения, сохраняя технический контроль и производительность команды.
💡 Идеальный вебинар для тех, кто хочет перестать "архитектурить на ощущениях" и начать действовать стратегически.
🎁 Всем участникам вебинара дарим промокод, который дает скидку на обучение - SoftwareArc_06
👉 Регистрация на вебинар: https://otus.pw/ETxF/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Spring JDBC
Spring JDBC - это фреймворк Spring, который предоставляет удобный и гибкий доступ к базам данных через JDBC API в Java.
В данном примере создается класс JdbcTemplateExample
, в конструктор которого передается Datasource
. JdbcTemplate
используется для выполнения запросов к базе данных.
Метод getAllNames
использует метод query
для выполнения запроса SELECT
и получения имени всех пользователей из таблицы users
, обрабатывая результаты через интерфейс RowMapper
.
Метод addUser
использует метод update
для выполнения запроса INSERT
и добавления нового пользователя в таблицу users
.
Результатом метода getAllNames
будет список всех имен пользователей, а метод addUser
добавит нового пользователя в таблицу users
.
*Чтобы полностью понимать, как работает Spring JDBC
, необходимо также разобраться в различных методах и классах, которые используются при работе с ним.
IdentityHashMap
Класс IdentityHashMap
в Java является реализацией интерфейса Map
и работает на основе проверки на равенство ссылок объектов, а не на основе метода equals
.
Это означает, что если два объекта, хранящихся в IdentityHashMap
, содержат одинаковые значения полей, но разные ссылки, то они будут считаться разными ключами.IdentityHashMap
может быть полезной альтернативой для HashMap
в тех случаях, когда ключом является объект, и необходимо учесть различие между ссылками на объект.
LinkedHashSet
LinkedHashSet представляет собой структуру данных, которая хранит элементы в порядке их добавления, а также не допускает дублирования элементов, как и HashSet.
Однако, в отличие от HashSet
, LinkedHashSet
сохраняет порядок добавления элементов, что может быть полезно в некоторых случаях.
Как видно из примера, элементы были добавлены в множество в порядке их добавления, а дубликат элемента "Java" не был добавлен в множество.
Графический интерфейс для bash, делаем работу в командной строке удобнее
Когда пишешь код в IntelliJ IDEA, привыкаешь что везде есть подсказки, везде где можно работает комплишен, всегда можно одним кликом перейти на декларацию метода или на его юсаджи.
Смотреть статью
👩💻 Java — один из самых востребованных языков, но не каждый разработчик умеет использовать его возможности по максимуму.
На курсе «Java Developer. Professional» вы научитесь создавать современные Java-приложения, освоите Spring WebFlux и Kafka, а также разберётесь в работе JVM изнутри.
Пройдите тест, проверьте, достаточно ли у вас знаний для обучения на курсе:.
🎁 Дарим промокод, который дает скидку на обучение - JAVA_06
На курсе вас ждёт практическая работа с кодом, детальные разборы, ревью от экспертов и подходы, позволяющие писать эффективный и чистый код.
Начните свой путь к уровню Middle+ и используйте Java на 100%.
➡️ Пройти вступительный тест курса: https://otus.pw/xc1M/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Ты будешь жалеть, что не узнал это о девушках раньше.
На канале Творчество чувств автор с многолетним опытом всех форматов отношений рассказывает о тонкостях женской психологии, которые ВАЖНО узнать перед тем, как подкатывать к той самой:
— Почему 95% девушек непригодны для построения отношений?
— 3 признака, кричащие о том, что девушка точно изменит в будущем
— Как за несколько сообщений влюбить в себя любую девушку
Подпишись и узнай секрет женской симпатии:
t.me/+NcZ3vFzbiY5mYWI6
Когда системы не хотят «дружить» между собой — начинается головная боль.😫
Особенно если речь идет о масштабировании и автоматизации процессов. Как избежать лишнего кода, сэкономить время и силы, при этом интегрировать внешние системы с Apache Kafka?
Ответ — Kafka Connect.
Записывайтесь на открытый вебинар, где мы разберем, как решить типичные проблемы интеграции и масштабирования.
Что будет на вебинаре:
✒️Основы Kafka Connect: Архитектура и принципы работы, коннекторы
✒️Практическая реализация: Настройка и запуск коннекторов для интеграции с базами данных и файловыми системами
✒️Ошибки и их решение: Как эффективно отлаживать и масштабировать Kafka Connect
23 июня в 19:00 (МСК) — Бесплатно!
Спикер: Валентин Шилин — Старший программист и аналитик данных в Deutsche Telekom IT GmbH
Дарим чек-лист по установке Kafka Connect при регистрации на вебинар!
Присоединяйтесь, если хотите научиться упрощать сложные задачи и увеличивать надежность своих систем: https://tglink.io/a095b9ea23bb
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFH9DjD2
Как контролировать и управлять приложениями на Spring Boot без лишней головной боли?
На открытом вебинаре «Spring Boot Actuator: основы мониторинга и управления приложением» 25 июня в 20:00 МСК мы разберём:
- Для чего нужен Spring Boot Actuator.
- Как настроить и использовать метрики для контроля приложений.
- Как избежать проблем с производительностью на ранних этапах разработки.
Представьте, что вы с лёгкостью настраиваете мониторинг, отслеживаете метрики и эффективно управляете приложениями без перерывов в работе. Это станет возможным, если освоить Spring Boot Actuator.
Открытый урок проходит в преддверии старта курса «Разработчик на Spring Framework» — все участники получат скидку на обучение.
Регистрируйтесь прямо сейчас: https://otus.pw/NdoI/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Bit Set
Что, если нам нужно выполнить какие-то операции с массивами битов? Вы будете использовать для этого boolean[]?
Для этого есть более эффективный с точки зрения использования памяти метод.
Это класс BitSet, позволяющий нам хранить массивы битов и манипулировать ими. По сравнению с boolean[] он требует в 8 раз меньше памяти. Мы можем выполнять логические операции над массивами, такими как, например and, or, xor.
Допустим, у нас есть два входных массива битов. Мы хотим провести на них операцию xor.
Уточню, операция xor, возвращает только те элементы, которые имеются только в одном массиве, но не в другом. Для этого нам нужно создать два экземпляра BitSet и вставить туда элементы, как показано ниже. Наконец, вы должны вызвать метод xor в одном из BitSet объектов, указав в качестве аргумента второй BitSet объект.
Шестнадцатеричный формат
Иногда нам нужно преобразовать строки в шестнадцатеричный формат, байты или символы. Начиная с Java 17 вы можете использовать класс HexFormat. Просто создайте экземпляр HexFormat, а затем вы можете отформатировать, например, входную таблицу byte в шестнадцатеричную строку. Вы также можете, например, преобразовать входную шестнадцатеричную строку в таблицу байтов, как показано выше.
#вопросы_с_собеседований
Почему нельзя объявить метод интерфейса с модификатором final?
В случае интерфейсов указание модификатора final бессмысленно, т.к. все методы интерфейсов неявно объявляются как абстрактные, т.е. их невозможно выполнить, не реализовав где-то еще, а этого нельзя будет сделать, если у метода идентификатор final.
Collection только для чтения
В Java есть полезные методы, позволяющие сделать класс Collection доступным только для чтения.
Мы можем сделать коллекцию только для чтения, используя один из следующих методов.
👩💻 JPQL: как писать запросы, которые не сломают Hibernate
Узнайте, как писать JPQL-запросы, которые ускорят Hibernate в 5 раз, избегая критических ошибок, тормозящих 80% проектов!
Приглашаем на открытый урок
🗓 19 июня в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Professional».
🎯 О чём поговорим:
✔️- JPQL vs SQL: почему ваши запросы ломают Hibernate и как их переписать так, чтобы БД не «умирала» под нагрузкой.
✔️ Тайные ловушки: антипаттерны JPQL, генерирующие N+1 SELECT и тормозящие приложение, и методы их поиска в коде.
✔️ Оптимизация на максимум: как использовать JOIN FETCH, подзапросы и кэширование в JPQL для мгновенного ускорения Hibernate.
👥 Кому будет интересно:
Java-разработчикам, использующим Hibernate, системным архитекторам и инженерам по оптимизации производительности.
💡В результате урока вы:
Научитесь писать эффективные JPQL-запросы, избегать распространённых ошибок и значительно ускорять работу Hibernate-приложений.
🎁 Дарим промокод, который дает скидку на обучение - JAVA_06
🔗 Ссылка на регистрацию: https://otus.pw/FHz0/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
#вопросы_с_собеседований
Чем занимается сборка мусора в Java?
Сборка мусора Java — это метод, с помощью которого приложения Java автоматически сохраняют свою память, удаляя или очищая неиспользуемые объекты и пакеты в памяти.
flatMap
flatMap - это метод, который принимает функцию в качестве параметра, применяет ее ко всем элементам потока, а затем объединяет результаты в один поток. Обычно используется для работы с потоками, содержащими другие потоки или коллекции.
В этом примере мы используем flatMap
для преобразования потока сотрудников в поток проектов, используя лямбда-выражение, которое возвращает поток проектов сотрудника. Затем мы собираем все проекты в один поток при помощи метода collect
.
Таким образом, flatMap
очень полезен в случаях, когда нужно преобразовать поток, содержащий другие потоки или коллекции, в один плоский поток.
erid: 2W5zFGzRWUY
Канал про собеседования, алгоритмы, System Design, процессы, культуру и инженерию в FAANG/BigTech
Автор канала — разработчик с 18-летним опытом, из которых 8 лет он провёл в FAANG (3,5 года — в Amazon). Работал и жил в России, Германии, Люксембурге и Великобритании, провёл более 100 технических интервью в FAANG-компании.
На канале разбираю реальные задачи с собеседований в FAANG по алгоритмам и System Design. Рассматриваю задачи из не-FAANG компаний на Java, делая акцент на многопоточность. Делюсь опытом работы в FAANG, рассказываю о процессах, технологиях и инженерной культуре, обсуждаю особенности релокации и жизни разработчика в разных странах.
Если вам интересны эти темы, подписывайтесь: t.me/faangmaster
#вопросы_с_собеседований
Какие виды Garbage Collector есть в HotSpot?
В HotSpot JVM имеется несколько видов Garbage Collector:
1. Serial: однопоточный сборщик мусора, обрабатывает один поток в куче, который блокирует все приложение на этапе сборки мусора;
2. Parallel: многопоточный сборщик мусора, работает по тому же принципу, что и Serial, но использует несколько потоков для устройства сборки мусора, что сокращает время блокировки приложения;
3. CMS (Concurrent Mark-Sweep): сборщик мусора для больших куч, работает параллельно со стоп-временем, когда сборка мусора производится мгновенно, а приложение продолжает работу во время сборки мусора;
4. G1 (Garbage First): сборщик мусора нового поколения с выделенной кучей на основе регионов, который был разработан с целью улучшения показателей быстродействия и уменьшения времени блокировки. G1 собирает мусор в регионах, где около 25% от общего числа объектов имеют самую высокую степень задействованности и блокирует только те регионы, где собран мусор.
Холостые циклы в Java
Смысл холостого цикла состоит в ожидании события, до наступления которого текущий поток не может двигаться дальше.
Смотреть статью
Как сделать анимацию с помощью MotionLayout
MotionLayout – это контейнер, который позволяет просто создавать сложные анимации, для чего требуется лишь описать сцену.
Смотреть статью
#вопросы_с_собеседований
Зачем добавили ArrayList, если уже был Vector?
• Методы класса Vector синхронизированы, а ArrayList - нет;
• По умолчанию Vector удваивает свой размер, когда заканчивается выделенная под элементы память. ArrayList же увеличивает свой размер только на половину.
Vector это устаревший класс и его использование не рекомендовано.