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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Команда Kata Academy открыла новый набор на курс по Java.

В Kata можно изучить Java на реальных проектах и задачах за 8 месяцев с оплатой после трудоустройства. Студенты, успешно завершившие обучение, получают в среднем 3-5 предложений о работе. А если после него вы не устроитесь разработчиком с минимальной зарплатой в 100 тысяч рублей, по договору обучение для вас будет бесплатным.

Переходи и оставляй заявку, чтобы успеть на ближайший поток: https://clck.ru/bpEtT
Hiring Talents нужен Java-разработчик / Middle Java developer
г. Москва
Зарплата – ₽250-300К net
Контактное лицо – @MikhailRekrutto

Цели и задачи
• Поддержка и доработка существующих сервисов, проектирование и разработка новых сервисов;
• Технологический стек: Java 11, Spring (Core, Boot, MVC, Security), Hibernate, MS SQL / PostgreSQL.

Требования к кандидату
• Аналогичный опыт работы 1-3 года;
• Опыт администрирования unix-систем будет плюсом.

Подробнее
Текущие системы для поддержки и развития:
1. «AG Service» — сервис обработки геопространственных данных от GPS/Глонасс-трекеров, написанный на Java. Работает как промежуточное звено между БД MS SQL и другими компонентами. Обеспечивает, во-первых более высокую скорость обработки данных, а во-вторых имеет некоторый функционал, который недоступен в классических учетных системах 1С. Одна часть сервиса работает в виде "запрос-ответ" (предоставление "сырых" либо предварительно рассчитанных данных). Вторая часть постоянно отслеживает поступление новых данных по МО и аккумулирует их в своих таблицах.
2. «Картографический сервис OSM» — сервис визуализации на картах геопространственных данных по мобильным, стационарным объектам, служебным геозонам. Используется библиотека Leaflet.
3. Web площадки разной функциональности, реализованные на
Java 11 + Spring MVC (backend) + Apache Tiles (frontend).
Планируется большое развитие системы «AG Service» в полноценную системы Мониторинга, с генерацией тревожных событий, формирования данных для учетных и оперативных систем контроля. С использованием механизмов потоковой обработки данных и машинного обучения.
На все существующие разработки есть подробная тех. документация.
Наиболее используемые методы класса File:

☕️ boolean createNewFile(): делает попытку создать новый файл;
☕️ boolean delete(): делает попытку удалить каталог или файл;
☕️ boolean mkdir(): делает попытку создать новый каталог;
☕️ boolean renameTo(File dest): делает попытку переименовать файл или каталог;
☕️ boolean exists(): проверяет, существует ли файл или каталог;
☕️ String getAbsolutePath(): возвращает абсолютный путь для пути, переданного в конструктор объекта;
☕️ String getName(): возвращает краткое имя файла или каталога;
☕️ String getParent(): возвращает имя родительского каталога;
☕️ boolean isDirectory(): возвращает значение true, если по указанному пути располагается каталог;
☕️ boolean isFile(): возвращает значение true, если по указанному пути находится файл;
☕️ boolean isHidden(): возвращает значение true, если каталог или файл являются скрытыми;
☕️ long length(): возвращает размер файла в байтах;
☕️ long lastModified(): возвращает время последнего изменения файла или каталога;
☕️ String[] list(): возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге;
☕️ File[] listFiles(): возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге.
🔔Напоминаем, что у «Библиотеки программиста» существует курс по математике для Data Science, разработанный совместно с преподавателями ВМК МГУ, одного из лучших математических факультетов страны.

В конце курса вы будете владеть математическим аппаратом, который необходим, чтобы стать специалистом в Data Science. Курс идеально подходит к поступлению в ШАД или Computer Science Center.

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

📚По промокоду DFA98MK действует скидка 20% на все тарифы до 4 марта.

Курс постоянно обновляется, ваш доступ остается с вами навсегда.

Посмотреть тарифы и записаться можно здесь.
Что из этого является ключевым словом?
Anonymous Quiz
13%
array
4%
none
27%
null
38%
goto
19%
true
#вопросы_с_собеседований
Дайте определение понятию «интерфейс». Какие модификаторы по умолчанию имеют поля и методы интерфейсов?

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

Начиная с Java 8 в интерфейсах разрешается размещать реализацию методов по умолчанию default и статических static методов.

Интерфейс также может содержать и поля. В этом случае они автоматически являются публичными public, статическими static и неизменяемыми final.
С нас полезные лекции и трудоустройство, с тебя – год опыта коммерческой разработки на Java.

Как все проходит?
На протяжении двух месяцев тебя будут обучать Senior’ы и Teamlead’ы ведущих банков страны. Обучение можно совмещать с работой.

