📓 Книги по Java
870 subscribers
340 photos
27 videos
5 files
835 links
📓 Книги по Java

Самый крутой канал c подборкой книг, статей, но и как без рекламы все в одном месте
По ворпосам размещения @qa_autom
Download Telegram
Что такое литералы?

Литералы — это явно заданные значения в коде программы — константы определенного типа, которые находятся в коде в момент запуска.

class Test {
int a = 0b1101010110;
public static void main(String[] args) {
System.out.println("Hello world!");
}
}


В этом классе “Hello world!” — литерал.

Переменная a - тоже литерал.

Литералы бывают разных типов, которые определяются их назначением и способом написания.

👉@BookJava
#Вопросы_с_собеседования

Можно ли создавать новые экземпляры класса, пока выполняется static synchronized метод?

Ответ:
Да, можно создавать новые экземпляры класса, так как статические поля не принадлежат к экземплярам класса.
new vs valueOf

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

Все оболочки, кроме чисел с плавающей точкой, от Byte до Long, имеют кэш. По умолчанию этот кэш содержит значения от -128 до 127. Следовательно, если ваше значение попадает в этот диапазон, то значение вернется из кэша. Значение из кэша достается в 3.5 раза быстрее, чем при использовании конструктора, плюс идёт экономия памяти.

Помимо этого, наиболее часто используемые значения могут также быть закэшированы компилятором и виртуальной машиной.
Какой флаг JVM позволяет расширить диапазон кешируемых значений для целых типов?
Anonymous Quiz
0%
-XX:+PrintFlagsFinal
0%
-Xss<size>
0%
-XX:AutoBoxCacheMax=<size>
0%
-XX:BiasedLockingStartupDelay=<delay>
Java Challenges: 100+ Proven Tasks that Will Prepare You for Anything
Автор: Michael Inden (2021)

Автор Майкл Инден описывает альтернативные решения и анализирует возможные подводные камни и типичные ошибки при проектировании систем. Примеры рассматриваются с использованием JShell, JUnit 5 для модульного тестирования и проверки решений. Также, подробно описывается O-нотация для оценки производительности алгоритмов.

Скачать

👉 @java_360
Java-разработчик (middle)
#полныйдень #офис
Локация: Санкт-Петербург
Компания: Сбер

Обязанности:
- работа в роли разработчика в Agile-команде;
- оценка трудоёмкости доработок, планирование работ в спринтах;
- контроль работ, code review;
- техническая экспертиза;
- написание технической документации.

Требования:
- отлично знаете ООП, различные алгоритмы и структуры данных;
- понимаете микросервисную архитектуру;
- владеете Java8, Spring Framework, Hibernate;
- умеете писать unit-тесты;
- имеете опыт работы с SQL (Oracle, PosgreSQL);
- использовали средство сборки Maven;
- имеете опыт работы с Wildfly;
- умеете работать с Git, Gitflow;
- владеете HTML, CSS, JavaScript, понимаете принципы работы React;
- используете Jenkins, Git, Jira, Confluence;
знакомы с unix-системами;
- используете методологии гибкой разработки;
- делаете код-ревью.
Прокачай свои знания в архитектуре современных распределенных систем

Стремишься занять позицию сеньора или даже архитектора? Этот курс для тебя!

Разберешься в event-driven системах
Обретешь уверенность на system design интервью в российских и зарубежных компаниях
Поймешь как устроен подход event sourcing, паттерн CQRS
Твердо поймешь основы Domain-driven design, как его применять
Создашь распределенную event-sourcing based систему и сможешь заимплементить распределенную транзакцию

Авторский курс от преподавателя Санкт-Петербургского университета ИТМО и разработчика высоконагруженных систем Андрея Суховицкого.

Твоими менторами станут ребята из Amazon, Revolut, JetBrains, Yandex или Ozon.

❗️Старт курса - 3 апреля, лекции и задания доступны уже сейчас!❗️
Переходи по ссылке и подавай заявку!
QA Automation Engineer (senior)
#удаленка #офис #гибкийграфик
Локация: Москва
Компания: Stellar Labs

Обязанности:
- Разработка архитектуры автотестов совместно с архитектором/тимлидами;
- Тестирование Backend с большим количеством интеграций, встраивание разработанных автотестов в CI/CD;
- Составление сценариев автотестов, quality gates, чек листов;
- Развивать процессы тестирования (оптимизация регресса, оценка трудозатрат, ревью требований на ранних этапах).

Требования:
- Опыт программирования на Java/Kotlin;
- Опыт работы в сфере автоматизации не менее 3-х лет;
- Опыт разработки автотестов как API, так и UI;
- Разработка тестов для микросервисной архитектуры приложений;
- Опыт работы с базами данных;
- Опыт ведения и развития базы знаний;
- Разница в часовом поясе с Москвой не более 3 часов.
Что такое Type Erasure?

