Специализация
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 в телеграм
Что такое lvalue и rvalue в Golang?
lvalue — это адрес в памяти, представляющий переменную, и он может быть изменён. Он может находиться как слева, так и справа от оператора присваивания.
rvalue — это значение данных, которое не может быть изменено, и оно всегда находится справа от оператора присваивания.
Что такое "мусорное значение" (garbage value) в C?
Мусорное значение – это случайное значение, хранящееся в неинициализированной переменной. Оно зависит от предыдущих данных в памяти.
Что такое zero value у слайса?
Zero value слайса — это nil-срез. Он равен nil, имеет len=0 и cap=0. Его можно безопасно итерировать (range) и в него можно append, что создаст новый рабочий срез.
В чём разница между zero value слайса и мапы?
Zero value слайса — это nil-срез, с которым можно append или range без panic. Zero value мапы — это nil-мапа, из которой можно читать (m[key] даёт нулевое значение), но нельзя записывать (m[key] = val вызывает panic).
На какие категории в .NET делятся типы данных и в чём ключевые отличия между value type и reference type?
В .NET типы делятся на значимые (value type) и ссылочные (reference type). Значимые хранятся в стеке или внутри объекта-родителя и копируются полностью при присвоении. Ссылочные хранятся в куче, при присвоении копируется указатель, а не данные. Это влияет на производительность, управление памятью и поведение при передаче в методы.
Как работает Dictionary<TKey, TValue>: как вычисляется bucket и как влияет коллизия на производительность?
Для чего переопределяют методы GetHashCode и Equals и как они используются в Dictionary<TKey, TValue>?
Всегда ли экземпляры value type хранятся в стеке и какие бывают исключения (boxing, поля в классе, статические переменные)?
Может ли value type оказаться в куче?
В чём разница между типами значений (value type) и ссылочными типами (reference type)?
Рейтинг:
2
Сложность:
5
Dictionary хранит элементы в массивах bucket’ов. Для ключа вычисляют хэш-код key.GetHashCode(), берут bucketIndex = hash % buckets.Length, и если в этом бакете уже есть запись, сравнивают ключи на равенство, переходя по связному списку (или дереву в новых версиях). При небольшой нагрузке lookup — O(1), но при многих коллизиях (одинаковых хэших) может деградировать до O(n) в худшем случае.
Рейтинг:
2
Сложность:
7
Equals определяет, считаются ли два объекта равными по содержанию, а GetHashCode возвращает целочисленный хеш-код, используемый для распределения в бакеты Dictionary. При вставке Dictionary вычисляет hash = key.GetHashCode(), находит бакет по hash % buckets.Length, а затем в цепочке вызывает Equals для обнаружения точного совпадения ключа. Некорректная реализация может привести к потере или дублированию элементов.
Рейтинг:
2
Сложность:
7
Нет, value type (struct) обычно хранятся в стеке, но могут находиться на куче, если являются полями класса, элементами массива в куче или при boxing (упаковке в object). Статические переменные value type хранятся в сегменте данных приложения. Boxing копирует значение в объект в куче.
Рейтинг:
2
Сложность:
6
Да, value type может оказаться в куче, если он захвачен замыканием или находится внутри reference type
Рейтинг:
2
Сложность:
7
Value types копируются при передаче или присваивании, а reference types передаются по ссылке. В Swift структуры (struct) и перечисления (enum) — это value types, а классы (class) — reference types.
Рейтинг:
3
Сложность:
6
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
4
Рейтинг:
2
Сложность:
4
Рейтинг:
2
Сложность:
5