Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
На какие категории в .NET делятся типы данных и в чём ключевые отличия между value type и reference type?
В .NET типы делятся на значимые (value type) и ссылочные (reference type). Значимые хранятся в стеке или внутри объекта-родителя и копируются полностью при присвоении. Ссылочные хранятся в куче, при присвоении копируется указатель, а не данные. Это влияет на производительность, управление памятью и поведение при передаче в методы.
Как работает ARC (Automatic Reference Counting) в Swift?
ARC отслеживает количество ссылок на каждый экземпляр класса и автоматически освобождает память, когда счётчик ссылок становится равным нулю. При присвоении ссылки счётчик увеличивается, при выходе ссылки из области видимости — уменьшается. Это позволяет разработчику не заботиться явно об освобождении памяти, пока не возникают циклы сильных ссылок.
Может ли reference type оказаться на стеке?
Обычно — нет. Reference types всегда размещаются в куче, а в стеке лежит только ссылка на них.
В чём разница между типами значений (value type) и ссылочными типами (reference type)?
Value types копируются при передаче или присваивании, а reference types передаются по ссылке. В Swift структуры (struct) и перечисления (enum) — это value types, а классы (class) — reference types.
Что быстрее: value или reference типы? Почему?
Value типы работают быстрее, потому что они хранятся в стеке, доступ к которому оптимизирован и требует меньше операций. Reference типы хранятся в куче, что требует дополнительных шагов для управления памятью (например, подсчёт ссылок), что замедляет работу.
Что такое table of content у reference типа?
Что такое подсчет ссылок (reference counting) в механизме сборки мусора?
Как работает reference counting в Addressables при множественных загрузках и Release?
Почему массивы в Swift выглядят как value-типы, но внутри используют reference-семантику?
Где в памяти хранятся value types и reference types?
Рейтинг:
2
Сложность:
5
Table of Content (TOC) — это структура данных, которая хранит метаинформацию о reference типе, включая таблицу виртуальных методов (vtable) для диспетчеризации методов. Она используется для динамического определения поведения объекта во время выполнения.
Рейтинг:
3
Сложность:
6
Подсчет ссылок — это простой механизм сборки мусора, при котором каждый объект хранит счетчик количества ссылок на себя. Когда создается новая ссылка на объект, счетчик увеличивается. Когда ссылка удаляется — счетчик уменьшается. Когда счетчик достигает нуля, память объекта немедленно освобождается. Этот механизм работает быстро и предсказуемо, но не может обрабатывать циклические ссылки, когда два объекта ссылаются друг на друга.
Рейтинг:
5
Сложность:
7
Addressables ведут счётчик ссылок на каждый загруженный ассет. Каждый вызов LoadAssetAsync увеличивает счётчик, а каждый Addressables.Release — уменьшает. Пока счётчик больше нуля, бандл и его ресурсы остаются в памяти. Когда счётчик падает до нуля, Addressables выгружают ассет и, если нужно, весь bundle. Это позволяет безопасно загружать один и тот же ассет из разных систем, не рискуя освободить его преждевременно.
Рейтинг:
5
Сложность:
8
Массивы в Swift являются value-типами по поведению, но внутри используют ссылочное хранилище. Это сделано ради производительности и эффективного использования памяти. Благодаря copy-on-write несколько массивов могут делить одно хранилище без риска побочных эффектов. Для разработчика массив всегда ведёт себя как value-тип.
Рейтинг:
5
Сложность:
6
Value types в Swift обычно хранятся там, где объявлены: на стеке, внутри других структур или объектов. Reference types хранятся в heap, а переменные содержат только ссылку на них. Это различие влияет на производительность, копирование и поведение при передаче значений. Swift старается оптимизировать размещение, но логическая модель остаётся именно такой.
Рейтинг:
2
Сложность:
5
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
7
Рейтинг:
3
Сложность:
6