Библиотека джависта | 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
加入频道
Что такое «fail-fast поведение»?

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

В Java Collections API некоторые итераторы ведут себя как fail-fast и выбрасывают ConcurrentModificationException, если после его создания была произведена модификация коллекции, т.е. добавлен или удален элемент напрямую из коллекции, а не используя методы итератора.

Реализация такого поведения осуществляется за счет подсчета количества модификаций коллекции (modification count):

• при изменении коллекции счетчик модификаций так же изменяется;
• при создании итератора ему передается текущее значение счетчика;
• при каждом обращении к итератору сохраненное значение счетчика сравнивается с текущим, и, если они не совпадают, возникает исключение.
Почитать Telegram по пути на работу или полистать избранные каналы в обеденный перерыв — привычка полезная. Она работает еще лучше, если периодически пополнять свой список чем-то новеньким.

Вот, например, ребята из Accenture Russia запустили свой канал для IT-сообщества. У них там и полезная информация на разные темы (работа с данными, облака, микросервисы, AI, DevOps, backend- и frontend-разработка, управление проектами и т.д.), и анонсы мероприятий, и розыгрыши призов в духе книжки на профтему, билета на классную конфу и не только.

Подписывайся, читай, выигрывай!
#вопросы_с_собеседований
Сколько элементов будет пропущено, если Iterator.next() будет вызван после 10-ти вызовов Iterator.hasNext()?
Ответ

Нисколько - hasNext() осуществляет только проверку наличия следующего элемента.
В следующий понедельник стартует Курс по многопоточному программированию на Java.

Уровень: middle/senior

Подойдёт тем, кто знает основы многопоточки и готов выйти на новый уровень.

Курс строится вокруг java.util.concurrent. Изучим всё, что там есть, как это применять на практике и сравним разные инструменты между собой. Затронем и смежные темы: мониторинг, флажки JVM, виртуальные потоки и реактивное программирование.

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

Через два месяца вы получите всю базу для работы на хайлоад проекте. Сможете уверенно решать задачи под разную нагрузку. Будете круто выглядеть на собеседованиях🔥

Старт: 12 июля
Длительность: 8 недель

Программа, отзывы - здесь.

Записывайся ➡️ https://fillthegaps.ru/mt2
#вакансия #remote #java #backend #работа #москва

Компания: Bright group (bright-group.ru)
Формат работы: удалёнка
Зарплатная вилка: от 200 до 300k net

Middle/Senior java backend-разработчик в компанию Bright Group в наш IT-продукт по управлению движением транспорта и планированию его расписания в режиме реального времени.

Наш стек: Java, Postgres, Hibernate, Spring Framework 5, Spring Boot 2
Инфраструктра: JIRA, Confluence, Gitlab/Jenkins, Docker, Kubernetes (Openshift)

✔️Требования:
Опыт работы на Java от 3 лет;
Отличное знание алгоритмов, структур данных, способность писать эффективный код;
Опыт работы с микросервисной архитектурой;
Уверенное понимание архитектуры сетевых приложений;
Опыт разработки приложений, основанных на принципах ООП и паттерне MVC;
Умение самостоятельно принимать архитектурные решения, искать нужную информацию;
Уверенное знание SQL;
Использовать актуальные подходы к разработке и современные технологии;
Решать задачи в команде с системным аналитиком, frontend-разработчиками и QA-инженерами.
Опыт разработки клиент-серверных приложений (REST, JSON);
Опыт работы с Git, знание git flow;
Умение работать в команде;
Высшее техническое образование.

📌Задачи:
Участвовать в процессе разработки функционала, начиная с проектирования и заканчивая поставкой и поддержкой;
Исследовать и улучшать производительность приложений;
Писать тесты, инспектировать код;
Выстраивать взаимодействие внутри команды и снаружи (с project-менеджерами, тестировщиками, frontend-разработчиками);
Оценивать работу людей в команде, давать обратную связь. Развивать людей в команде;
Вести пул технических задач;
Умение общаться и доносить свои мысли лаконично, объяснять свою позицию.

🔅 Что мы предлагаем:
- Удаленный формат работы;
- Гибкий график;
- Официальное оформление, белая ЗП;
- ДМС.

🤳Контакты:
[email protected]
@avokonlehc

