Библиотека джависта | Java, Spring, Maven, Hibernate
24.9K subscribers
1.86K photos
38 videos
42 files
2.64K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://yangx.top/proglibrary/9197

Обратная связь: @proglibrary_feedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
O(N). Вставка элемента в конец списка осуществляется за время O(1), но если вместимость массива недостаточна, то происходит создание нового массива с увеличенным размером и копирование всех элементов из старого массива в новый.
Каким будет результат компиляции и исполнения этого кода?
Каким будет результат компиляции и исполнения этого кода?
Anonymous Quiz
5%
10
14%
11
12%
12
45%
17
23%
18
Специальный гость панельной дискуссии «Как выиграть в конкурентной борьбе за сети» — видеоблогер Wylsacom.

💥Saint HighLoad++ посетит ведущий самого популярного в России канала о технологиях и о том, как жить в ногу со временем!

😉Пока мы точно знаем, что Wylsacom будет на открытии конференции и на докладе об ускорении ВКонтакте. И примет участие в панельной дискуссии «Как выиграть в конкурентной борьбе за сети».

Кажется, Wylsacom, знает о докладах команды ВКонтакте что-то, чего ещё не знаем мы. Подключайтесь 20 сентября на открытую трансляцию главного зала Saint HighLoad++ и узнайте это первыми: https://bit.ly/3kp5sx3
#вопросы_с_собеседований
Какие аннотации фикстур существуют в JUnit?
@BeforeClass - определяет код, который должен единожды выполниться перед запуском набора тестовых методов.
@AfterClass - код, выполняемый один раз после исполнения набора тестовых методов.
@Before - определяет код, который должен выполняться каждый раз перд запуском любого тестовым методом.
@After - код, выполняемый каждый раз после исполнения любого тестового метода.
#вопросы_с_собеседований
Напишите минимальный неблокирующий стек (всего два метода — push() и pop()).
Я ищу Java-разработчика в международную компанию Amdocs, которая разрабатывает ПО для финтеха и телеком индустрии (биллинговые системы, CRM и т.д.). В Amdocs коллеги общаются как на русском, так и на английском языках, поэтому погружение в международную среду гарантировано.
Мы предлагаем дополнительные дни к отпуску, удалёнку, ДМС для всех членов семьи, вписанных в паспорт, с первого дня работы. У нас также есть программа внутренней мобильности в любую локацию и вакансию внутри компании ;)

Проект: биллинговая система Ensemble для одного из наших заказчиков – Beeline.
Задачи: backend-разработка в области Business Support Systems (BSS), взаимодействие с аналитиками, тестировщиками, другими разработчиками и др.
Стек: Java 8, 11, JavaEE, Oracle (PL/SQL, опыт оптимизации запросов), Spring, Gradle, Openshift (Okd), Solaris/Linux (shell-скрипты).
Команда: 15 Java-разработчиков, разработчики C, тестировщики, аналитики.

🔹 Также есть более новый проект по разработке биллинговой системы без легаси — Digital One (Java 11, Spring, микросервисы), там очень много английского.

https://www.amdocs.com/

Контакты: Ольга
8-929-622-00-77
[email protected]
#вопросы_с_собеседований
Какие конечные методы работы со стримами вы знаете?
🐘 8 лучших GUI клиентов PostgreSQL в 2021 году

Что такое графический интерфейс PostgreSQL? Зачем он нужен? Как это может помочь вам в управлении базами данных? Узнайте о лучшем программном обеспечении Postgre GUI, которое можно попробовать в 2021 году.

https://proglib.io/sh/Q3gDi6wsyZ
Библиотека джависта | Java, Spring, Maven, Hibernate
#вопросы_с_собеседований Какие конечные методы работы со стримами вы знаете?
findFirst() возвращает первый элемент;
findAny() возвращает любой подходящий элемент;
collect() представление результатов в виде коллекций и других структур данных;
count() возвращает количество элементов;
anyMatch() возвращает true, если условие выполняется хотя бы для одного элемента;
noneMatch() возвращает true, если условие не выполняется ни для одного элемента;
allMatch() возвращает true, если условие выполняется для всех элементов;
min() возвращает минимальный элемент, используя в качестве условия Comparator;
max() возвращает максимальный элемент, используя в качестве условия Comparator;
forEach() применяет функцию к каждому объекту (порядок при параллельном выполнении не гарантируется);
forEachOrdered() применяет функцию к каждому объекту с сохранением порядка элементов;
toArray() возвращает массив значений;
reduce()позволяет выполнять агрегатные функции и возвращать один результат.
Для числовых стримов дополнительно доступны:

