Библиотека джависта | 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, Spring, Maven, Hibernate pinned «Хотите начать путь в анализе данных, давно в школе изучали математику, и все забыли? Мы запускаем марафон по школьной математике, который поможет наверстать упущенное. В режиме реального времени вы сможете послушать клевых спикеров, порешать задачки, задавать…»
📌 Последовательности и прогрессии

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

https://youtu.be/OjQ75pKKhIw

Пройти весь курс: https://proglib.io/w/96ebe487
Научись программировать на самом востребованном языке в сфере IT и стань Java-разработчиком.

Чем интересна именно эта профессия? Повторимся, что Java — самый востребованный язык, работать с ним несложно и интересно, заработок немаленький, и еще один большой плюс — можно работать удаленно из любой точки мира. Круто, да?

📌 Тогда забирай курс «Профессия Java-разработчик» со скидкой до 60% в этом месяце!
📌 Все подробности по ссылке: https://clc.am/zm8v4A
Что тебя ждет:
✔️ интересная и продуманная программа курса;
✔️ решение бизнес-задач компании;
✔️ много часов практики;
✔️ доступ к этому курсу на веки-вечные (ну а вдруг ты что-то забудешь);

И самое главное, после обучения Skillbox гарантирует трудоустройство в IT-компанию!
Это значит приостановить его на определенный промежуток времени, вызвав в ходе его выполнения статический метод Thread.sleep() и передав в качестве параметра необходимое количество времени в миллисекундах. До истечения этого времени поток может быть выведен из состояния ожидания вызовом interrupt() с выбрасыванием InterruptedException.
#вопросы_с_собеседований
Когда в приложении может быть выброшено исключение ClassCastException?
ClassCastException (потомок RuntimeException) - исключение, которое будет выброшено при ошибке приведения типа.
LocalDateTime объединяет вместе LocaleDate и LocalTime, содержит дату и время в календарной системе ISO-8601 без привязки к часовому поясу. Время хранится с точностью до наносекунды. Содержит множество удобных методов, таких как plusMinutes, plusHours, isAfter, toSecondOfDay и т.д.
#вопросы_с_собеседований
Какие наиболее распространенные задачи выполняются в контейнере сервлетов?
☕️ Поддержка обмена данными. Контейнер сервлетов предоставляет легкий способ обмена данными между веб клиентом (браузером) и сервлетом. Благодаря контейнеру нет необходимости создавать слушателя сокета на сервере для отслеживания запросов от клиента, а так же разбирать запрос и генерировать ответ. Все эти важные и комплексные задачи решаются с помощью контейнера и разработчик может сосредоточиться на бизнес-логике приложения.
☕️ Управление жизненным циклом сервлетов и ресурсов. Начиная от загрузки сервлета в память, инициализации, внедрения методов и заканчивая уничтожением сервлета. Контейнер так же предоставляет дополнительные утилиты, например JNDI, для управления пулом ресурсов.
☕️ Поддержка многопоточности. Контейнер самостоятельно создает новую нить для каждого запроса и предоставляет ей запрос и ответ для обработки. Таким образом сервлет не инициализируется заново для каждого запроса и тем самым сохраняет память и уменьшает время до обработки запроса.
☕️ Поддержка JSP. JSP классы не похожи на стандартные классы джавы, но контейнер сервлетов преобразует каждую JSP в сервлет и далее управляется контейнером как обычным сервлетом.
☕️ Различные задачи. Контейнер сервлетов управляет пулом ресурсов, памятью приложения, сборщиком мусора. Предоставляются возможности настройки безопасности и многое другое.
Сборщик мусора (Garbage Collector) должен делать всего две вещи:
☕️ Находить мусор - неиспользуемые объекты. (Объект считается неиспользуемым, если ни одна из сущностей в коде, выполняемом в данный момент, не содержит ссылок на него, либо цепочка ссылок, которая могла бы связать объект с некоторой сущностью приложения, обрывается);
☕️ Освобождать память от мусора.

Существуют два подхода к обнаружению мусора:
☕️ Reference counting;
☕️ Tracing.

