Библиотека джависта | 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
加入频道
Присоединение вызова метода к телу метода называется связыванием. Если связывание проводится компилятором (компоновщиком) перед запуском программы, то оно называется статическим или ранним связыванием (early binding).

В свою очередь, позднее связывание (late binding) это связывание, проводимое непосредственно во время выполнения программы, в зависимости от типа объекта. Позднее связывание также называют динамическим (dynamic) или связыванием на стадии выполнения (runtime binding). В языках, реализующих позднее связывание, должен существовать механизм определения фактического типа объекта во время работы программы, для вызова подходящего метода. Иначе говоря, компилятор не знает тип объекта, но механизм вызова методов определяет его и вызывает соответствующее тело метода. Механизм позднего связывания зависит от конкретного языка, но нетрудно предположить, что для его реализации в объекты должна включаться какая-то дополнительная информация.

Для всех методов Java используется механизм позднего (динамического) связывания, если только метод не был объявлен как final (приватные методы являются final по умолчанию).
#вопросы_с_собеседований
Что такое JDBC?

JDBC, Java DataBase Connectivity (соединение с базами данных на Java) — промышленный стандарт взаимодействия Java-приложений с различными СУБД. Реализован в виде пакета java.sql, входящего в состав Java SE.

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

Зачем нужны SOLID принципы? Что нужно сделать с множеством сущностей, чтобы код удовлетворял DIP?

🚀Расскажет завтра Евгений Тюменцев, профессионально занимающийся разработкой многопоточных кросс-платформенных приложений на С++, Директор компании по разработке программного обеспечения «Hello World! Technologies».

🚀Всем участникам будет доступна запись вебинара и презентация спикера. Главное, чтобы вы были зарегистрированы на сайте.
Может ли имя класса не совпадать с именем файла?

Компилятор требует, чтобы в .java файле был не больше чем один публичный класс верхнего уровня, и чтобы его название совпадало с названием файла. Все специальные символы также должны быть в имени файла.

Protected и private классов верхнего уровня не бывает в принципе, а вот на package-protected это ограничение не распространяется. Это значит, что класс без модификатора доступа может иметь любое имя. Также это значит, что рядом с основным публичным классом файла (или вместо него) можно объявить любое количество других классов без модификатора доступа, с произвольными именами. Они будут доступны внутри всего пакета.

Так что ответ – может.
«Библиотека программиста» находится в поиске переводчика технических статей и автора оригинальных статей.

Обязанности:
– Письменный перевод с английского на русский язык технических статей (Medium, Dev.to и т. д.)
– Написание оригинальных статей.

Объем:
– от 3 до 10 тыс. знаков с пробелами.

Тематика:
– Мобильная разработка, информационная безопасность, Data Science, бэкенд веб-приложений, фронтенд-разработка, системное программирование, базы данных.

Языки:
– Python, SQL, JavaScript, C#, Java.

Пишите на [email protected]
Java Programming (2018)
Автор: Joyce Farrell
Количество страниц: 870

Даже если вы начинающий программист, книга поможет вам быстро приступить к разработке полезных программ, при этом овладев основными принципами структурного и объектно-ориентированного программирования. Книга содержит уникальные, понятные для читателя объяснения и содержательные упражнения по программированию. Дополнительные цифровые учебные ресурсы в MindTap предоставляют интерактивные инструменты обучения, а также IDE (среда разработки) для отработки и развития ваших навыков.

Скачать книгу
Простой алгоритм использования SOLID на практике

Зачем нужны SOLID принципы? Что нужно сделать с множеством сущностей, чтобы код удовлетворял DIP?

Рассказывает Евгений Тюменцев, профессионально занимающийся разработкой многопоточных кросс-платформенных приложений на С++, Директор компании по разработке программного обеспечения «Hello World! Technologies».

https://youtu.be/H2Lk3SQWhnc
Как стать Data Scientist?

Область Data Science энергично развивается. Наука о данных – это не только нейросети, но и классические алгоритмы машинного обучения, да и вообще всё, что связано с вопросами анализа, обработки и представления информации в цифровой форме.

👨‍💻 Специалист по анализу данных работает на пересечении нескольких областей: математики, программирования и бизнес-задач.

