Библиотека джависта | 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
加入频道
#вопросы_с_собеседований
Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс?
☕️ В 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
GeekBrains открывает факультет обработки естественного языка

Обучение проходит в онлайн-формате 2 раза в неделю в течение 10 месяцев. Студенты факультета смогут с нуля овладеть востребованной профессией NLP-разработчика, ML-инженера или специалиста по Data Science. Программа занятий рассчитана на новичков: в нее входят основы высшей математики (линейная алгебра и матанализ), программирования и машинного обучения. Достаточно подробно изучается теория вероятностей и матстатистика, различные подходы к обработке естественного языка, прототипирование и интеграция, а также бизнес-процесс машинного обучения. Занятия ведут признанные в отрасли эксперты, а решить возникающие в процессе обучения затруднения поможет личный наставник. Успешно окончившие курс студенты получат диплом о профессиональной переподготовке и закрепленную в договоре гарантию трудоустройства.

Подробная информация о новом факультете доступна на нашем сайте: https://proglib.io/w/f1c2a766
Дело в том, что «висеть» на методе wait() одного монитора могут сразу несколько потоков. При вызове notify() только один из них выходит из wait() и пытается захватить монитор, а затем продолжает работу со следующего после wait() оператора. Какой из них выйдет - заранее неизвестно. А при вызове notifyAll(), все висящие на wait() потоки выходят из wait(), и все они пытаются захватить монитор. Понятно, что в любой момент времени монитор может быть захвачен только одним потоком, а остальные ждут своей очереди. Порядок очереди определяется планировщиком потоков Java.
GeekBrains открывает факультет Fullstack JavaScript

Подготовительные курсы пройдут в ноябре, а обучение начнется в январе 2021 года. Рассчитанная на 15 месяцев программа позволит студентам освоить профессию разработчика полного цикла. Успешно окончив курс, они смогут запустить собственные проекты: сайты, мобильные приложения и высоконагруженные сервисы. Преподают на факультете ведущие специалисты из GeekBrains и Delivery Club, а затруднения с домашними заданиями поможет решить наставник. Помимо основ HTML, CSS и JavaScript, в учебную программу входят продвинутые темы: современная фронтенд-разработка, бэкенд-разработка, базы данных, сетевые протоколы, многопоточные приложения, взаимодействие в команде и многое другое. Гарантия трудоустройства закреплена в договоре — опытный HR поможет вам составить резюме.

Получить дополнительную информацию и записаться в группу можно на сайте: https://proglib.io/w/cbf6a980
👨‍🎓 35 приложений для изучения программирования на iOS и Android

Лучшие приложения для Android и iOS, которые научат детей логическому мышлению и основам кодинга. Для взрослых более сложные игрушки: Java, С, машинное обучение и Data Science.

https://proglib.io/sh/q2R9OsS4yE
GeekBrains запускает курс «Блокчейн-разработка»

Обучение начнется 2 ноября и продлится 4 месяца. Курс рассчитан на еще не знакомых с темой и уже имеющих некоторый опыт разработчиков. Технологический стек: командная оболочка, TCP/IP, Git и любой язык для backend. Занятия ведут участвующие в блокчейн-проектах преподаватели, а программа на 70% состоит из интерактивных вебинаров. Студенты изучат основы криптографии и распределенного реестра, а затем перейдут к более сложным темам: протоколам консенсуса и анонимизации, смарт-контрактам, закрытым блокчейнам и системам с разрешениями, масштабированию сетей блокчейн и пользовательским аспектам применения технологии. После обучения эксперты криптобиржи Binance проведут для студентов карьерные консультации, а возникающие в процессе затруднения поможет разрешить личный наставник.

Получить дополнительную информацию и записаться в группу можно на сайте: https://proglib.io/w/9b16b77c
Building Java Programs: A Back to Basics Approach (2019)
Автор: Stuart Reges, Marty Stepp
Количество страниц: 1232

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

Скачать книгу
GeekBrains запускает курс «Data Science в медицине»

За 18 месяцев начинающие специалисты освоят применение методов Data Science в здравоохранении. Опытные преподаватели будут проводить вебинары 2 — 4 раза в неделю, а закончившие курс студенты добавят в портфолио 16 учебных проектов. В программу входят основы высшей математики и программирования, введение в искусственный интеллект, а также продвинутые темы: ОС Linux и инструменты Data Science, сбор и обработка данных, нейронные сети, компьютерное зрение, машинное обучение и обработка естественного языка, а также применение методов AI, ML и Data Science в медицине. HR-менеджер поможет составить резюме и подготовиться к собеседованию.

Получить дополнительную информацию и записаться в группу можно на сайте: https://proglib.io/w/a417a814
#вопросы_с_собеседований
Почему не рекомендуется использовать метод Thread.stop()?