Всем отличного дня!
#вопросы_с_собеседований
На каком объекте происходит синхронизация при вызове static synchronized метода?
У синхронизированного статического метода нет доступа к this, но есть доступ к объекту класса Class, он присутствует в единственном экземпляре и именно он выступает в качестве монитора для синхронизации статических методов. Таким образом, следующая конструкция:

public class SomeClass {

public static synchronized void someMethod() {
//code
}
}

эквивалентна такой:

public class SomeClass {

public static void someMethod(){
synchronized(SomeClass.class){
//code
}
}
}
Как поведёт себя уже инстанциированный итератор для collection, если вызвать collection.remove()?

При следующем вызове методов итератора будет выброшено ConcurrentModificationException.
#вопросы_с_собеседований
Расскажите о типах шаблонов проектирования.
✔️Основные (Fundamental) — основные строительные блоки других шаблонов. Большинство других шаблонов использует эти шаблоны в той или иной форме.
✔️Порождающие шаблоны (Creational) — шаблоны проектирования, которые абстрагируют процесс создания экземпляра. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы изменять созданный объект, а шаблон, порождающий объекты, делегирует создание объектов другому объекту.
✔️Структурные шаблоны (Structural) определяют различные сложные структуры, которые изменяют интерфейс уже существующих объектов или его реализацию, позволяя облегчить разработку и оптимизировать программу.
✔️Поведенческие шаблоны (Behavioral) определяют взаимодействие между объектами, увеличивая таким образом его гибкость.
В чем разница между классами java.util.Collection и java.util.Collections?

java.util.Collections - набор статических методов для работы с коллекциями.

java.util.Collection - один из основных интерфейсов Java Collections Framework.
Beginning Programming with Java For Dummies (2017)
Автор: Barry Burd
Количество страниц: 560

Если вы хотите программировать на Java, книга научит вас созданию программ, способам решения стандартных задач и многому другому. Независимо от того, работаете ли вы с кем-то или начинаете карьеру, эта книга может стать ресурсом, к которому вы будете обращаться снова и снова, совершенствуя свое понимание нюансов этого популярного языка программирования.

Скачать книгу
Pivotal Certified Professional Core Spring 5 Developer Exam (2019)
Автор: Iuliana Cosmina
Количество страниц: 1027

Книга помогает сдать экзамен Pivotal Certified Professional для Core Spring на основе последней версии Spring Framework 5, используя примеры исходного кода и пробные варианты. Теперь она включает WebFlux, реактивное программирование и многое другое, что можно обнаружить в Spring 5. Вы найдете описательный обзор модулей Spring, связанных с сертификацией, и один пример приложения, демонстрирующий использование всех необходимых модулей Spring.

Скачать книгу
Вакансия: спикер (преподаватель) образовательных IT-курсов

Кого мы ищем? Разработчиков с опытом публичных выступлений.

Обязанности:
– Запись видеокурсов по подготовленным нашими авторам материалам
– Проверка домашних заданий студентов

Требования. Нам важно, чтобы спикер обладал грамотной речью и хорошей дикцией, имел навыки программирования на одном или нескольких языках
– Python
– HTML, CSS, JS
– Java
– SQL

Условия работы. Мы рассчитываем на долгосрочное сотрудничество. Загрузка от 5 часов в неделю, оплата — от 1500 рублей за час съемки. Работа в нашей студии в Москве.

В отклике на вакансию укажите образование, опыт выступлений и разработки. Будет классно, если вы сможете записать краткий видеорассказ о себе — 30-40 секунд.

Контакт для связи: @vlad_proglib
Почему нельзя объявить метод интерфейса с модификатором final?

В случае интерфейсов указание модификатора final бессмысленно, т.к. все методы интерфейсов неявно объявляются как абстрактные, т.е. их невозможно выполнить, не реализовав где-то еще, а этого нельзя будет сделать, если у метода идентификатор final.
К каким конструкциям Java применим модификатор static?
• полям;
• методам;
• вложенным классам;
• членам секции import.
Зачем нужны и какие бывают блоки инициализации?

Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов.

• Существуют статические и нестатические блоки инициализации.
• Блок инициализации выполняется перед инициализацией класса загрузчиком классов или созданием объекта класса с помощью конструктора.
• Несколько блоков инициализации выполняются в порядке следования в коде класса.
• Блок инициализации способен генерировать исключения, если их объявления перечислены в throws всех конструкторов класса.
• Блок инициализации возможно создать и в анонимном классе.