26 января в 19.00 МСК Артур Сапрыкин, один из дата сайентистов, разрабатывавших в Мегафон программы, анализирующие речь в форме текстов и аудио, расскажет, чем занимается Data Scientist, и какие основные навыки требуются от специалиста по анализу данных.

Регистрация на сайте.
#вопросы_с_собеседований
Что из себя представляет JDBC URL?

JDBC URL
состоит из:
<protocol>: (протокола) - всегда jdbc:.
<subprotocol>: (подпротокола) - это имя драйвера или имя механизма соединения с базой данных. Подпротокол может поддерживаться одним или несколькими драйверами. Лежащий на поверхности пример подпротокола - это "odbc", отведенный для URL, обозначающих имя источника данных ODBC. В случае необходимости использовать сервис имен (т.е. имя базы данных в JDBC URL не будет действительным именем базы данных), то подпротоколом может выступать сервис имен.
<subname> (подимени) - это идентификатор базы данных. Значение подимени может менятся в зависимости от подпротокола, и может также иметь под-подимя с синтаксисом, определяемым разработчиком драйвера. Назначение подимени - это предоставление всей информации, необходимой для поиска базы данных. Например, если база данных находится в Интернет, то в состав подимени JDBC URL должен быть включен сетевой адрес, подчиняющийся следующим соглашениям: //<hostname>:<port>/<subsubname.

Пример JDBC URL для подключения к MySQL базе данных «Test» расположенной по адресу localhost и ожидающей соединений по порту 3306: jdbc:mysql://localhost:3306/Test
Данное выражение иллюстрирует механизм instance method reference: передачи ссылки на метод println() статического поля out класса System.
С нас полезные лекции и трудоустройство, с тебя – год опыта коммерческой разработки на Java.

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

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

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

Подать заявку на курс: https://cutt.ly/6IMnY3g
#вопросы_с_собеседований
Перечислите основные классы и интерфейсы JDBC.

java.sql.DriverManager - позволяет загрузить и зарегистрировать необходимый JDBC-драйвер, а затем получить соединение с базой данных.

javax.sql.DataSource - решает те же задачи, что и DriverManager, но более удобным и универсальным образом. Существуют также javax.sql.ConnectionPoolDataSource и javax.sq1.XADataSource задача которых - обеспечение поддержки пула соединений.

java.sql.Connection - обеспечивает формирование запросов к источнику данных и управление транзакциями. Также предусмотрены интерфейсы javax.sql.PooledConnection и javax.sql.XAConnection.

java.sql.Statement , java.sql.PreparedStatement и java.sql.CallableStatement - эти интерфейсы позволяют отправить запрос к источнику данных.

java.sql.ResultSet - объявляет методы, которые позволяют перемещаться по набору данных и считывать значения отдельных полей в текущей записи.

java.sql.ResultSetMetaData - позволяет получить информацию о структуре набора данных.

java.sql.DatabaseMetaData - позволяет получить информацию о структуре источника данных.
#вопросы_с_собеседований
Что такое «модульное тестирование»?

Модульное/компонентное тестирование (unit testing) - процесс в программировании, позволяющий проверить на корректность отдельные модули исходного кода программы. Идея состоит в том, чтобы писать тесты для каждой нетривиальной функции или метода. Это позволяет достаточно быстро проверить, не привело ли очередное изменение кода к регрессии, то есть к появлению ошибок в уже оттестированных местах программы, а также облегчает обнаружение и устранение таких ошибок.

Модульные тесты можно условно поделить на две группы:
• тесты состояния (state based), проверяющие что вызываемый метод объекта отработал корректно, проверяя состояние тестируемого объекта после вызова метода.

• тесты взаимодействия (interaction tests), в которых тестируемый объект производит манипуляции с другими объектами. Применяются, когда требуется удостовериться, что тестируемый объект корректно взаимодействует с другими объектами.
Java-разработчик приложения СберИнвестор

Мы — финтех команда, работающая над передовой платформой для инвестиций, которая дает возможность миллионам пользователей покупать и продавать акции, драгоценные металлы, валюту, самостоятельно формировать портфель активов. Приглашаем тебя стать одним из тех, кто создает цифровую экосистему Сбера.
Мы проводим One Day Offer, поэтому все этапы отбора кандидатов ты пройдешь за 1 день.

Задачи Java-разработчика:

- разработка бэкенд-части платформы
- написание Unit-тестов
- участие в разработке архитектуры решений и выборе технологий
- оптимизация кода.

