Библиотека джависта | 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
加入频道
Sams Teach Yourself Java in 21 Days (2020)
Автор: Rogers Cadenhead
Количество страниц: 672

С помощью этого руководства вы быстро освоите основы, а затем перейдете к продвинутым особенностям и концепциям современной Java. Книга была полностью обновлена для Java 11 и 12. К тому времени, когда вы прочтете книгу, вы будете хорошо разбираться в Java и библиотеках. Предыдущий опыт программирования не требуется. Следуя 21 тщательно организованному уроку из этой книги, каждый может изучить основы программирования на Java.

Скачать книгу
Международная Java-конференция для опытных разработчиков и тимлидов #Joker 2020 уже 25–28 ноября, Online.

Технические доклады о рантайме, виртуальных машинах, компиляторах, оптимизации от Java-потрошителей и чемпионов со всего мира. А также интервью с экспертами, воркшопы, нетворкинг и дискуссионные зоны для лютых холиваров.

В программе:
— Создатель Concurnas Jason Tatton расскажет о создании надежных многопоточных, распределенных и параллельных систем с использованием JVM. Если вы ищете средства для создания таких продуктов, вам однозначно понравится.
— Профессиональный спикер и автор блога JavaSpecialists.eu Heinz Kabutz в компании с соратником John Green расскажут о многопоточном программировании с использованием Phaser, StampedLock и VarHandle.
— Один из разработчиков Kotlin Роман Елизаров даст большое интервью с Q&A-сессией. Можно будет в прямом эфире расспросить его о перспективах языка, его эволюции и компромиссах, на которые приходится идти в работе.

Программа и билеты со скидкой по промокоду proglib2020JRGpc : https://bit.ly/34OtLez
#вопросы_с_собеседований
Какие подклассы класса OutputStream вы знаете, для чего они предназначены?
☕️ OutputStream - это абстрактный класс, определяющий потоковый байтовый вывод;
☕️ BufferedOutputStream - буферизированный выходной поток;
☕️ ByteArrayOutputStream - все данные, посылаемые в этот поток, размещаются в предварительно созданном буфере;
☕️ DataOutputStream - выходной поток байт, включающий методы для записи стандартных типов данных Java;
☕️ FileOutputStream - запись данных в файл на физическом носителе;
☕️ FilterOutputStream - абстрактный класс, предоставляющий интерфейс для классов-надстроек, которые добавляют к существующим потокам полезные свойства;
☕️ PrintStream - выходной поток, включающий методы print() и println();
☕️ ObjectOutputStream - выходной поток для записи объектов;
☕️ PipedOutputStream реализует понятие выходного канала.
GeekBrains запускает курс «Python для решения бизнес-задач»

Обучение начнется 23 октября и продлится 2,5 месяца. Курс рассчитан на далеких от программирования слушателей: маркетологов, продакт-менеджеров и предпринимателей. В формате видеоуроков и практических вебинаров они научатся автоматизировать рутинные задачи и процессы. Опытные преподаватели расскажут, как создавать ботов Telegram, собирать, обрабатывать и визуализировать данные о клиентах, а также обрабатывать файлы и проверять правильность заполнения форм. Python позволяет написать программу один раз и запускать ее по потребности — это экономит рабочее время.

Получить дополнительную информацию и записаться в группу можно на сайте: https://proglib.io/w/b894de20
#вопросы_с_собеседований
Какой класс появился в Java 8 для кодирования/декодирования данных?
Base64 - потокобезопасный класс, который реализует кодировщик и декодировщик данных, используя схему кодирования base64 согласно RFC 4648 и RFC 2045.

Base64 содержит 6 основных методов:

getEncoder()/getDecoder() - возвращает кодировщик/декодировщик base64, соответствующий стандарту RFC 4648;
getUrlEncoder()/getUrlDecoder() - возвращает URL-safe кодировщик/декодировщик base64, соответствующий стандарту RFC 4648;
getMimeEncoder()/getMimeDecoder() - возвращает MIME кодировщик/декодировщик, соответствующий стандарту RFC 2045.
#вопросы_с_собеседований
Какое худшее время работы метода get(key) для ключа, который есть в HashMap?
O(N). Худший случай - это поиск ключа в HashMap, вырожденного в список по причине совпадения ключей по hashCode() и для выяснения, хранится ли элемент с определённым ключом, может потребоваться перебор всего списка.
UPD. Начиная с Java 8 корзины в HashMap становятся балансированными деревьями, если в них попадает больше определенного кол-ва объектов. Поэтому худший случай будет O(log n). Подробности можно почитать в https://javahungry.blogspot.com/2013/08/hashing-how-hash-map-works-in-java-or.html (спасибо за указание на ошибку)
#вопросы_с_собеседований
Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс?
☕️ В Java класс может одновременно реализовать несколько интерфейсов, но наследоваться только от одного класса.
☕️ Абстрактные классы используются только тогда, когда присутствует тип отношений «is a» (является). Интерфейсы могут реализоваться классами, которые не связаны друг с другом.
☕️ Абстрактный класс - средство, позволяющее избежать написания повторяющегося кода, инструмент для частичной реализации поведения. Интерфейс - это средство выражения семантики класса, контракт, описывающий возможности. Все методы интерфейса неявно объявляются как public abstract или (начиная с Java 8) default - методами с реализацией по-умолчанию, а поля - public static final.
☕️ Интерфейсы позволяют создавать структуры типов без иерархии.
☕️ Наследуясь от абстрактного, класс «растворяет» собственную индивидуальность. Реализуя интерфейс, он расширяет собственную функциональность.

