Обложка канала

Библиотека джависта. Страница 50

20804 @javaproglib

Полезные материалы по всему, что может быть полезно разработчику на Java.

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

    #вопросы_с_собеседований Что такое finalize()? Зачем он нужен? Через вызов метода finalize() (который наследуется от Java.lang.Object) JVM реализуется функциональность, аналогичная функциональности деструкторов в С++, используемых для очистки памяти перед возвращением управления операционной системе. Данный метод вызывается при уничтожении объекта сборщиком мусора (garbage collector) и, переопределяя finalize(), можно запрограммировать действия, необходимые для корректного удаления экземпляра класса - например, закрытие сетевых соединений, соединений с базой данных, снятие блокировок на файлы и т.д. После выполнения этого метода объект должен быть повторно собран сборщиком мусора (и это считается серьезной проблемой метода finalize() т.к. он мешает сборщику мусора освобождать память). Вызов этого метода не гарантируется, т.к. приложение может быть завершено до того, как будет запущена сборка мусора. Объект не обязательно будет доступен для сборки сразу же - метод finalize() может сохранить куда-нибудь ссылку на объект. Подобная ситуация называется «возрождением» объекта и считается антипаттерном. Главная проблема такого трюка - в том, что «возродить» объект можно только один раз.
  • Библиотека джависта

    Ищем будущих Java-разработчиков. Обучение и трудоустройство берём на себя. От Вас: — Желание стать востребованным IT-специалистом и зарабатывать от 100 000 руб/мес (по данным сайта HeadHunter). — Наличие компьютера или ноутбука. — Возможность уделять от 4 до 6 часов в неделю на обучение и немного упорства. От нас: — Знания, навыки и компетенции, которых, достаточно для позиции Middle-разработчика. — Сильный преподавательский состав экспертов-практиков в IT-секторе. — Стажировка в GeekBrains и трудоустройство после обучения. Что нужно будет делать: Java-разработчики занимаются разработкой высоконагруженных систем, веб-сервисов, банковских и корпоративных приложений, которыми пользуются люди по всему миру. Освоить все необходимые навыки и стать востребованным Javistom уровня — middle вы можете на курсе «Факультет Java-разработки» с гарантированным трудоустройством от GeekBrains. Курс идеально подойдёт, как для новичков, так и для разработчиков с опытом. За 12 месяцев вы с нуля: — Научитесь программировать на Java — Освоите один из самых востребованных фреймворков для веб-разработки — Spring Framework — Научитесь создавать приложения с помощью Spring Framework — Освоите базовые знания верстки: HTML, CSS, Bootstrap — Научитесь работать с базами данных SQL, PostgreSQL — Получите навыки автоматизированного тестирования кода — Получите знания по алгоритмам и структуре данных По итогу обучения вы сможете создавать сетевые чаты, приложения, мобильные игры и другие сервисы. И это ещё не всё! Мы дарим подарки всем студентам: — Изучение английского языка с Kespa — Ключ от продуктов JetBrains — Kaspersky Internet Security бесплатно на 90 дней Пока вы читаете этот пост, кто-то уже записался на онлайн-курс «ФакультетJava-разработки». Переходите по ссылке и оставляйте заявку: https://clc.to/LcmqSw
  • Библиотека джависта

    #вопросы_с_собеседований Какая роль поля serialVersionUID в сериализации? serialVersionUID используется для указания версии сериализованных данных. Когда мы не объявляем serialVersionUID в нашем классе явно, среда выполнения Java делает это за нас, но этот процесс чувствителен ко многим метаданным класса включая количество полей, тип полей, модификаторы доступа полей, интерфейсов, которые реализованы в классе и пр. Рекомендуется явно объявлять serialVersionUID т.к. при добавлении, удалении атрибутов класса динамически сгенерированное значение может измениться и в момент выполнения будет выброшено исключение InvalidClassException. private static final long serialVersionUID = 20161013L;
  • Реклама

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

    💣 Начинаем погружаться в паттерны проектирования 28 июля в 20:00 мск! 📌 На открытом уроке в OTUS мы рассмотрим основной принцип декоратора — добавление функциональности к существующему объекту, поговорим о понятиях «декоратор», «адаптер» и «прокси», а также изучим все сходства и различия. 🦾 Занятие проведет Евгений Непомнящий, C++ и Java-разработчик в рамках онлайн-курса «Архитектура и шаблоны проектирования» от OTUS. Используйте эту возможность, чтобы познакомиться с преподавателем и форматом обучения! 🔥 Чтобы понять, подходит ли вам курс, пройдите вступительный тест
  • Библиотека джависта

    #вопросы_с_собеседований Как создать собственный протокол сериализации? Для создания собственного протокола сериализации достаточно реализовать интерфейс Externalizable, который содержит два метода: public void writeExternal(ObjectOutput out) throws IOException; public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;
  • Библиотека джависта

    🔥Освой востребованную профессию Java-разработчика с нуля за 3 месяца! OTUS запускает буткемп «Java Developer»! Буткемп «Java Developer»! от OTUS — это онлайн-курс с ментором, методика ускоренного обучения, построенная на ежедневных вебинарах с ведущими специалистами престижных IT-компаний. А еще много-много практики. После обучения у вас будет достаточно навыков, чтобы претендовать на среднюю по рынку зарплату в 105 тысяч рублей. 📌Оставьте заявку, чтобы присоединиться к группе по спец.цене: https://otus.pw/7ktz/ Хотите протестировать процесс обучения заранее? Тогда приходите на наши бесплатные открытые уроки! 08 августа в 20:00 - "Структура программы на Java. Примитивные типы." 22 августа в 20:00 - "Элементы формальной логики. Базовые структуры данных в языке Java."
  • Библиотека джависта

    Учебник по Java: списочный массив ArrayList В продолжении серии постов о языке программировании Java поговорим об ArrayList. Для чего он нужен и как его использовать. https://proglib.io/sh/q3vFKyklI0
  • Библиотека джависта

    #вопросы_с_собеседований Какое влияние оказывают на сериализуемость модификаторы полей static и final? При стандартной сериализации поля, имеющие модификатор static, не сериализуются. Соответственно, после десериализации это поле значения не меняет. При использовании реализации Externalizable сериализовать и десериализовать статическое поле можно, но не рекомендуется этого делать, т.к. это может сопровождаться трудноуловимыми ошибками. Поля с модификатором final сериализуются как и обычные. За одним исключением – их невозможно десериализовать при использовании Externalizable, поскольку final поля должны быть инициализированы в конструкторе, а после этого в readExternal() изменить значение этого поля будет невозможно. Соответственно, если необходимо сериализовать объект с final полем необходимо использовать только стандартную сериализацию.
  • Библиотека джависта

    #вопросы_с_собеседований Что обозначает ключевое слово transient? Поля класса, помеченные модификатором transient, не сериализуются. Обычно в таких полях хранится промежуточное состояние объекта, которое, к примеру, проще вычислить. Другой пример такого поля - ссылка на экземпляр объекта, который не требует сериализации или не может быть сериализован.
  • Библиотека джависта

    ИТ-сопротивление На платформе change.org разместили петицию в поддержку команды Авито ИТ-сообществом России, адресованную премьер-министру России Михаилу Мишустину. Авторы петиции обеспокоены принятыми поправками в закон «О рекламе». Они считают, что новая редакция закона «поставит крест на бизнесе Авито и других платформ (Юла, HH.ru, ЦИАН и др) и приведет к параличу работы тех уникальных продуктов, которые создают российские разработчики». «По мнению авторов проектов, такие законы обезопасят нашу страну. А мы уверены, что они, наоборот, подвергают ее опасности: хоть Авито формально и не является критической инфраструктурой, но его закрытие существенно ухудшит жизнь граждан страны», — написали авторы петиции. Они просят премьер-министра «cформулировать однозначную позицию Правительству по отношению к разрушительным законодательным инициативам, решающим несуществующие проблемы и “кошмарящим” отечественную ИТ-отрасль» и создать максимально комфортную среду для развития бизнеса вместе с ИТ-сообществом. Сердцем с Авито — сердцем с отечественным бизнесом.
    Подпишите петицию

    Поддержка команды Авито ИТ-сообществом России

    Change.org
  • Библиотека джависта

    #вопросы_с_собеседований Как написать immutable класс? Чтоб написать immutable неизменяемый класс, нужно следовать простым пунктам: ⁃ сделать класс финальным. ⁃ сделать все поля приватными и создать только геттеры к ним. Сеттеры, разумеется, не нужно. ⁃ сделать все mutable поля final, чтобы установить значение можно было только один раз. ⁃ инициализировать все поля через конструктор, выполняя глубокое копирование (то есть, копируя и сам объект, и его переменные, и переменные переменных, и так далее). ⁃ клонировать объекты mutable переменных в геттерах, чтобы возвращать только копии значений, а не ссылки на актуальные объекты.
  • Библиотека джависта

    Учиться или строить карьеру? Выбирать больше не нужно! В Йошкар-Оле открылся новый Институт iSpring, где в карьеру погружают с первого дня обучения. 🔹Бакалавриат набирают по 4 специальностям: программирование, управление продуктом, дизайн и маркетинг в IT. Всего 120 мест — для тех, кто хочет научиться актуальной продуктовой разработке и выпуститься не просто с дипломом, а со стеком практических навыков на уровне Pro. 🔹Стажировки в компаниях-партнерах, менторские программы от известных IT-гигантов и помощь в создании собственных стартапов — всё это уже на первом курсе, а со второго — помогут найти part-time job в IT-компании и выпуститься из института с крутым портфолио и уже не джуновской позицией в резюме. 🔹Жить и учиться предстоит в новом современном кампусе в Йошкар-Оле, который больше похож на офис продвинутой IT-компании и экипирован по последнему слову техники, чтобы создавать глобальные IT-проекты. Подробности на сайте Института iSpring
    Бакалавриат «Программирование» в Институте iSpring г. Йошкар-Ола

    Приглашаем мотивированных ребят в Институт iSpring на специальность «Программная инженерия». Система подготовки программистов iSpring теперь доступна в формате бакалавриата.

    ispring.institute
  • Библиотека джависта

    #вопросы_с_собеседований Как изменить стандартное поведение сериализации/десериализации? • Реализовать интерфейс java.io.Externalizable, который позволяет применение пользовательской логики сериализации. Способ сериализации и десериализации описывается в методах writeExternal() и readExternal(). Во время десериализации вызывается конструктор без параметров, а потом уже на созданном объекте вызывается метод readExternal. • Если у сериализуемого объекта реализован один из следующих методов, то механизм сериализации будет использовать его, а не метод по умолчанию : ○ writeObject() - запись объекта в поток; ○ readObject() - чтение объекта из потока; ○ writeReplace() - позволяет заменить себя экземпляром другого класса перед записью; ○ readResolve() - позволяет заменить на себя другой объект после чтения.
  • Библиотека джависта

    Java-разработчики ЦВТ создают сервисы для наших ключевых клиентов: самой дорогой компании Рунета, крупнейшего частного банка в России и онлайн-банка в мире. Приглашаем тебя вместе с нами создавать продукты с миллионами пользователей и петабайтами данных. Пиши @KhisamovaS, что ты от канала Библиотека джависта и стань частью одной из продуктовых команд.
  • Библиотека джависта

    #вопросы_с_собеседований Опишите процесс сериализации/десериализации с использованием Serializable. При использовании Serializable применяется алгоритм сериализации, который с помощью рефлексии (Reflection API) выполняет: • запись в поток метаданных о классе, ассоциированном с объектом (имя класса, идентификатор SerialVersionUID, идентификаторы полей класса); • рекурсивную запись в поток описания суперклассов до класса java.lang.Object (не включительно); • запись примитивных значений полей сериализуемого экземпляра, начиная с полей самого верхнего суперкласса; • рекурсивную запись объектов, которые являются полями сериализуемого объекта. При этом ранее сериализованные объекты повторно не сериализуются, что позволяет алгоритму корректно работать с циклическими ссылками. Для выполнения десериализации под объект выделяется память, после чего его поля заполняются значениями из потока. Конструктор объекта при этом не вызывается. Однако при десериализации будет вызван конструктор без параметров родительского несериализуемого класса, а его отсутствие повлечёт ошибку десериализации.
  • Реклама

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

    #вопросы_с_собеседований Что такое «сериализация»? Сериализация (Serialization) - процесс преобразования структуры данных в линейную последовательность байтов для дальнейшей передачи или сохранения. Сериализованные объекты можно затем восстановить (десериализовать). В Java, согласно спецификации Java Object Serialization существует два стандартных способа сериализации: стандартная сериализация, через использование интерфейса java.io.Serializable и «расширенная» сериализация - java.io.Externalizable. Сериализация позволяет в определенных пределах изменять класс. Вот наиболее важные изменения, с которыми спецификация Java Object Serialization может справляться автоматически: • добавление в класс новых полей; • изменение полей из статических в нестатические; • изменение полей из транзитных в нетранзитные. Обратные изменения (из нестатических полей в статические и из нетранзитных в транзитные) или удаление полей требуют определенной дополнительной обработки в зависимости от того, какая степень обратной совместимости необходима.
  • Библиотека джависта

    МТС создали новый канал, где доказывают, что продают не только симки и смартфоны, а ищут вполне реальных спецов в IT, которые будут писать на Golang • Swift • Kotlin • Java • Python • C# • C++. Зачем? Чтобы продолжать создавать продукты, платформы и сервисы для людей и бизнеса с помощью 20+ петабайт данных. Еще и работают в разных направлениях: от Big Data, AI и Cloud до онлайн-кинотеатра и киберспорта. Да, ребята в МТС тоже развивают экосистему цифровых сервисов.
  • Библиотека джависта

    Java-разработчики, новость для вас: с 5 по 20 августа на платформе All Cups пройдёт онлайн-чемпионат IT_One Cup.Java, организованный совместно Сколково и IT_ONE. Вы сможете проверить свои силы в интересных задачах и выиграть денежные призы — до 250 тысяч рублей. К участию приглашаем разработчиков уровня Middle и Senior. 👉 Регистрируйтесь до 10 августа: https://vk.cc/cfb7Yg 🔹Участников ждёт два этапа — квалификационный раунд и финал. Задача — реализовать сервис, который соответствует определённому API и способен пройти все проверки тестирующей системы. 🔹Денежные призы получат первые пять мест, топ-20 участникам подарим мерч, а самых талантливых ребят пригласим на работу в компанию IT_ONE.