Мы ждем от кандидата:

- опыт программирования на Java 11+
- умение работать с Kafka
- опыт применения Spring Framework, Boot, Web Postgres
- опыт работы с Git, Maven, Gradle, форматами XML/JSON
- отличное ориентирование в k8s/OpenShift.

Мы предлагаем:

- все этапы отбора кандидатов и решение за 1 день
- оффер по итогам интервью
- работу над передовым приложением СберИнвестор.

Присоединяйся к команде Java-разработчиков Сбера в день собеседования. Для участия в One Day Offer регистрируйся https://u.to/IxrvGw
Библиотека джависта | Java, Spring, Maven, Hibernate pinned «​Java-разработчик приложения СберИнвестор Мы — финтех команда, работающая над передовой платформой для инвестиций, которая дает возможность миллионам пользователей покупать и продавать акции, драгоценные металлы, валюту, самостоятельно формировать портфель…»
Проверка на нечетность

Можно ли использовать этот код с примера 1 на картинке для точного определения нечетного числа?

Надеюсь, вы заметили хитрость. Если мы решим таким образом проверить отрицательное нечетное число (например, -5), остаток от деления не будет равен единице, поэтому воспользуйтесь более точным методом (пример 2).

Он не только решает проблему отрицательных чисел, но и работает более производительно, чем предыдущий метод. Арифметические и логические операции выполняются намного быстрее, чем умножение и деление.
#вопросы_с_собеседований
Чем интеграционное тестирование отличается от модульного?

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

Допустим, есть класс, который при определенных условиях взаимодействует с web-сервисом через зависимый объект. И нам надо проверить, что определенный метод зависимого объекта действительно вызывается. Если в качестве зависимого класса передать:
• реальный класс, работающий с web-сервисом, то это будет интеграционное тестирование.
• заглушку, то это будет тестирование состояния.
• шпиона, а в конце теста проверить, что определенный метод зависимого объекта действительно был вызван, то это будет тест взаимодействия.
#вопросы_с_собеседований
Из каких частей стоит JDBC?

JDBC состоит из двух частей:
JDBC API, который содержит набор классов и интерфейсов, определяющих доступ к базам данных. Эти классы и методы объявлены в двух пакетах - java.sql и javax.sql;
JDBC-драйвер, компонент, специфичный для каждой базы данных.

JDBC превращает вызовы уровня API в «родные» команды того или иного сервера баз данных.
Ищешь работу в #Java удаленно?

Внизу подборка вакансий с зарплатными вилками в этой категории.👇🏻

Ещё больше вакансий найдёшь здесь: https://bit.ly/3qussMQ.

🌍 Java/React Dev/ Hitachi Energy: 9-15K: https://bit.ly/34fTKyP
🌍 Salesforce Dev/ Awesome Bytes: 6-10K: https://bit.ly/3g4Vrlo
🌍 Java Dev/ CPL Jobs: 10-16K: https://bit.ly/3g37gsq
🌍 Senior Java Dev/ apreel: 26.5-31.7K: https://bit.ly/3r7UQGc
🌍 Lead Java Dev/ ITFS: 25.2-29.4K: https://bit.ly/3r7URtK
🌍 Java Dev/ BinarApps: 10-18K: https://bit.ly/3H7nnAZ
🌍 Java Sr Dev/ Bitcoin Techn: 30-45K: https://bit.ly/31hBzI3
🌍 Remote scala developer/ Lendi: 12-20K: https://bit.ly/32Anvdg
🌍 Java Dev/ Andersen: 12-18K: https://bit.ly/3IMyhwH
🌍 Fullstack Dev/ Klika Tech: 12-22.5K: https://bit.ly/3ACnHVX
🌍 Java Sr Dev/ Bitcoin Techn: 30-45K: https://bit.ly/3I8nwVO
🌍 Java Dev/ IN Team: 11.8-18.5K: https://bit.ly/3KR3yjA
🌍 SrJava/KotlinDev/ Merixstudio: 15.5-22K: https://bit.ly/3obdhZ5
🌍 Java Dev/ AI Investments: 25-29K: https://bit.ly/3g0brFx
#вопросы_с_собеседований
Какие существуют особенности использования вложенных классов: статических и внутренних? В чем заключается разница между ними?