Библиотека джависта | Java, Spring, Maven, Hibernate
24.8K subscribers
1.87K photos
38 videos
42 files
2.66K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://yangx.top/proglibrary/9197

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Ребята из Тинькофф Старт открывают регистрацию на онлайн-трансляцию посвященную летней программе!

26 марта в 19:00 расскажут об открытых направлениях и как подготовиться к вступительным испытаниям для каждого из них. А еще обсудят внутреннюю кухню, особенности обучения и истории ребят, которые когда-то начинали с Тинькофф Старт, а теперь строят карьеру в Тинькофф.

Для участия в трансляции зарегистрируйтесь и ищите письмо-подтверждение со ссылкой на трансляцию в указанной почте: https://prglb.ru/5wr14

Напоминаем: у ребят есть телеграм-канал, где удобно следить за всеми новостями Тинькофф Образования: @tinkoff_fintech
#вопросы_с_собеседований
1. Необходимо добавить 1 млн. элементов, какую структуру из фреймворка Collections вы будете использовать?
2. Как происходит удаление элементов из ArrayList? Как меняется в этом случае размер ArrayList?
«Ни в одном месте не проучился дольше года». Интервью с Java-разработчиком

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

https://prglb.ru/3gkr7
Необходимо добавить 1 млн. элементов, какую структуру из фреймворка Collections вы будете использовать?
❗️Однозначный ответ можно дать только исходя из информации о том, в какую часть списка происходит добавление элементов, что потом будет происходить с элементами списка, существуют ли какие-то ограничения по памяти или скорости выполнения. см. Чем отличается ArrayList от LinkedList
Как происходит удаление элементов из ArrayList? Как меняется в этом случае размер ArrayList?
❗️При удалении произвольного элемента из списка, все элементы находящиеся «правее» смещаются на одну ячейку влево и реальный размер массива (его емкость, capacity) не изменяется никак. Механизм автоматического «расширения» массива существует, а вот автоматического «сжатия» нет, можно только явно выполнить «сжатие» командой trimToSize().
Суперподборка: более 70 бесплатных русскоязычных онлайн-курсов по IT-специальностям

Математика, алгоритмы, языки программирования (включая Java) и другие курсы по анализу данных, вебу, мобильной разработке, тестированию. Плюс наши ключевые статьи по каждой из тем.

https://prglb.ru/3a6ih
#вопросы_с_собеседований
Что произойдет со сборщиком мусора, если выполнение метода finalize() требует ощутимо много времени, или в процессе выполнения будет выброшено исключение?
Непосредственно вызов finalize() происходит в отдельном потоке Finalizer (java.lang.ref.Finalizer.FinalizerThread), который создаётся при запуске виртуальной машины (в статической секции при загрузке класса Finalizer). Методы finalize() вызываются последовательно в том порядке, в котором были добавлены в список сборщиком мусора. Соответственно, если какой-то finalize() зависнет, он подвесит поток Finalizer, но не сборщик мусора. Это в частности означает, что объекты, не имеющие метода finalize(), будут исправно удаляться, а вот имеющие будут добавляться в очередь, пока поток Finalizer не освободится, не завершится приложение или не кончится память.

То же самое применимо и выброшенным в процессе finalize() исключениям: метод runFinalizer() у потока Finalizer игнорирует все исключения выброшенные в момент выполнения finalize(). Таким образом возникновение исключительной ситуации никак не скажется на работоспособности сборщика мусора.
Java: Learn Java in One Day and Learn It Well (2016)
Автор: Jamie Chan

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

Скачать книгу
#вопросы_с_собеседований
Что такое «локальный класс»? Каковы его особенности?
Local inner class (Локальный класс) - это вложенный класс, который может быть декларирован в любом блоке, в котором разрешается декларировать переменные. Как и простые внутренние классы (Member inner class) локальные классы имеют имена и могут использоваться многократно. Как и анонимные классы, они имеют окружающий их экземпляр только тогда, когда применяются в нестатическом контексте.

Локальные классы имеют следующие особенности:

✔️Видны только в пределах блока, в котором объявлены;
✔️Не могут быть объявлены как private/public/protected или static;
✔️Не могут иметь внутри себя статических объявлений методов и классов, но могут иметь финальные статические поля, проинициализированные константой;
✔️Имеют доступ к полям и методам обрамляющего класса;
✔️Могут обращаться к локальным переменным и параметрам метода, если они объявлены с модификатором final.
#вопросы_с_собеседований
1. Почему метод clone() объявлен в классе Object, а не в интерфейсе Cloneable?
2. Какой способ клонирования предпочтительней?
Почему метод clone() объявлен в классе Object, а не в интерфейсе Cloneable?
❗️Метод clone() объявлен в классе Object с указанием модификатора native, чтобы обеспечить доступ к стандартному механизму поверхностного копирования объектов. Одновременно он объявлен и как protected, чтобы нельзя было вызвать этот метод у не переопределивших его объектов. Непосредственно интерфейс Cloneable является маркерным (не содержит объявлений методов) и нужен только для обозначения самого факта, что данный объект готов к тому, чтобы быть клонированным. Вызов переопределённого метода clone() у не Cloneable объекта вызовет выбрасывание CloneNotSupportedException.

Какой способ клонирования предпочтительней?
❗️Наиболее безопасным и, следовательно, предпочтительным способом клонирования является использование специализированного конструктора копирования:

✔️Отсутствие ошибок наследования (не нужно беспокоиться, что у наследников появятся новые поля, которые не будут склонированы через метод clone());
✔️Поля для клонирования указываются явно;
✔️Возможность клонировать даже final поля.
final-методы нельзя переопределять в классах-наследниках. Если убрать этот модификатор, программа выведет Derived::show() called.
The Joy of Kotlin (2019)

Kotlin — это элегантный язык JVM с современными функциями и простой интеграцией с Java. Книга обучает практическим методам улучшения абстракции и дизайна, написания простого и понятного кода для создания поддерживаемых качественных приложений. Написано для разработчиков Java или Kotlin.

Скачать книгу