Reference counting (подсчёт ссылок). Суть этого подхода состоит в том, что каждый объект имеет счетчик. Счетчик хранит информацию о том, сколько ссылок указывает на объект. Когда ссылка уничтожается, счетчик уменьшается. Если значение счетчика равно нулю, - объект можно считать мусором. Главным минусом такого подхода является сложность обеспечения точности счетчика. Также при таком подходе сложно выявлять циклические зависимости (когда два объекта указывают друг на друга, но ни один живой объект на них не ссылается), что приводит к утечкам памяти.

Главная идея подхода Tracing (трассировка) состоит в утверждении, что живыми могут считаться только те объекты, до которых мы можем добраться из корневых точек (GC Root) и те объекты, которые доступны с живого объекта. Всё остальное - мусор.

Существует 4 типа корневых точки:
☕️ Локальные переменные и параметры методов;
☕️ Потоки;
☕️ Статические переменные;
☕️ Ссылки из JNI.

Самое простое java приложение будет иметь корневые точки:
☕️ Локальные переменные внутри main() метода и параметры main() метода;
☕️ Поток, который выполняет main();
☕️ Статические переменные класса, внутри которого находится main() метод.

Таким образом, если мы представим все объекты и ссылки между ними как дерево, то нам нужно будет пройти с корневых узлов (точек) по всем рёбрам. При этом узлы, до которых мы сможем добраться - не мусор, все остальные - мусор. При таком подходе циклические зависимости легко выявляются. HotSpot VM использует именно такой подход.
#вопросы_с_собеседований
Какое из следующих утверждений о потоках неверно?
☕️ Если метод start() вызывается дважды для одного и того же объекта Thread, во время выполнения генерируется исключение.
☕️ Порядок, в котором запускались потоки, может не совпадать с порядком их фактического выполнения.
☕️ Если метод run() вызывается напрямую для объекта Thread, во время выполнения генерируется исключение.
☕️ Если метод sleep() вызывается для потока, во время выполнения синхронизированного кода, блокировка не снимается.
Правильный ответ: 3. Если метод run() вызывается напрямую для объекта Thread, во время выполнения исключение не генерируется. Однако, код, написанный в методе run() будет выполняться текущим, а не новым потоком. Таким образом, правильный способ запустить поток – это вызов метода start(), который приводит к выполнению метода run() новым потоком.

Вызов метода start() дважды для одного и того же объекта Thread приведёт к генерированию исключения IllegalThreadStateException во время выполнения, следовательно, утверждение 1 верно. Утверждение 2 верно, так как порядок, в котором выполняются потоки, определяется Планировщиком потоков, независимо от того, какой поток запущен первым. Утверждение 4 верно, так как поток не освободит блокировки, которые он держит, когда он переходит в состояние Ожидания.
Почему нельзя соглашаться на тестовый кодинг во время собеседования

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

https://proglib.io/sh/2kaXGotdi0
Хочешь начать карьеру Java-разработчика? Наставники из Java Mentor подготовят тебя на позицию Java-программиста за 8 месяцев. Оплата только после успешного трудоустройства в IT.

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

Ты освоишь востребованный стек технологий, получишь опыт в коммерческом проекте, а в конце программы менторы подготовят тебя к трудным вопросам на собеседовании и помогут составить конкурентное резюме. Тебя ждет высокая зарплата в топовых компаниях Москвы и минимум 10 предложений о работе.
This media is not supported in your browser
VIEW IN TELEGRAM
Приглашаем на бесплатную образовательную программу Тинькофф Финтех по направлениям: Java, Scala, Kotlin.

Занятия стартуют 8 февраля и продлятся 3 месяца. Все будет онлайн, поэтому география — вся Россия. Для поступления необходимо успешно сдать вступительные испытания. Участников программы ждет много практики, актуальных задач, интересных и обязательных к выполнению домашних заданий.

Заявки принимаем до 27 января, экзамены пройдут с 21 по 27 января. Рекомендуем не откладывать все на последний день и отправлять заявку в ближайшее время: https://fintech.tinkoff.ru/study/fintech/
Кроме того, очень важно сразу же зарегистрироваться в личном кабинете, там будут проходить экзамены: https://fintech.tinkoff.ru/sign-in
java.time.ZonedDateTime — аналог java.util.Calendar, класс с самым полным объемом информации о временном контексте в календарной системе ISO-8601. Включает временную зону, поэтому все операции с временными сдвигами этот класс проводит с её учётом.
☕️ Топ-10 книг по Java, вышедших за последние два года

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

https://proglib.io/sh/9R8tIo0ZNn