Адрес канала:
Категории:
Блоги
Язык: Русский
Количество подписчиков:
2.70K
Описание канала:
Реальные вопросы и задачи с собеседований.
Оригинальный авторский контент.
Актуальный материал.
Уровень вопросов от junior до supersenior.
Автор канала - @alexzelentsov
По рекламе обращайтесь: @alexzelentsov , @Vatrusha_ksu
Рейтинги и Отзывы
Оценить канал java_interview_tasks и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.
5 звезд
1
4 звезд
0
3 звезд
2
2 звезд
0
1 звезд
0
Последние сообщения 7
2022-02-03 10:53:47
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
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