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

Java

15122 @javazavr

Главный канал по Java.

  • Java

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

    Оцените количество памяти на хранение одного примитива типа byte в ArrayList? Пишите в комментариях ваш вариант. Ответ будет у нас в канале. #вопросы_с_собеседований
  • Java

    ⚡️ Отус приглашает 14 августа, в 19:00 по мск, на открытый вебинар вебинар “Применимость Kotlin в различных направлениях разработки: Multimedia, ML, 3D/VR, Frontend, IoT/Robotics, Blockchain” онлайн-курса «Kotlin Backend Developer. Professional»! ✅ На вебинаре мы рассмотрим, как экосистема Kotlin может быть использована для создания программных продуктов в разных направлениях IT. Среди них: разработка фронтенда, работа с мультимедиа, машинное обучение, программирование роботов и создание 3D приложений. ❗️Вебинар будет интересен всем, кто заинтересован в изучении Kotlin или хочет узнать больше об этой экосистеме. Если вы уже являетесь разработчиком на Kotlin, то сможете узнать новые инструменты и технологии для решения задач в других областях. ➡️ Записаться на вебинар: https://otus.pw/uPxB/ Нативная интеграция. Информация о продукте www.otus.ru
  • Реклама

  • Java

    Ответ на "Оцените количество памяти на хранение одного примитива типа 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 байта. #вопросы_с_собеседований
  • Java

    Оцените количество памяти на хранение одного примитива типа byte в LinkedList? Пишите в комментариях ваш вариант. Ответ будет у нас в канале. #вопросы_с_собеседований
  • Java

    ⚡️ Отус приглашает 31 июля в 19:00 мск на бесплатный вебинар «Разработка монолитного приложения со Spring» онлайн-курса «Kotlin Backend Developer. Professional»! — На занятии мы познакомимся со фреймворком Spring и его принципом работы. — Рассмотрим особенности разработки Spring приложения на языке Kotlin. — Разработаем монолитное приложение и напишем пару интеграционных тестов. — Упакуем наше приложение в Docker, как готовое решение. ✅ В результате вебинара вы: — узнаем преимущества и недостатки монолитной архитектуры, фреймворка Spring, особенностей разработки со Spring в Kotlin; — попрактикуемся в разработке работающего монолитного приложения и разместим его в Docker-контейнере. ➡️ Запись на вебинар: https://otus.pw/Me5m/ Нативная интеграция. Информация о продукте www.otus.ru
  • Java

    👉Библиотека Java для собеса — новый канал с вопросами с собеседований от «Библиотеки программиста» У нас в канале: 🔸вопросы, которые задают эйчары 🔸ответы на них 🔸и ничего лишнего! Бегом подписываться🏃‍♂️
  • Java

    Java Работа - канал с вакансиями по Java. Многие сейчас хотят стать программистами Если вы хотите найти работу, то подписывайтесь на наш канал. Вы найдете вакансии по Java с прямым контактам HR менеджера в телеге. Ищи свою первую работу у нас: @javaoffers
  • Java

    Ответ на "Как происходит удаление элементов из ArrayList? Как меняется в этом случае размер ArrayList?" При удалении произвольного элемента из списка, все элементы, находящиеся «правее» смещаются на одну ячейку влево и реальный размер массива (его емкость, capacity) не изменяется никак. Механизм автоматического «расширения» массива существует, а вот автоматического «сжатия» нет, можно только явно выполнить «сжатие» командой trimToSize(). #вопросы_с_собеседований
  • Java

    Как происходит удаление элементов из ArrayList? Как меняется в этом случае размер ArrayList? Пишите в комментариях ваш вариант. Ответ будет у нас в канале. #вопросы_с_собеседований
  • Java

    Хотите усовершенствовать свои навыки Java с помощью Groovy? Начните с открытого урока "Введение в функциональное программирование в Groovy" от OTUS. Вебинар пройдёт 24 июля в 20:00 и проведет его преподаватель Андрей Поляков, старший разработчик в Unlimint. Урок приурочен к старту онлайн-курса "Groovy Developer" 🔥На уроке вы: - познакомитесь с понятием функциональное программирование; - узнаете в чем отличие функционального программирования от ООП; - познакомитесь с Closures, контекстом исполнения, областями видимости; - познакомитесь с использованием Closures как функций. Кому будет полезен этот урок? Разработчикам, QA, DevOps, которые хотят более глубоко понять, как работают инструменты тестирования и CI/CD jenkins. После вебинара полный курс можно приобрести в рассрочку. ⚡️Для участия зарегистрируйтесь: https://otus.pw/G14y/ Реклама. Информация о рекламодателе на сайте www.otus.ru.
  • Java

    Ответ на "Какое худшее время работы метода contains() для элемента, который есть в LinkedList?" O(N). Время поиска элемента линейно пропорционально количеству элементов в списке. #вопросы_с_собеседований
  • Java

    Какое худшее время работы метода contains() для элемента, который есть в LinkedList? Пишите в комментариях ваш вариант. Ответ будет у нас в канале. #вопросы_с_собеседований
  • Java

    👨‍💻 Как создавать гибкие бэкенд-приложений с помощью Groovy? Ответьте на 18 вопросов, чтобы проверить достаточно ли ваших навыков, чтобы работать с Groovy на практике и попасть на курс — «Groovy Developer» от OTUS. На полном курсе вы научитесь применять Groovy-скрипты, использовать статическую и динамическую типизацию кода, а также использовать средства языка для работы с БД. 👉 Пройти тест — https://otus.pw/MzUW/ Реклама. Информация о рекламодателе на сайте www.otus.ru.
  • Java

    Ответ на "Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй?" ArrayList это список, реализованный на основе массива, а LinkedList — это классический двусвязный список, основанный на объектах с ссылками между ними. ArrayList: • доступ к произвольному элементу по индексу за константное время O(1); • доступ к элементам по значению за линейное время O(N); • вставка в конец в среднем производится за константное время O(1); • удаление произвольного элемента из списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку влево (реальный размер массива (capacity) не изменяется); • вставка элемента в произвольное место списка занимает значительное время т.к. при этом все элементы, находящиеся «правее» смещаются на одну ячейку вправо; • минимум накладных расходов при хранении. LinkedList: • на получение элемента по индексу или значению потребуется линейное время O(N); • на добавление и удаление в начало или конец списка потребуется константное O(1); • вставка или удаление в/из произвольного место константное O(1); • требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся еще указатели на следующий и предыдущий элементы списка. В целом, LinkedList в абсолютных величинах проигрывает ArrayList и по потребляемой памяти, и по скорости выполнения операций. LinkedList предпочтительно применять, когда нужны частые операции вставки/удаления или в случаях, когда необходимо гарантированное время добавления элемента в список. #вопросы_с_собеседований
  • Реклама

  • Java

    Чем отличается ArrayList от LinkedList? В каких случаях лучше использовать первый, а в каких второй? Пишите в комментариях ваш вариант. Ответ будет у нас в канале. #вопросы_с_собеседований
  • Java

    ❓Как создавать гибкие тестовые планы для JMeter с использованием Groovy DSL? Ответ узнаете 11 июля в 20:00 на открытом уроке OTUS. Вебинар приурочен к старту онлайн-курса «Groovy Developer» и проведет его преподаватель Андрей Поляков, старший разработчик в Unlimint. 🔥На уроке мы рассмотрим: — Что такое DSL и как он применяется при создании тестовых планов. — Основные компоненты тестового плана JMeter. — Как формировать тестовый план с помощью Groovy DSL. После вебинара полный курс можно приобрести в рассрочку. ⚡️Для участия зарегистрируйтесь: https://otus.pw/wHnm/ Реклама. Информация о рекламодателе на сайте www.otus.ru.
  • Java

    Ответ на "Зачем добавили ArrayList, если уже был Vector?" • Методы класса Vector синхронизированы, а ArrayList - нет; • По умолчанию, Vector удваивает свой размер, когда заканчивается выделенная под элементы память. ArrayList же увеличивает свой размер только на половину. Vector это устаревший класс и его использование не рекомендовано. #вопросы_с_собеседований