22676
№ 4931127152 Изучаем Java. По вопросам сотрудничества: @adv_and_pr Канал на бирже: https://telega.in/c/seniorjavist
➡️ HikariCP — высокопроизводительный пул соединений для баз данных
HikariCP — это лёгкий и быстрый пул соединений для баз данных, который считается одним из самых производительных в экосистеме Java.
Он минимизирует задержки при подключении к базам данных, обеспечивая быстрый доступ к ресурсам и высокую масштабируемость. Благодаря простоте настройки и высокой производительности, HikariCP является отличным выбором для проектов, где требуется эффективное управление соединениями с базой данных.
🗣 HikariCP — отличный выбор для высоконагруженных приложений, где важна производительность и стабильность соединений с базой данных.
🔗 Ссылочка на доку
Инкапсуляция
Инкапсуляция в Java является механизмом обёртывания данных (переменных) и кода, работающего с данными (методами), в одно целое. В инкапсуляции переменные класса будут скрыты от других классов и доступ к ним может быть получен только с помощью метода их текущего класса. По-другому это называется скрытием данных.
Для достижения инкапсуляции в Java:
☕️ Объявите переменные класса как private.
☕️ Предоставьте public к методам установки и получения (сеттеру и геттеру) для изменения и просмотра значений переменных.
Преимущества инкапсуляции:
☕️ Поля класса можно сделать только для чтения или только для записи.
☕️ Класс может иметь полный контроль над тем, что хранится в его полях.
#вопросы_с_собеседований
Для чего используются ключевые слова volatile, synchronized, transient, native?volatile вынуждает потоки отключить оптимизацию доступа и использовать единственный экземпляр переменной. Если переменная примитивного типа – этого будет достаточно для обеспечения потокобезопасности. Если же переменная является ссылкой на объект – синхронизировано будет исключительно значение этой ссылки. Все данные, содержащиеся в объекте, синхронизированы не будут!synchronized — это зарезервированное слово позволяет добиваться синхронизации в помеченных им методах или блоках кода.
Ключевые слова transient и native к многопоточности никакого отношения не имеют, первое используется для указания полей класса, которые не нужно сериализовать, а второе сигнализирует о том, что метод реализован в платформо-зависимом коде.
Вам доклады по Go или Java? VK приглашает на митап с двойной начинкой
26 августа VK собирает Go- и Java-инженеров, чтобы прокачать знания.
В программе два трека — Go и Java, по три доклада в каждом.
Трек Go:
• «Компиляция Go в динамическую либу, или как мы ускорили выкатку фичи в два раза, но нам не понравилось», Михаил Кичигин, бэкенд-разработчик, Avito Tech
• «Go-платформа VK: как мы построили единую основу для создания Go-сервисов», Александр Апанасенко, руководитель команды SDK Backend, VK
• «Почтальон от Kubernetes до Palo Alto. Как осуществляется доставка информации об адресах», Дарья Кулькина, бэкенд-разработчик, Точка Банк
Трек Java:
• «Перформанс-трюки в поисковой платформе Ozon», Пётр Портнов, ведущий разработчик среднего поиска, Ozon
• «Архитектура современного движка платёжной системы и переход к новой архитектуре», Игорь Крикунов, технический лидер разработки DBC, Альфа-Банк
• «Переход от федерации S3-кластеров в пользу коммунального и мультитенантного кластера», Кирилл Боблак, ведущий разработчик One-cloud, VK
А ещё будет мастер-класс по прокачке навыка, который сделает вас звездой любого вечера, и афтепати, чтобы обсудить доклады в неформальной обстановке.
Встречаемся в 17:00, начало в 18:00. Участие бесплатное, регистрация обязательна.
👩💻 Работа с Kafka через библиотеку Kafka Clients
Приглашаем на открытый урок.
🗓 26 августа в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java разработчик. Продвинутый уровень».
Kafka Clients это нижний уровень для работы с Kafka из Java. Все более высокоуровневые библиотеки основаны на нем.
Данный открытый урок проходит в рамках курса Java разработчик. Продвинутый уровень.
О чем поговорим:
✔️ Чтение и отправка сообщений в Kafka
✔️ Управление топиками
✔️ Разные форматы: текст, JSON, Avro
✔️ Использование транзакций
🔗 Ссылка на регистрацию: https://otus.pw/U2xB/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
#вопросы_с_собеседований
Какая польза от WebClient и WebTestClient?
WebClient — это компонент нового Web Reactive Framework, который может действовать как реактивный клиент для выполнения неблокирующих HTTP-запросов. Поскольку это реактивный клиент, он может обрабатывать реактивные потоки и в полной мере использовать лямбда-выражения Java 8. Он также может обрабатывать как синхронные, так и асинхронные сценарии.
С другой стороны, WebTestClient – это аналогичный класс, который мы можем использовать в тестах. По сути, это тонкая оболочка вокруг WebClient. Он может подключаться к любому серверу через HTTP-соединение. Он также может напрямую связываться с приложениями WebFlux, используя фиктивные объекты запросов и ответов, без необходимости использования HTTP-сервера.
#вопросы_с_собеседований
Есть ли недостатки у сборки мусора в Java?
Да. Всякий раз, когда запускается сборщик мусора, он влияет на производительность приложения. Это связано с тем, что все остальные потоки в приложении должны быть остановлены, чтобы поток сборщика мусора мог эффективно выполнять свою работу.
В зависимости от требований приложения это может стать реальной проблемой, неприемлемой для клиента. Однако эту проблему можно значительно уменьшить или даже устранить за счет умелой оптимизации и настройки сборщика мусора, а также использования его различных алгоритмов.
#вопросы_с_собеседований
Объясните смысл параметров в конструкторе HashMap(int initialCapacity, float loadFactor)
• initialCapacity - исходный размер HashMap, количество корзин в хэш-таблице в момент её создания.
• loadFactor - коэффициент заполнения HashMap, при превышении которого происходит увеличение количества корзин и автоматическое перехэширование. Равен отношению числа уже хранимых элементов в таблице к её размеру.
➡️ 5 сентября пройдет deep tech night — событие Яндекса о технологических вызовах в эпоху AI
Эксперты обсудят, как AI меняет инфраструктуру, архитектуру, процессы разработки и роли в командах.
🗣 Мо Гавдат, ex-Chief Business Officer Google X, расскажет, как генеративные модели могут фундаментально изменить разработку и подходы к постановке задач. Отдельно — про эволюцию инженерных команд и вызовы, которые их ждут.
Также участников ждет блок, посвященный технологической экспертизе и инженерному опыту Яндекса: например, Алексей Гусаков, CTO бизнес-группы Поисковых сервисов и ИИ, разберёт, как генеративные модели меняют рекомендательные системы, дополняя классический ML и отказываясь от ручного фичеинжиниринга.
Эти и другие доклады из Hard-трека будут доступны в онлайне, также в прямом эфире пройдет Q&A-сессия с экспертами. Полную программу и подробности про офлайн-участие можно узнать на сайте.
Регистрируемся на онлайн-трансляцию.
#вопросы_с_собеседований
Что такое Dead lock?
Случай когда у нас выполняются два потока(A, B) и наш первый поток(А) заблокировал метод a() и второй поток(В) заблокировал метод b() и в то же время поток А пытается получить доступ к методу b(), а поток B пытается получить доступ к методу а() называют dead lock.
#вопросы_с_собеседований
Как создать поток-демон?
Объявить поток демоном достаточно просто — нужно перед запуском потока вызвать его метод setDaemon(true).
Проверить, является ли поток демоном, можно вызвав его метод boolean isDaemon().
OpenCSV
OpenCSV — это библиотека Java с открытым исходным кодом, предназначенная для работы с CSV-файлами. Она обеспечивает простой и удобный интерфейс для чтения, записи, обработки и анализа CSV-данных. OpenCSV является одной из самых популярных библиотек для работы с CSV в Java, благодаря своей простоте использования, производительности и широкому набору функций.
https://opencsv.sourceforge.net/
#для_продвинутых
➡️ MyBatis — мощный ORM-фреймворк для работы с базами данных
MyBatis — это гибкий и мощный фреймворк для работы с базами данных, который позволяет маппировать SQL-запросы на Java-объекты. В отличие от других ORM, таких как Hibernate, MyBatis предоставляет больше контроля над SQL-запросами и позволяет напрямую писать SQL, оставаясь при этом гибким инструментом для работы с базами данных.
🗣 MyBatis — это отличный выбор для тех, кто хочет больше контроля над SQL-запросами, но при этом предпочитает типобезопасное взаимодействие с базой данных.
🔗 Ссылочка на доку
➡️ Использование Virtual Threads для упрощения многопоточности
В Java 21 были введены виртуальные потоки — лёгковесные потоки, которые значительно упрощают создание и управление большим количеством параллельных задач. Они позволяют запускать тысячи и даже миллионы потоков без значительных затрат ресурсов и сложности управления.• Виртуальные потоки потребляют меньше системных ресурсов, позволяя более эффективно использовать многопоточность.• Они упрощают написание параллельного кода, делая его более читаемым и поддерживаемым.
➡️ JUnit 5 — современный инструмент для модульного тестирования
JUnit 5 — это обновлённая версия популярной библиотеки для тестирования, которая предоставляет мощный и гибкий API для написания модульных тестов. JUnit 5 поддерживает аннотации для удобного создания тестов, расширяемость через расширения, а также работу с различными тестовыми сценариями. Он также лучше интегрируется с современными инструментами и фреймворками.
🗣 JUnit 5 — идеальный выбор для проектов, где необходимо гибкое и масштабируемое тестирование с возможностью использования мощных расширений.
🔗 Ссылочка на доку
Встроенные исключения
Java определяет несколько классов исключений внутри стандартного пакета java.lang.
Наиболее общие из этих исключений являются подклассами стандартного типа RuntimeException. Поскольку java.lang неявно импортируется во все java-программы, то большинство исключений, полученных из RuntimeException, автоматические.
Java определяет несколько других типов исключений, которые относятся к его различным библиотекам класса. Ниже приведен список неконтролируемых исключений на этапе выполнения (Unchecked RuntimeException).
#вопросы_с_собеседований
В чем разница между Hashset и Treeset?
Классы HashSet и TreeSet реализуют интерфейс Set и представляют наборы отдельных элементов. Кроме того, TreeSet реализует интерфейс NavigableSet. Этот интерфейс определяет методы, использующие порядок элементов.
HashSet внутренне основан на HashMap, а TreeSet поддерживается экземпляром TreeMap, который определяет их свойства: HashSet не хранит элементы в каком-либо определенном порядке. Итерация по элементам в HashSet проиcходит в перемешанном порядке. TreeSet, с другой стороны, создает элементы по порядку в соответствии с некоторым предопределенным Компаратором.
Зубчатый массив в Java
Зубчатый массив — это массив массивов, в котором массивы элементов могут быть разных размеров, т. е. мы можем создать двумерный массив, но с переменным числом столбцов в каждой строке. Эти типы массивов также известны как зубчатые массивы.
Подробнее о зубчатых массивах можно почитать здесь.
#вопросы_с_собеседований
Могут ли у разных объектов быть одинаковые hashCode()?
Да, могут. Метод hashCode() не гарантирует уникальность возвращаемого значения. Ситуация, когда у разных объектов одинаковые хэш коды называется коллизией. Вероятность возникновения коллизии зависит от используемого алгоритма генерации хэш кода.
#вопросы_с_собеседований
Опишите различные типы примитивов и объемы памяти, которые они занимают.
Java имеет 8 примитивных типов:
☕️ boolean — логическое значение true/false. Размер логического значения не определяется спецификацией JVM и может различаться в разных реализациях
☕️ byte — 8-битное значение со знаком
☕️ short — 16-битное значение со знаком
☕️ char — беззнаковое 16-битное значение
☕️ int — 32-битное значение со знаком
☕️ long — 64-битное значение со знаком
☕️ float — 32-битное значение с плавающей запятой одинарной точности, соответствующее стандарту IEEE 754
☕️ double — 64-битное значение с плавающей запятой двойной точности, соответствующее стандарту IEEE 754
Запрограммируй робота на Java и поборись за призовой фонд трека 7 500 000 руб на True Tech Champ 2026.
Попробуй себя в треке по программированию роботов. Начать проще, чем кажется: зарегистрируйся, собери команду или объединись с другими участниками на платформе и пройди квалификационный этап до 13 сентября. В онлайн-симуляторе тебе предстоит запрограммировать робособаку и робота-манипулятора для доставки груза через полосу препятствий. Количество попыток не ограничено, а еще тебя будет ждать серия обучающих вебинаров.
Лучшие команды пройдут в финал и будут программировать реальных роботов на офлайн-полигоне 22 октября на большой сцене.
Масштабный финал объединит борьбу за призовой фонд, выступления хедлайнеров, доклады спикеров и активности для всех гостей мероприятия.
Рекомендуемые стеки: Go, Java, Python, C#, C++, JS.
Успей зарегистрироваться и пройти квалификацию до 13 сентября.
Реклама. ООО "МВС", ИНН 7707767501, Erid:2VSb5xfm9w8
🔴 Завтра тестовое собеседование с Java-разработчиком
19 августа (уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика бесплатно!
Собеседование проведёт Сергей Чамкин - старший разработчик из Uzum, ex-WildBerries
Как это будет:
📂 Сергей задаст разработчику-добровольцу вопросы и задачи, которые могут спросить на реальном собеседовании
📂 После каждого ответа респондента ты услышишь подробный комментарий и поймёшь, чего на самом деле ожидает собеседующий на интервью
📂 В конце сможешь задать любой вопрос Сергею и получить на него развёрнутый ответ
Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы 🔥
Хочешь также? Тогда приходи завтра на бесплатный эфир
Жми на кнопку и переходи в бота, чтобы получить приглашение ↓
@shortcut_sh_bot
Реклама.
О рекламодателе.
Как бы вы связали Spring MVC Framework с архитектурой MVC?
Как следует из названия, Spring MVC построен на основе архитектуры Model-View-Controller. DispatcherServlet — это передний контроллер в приложении Spring MVC, который обрабатывает все входящие запросы и делегирует их различным методам обработчика контроллера.
Моделью может быть любой Java-бин в Spring Framework, как и в любой другой среде MVC Spring обеспечивает автоматическую привязку данных формы к Java-бинам. Мы можем установить bean-компоненты модели в качестве атрибутов, которые будут использоваться на страницах View.
Страницы View могут быть JSP, статическим HTML и т. д., а преобразователи представлений отвечают за поиск правильной страницы просмотра. Как только страница просмотра идентифицирована, управление возвращается контроллеру DispatcherServlet. DispatcherServlet отвечает за визуализацию представления и возврат окончательного ответа клиенту.
Как можно извлечь цвет изображения из PDF IText Java?
Чтобы извлечь цвет изображения из PDF-файла с помощью IText и Java, вы можете использовать класс PdfImageObject для извлечения необработанных данных изображения из PDF-файла, а затем использовать класс BufferedImage из API ввода-вывода изображений Java для создания буферизованного изображения из необработанных данных.
Оттуда вы можете использовать метод getRGB() класса BufferedImage для получения цвета определенного пикселя изображения.
#вопросы_с_собеседований
Как получить текущую дату с использованием Date Time API из Java 8?LocalDate.now();Как добавить 1 неделю, 1 месяц, 1 год, 10 лет к текущей дате с использованием Date Time API?LocalDate.now().plusWeeks(1);
LocalDate.now().plusMonths(1);
LocalDate.now().plusYears(1);
LocalDate.now().plus(1, ChronoUnit.DECADES);
uniVocity-parsers
uniVocity-parsers — это набор высокопроизводительных и надежных парсеров для Java. Он предлагает унифицированный интерфейс для работы с различными форматами файлов, а также надежную инфраструктуру для разработки новых парсеров.
#для_продвинутых
FastCSV
FastCSV — это высокопроизводительная, соответствующая RFC и не требующая зависимостей библиотека CSV для Java. Она является одной из самых популярных библиотек CSV для Java на GitHub.
https://github.com/osiegmar/FastCSV
#для_продвинутых
➡️ Использование метода Optional.ifPresentOrElse() для обработки значения или выполнения альтернативного действия
Начиная с Java 9, метод Optional.ifPresentOrElse() позволяет выполнить действие, если значение присутствует, или выполнить другое действие, если значение отсутствует. Это помогает избавиться от лишних проверок на наличие значения.• Optional.ifPresentOrElse() упрощает обработку значений и позволяет добавить fallback-логику в случае отсутствия значения.• Этот метод делает код более компактным и читабельным, устраняя необходимость использовать громоздкие условные конструкции.
➡️ TestContainers — инструмент для тестирования с использованием контейнеров Docker
TestContainers — это библиотека, которая позволяет создавать тестовые окружения с использованием Docker-контейнеров. Это особенно полезно для тестирования взаимодействий с базами данных, сообщениями, веб-сервисами и другими инфраструктурными компонентами в изолированной среде.
TestContainers помогает запускать интеграционные тесты, используя реальные сервисы, работающие в контейнерах.
🗣 TestContainers — идеальный выбор для разработки интеграционных тестов, где нужно взаимодействовать с реальными сервисами.
🔗 Ссылочка на доку
Собираем бэкенд-комьюнити на JVM Day
Бэкендеры, 29 августа в Москве пройдет хардкорная конференция. Ждут своих: Java-, Scala- и Kotlin-разработчиков, архитекторов и тимлидов.
Здесь выступят и расскажут:
— Андрей Кулешов — что нового в мире JVM за год.
— Сергей Петрелевич — разработка по Mechanical Sympathy.
— Александр Ланцов — Java после Loom: другие модели concurrency.
— Антон Курако — как бенчмарки вводят в заблуждение.
А вечером во дворе T-Space — посиделки, интерактивы и открытый микрофон с историями ошибок.
Мест мало, а цена билета будет расти.
Успевай зарегистрироваться