Библиотека джависта | 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
加入频道
Перечислите основные агрегатные функции.

Агрегатные функции - функции, которые берут группы значений и сводят их к одиночному значению.

SQL предоставляет несколько агрегатных функций:
COUNT - производит подсчет записей, удовлетворяющих условию запроса;
SUM - вычисляет арифметическую сумму всех значений колонки;
AVG - вычисляет среднее арифметическое всех значений;
MAX - определяет наибольшее из всех выбранных значений;
MIN - определяет наименьшее из всех выбранных значений.
Advanced hiring: попадите в команду Luxoft за несколько дней

У Luxoft крутые новости − попасть в команду теперь можно гораздо быстрее. В компании хорошо понимают, что время – это важный ресурс, поэтому упростили процесс найма. Уже сейчас вы можете получить job offer всего за несколько дней после успешного прохождения технического интервью.

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

Узнать об открытых вакансиях можно по ссылке.

Еще больше новостей в телеграм-канале Luxoft.
#вопросы_с_собеседований
Что такое autoboxing («автоупаковка») в Java и каковы правила упаковки примитивных типов в классы-обертки?
Автоупаковка - это механизм неявной инициализации объектов классов-оберток (Byte, Short, Integer, Long, Float, Double, Character, Boolean), значениями соответствующих им исходных примитивных типов (byte, short, int...), без явного использования конструктора класса.

☕️ Автоупаковка происходит при прямом присваивании примитива классу-обертке (с помощью оператора =), либо при передаче примитива в параметры метода (типа класса-обертки).

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

☕️ Автоупаковка переменных примитивных типов требует точного соответствия типа исходного примитива типу класса-обертки. Например, попытка упаковать переменную типа byte в Short без предварительного явного приведения byte в short вызовет ошибку компиляции.

☕️ Автоупаковка констант примитивных типов допускает более широкие границы соответствия. В этом случае компилятор способен предварительно осуществлять неявное расширение/сужение типа примитивов:

☕️ неявное расширение/сужение исходного типа примитива до типа примитива, соответствующего классу-обертке (для преобразования int в Byte, сначала компилятор самостоятельно неявно сужает int к byte);
☕️ автоупаковку примитива в соответствующий класс-обертку. Однако в этом случае существуют два дополнительных ограничения: a) присвоение примитива обертке может производится только оператором = (нельзя передать такой примитив в параметры метода без явного приведения типов) b) тип левого операнда не должен быть старше чем Character, тип правого не должен старше, чем int: допустимо расширение/сужение byte в/из short, byte в/из char, short в/из char и только сужение byte из int, short из int, char из int. Все остальные варианты требуют явного приведения типов).

Дополнительной особенностью целочисленных классов-оберток, созданных автоупаковкой констант в диапазоне -128 ... +127 является то, что они кэшируются JVM. Поэтому такие обертки с одинаковыми значениями будут являться ссылками на один объект.
#вакансия #удаленка #java

Локация: Удаленка или Томск.
Опыт: от 2-х лет.

Технический стек: Java 8, HTML, CSS, Git.

Требования:
- экспертное владение Java 8
- опыт использования Spring Framework, Hibernate ORM, JDBC, JMS, JMX
- опыт проведения модульного тестирования (JUnit и TestNg)
- опыт работы с инструментами Git, Jenkins, Sonar, Maven, Gradle, Nexus, Jira или аналоги, Confluence или аналоги
- опыт работы с сервером приложений WildFly (JBoss)
- понимание работы SQL и NoSQL хранилищ: PostgreSQL, Cassandra, Apache Ignite
- опыт использования стэка технологий Hadoop, Apache Kafka

Заработная плата: от 150 000 до 250 000 рублей на руки.
Условия: 
Корпоративная техника при работе из офиса.

Проект: SUPL Group — разработчик ПО для различных сфер, разрабатывает образовательную платформу, платформу для работы аккредитационных лабораторий, маркетплейс ПО, маркетплейс курсов обучения и тд

Разработчик необходим для работы над:
B2C маркетплейс образовательных курсов (планируемая аудитория — 100 тыс. пользователей).
B2C маркетплейс программного обеспечения (планируемая аудитория — 20 тыс. пользователей).
B2B проект для аккредитационных лабораторий (планируемая аудитория — 10 тыс. пользователей).

Задачи: 
- Развивать образовательную экосистему.
- Добавлять новые и развивать уже имеющиеся функции. 

У нас большие планы, рост и развитие, будет много тестирования и исследования.
Команда: Product Manager, Team Lead, Frontend Dev, Backend Dev, Designer.

Контакты: @v_pokrovskiy
#вопросы_с_собеседований
Что делает оператор EXISTS в SQL?

EXISTS берет подзапрос, как аргумент, и оценивает его как TRUE, если подзапрос возвращает какие-либо записи и FALSE, если нет.
#вопросы_с_собеседований
В чем заключаются различия между cтеком (stack) и кучей (heap) с точки зрения многопоточности?
Building Java Programs: A Back to Basics Approach (2019)
Автор: Stuart Reges, Marty Stepp
Количество страниц: 1232

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

Скачать книгу
Библиотека джависта | Java, Spring, Maven, Hibernate
#вопросы_с_собеседований В чем заключаются различия между cтеком (stack) и кучей (heap) с точки зрения многопоточности?
☕️ Cтек – участок памяти, тесно связанный с потоками. У каждого потока есть свой стек, которые хранит локальные переменные, параметры методов и стек вызовов. Переменная, хранящаяся в стеке одного потока, не видна для другого.

☕️ Куча – общий участок памяти, который делится между всеми потоками. Объекты, неважно локальные или любого другого уровня, создаются в куче. Для улучшения производительности поток обычно кэширует значения из кучи в свой стек, в этом случае для того, чтобы указать потоку, что переменную следует читать из кучи, используется ключевое слово volatile.
Зачем нужны SOLID принципы? Что нужно сделать с множеством сущностей, чтобы код удовлетворял DIP?

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

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

Зарегистрироваться бесплатно.
#вопросы_с_собеседований
Напишите потокобезопасную реализацию класса с неблокирующим методом BigInteger next(), который возвращает элементы последовательности: [1, 2, 4, 8, 16, ...].

class PowerOfTwo {
private AtomicReference<BigInteger> current = new AtomicReference<>(null);

BigInteger next() {
BigInteger recent, next;
do {
recent = current.get();
next = (recent == null) ? BigInteger.valueOf(1) : recent.shiftLeft(1);
} while (!current.compareAndSet(recent, next));
return next;
}
}
#вопросы_с_собеседований
Что такое статическое и динамическое связывание?
Присоединение вызова метода к телу метода называется связыванием. Если связывание проводится компилятором (компоновщиком) перед запуском программы, то оно называется статическим или ранним связыванием (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, и какие основные навыки требуются от специалиста по анализу данных.

Регистрация на сайте.