sum() возвращает сумму всех чисел;
average() возвращает среднее арифметическое всех чисел.
Команда Luxoft ищет Senior Java-разработчиков и дает большой Welcome-бонус

Вас ждут интересные проекты, достойная зарплата и супер Welcome-bonus! Заполняйте короткую анкету и узнайте больше о работе мечты!
#вопросы_с_собеседований
Назовите различия между synchronized и ReentrantLock?
В Java 5 появился интерфейс Lock, предоставляющий возможности более эффективного и тонкого контроля блокировки ресурсов. ReentrantLock – распространённая реализация Lock, которая предоставляет Lock с таким же базовым поведением и семантикой, как у synchronized, но расширенными возможностями, такими как опрос о блокировании (lock polling), ожидание блокирования заданной длительности и прерываемое ожидание блокировки. Кроме того, он предлагает гораздо более высокую эффективность функционирования в условиях жесткой состязательности.

Что понимается под блокировкой с повторным входом (reentrant)? Просто то, что есть подсчет сбора данных, связанный с блокировкой, и если поток, который удерживает блокировку, снова ее получает, данные отражают увеличение, и тогда для реального разблокирования нужно два раза снять блокировку. Это аналогично семантике synchronized; если поток входит в синхронный блок, защищенный монитором, который уже принадлежит потоку, потоку будет разрешено дальнейшее функционирование, и блокировка не будет снята, когда поток выйдет из второго (или последующего) блока synchronized, она будет снята только когда он выйдет из первого блока synchronized, в который он вошел под защитой монитора.

ReentrantLock lock = new ReentrantLock();

lock.lock();
try {
// update object state
}
finally {
lock.unlock();
}

• Реализация ReentrantLock гораздо более масштабируема в условиях состязательности, чем реализация synchronized. Это значит, что когда много потоков соперничают за право получения блокировки, общая пропускная способность обычно лучше у ReentrantLock, чем у synchronized. JVM требуется меньше времени на установление очередности потоков и больше времени на непосредственно выполнение.
• У ReentrantLock (как и у других реализаций Lock) блокировка должна обязательно сниматься в finally блоке (иначе, если бы защищенный код выбросил исключение, блокировка не была бы снята). Используя синхронизацию, JVM гарантирует, что блокировка автоматически снимаются.

Резюмируя, можно сказать, что когда состязания за блокировку нет либо оно очень мало, то synchronized возможно будет быстрее. Если присутствует заметное состязание за доступ к ресурсу, то скорее всего ReentrantLock даст некое преимущество.
📖 ТОП-10 книг об ИТ не только для айтишников

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

https://proglib.io/sh/VhXqOxKuNC
☕️ Основы Java: выделяем 4 разных роли классов

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

https://proglib.io/sh/tYKbs9Zemf
#вопросы_с_собеседований
Для чего в стримах предназначены методы map() и mapToInt(), mapToDouble(), mapToLong()?
Метод map() является промежуточной операцией, которая заданным образом преобразует каждый элемент стрима.

mapToInt(), mapToDouble(), mapToLong() - аналоги map(), возвращающие соответствующий числовой стрим (то есть стрим из числовых примитивов).
Учиться чему-либо бывает непросто: многие откладывают обучение, не могут выделить на него время, теряются в количестве информации или, наоборот, не могут найти актуальные источники. Команда «Библиотеки программиста» хотела бы исследовать вопрос для дальнейшего развития проекта и посему просим вас выделить пару минут своего времени на гугл форму: https://forms.gle/qVJEULRbbHTJTzYr6