Специализация
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 в телеграм
Как работает сборщик мусора (garbage collector) в JavaScript? Какие есть стратегии для управления памятью?
Сборщик мусора в JavaScript автоматически освобождает память, удаляя объекты, на которые больше нет ссылок. Основной механизм — это "сборка по достижению" (mark-and-sweep), где объекты помечаются как достижимые или нет. Оптимизация работы с памятью заключается в том, чтобы избегать удержания ненужных ссылок на объекты и помнить о замыканиях, которые могут сохранять данные в памяти дольше, чем требуется.
Что такое сборщик мусора?
Сборщик мусора (Garbage Collector, GC) — это механизм, который автоматически освобождает память, занятую неиспользуемыми объектами. В Go GC работает в фоне, что позволяет разработчикам сосредоточиться на логике программы, а не на ручном управлении памятью.
Что такое сборщик мусора (Garbage Collection) в C#?
Сборщик мусора в C# автоматически управляет памятью, освобождая память, занятую объектами, которые больше не используются. Это помогает избежать утечек памяти и улучшает управление ресурсами.
Как работает сборщик мусора в Python? Как он определяет, что объект можно удалить?
CPython использует подсчёт ссылок и циклический сборщик. Когда счётчик ссылок объекта падает до нуля, память освобождается. Cyclic GC по таймеру ищет группы объектов, недоступных из корневых ссылок, несмотря на циклические ссылки, и удаляет их.
Опишите поколения (generations) и условия срабатывания (сборщик мусора).
Сборщик мусора группирует объекты в три поколения: 0 (новые), 1 (промежуточные), 2 (долгоживущие). Сборка чаще всего происходит для Gen 0 (при нехватке памяти). Объекты, пережившие сборку, переходят в следующее поколение. Это оптимизирует производительность, фокусируясь на кратковременных объектах.
Зачем явно закрывать ресурсы (например, InputStream)? Почему сборщик мусора не делает это автоматически?
Соберёт ли сборщик мусора два объекта с циклической ссылкой при потере внешних ссылок?
Как работает сборщик мусора в Java?
Как работает сборщик мусора в Go и что такое stop-the-world пауза?
Можно ли отключить сборщик мусора, работающий на поколениях?
Рейтинг:
1
Сложность:
7
Ресурсы (файлы, соединения) требуют явного закрытия, чтобы освободить системные ресурсы (память, дескрипторы). Сборщик мусора не гарантирует своевременное удаление, так как работает с памятью JVM, а не с внешними ресурсами.
Рейтинг:
1
Сложность:
8
Да, сборщик мусора удалит такие объекты. Современные GC (например, G1) определяют недостижимость через достижимые корни (GC roots), а не через подсчёт ссылок.
Рейтинг:
2
Сложность:
8
Сборщик мусора (GC) автоматически освобождает память, удаляя объекты, которые больше не используются. Основные этапы:
Пометка: GC находит недостижимые объекты.
Очистка: Удаляет их и освобождает память.
Рейтинг:
4
Сложность:
7
Сборщик мусора в Go работает по схеме concurrent mark-and-sweep. Раньше при сборке выполнение программы останавливалось («stop the world»), но теперь паузы очень короткие и почти незаметные.
Рейтинг:
2
Сложность:
5
Да, сборщик мусора, работающий на поколениях, можно отключить с помощью функции gc.disable(). Однако это не рекомендуется в большинстве случаев, так как он отвечает за освобождение памяти от объектов с циклическими ссылками. При отключении сборщика такие объекты будут накапливаться в памяти, что может привести к ее исчерпанию. Подсчет ссылок при этом продолжит работать и освобождать память от объектов без циклических ссылок.
Рейтинг:
3
Сложность:
8
Рейтинг:
4
Сложность:
7
Рейтинг:
2
Сложность:
6
Рейтинг:
3
Сложность:
6
Рейтинг:
2
Сложность:
4