Абстрактные классы содержат частичную реализацию, которая дополняется или расширяется в подклассах. При этом все подклассы схожи между собой в части реализации, унаследованной от абстрактного класса и отличаются лишь в части собственной реализации абстрактных методов родителя. Поэтому абстрактные классы применяются в случае построения иерархии однотипных, очень похожих друг на друга классов. В этом случае наследование от абстрактного класса, реализующего поведение объекта по умолчанию может быть полезно, так как позволяет избежать написания повторяющегося кода. Во всех остальных случаях лучше использовать интерфейсы.
HashMap состоит из «корзин» (bucket). С технической точки зрения «корзины» — это элементы массива, которые хранят ссылки на списки элементов. При добавлении новой пары «ключ-значение» вычисляет хэш-код ключа, на основании которого вычисляется номер корзины (номер ячейки массива), в которую попадет новый элемент. Если корзина пустая, то в нее сохраняется ссылка на вновь добавляемый элемент, если же там уже есть элемент, то происходит последовательный переход по ссылкам между элементами в цепочке, в поисках последнего элемента, от которого и ставится ссылка на вновь добавленный элемент. Если в списке был найден элемент с таким же ключом, то он заменяется.
JVM, Java Virtual Machine (Виртуальная машина Java) — основная часть среды времени исполнения Java (JRE). Виртуальная машина Java исполняет байт-код Java, предварительно созданный из исходного текста Java-программы компилятором Java. JVM может также использоваться для выполнения программ, написанных на других языках программирования.

JRE, Java Runtime Environment (Среда времени выполнения Java) - минимально-необходимая реализация виртуальной машины для исполнения Java-приложений. Состоит из JVM и стандартного набора библиотек классов Java.

JDK, Java Development Kit (Комплект разработки на Java) - JRE и набор инструментов разработчика приложений на языке Java, включающий в себя компилятор Java, стандартные библиотеки классов Java, примеры, документацию, различные утилиты.

Коротко: JDK - среда для разработки программ на Java, включающая в себя JRE - среду для обеспечения запуска Java программ, которая в свою очередь содержит JVM - интерпретатор кода Java программ.
Мы обучим тебя разработке на Java с ментором онлайн, а оплата только после трудоустройства в IT. Поможем составить резюме и подготовим к собеседованиям. Тебя ждет минимум 5 предложений о работе и быстрый карьерный рост благодаря программе поддержки рассчитанной на 2 года.

Пройти тестовое задание 🙋‍♂️👉 https://clck.ru/Rc6VB

👇Как проходит обучение:
1. Жесткий контроль теории и кода после каждой пройденной темы
2. Обучение только востребованному на рынке стеку технологий: Java Core, Maven, Git, Tomcat, Spring MVC, Core, Security, Hibernate
3. Отработка знаний в реальном бизнес проекте, который дает опыт для резюме
4. Интегрированное полезное общение в групповом чате slack с одногруппниками, наставниками и выпускниками-разработчиками
5. Быстрое карьерное и финансовое развитие за счет двухгодичной программы поддержки от экспертов java сообщества: митапы, мастер-классы, лекции и оффлайн интенсивы
6. Гарантированное трудоустройство с первой зарплатой минимум от 100 000 рублей

Условия участия:
• Пройти входное тестирование
• Обучение минимум 25 часов в неделю
• Проживание или готовность к переезду в Москву для трудоустройства
#вопросы_с_собеседований
Могут ли у разных ссылок на один объект (ref0 == ref1) быть ref0.equals(ref1) == false?
В общем случае - могут, если метод equals() реализован некорректно и не выполняет свойство рефлексивности: для любых ненулевых ссылок x метод x.equals(x) должен возвращать true.
Модификатор final может применяться к переменным, параметрам методов, полям и методам класса или самим классам.

☕️ Класс не может иметь наследников;
☕️ Метод не может быть переопределен в классах-наследниках;
☕️ Поле не может изменить свое значение после инициализации;
☕️ Параметры методов не могут изменять своё значение внутри метода;
☕️ Локальные переменные не могут быть изменены после присвоения им значения.
🍋Тинькофф это уже давно не только банк, а целая экосистема: счет для бизнеса, страхование, мобильная связь, инвестиции.
💡Мы ищем Java-разработчиков разного уровня в департамент платёжных систем. У нас три направления (банкоматы, платёжная система и интернет-эквайринг), работа в продуктовой команде, в которой есть аналитики, бэк и фрон разработчики, тестеры и тд, команды сформированные.

💰ЗП: 180 000-230 000 (net)

🧩Чем нужно заниматься:
• Участие в разработке и оптимизации производительности внутри программного комплекса Процессингового центра: банковский процессинг, развитие банковских продуктов;
• Участие в разработке интеграционных решений в рамках глобальной информационной инфраструктуры со смежными IT-системами (CRM-системы, АБС, DWH, Личный Кабинет);
📒Что нужно знать:
Опыт работы с Java 8, Spring Framework, опыт с ORACLE, postgreSQL, понимание REST подхода к разработке API, опыт работы с SQL и JDBC, опыт работы с Git, Maven.

🎁Что у нас есть для тебя:
• Офис в Москве
• Проводим митапы, тренинги и мастер-классы, огромная tech-библиотека в твоем распоряжении;
• Компенсируем обеды; чай, кофе и фрукты в кухнях на каждом этаже офиса;
• ДМС и страховку от несчастных случаев;
• Бесплатные курсы английского языка на территории офиса; Скидка 30% на КАСКО и специальные условия на продукты Тинькофф.

📩По всем вопросам можно писать в личные сообщения @akulovaeg