Size: a a a

Библиотека джависта

2020 March 22
Библиотека джависта
❓Каким образом можно создать поток?
✔️Создать потомка класса Thread и переопределить его метод run();
✔️Создать объект класса Thread, передав ему в конструкторе экземпляр класса, реализующего интерфейс Runnable. Этот интерфейс содержит метод run(), который будет выполняться в новом потоке. Поток закончит выполнение, когда завершится его метод run().
✔️Вызвать метод submit() у экземпляра класса, реализующего интерфейс ExecutorService, передав ему в качестве параметра экземпляр класса, реализующего интерфейс Runnable или Callable (содержит метод call(), в котором описывается логика выполнения).
❓Чем различаются Thread и Runnable?
Thread - это класс, некоторая надстройка над физическим потоком.
Runnable - это интерфейс, представляющий абстракцию над выполняемой задачей.
Помимо того, что Runnable помогает разрешить проблему множественного наследования, несомненный плюс от его использования состоит в том, что он позволяет логически отделить логику выполнения задачи от непосредственного управления потоком.
❓В чём заключается разница между методами start() и run()?
Несмотря на то, что start() вызывает метод run() внутри себя, это не то же самое, что просто вызов run(). Если run() вызывается как обычный метод, то он вызывается в том же потоке и никакой новый поток не запускается, как это происходит в случае, когда вы вызываете метод start().
источник
Библиотека джависта
​​25 марта стартует новый онлайн-курс "Архитектура и шаблоны проектирования".

Успейте записаться в группу. Пройди вступительный тест и поступите в группу со скидкой -20%: https://otus.pw/Yt4h/

На курсе вы научитесь:
1. Применять шаблоны проектирования в разработках
2. Знать современные процессы разработки программного обеспечения
3. Внедрять DevOps в свои процессы разработки, улучшая код и минимизируя ошибки
4. Уметь вести разработку от постановки бизнес-задачи до реализации на production сервере
5. Уметь отрисовывать бизнес-процессы и схемы.

Для обучения на курсе понадобятся знания языка программирования и принципов ООП. Базовое языка JAVA как примера, на котором будет проводиться часть объяснений.

Смотрите детали программы, проходите вступительный тест и присоединяйтесь к слушателям: https://otus.pw/Yt4h/
источник
2020 March 23
Библиотека джависта
#вопросы_с_собеседований
1. Почему в некоторых интерфейсах вообще не определяют методов?
2. Для чего в Java используются статические блоки инициализации?
источник
Библиотека джависта
❓Почему в некоторых интерфейсах вообще не определяют методов?
❗️Это так называемые маркерные интерфейсы. Они просто указывают, что класс относится к определенному типу. Примером может послужить интерфейс Clonable, который указывает на то, что класс поддерживает механизм клонирования.

❓Для чего в Java используются статические блоки инициализации?
❗️Статические блоки инициализации используются для выполнения кода, который должен выполниться один раз при инициализации класса загрузчиком классов, в момент, предшествующий созданию объектов этого класса при помощи конструктора. Такой блок (в отличие от нестатических, принадлежащих конкретному объекту класса) принадлежит только самому классу (объекту метакласса Class).
источник
2020 March 24
Библиотека джависта
Серия туториалов по Maven, фреймворку для автоматизации сборки проектов.

https://youtu.be/Fe6lrsPmseo
источник
Библиотека джависта
Ребята из Тинькофф Старт открывают регистрацию на онлайн-трансляцию посвященную летней программе!

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

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

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

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

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

LinkedList:
✔️На получение элемента по индексу или значению потребуется линейное время O(N);
✔️На добавление и удаление в начало или конец списка потребуется константное O(1);
✔️Вставка или удаление в/из произвольного места за константное O(N);
✔️Требует больше памяти для хранения такого же количества элементов…
источник
2020 March 26
Библиотека джависта
Суперподборка: более 70 бесплатных русскоязычных онлайн-курсов по IT-специальностям

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

https://prglb.ru/3a6ih
источник
Библиотека джависта
#вопросы_с_собеседований
Что произойдет со сборщиком мусора, если выполнение метода finalize() требует ощутимо много времени, или в процессе выполнения будет выброшено исключение?
источник
2020 March 27
Библиотека джависта
Непосредственно вызов 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 при помощи этой книги.

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

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

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

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

✔️Отсутствие ошибок наследования (не нужно беспокоиться, что у наследников появятся новые поля, которые не будут склонированы через метод clone());
✔️Поля для клонирования указываются явно;
✔️Возможность клонировать даже final поля.
источник
2020 March 30
Библиотека джависта
Подборка самых полезных книг по изучению Java.

https://www.freecodecamp.org/news/must-read-books-to-learn-java-programming-327a3768ea2f/
источник
Библиотека джависта
Если вы боитесь, что ваш заработок пострадает из-за карантина, участвуйте в онлайн-марафоне от GeekBrains. За 14 дней вы выберете другую востребованную профессию. Вас ждут:

23 бесплатных вебинара по программированию, дизайну, маркетингу и управлению.
Инсайды от экспертов из Mail ru Group, Wikium, Альфа-Банка и других компаний-лидеров рынка.
Заряд мотивации: вы поймете, что начать карьеру можно в любом возрасте, с любым бэкграундом.
Шанс выиграть бесплатное обучение.

Успейте зарегистрироваться и выбрать новую профессию мечты!
источник