Компилятор удаляет из байткода класс-файла информацию о типах-дженериках. Этот процесс и называется стирание типов (type erasure). Он появился в Java 5 вместе с самими дженериками. Такое решение позволило сохранить обратную совместимость без перекомпилляции кода Java 4.

Стирание состоит из трех действий:
🔘 Если параметры ограничены (bounded), вместо типа-параметра в местах использования подставляется верхняя граница, иначе Object;
🔘 В местах присвоения значения типа-параметра в переменную обычного типа добавляется каст к этому типу;
🔘 Генерируются bridge-методы.

Информация о типах стирается только из методов и полей, но остается в метаинформации самого класса. Получить эту информацию в рантайме можно с помощью рефлекшна, методом Field#getGenericType.

Тип со стертой информацией о дженериках называется «Non-reifiable».

Стирание типов позволяет не создавать при применении дженериков новые классы, в отличие от, например, шаблонов C++.
Академия Яндекса продолжает набор в Летние школы сразу в трех странах — в РФ, Сербии и Казахстане. Предусмотрено обучение для специалистов с опытом работы по следующим направлениям:

— фронтенд
— бэкенд-разработка (Python, Java, C++, Go)
— мобильная разработка (iOS, Android, Flutter)
— школа менеджеров (управление проектами и продуктами, продуктовая аналитика)

Программа начнется с теории и небольших заданий в онлайне, а затем студенты школ будут практиковаться на реальных проектах в фулстэк-группах с опытными наставниками в офисах Яндекса в Москве, Белграде и Алматы. Всем иногородним студентам, успешно прошедшим отбор и онлайн-этап, Яндекс оплатит билеты и проживание на период оффлайн-обучения.

Для участия необходимо отправить заявку и выполнить тестовое задание, которое размещено на страницах Школ. Дедлайны вступительных испытаний: до 13 апреля (Школа для менеджеров), до 27 апреля (Школы для разработчиков). В общем, go rockstars 🦾
Сказка о типизации

В некотором царстве, в некотором государстве жил был царь. Как-то раз объявил царь всему народу - "Кто решит три моих задачки, тот сам сможет царём стать". И даже контракт метода опубликовал, всё честь по чести.

Читать статью
Советы по Java Pro: редкие приемы, которые помогут улучшить ваше программирование

В этой статье мы рассмотрим некоторые из редких и действенных советов и приемов, которые помогут вам раскрыть весь потенциал Java и создать элегантный и эффективный код.

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

Итак, давайте погрузимся и раскроем всю мощь Java!

https://blog.devgenius.io/java-pro-tips-rare-tricks-to-supercharge-your-programming-d4290c100d56
Всем привет!

Мы создали канал на YouTube, куда будем заливать все вебинары, подписывайтесь чтобы не потерять 🎈

И ловите #вебинар, который провёл Илья в прошлую пятницу
https://youtu.be/HXahV7pJRy4
#Вопросы_с_собеседования

Каково максимальное число значений hashCode()?

Число значений следует из сигнатуры int hashCode() и равно диапазону типа int — 2^32.
Согласно Кнуту и Кормену существует две основных реализации хэш-таблицы: на основе открытой адресации и на основе метода цепочек. Как реализована HashMap? Почему, по вашему мнению, была выбрана именно эта реализация? В чем плюсы и минусы каждого подхода?

HashMap реализован с использованием метода цепочек, т.е. каждой ячейке массива (корзине) соответствует свой связный список и при возникновении коллизии осуществляется добавление нового элемента в этот список.

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

Среди методов открытой реализации различают:
• линейное пробирование;
• квадратичное пробирование;
• двойное хэширование.

Недостатки структур с методом открытой адресации:
• Количество элементов в хэш-таблице не может превышать размера массива. По мере увеличения числа элементов и повышения коэффициента заполнения производительность структуры резко падает, поэтому необходимо проводить перехэширование.
• Сложно организовать удаление элемента.
• Первые два метода открытой адресации приводят к проблеме первичной и вторичной группировок.

Преимущества хэш-таблицы с открытой адресацией:
• отсутствие затрат на создание и хранение объектов списка;
• простота организации сериализации/десериализации

👉@BookJava
Тест на общие знания для Java-разработчика

Java задачи с собеседований
Прокачай свои знания в архитектуре современных распределенных систем

Стремишься занять позицию сеньора или даже архитектора? Этот курс для тебя!

Разберешься в event-driven системах
Обретешь уверенность на system design интервью в российских и зарубежных компаниях
Поймешь как устроен подход event sourcing, паттерн CQRS
Твердо поймешь основы Domain-driven design, как его применять
Создашь распределенную event-sourcing based систему и сможешь заимплементить распределенную транзакцию

Авторский курс от преподавателя Санкт-Петербургского университета ИТМО и разработчика высоконагруженных систем Андрея Суховицкого.

Твоими менторами станут ребята из Amazon, Revolut, JetBrains, Yandex или Ozon.

❗️Старт курса - 3 апреля, лекции и задания доступны уже сейчас!❗️
Переходи по ссылке и подавай заявку!