Получи случайную криптовалюту за регистрацию!

Java Interview Tasks

Логотип телеграм канала @java_interview_tasks — Java Interview Tasks J
Логотип телеграм канала @java_interview_tasks — Java Interview Tasks
Адрес канала: @java_interview_tasks
Категории: Блоги
Язык: Русский
Количество подписчиков: 2.70K
Описание канала:

Реальные вопросы и задачи с собеседований.
Оригинальный авторский контент.
Актуальный материал.
Уровень вопросов от junior до supersenior.
Автор канала - @alexzelentsov
По рекламе обращайтесь: @alexzelentsov , @Vatrusha_ksu

Рейтинги и Отзывы

3.67

3 отзыва

Оценить канал java_interview_tasks и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

0

3 звезд

2

2 звезд

0

1 звезд

0


Последние сообщения 7

2022-02-03 10:53:47
Что напечатает код ?
Anonymous Quiz
8%
1
43%
2
33%
3
4%
Что-то ещё
11%
Узнать результаты
967 voters3.1K viewsAlexander Zelentsov, 07:53
Открыть/Комментировать
2022-02-03 10:52:50
Что напечатает код?
3.0K viewsAlexander Zelentsov, edited  07:52
Открыть/Комментировать
2022-02-01 13:55:36 Разъяснение к вопросу про int[] и ArrayList:

Пустой массив весит 16 байт , учитывая выравнивание на 8
(про подсчет байтов для конкретного класса был вопрос с более детальным объяснением - https://t.me/java_interview_tasks/56)

[I object internals:
OFF SZ TYPE DESCRIPTION
0 8 (object header: mark)
8 4 (object header: class)
12 4 (array length)
12 4 (alignment/padding gap)
16 0 int [I.
Instance size: 16 bytes

Массив с 10-ю элементами весит 56 (16 + 10 * 4 (4 - размер int в массиве))
int[]:
[I@2328c243d object externals:
SIZE TYPE VALUE
56. [I [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Total size: 56


ArrayList из 10-ти элементов выглядит по памяти как показано ниже:
ArrayList:
java.util.ArrayList@281e3708d object externals:
SIZE TYPE PATH VALUE
24 java.util.ArrayList (object)
56 [LObject; .elementData [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
16 Integer .elementData[0] 0
16 Integer .elementData[1] 1
16 Integer .elementData[2] 2
16 Integer .elementData[3] 3
16 Integer .elementData[4] 4
16 Integer .elementData[5] 5
16 Integer .elementData[6] 6
16 Integer .elementData[7] 7
16 Integer .elementData[8] 8
16 Integer .elementData[9] 9

Total size: 240

Получается 240 байт против 56 -> разница чуть больше чем в 4 раза между массивом и списком

Разница большая из-за того, что в листе элементы не примитивы, как в массиве, а объекты
Есть библиотеки, которые позволяют хранить примитивы, их довольно много:
например trove4j или fastutil

Для сравнения it.unimi.dsi.fastutil.ints.IntArrayList с 10-ю элементами:

it.unimi.dsi.fastutil.ints.IntArrayList@17695df3d object externals:

ADDRESS SIZE TYPE PATH VALUE
6233247b0 24 IntArrayList (object)
623357278 56 [I .a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Total size: 80

Про сравнение производительности можно почитать здесь - https://www.baeldung.com/java-list-primitive-performance

Вопрос к читателям:
Благодаря чему достигается прирост производительности в коллекциях с примитивами, кроме экономии памяти?
3.1K viewsAlexander Zelentsov, 10:55
Открыть/Комментировать
2022-01-31 15:09:47 ArrayList имеется ввиду в вопросе
2.7K viewsAlexander Zelentsov, 12:09
Открыть/Комментировать
2022-01-31 14:37:10
Что больше занимает места List или int[] с 10 элементами каждый?
# openjdk-17.0.1
# Running 64-bit HotSpot VM. # Using compressed oop with 3-bit shift. # Using compressed klass with 3-bit shift. # Objects are 8bytes aligned.
Anonymous Quiz
17%
List в ~2 раза больше места займет чем int[]
23%
List в ~1.5 раза больше места займет чем int[]
13%
List в ~4 раза больше места займет чем int[]
3%
List в ~10 раз больше места займет чем int[]
2%
List в ~20 раз больше места займет чем int[]
7%
int[] в ~1,5 раза больше места займет чем List
29%
узнать ответ
6%
я не считаю место, если что увеличиваю xmx в два раза
752 voters2.7K viewsAlexander Zelentsov, 11:37
Открыть/Комментировать
2022-01-29 12:01:17 Ответ к последнему вопросу про спринг контроллер (https://t.me/java_interview_tasks/101):
1. Надо сделать поле starterService final. Аннотация @RequiredArgsConstructor добавляет конструктор со всеми final полями, поэтому при создании бина поле starterService не проинициализируется.
2. Не хватает аннотации @PathVariable. Иначе будет всегда collector = null и NPE в collector.toString()

Также был вопрос про @Autowired над полем и над конструктором: https://t.me/java_interview_tasks/62
2.8K viewsAlexander Zelentsov, edited  09:01
Открыть/Комментировать