Специализация
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 в телеграм
Расскажи про Capture List.
Capture List в Swift используется для управления поведением замыканий, определяя, как именно они захватывают внешние переменные. Это помогает избежать циклических ссылок и утечек памяти.
Что такое коллекция с ограничением размера (capped collection) в MongoDB и когда ее следует использовать?
Коллекция с ограничением размера в MongoDB — это коллекция с фиксированным размером. Когда размер коллекции достигает заданного лимита, она начинает перезаписывать старые документы новыми, как кольцевой буфер. Это подходит для ситуаций, где важны только последние данные, например, в логировании или кэшировании.
Как устроено хранение массивов и срезов в памяти? Что такое capacity?
Массив — это непрерывный блок памяти фиксированного размера [N]T. Срез ([]T) представлен тройкой: указатель на начало массива, длина (len) и ёмкость (cap) — максимальное число элементов до перевыделения. capacity показывает, сколько элементов можно поместить срезу без выделения нового массива при append.
Что такое List<T> и как реализованы его Count и Capacity?
List<T> — это обёртка над массивом T[], которая автоматически расширяется по мере добавления элементов. Поле Count хранит число фактически добавленных элементов, а Capacity — длину внутреннего массива. При достижении Count == Capacity при добавлении нового элемента создаётся новый массив с увеличенной Capacity (обычно в полтора раза), в который копируются старые элементы.
Зачем нужен модификатор @escaping для замыканий?
Если замыкание сохраняется вне тела функции (например, присваивается свойству или ставится в очередь), то оно «убегает» из области и выполняется позже — такое замыкание помечают @escaping. Это даёт понять компилятору, что нужно захватить переменные должным образом и управлять временем жизни замыкания.
Как избежать утечек памяти при работе с escaping-замыканиями?
В чём разница между escaping и non-escaping замыканиями?
Как работает увеличение capacity слайса при добавлении элементов (правило удвоения до 1024 элементов)?
Какие принципы соответствия БД, кроме ACID, существуют (например, CAP)?
CAP-теорема: что означают согласованность, доступность, устойчивость к разделению?
Рейтинг:
2
Сложность:
6
В escaping-замыканиях захват self по умолчанию сильный, что может привести к retain-циклу. Чтобы избежать, используют [weak self] или [unowned self] в capture-list, проверяют self в блоке и корректно обрабатывают его отсутствие.
Рейтинг:
2
Сложность:
7
Non-escaping замыкания выполняются сразу внутри функции. Escaping замыкания сохраняются и вызываются позже, например, после завершения асинхронной операции. Escaping требует явной аннотации @escaping.
Рейтинг:
1
Сложность:
7
Когда в слайс добавляется элемент и текущей capacity недостаточно, Go выделяет новый массив с большей емкостью. До capacity 1024 размер удваивается, после этого рост становится линейным (примерно +25%). Это позволяет эффективно управлять памятью и снижать количество аллокаций.
Рейтинг:
2
Сложность:
5
Кроме ACID, в распределенных системах используется теорема CAP, которая утверждает, что база данных может гарантировать только два из трех свойств: Consistency (согласованность), Availability (доступность) или Partition Tolerance (устойчивость к разделению). Также существует модель BASE, которая жертвует строгой согласованностью ради высокой доступности и производительности.
Рейтинг:
1
Сложность:
7
CAP описывает три свойства:
Consistency - все узлы видят одинаковые данные
Availability - система всегда отвечает
Partition tolerance - работает при разрывах связи
Система может гарантировать только 2 из 3 свойств.
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
6