Подборка объединяет вопросы, отмеченные на этапах интервью в Ozon. Здесь можно понять структуру технической проверки и заранее повторить связанные темы. В подборке чаще встречаются темы: database, backend, concurrency.
В каких случаях следует использовать Hash-индексы? Предназначены для индексации при точном поиске ключей Дают доступ за константное время O(1) Не подходят для диапазонных запросов и сортировки Наиболее эффективны при…
Порядок обработки WHERE с AND SQL: отбор строк в запросе WHERE учитывает все заданные условия оператор AND требует истинности каждого условия оптимизатор способен изменить последовательность проверок условия…
B-tree представляет собой самобалансирующееся упорядоченное дерево, рассчитанное на обработку больших объёмов данных на дисках и в СУБД В узле B-tree хранится несколько ключей и множество потомков (m-арное дерево),…
Semaphore и SemaphoreSlim синхронизация потоков в .NET Semaphore — системный объект ядра ОС для межпроцессной синхронизации SemaphoreSlim — облегчённый механизм, работающий внутри одного процесса Semaphore потребляет…
В чём разница между Read Committed и Repeatable Read? уровни изоляции в СУБД (ACID) Read Committed: транзакция получает только зафиксированные данные защищает от грязных чтений допускает неповторяющиеся чтения…
Всегда ли value type размещается в стеке? Исключения Value type обычно размещается в стеке Исключения: Boxing: value type преобразуется в объект и размещается в куче Поля ссылочных типов (классов): поля value type…
Контекст: управление памятью в C# В C# типы разделяются на значимые (value types) и ссылочные (reference types). Значимые типы размещаются в стеке (stack) либо непосредственно входят в состав объектов. Ссылочные типы…
Зачем закрывать тело HTTP-ответа в Go? Тело HTTP-ответа представляет собой поток данных (io.ReadCloser) Вызов Close освобождает сетевые ресурсы и дескрипторы Если не закрыть тело, возможны утечки памяти и зависшие…
Для чего нужны транзакции? база данных, целостность объединение нескольких операций в единое целое атомарность: либо выполняются все операции, либо ни одна изоляция: исключает конфликты между параллельными операциями…
Зачем нужны GetHashCode и Equals и какова их роль в Dictionary<TKey, TValue> Контекст: переопределение методов в .NET для хеширования объектов и определения их равенства GetHashCode формирует для объекта целочисленный…
Устройство List<T> и изменение вместимости массива List<T> в .NET представляет собой динамический массив — собственную оболочку над обычным массивом Элементы хранятся в массиве T[], который изначально имеет…
Как в Go выполнять HTTP-запросы асинхронно? тема: конкурентность, net/http, goroutines параллельный запуск запросов выполняется через goroutines каждый HTTP-запрос помещается в отдельную goroutine (go func()) для…