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

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

20804 @javaproglib

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

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

    #вопросы_с_собеседований Будет ли работать HashMap, если все добавляемые ключи будут иметь одинаковый hashCode()? Да, будет, но в этом случае HashMap вырождается в связный список и теряет свои преимущества.
  • Библиотека джависта

    Умение создавать отказоустойчивые и масштабируемые архитектуры — востребованный крупными компаниями навык. Он пригодится в работе разработчикам, тимлидам и архитекторам. Одна из техник масштабирования баз данных — репликация. 🗓 8 июня в 20:00 пройдет открытый урок «Преимущества и недостатки различных видов репликации» в OTUS. Что вас ждет на занятии? - Разберем различные виды репликаций, обсудим смысл и назначение репликации - Сравним особенности репликации в MySQL и PostgreSQL. - Познакомимся с групповой репликацией в MySQL. 👉🏻 Пройдите вступительное тестирование, чтобы записаться на урок – https://otus.pw/Ba28h/ Вебинар проведет эксперт по Java Enterprise разработке Владислав Родин. Продолжить общение со специалистами по высокой нагрузке вы сможете на онлайн-курсе «Highload Architect» от OTUS.
  • Библиотека джависта

    Метод compareTo() В Java метод compareTo() получает значение 0, если аргумент является строкой лексически равной данной строке; значение меньше 0, если аргумент является строкой лексически большей, чем сравниваемая строка; и значение больше 0, если аргумент является строкой лексически меньшей этой строки.
  • Реклама

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

    #вопросы_с_собеседований В WeakHashMap используются WeakReferences. А почему бы не создать SoftHashMap на SoftReferences? SoftHashMap представлена в сторонних библиотеках, например, в Apache Commons.
  • Библиотека джависта

    ⁉️Хочешь открыть новые подходы к разработке на Java ? 🔥 Приходи на открытый урок OTUS «Как сбросить оковы NullPointerException» 2 июня в 20:00. Мы посмотрим на Optional в Java, насколько он нам помогает творить, а также построим безумный пример, который поможет почувствовать силу данного шаблона. 🗣Занятие проведет Виталий Куценко, Java Lead в RND подразделении Ростсельмаша. После вебинара вас ждет еще больше инструментов бэкенд-разработки на онлайн-курсе «Java Developer. Professional». 📌Пройдите вступительный тест, чтобы зарегистрироваться на занятие: https://otus.pw/saje/
  • Библиотека джависта

    #вопросы_с_собеседований В чем отличие между поверхностным и глубоким клонированием? Поверхностное копирование копирует настолько малую часть информации об объекте, насколько это возможно. По умолчанию, клонирование в Java является поверхностным, т.е. класс Object не знает о структуре класса, которого он копирует. Клонирование такого типа осуществляется JVM по следующим правилам: ✔️ Если класс имеет только члены примитивных типов, то будет создана совершенно новая копия объекта и возвращена ссылка на этот объект. ✔️ Если класс помимо членов примитивных типов содержит члены ссылочных типов, то тогда копируются ссылки на объекты этих классов. Следовательно, оба объекта будут иметь одинаковые ссылки. Глубокое копирование дублирует абсолютно всю информацию объекта: ✔️ Нет необходимости копировать отдельно примитивные данные; ✔️ Все члены ссылочного типа в оригинальном классе должны поддерживать клонирование. Для каждого такого члена при переопределении метода clone() должен вызываться super.clone(); ✔️ Если какой-либо член класса не поддерживает клонирование, то в методе клонирования необходимо создать новый экземпляр этого класса и скопировать каждый его член со всеми атрибутами в новый объект класса, по одному.
  • Библиотека джависта

    JPoint 2022 — Java-конференция от JUG Ru Group.  Она пройдет 13–15 июня, на 80% online, а 24 июня в Санкт-Петербурге будет offline-день.  Вас ждут 27 докладов от Java Champions и разработчиков из Huawei, МТС, Tinkoff, Одноклассников и других компаний. Поговорим об инструментах, внутренностях VM, базах данных, архитектуре, процессах, а также обсудим работу с Kotlin и Spring.  Среди докладов: ✔ «Becoming a More Effective Developer: Tips and Experiences»; ✔ «Thread Wars: проект Loom наносит ответный удар»; ✔ «Непрерывное профилирование в облаке с помощью eBPF»; ✔ «Индексы в PostgreSQL. Как понять, что создавать». Подробности и полная программа — на сайте конференции. При покупке билета на конференцию из категории «для частных лиц» используйте промокод: javaproglib2022JRGpc
  • Библиотека джависта

    👷 Кто такой архитектор решений и как им стать: дорожная карта Какими навыками должен обладать Solution Architect и как их развить? Постарались собрать все ответы в нашей дорожной карте. https://proglib.io/sh/BcXkEOfSoi
  • Библиотека джависта

    #вопросы_с_собеседований В реализации класса ArrayList есть следующие поля: Object[] elementData, int size. Объясните, зачем хранить отдельно size, если всегда можно взять elementData.length? Размер массива elementData представляет собой вместимость (capacity) ArrayList, которая всегда больше переменной size - реального количества хранимых элементов. При необходимости вместимость автоматически возрастает.
  • Библиотека джависта

    Java-разработчик Insentry – разработчик решений в области интеллектуальных систем видеонаблюдения и видеоаналитики – приглашает в команду Java-разработчиков.   Мы предлагаем стандартный мотивационный набор: • Гибридный формат работы (оффлайн/удаленно), офис в Москва Сити • Конкурентная зарплата, ДМС • Большие и интересные проекты для крупнейших заказчиков   Если вы разрабатываете на Java более 3 лет, обладаете уверенными знаниями SQL, ООП, узнайте подробности о нас и откликнитесь на вакансию __по ссылке__ или напишите @akoroleva13.   А, если вы, помимо вышесказанного, также владеете основными пакетами Spring Framework, React и смежными технологиями и/или имеете опыт использования Hibernate или других ORM-фреймворков, то мы призываем вас связаться с нами et='_blank' rel='noreferrer nofollow' href='https://insentry.io/career/java-developer?utm_source=tg&utm_medium=post&utm_campaign=javaproglib'>__так__ или @akoroleva13.  
  • Библиотека джависта

    #вопросы_с_собеседований Для ArrayList или для LinkedList операция добавления элемента в середину (list.add(list.size()/2, newElement)) медленнее? Для ArrayList: • проверка массива на вместимость. Если вместимости недостаточно, то увеличение размера массива и копирование всех элементов в новый массив (O(N)); • копирование всех элементов, расположенных правее от позиции вставки, на одну позицию вправо (O(N)); • вставка элемента (O(1)). Для LinkedList: • поиск позиции вставки (O(N)); • вставка элемента (O(1)). В худшем случае вставка в середину списка эффективнее для LinkedList. В остальных - скорее всего, для ArrayList, поскольку копирование элементов осуществляется за счет вызова быстрого системного метода System.arraycopy().
  • Библиотека джависта

    #вопросы_с_собеседований Что позволяет сделать PriorityQueue? Особенностью PriorityQueue является возможность управления порядком элементов. По-умолчанию, элементы сортируются с использованием «natural ordering», но это поведение может быть переопределено при помощи объекта Comparator, который задаётся при создании очереди. Данная коллекция не поддерживает null в качестве элементов. Используя PriorityQueue, можно, например, реализовать алгоритм Дейкстры для поиска кратчайшего пути от одной вершины графа к другой. Либо для хранения объектов согласно определённого свойства.
  • Библиотека джависта

    #вопросы_с_собеседований Оцените количество памяти на хранение одного примитива типа byte в ArrayList? ArrayList основан на массиве, для примитивных типов данных осуществляется автоматическая упаковка значения, поэтому 16 байт тратится на хранение упакованного объекта и 4 байта (8 для x64) - на хранение ссылки на этот объект в самой структуре данных. Таким образом, в x32 JVM 4 байта используются на хранение одного элемента и 16 байт - на хранение упакованного объекта типа Byte. Для x64 - 8 байт и 24 байта соответственно.
  • Библиотека джависта

    Привет! Сбер начинает серию коротких вебинаров «5 минут на запуск»! На встречах «без лишней воды» расскажут, как быстро начать работу в личном кабинете платформы SberCloud Advanced с запуска виртуального сервера или деплоя базы данных. Выбирайте тему любого из 4-х вебинаров и регистрируйтесь по ссылке. 1) Как запустить виртуальную машину за 5 минут 2) «Хостинг сайта в облаке: проще, чем кажется» 3) «5 минут на всё: скоростной деплой базы данных» 4) «Как быстро настроить облачное хранилище» До встречи на интенсиве!
  • Библиотека джависта

    #вопросы_с_собеседований Назовите основные характеристики шаблонов проектирования. Имя - все шаблоны имеют уникальное имя, служащее для их идентификации; Назначение данного шаблона; Задача - задача, которую шаблон позволяет решить; Способ решения - способ, предлагаемый в шаблоне для решения задачи в том контексте, где этот шаблон был найден; Участники - сущности, принимающие участие в решении задачи; Следствия - последствия от использования шаблона как результат действий, выполняемых в шаблоне; Реализация - возможный вариант реализации шаблона.
  • Реклама

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

    🛠 25 полезных малоизвестных интернет-ресурсов для фронтендера и бэкендера Небольшой обзор интересных интернет-ресурсов в помощь специалистам цифровой индустрии: каталоги дорожных карт и шпаргалок, тесты веб-приложений, бесплатные макеты и иллюстрации, шаблоны резюме и многое другое. https://proglib.io/sh/v3GP6WwUCe
  • Библиотека джависта

    🔥 Станьте Java-разработчиком с нуля до Middle+ за 15 месяцев в OTUS на онлайн-курсе «Специализация Java-разработчик»! 📚Онлайн-курс состоит из трех ступеней. ✔️ На первой ступени вы поэтапно освоите принципы программирования, синтаксис Java, алгоритмы и принципы архитектуры приложений. ✔️ На второй ступени вы разработаете свое серверное приложение на Java, а на третьей — освоите фреймворк Spring. ⚡️ Знания вы закрепите стажировкой в компании-партнере, практикой решения реальных задач и 3 проектными работами. На всем пути вас будет сопровождать персональный ментор. Не упустите возможность протестировать обучение в OTUS на открытых вебинарах 1 и 22 июня. 📌 Регистрация на бесплатные вебинары: https://otus.pw/I6xV/
  • Библиотека джависта

    #вопросы_с_собеседований Оцените количество памяти на хранение одного примитива типа byte в LinkedList? Каждый элемент LinkedList хранит ссылку на предыдущий элемент, следующий элемент и ссылку на данные.
     static class Node<E> {
            E item;
            Node<E> next;
            Node<E> prev;
    //...
    }
    
    
    Для 32-битных систем каждая ссылка занимает 32 бита (4 байта). Сам объект (заголовок) вложенного класса Node занимает 8 байт. 4 + 4 + 4 + 8 = 20 байт, а т.к. размер каждого объекта в Java кратен 8, соответственно получаем 24 байта. Примитив типа byte занимает 1 байт памяти, но в JCF примитивы упаковываются: объект типа Byte занимает в памяти 16 байт (8 байт на заголовок объекта, 1 байт на поле типа byte и 7 байт для кратности 8). Также напомню, что значения от -128 до 127 кэшируются и для них новые объекты каждый раз не создаются. Таким образом, в x32 JVM 24 байта тратятся на хранение одного элемента в списке и 16 байт - на хранение упакованного объекта типа Byte. Итого 40 байт. Для 64-битной JVM каждая ссылка занимает 64 бита (8 байт), размер заголовка каждого объекта составляет 16 байт (два машинных слова). Вычисления аналогичны: 8 + 8 + 8 + 16 = 40байт и 24 байта. Итого 64 байта.