Чему будут учить?
На курсе будем изучать базы данных, Spring, Kafka, Kubernetes и Istio. Помимо этого еще будут практические занятия, домашние задания и консультации с ментором.

Что будет после учебы?
Трудоустройство в Цифровые привычки. Ты будешь работать над высоконагруженными, отказоустойчивыми проектами.

Подать заявку на курс: https://cutt.ly/RAoCfcr
#вопросы_с_собеседований
Что такое JSON?

JSON, JavaScript Object Notation
— текстовый формат обмена данными, основанный на JavaScript.

JSON представляет собой (в закодированном виде) одну из двух структур:

☕️ Набор пар «ключ:значение»;
☕️ Упорядоченный набор значений.

Ключом может быть только строка (регистрозависимая: имена с буквами в разных регистрах считаются разными).

В качестве значений могут быть использованы:
☕️ Объект — неупорядоченное множество пар «ключ:значение», заключённое в фигурные скобки { }. Ключ описывается строкой, между ним и значением стоит символ :. Пары ключ-значение отделяются друг от друга запятыми;
☕️ Массив (одномерный) — упорядоченное множество значений. Массив заключается в квадратные скобки [ ]. Значения разделяются запятыми.
☕️ Число;
☕️ Литералы true, false и null;
☕️ Строка — упорядоченное множество из нуля или более символов Unicode, заключенное в кавычки " ". Символы могут быть указаны с использованием escape-последовательностей, начинающихся с обратной косой черты \, или записаны шестнадцатеричным кодом в кодировке UTF-8 в виде \uFFFF.
Почему в некоторых интерфейсах вообще не определяют методов?

Это так называемые маркерные интерфейсы. Они просто указывают что класс относится к определенному типу. Примером может послужить интерфейс Clonable, который указывает на то, что класс поддерживает механизм клонирования.
#вопросы_с_собеседований
Почему нельзя объявить метод интерфейса с модификатором final?

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

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

• Существуют статические и нестатические блоки инициализации.
• Блок инициализации выполняется перед инициализацией класса загрузчиком классов или созданием объекта класса с помощью конструктора.
• Несколько блоков инициализации выполняются в порядке следования в коде класса.
• Блок инициализации способен генерировать исключения, если их объявления перечислены в throws всех конструкторов класса.
• Блок инициализации возможно создать и в анонимном классе.
Что имеет более высокий уровень абстракции?
Anonymous Quiz
4%
Класс
15%
Абстрактный класс
80%
Интерфейс
#вопросы_с_собеседований
К каким конструкциям применим модификатор static?

☕️ поля;
☕️ методы;
☕️ вложенные классы;
☕️ члены секции import.
#вопросы_с_собеседований
Объясните смысл параметров в конструкторе HashMap(int initialCapacity, float loadFactor).
☕️ initialCapacity - исходный размер HashMap, количество корзин в хэш-таблице в момент её создания.
☕️ loadFactor - коэффициент заполнения HashMap, при превышении которого происходит увеличение количества корзин и автоматическое перехэширование. Равен отношению числа уже хранимых элементов в таблице к её размеру.
Приоритеты потоков используются планировщиком потоков для принятия решений о том, когда какому из потоков будет разрешено работать. Теоретически высокоприоритетные потоки получают больше времени процессора, чем низкоприоритетные. Практически объем времени процессора, который получает поток, часто зависит от нескольких факторов помимо его приоритета.

Чтобы установить приоритет потока, используется метод класса Thread: final void setPriority(int level). Значение level изменяется в пределах от Thread.MIN_PRIORITY = 1 до Thread.MAX_PRIORITY = 10. Приоритет по умолчанию - Thread.NORM_PRlORITY = 5.

Получить текущее значение приоритета потока можно вызвав метод: final int getPriority() у экземпляра класса Thread.
Всем привет! 👋 Мы проводим опрос: «Что сейчас происходит с IT-индустрией и айтишниками».

Сложилась очень непростая ситуация: найм новых работников поставлен на паузу, некоторых сотрудников сокращают, а какие-то проекты вообще закрываются. Расскажите, как ваша компания и вы проходите через новый кризис. Опрос займет около 3 минут, результаты опубликуем на сайте proglib.io ориентировочно 21 марта.

➡️ Опрос можно пройти анонимно по ссылке.
#вопросы_с_собеседований
Может ли статический метод быть переопределён или перегружен?

Перегружен - да. Всё работает точно так же, как и с обычными методами - 2 статических метода могут иметь одинаковое имя, если количество их параметров или типов различается.

Переопределён - нет. Выбор вызываемого статического метода происходит при раннем связывании (на этапе компиляции, а не выполнения) и выполняться всегда будет родительский метод, хотя синтаксически переопределение статического метода - это вполне корректная языковая конструкция.

В целом, к статическим полям и методам рекомендуется обращаться через имя класса, а не объект.