Бесплатная бета: 30 дней полного доступа, без карты.Зарегистрироваться бесплатно

Мы используем необходимые куки для работы сайта (вход и язык). Формы обратной связи и сообщения об ошибке дополнительно используют Google reCAPTCHA для защиты от спама. Она загружается только если вы согласитесь. Политика конфиденциальности

СПРАВОЧНИК

Справочник

Все термины из уроков, простыми словами. Ищи или просто пролистай.

A/B-тесты
способ сравнить два варианта страницы или функции, показав их разным группам пользователей, чтобы по цифрам понять, какой работает лучше.
Abseil flat_hash_map
хеш-таблица из библиотеки Abseil от Google, хранящая пары ключ-значение с быстрым поиском и экономным расходом памяти.
Algorithm (алгоритм)
пошаговый рецепт, который превращает то, что у тебя есть, в нужный ответ. Как кулинарный рецепт, только для данных.
API рейт-лимитеры
механизм, ограничивающий, сколько запросов клиент может послать к сервису за отрезок времени, чтобы никто не перегрузил систему.
Array.indexOf
метод массива в JavaScript, который перебирает элементы по очереди и возвращает позицию первого совпадения или -1, если элемента нет.
AVL-деревья
самобалансирующееся дерево поиска, которое после каждой вставки или удаления выравнивает свою высоту, чтобы поиск всегда оставался быстрым.
AVL-индексы
индекс в базе данных на основе AVL-дерева, который держит ключи отсортированными и позволяет быстро находить нужную запись.
B-деревья БД
дерево, где в каждом узле много ключей; базы данных строят на нём индексы, чтобы находить строки за малое число обращений к диску.
Backtracking (перебор с возвратом)
пробуешь вариант, и если он завёл в тупик, отступаешь на шаг и пробуешь другой - как поиск выхода из лабиринта.
BFS (поиск в ширину)
обход наружу кольцо за кольцом с помощью очереди, как круги на воде. Находит кратчайший путь, когда все шаги равны.
Big-O
быстрый способ сказать, насколько медленнее становится метод, когда входа больше. O(n) значит «вдвое больше данных - вдвое больше работы». O(n^2) - «вдвое больше данных - работы в четыре раза больше». O(log n) - «вдвое больше данных - всего один лишний шаг». Важна форма роста, а не секунды на часах.
Binary search (бинарный поиск)
поиск в отсортированном списке, где ты каждый раз режешь область поиска пополам, как в игре «больше / меньше».
Binary search tree (BST, двоичное дерево поиска)
дерево, которое держится по порядку (меньшее слева, большее справа), чтобы быстро находить нужное.
Bitmask (битовая маска)
использование битов вкл/выкл внутри одного числа как компактного ряда переключателей «да/нет».
Brute force (полный перебор)
очевидное решение, которое просто пробует все варианты подряд. Всегда работает, но часто медленное.
C qsort
стандартная функция сортировки в языке C: ты даёшь ей массив и правило сравнения, она расставляет элементы по порядку.
C++ make_heap
функция C++, которая переставляет элементы массива в структуру кучи, чтобы всегда быстро доставать наибольший из них.
Canary-деплой
выкатка новой версии программы сначала небольшой доле пользователей; если ошибок нет, её постепенно раскатывают на всех.
Cocktail sort
вариант пузырьковой сортировки, который проходит массив то слева направо, то справа налево, толкая крупные и мелкие элементы к их краям.
CPython dict
словарь в основной реализации Python (CPython): хранит пары ключ-значение и находит значение по ключу почти мгновенно за счёт хеширования.
Data structure (структура данных)
способ разложить вещи так, чтобы быстро до них добираться. Список покупок, телефонная книга и стопка тарелок раскладывают вещи каждый под свою задачу.
Deque (дек)
линия, в которую можно добавлять и из которой можно брать с обоих концов.
DFS (поиск в глубину)
идёшь одним путём как можно дальше, потом отступаешь и пробуешь другой, с помощью рекурсии или стека.
Dijkstra
алгоритм Дейкстры находит кратчайшие пути от одной точки до всех остальных в графе с неотрицательными весами рёбер.
DOM
представление веб-страницы в виде дерева объектов, с которым работает браузер и JavaScript, чтобы менять содержимое и вид страницы.
DOM-деревья
та самая древовидная структура страницы: каждый тег это узел с детьми, и по ней браузер понимает, что и где рисовать.
DP-решатели
программы, решающие задачу методом динамического программирования: разбивают её на мелкие подзадачи, считают каждую один раз и запоминают ответ.
Dynamic programming (динамическое программирование, DP)
решение большой задачи через маленькие перекрывающиеся кусочки: каждый считаешь один раз, записываешь ответ и переиспользуешь вместо повторной работы.
Edge case (краевой случай)
странный вход, на котором спотыкается небрежный код: совсем пусто, всего один элемент, все значения одинаковые или верного ответа нет.
git bisect
команда git, которая находит коммит с багом бинарным поиском по истории: переключается на коммит посередине, ты помечаешь «хорошо» или «плохо», и диапазон сокращается вдвое, пока не останется один.
git diff
команда git, показывающая построчно, что изменилось между двумя версиями файлов: что добавлено и что удалено.
git merge-base
команда git, которая находит последний общий коммит двух веток, от которого они начали расходиться.
Graph (граф)
точки, соединённые линиями, и линии могут образовывать петли. Дороги между городами, друзья в соцсети, зависимости задач - всё это графы.
Greedy (жадный)
хватать на каждом шаге вариант, который выглядит лучшим, и надеяться, что весь итог выйдет лучшим. Надёжно только когда можешь это доказать.
grep
утилита командной строки, которая ищет строки, совпадающие с заданным образцом, во всех переданных файлах.
gzip
программа сжатия файлов без потерь: делает файл меньше, находя и заменяя повторяющиеся куски данных.
Hash table / hash map (хеш-таблица)
поиск, который находит значение по ключу почти мгновенно, как словарь, где ты сразу открываешь нужное слово. В JS: `Map` и `Object`.
Heap / priority queue (куча / очередь с приоритетом)
стопка, которая всегда выдаёт следующим самый маленький (или самый большой) элемент, не сортируя всё. Хороша для списков «топ-5» и живых потоков данных.
heapq.heapify
функция Python, которая за один проход перестраивает обычный список в кучу, чтобы дальше быстро доставать наименьший элемент.
Held-Karp TSP
точный алгоритм для задачи коммивояжёра (найти кратчайший маршрут через все города и вернуться назад) методом динамического программирования.
ID фиксированной ширины
идентификатор одинаковой длины у всех записей (например, дополненный нулями), чтобы их удобно сортировать и сравнивать как строки.
In place (на месте)
менять исходные данные напрямую вместо создания копии, чтобы сэкономить память.
Introsort
гибридная сортировка: начинает как быстрая (quicksort), но если та уходит в плохой случай, переключается на пирамидальную, чтобы гарантировать скорость.
Invariant (инвариант)
то, что ты держишь истинным на каждом шаге цикла; именно поэтому цикл вообще работает.
IP-маршрутизация
выбор пути, по которому пакет данных пойдёт через сеть от отправителя к получателю, шаг за шагом через маршрутизаторы.
Java HashMap
структура из стандартной библиотеки Java, хранящая пары ключ-значение и находящая значение по ключу за счёт хеширования.
JavaScript Map
встроенная в JavaScript коллекция пар ключ-значение, где ключом может быть что угодно и значение достаётся по ключу быстро.
JavaScript Set
встроенная в JavaScript коллекция уникальных значений: одинаковые не повторяются, а проверка «есть ли элемент» быстрая.
JPEG
формат сжатия фотографий, который выбрасывает мелкие детали, незаметные глазу, ради меньшего размера файла.
k-путевое слияние
слияние сразу k отсортированных списков в один отсортированный, на каждом шаге беря наименьший из голов всех списков.
LCA
наименьший общий предок двух узлов в дереве: самый глубокий узел, от которого оба они происходят.
Linux rb_tree
красно-чёрное дерево внутри ядра Linux: самобалансирующееся дерево, на котором ядро держит отсортированные наборы, например планировщик задач.
lower_bound/upper_bound
функции C++, которые бинарным поиском находят в отсортированном массиве первую позицию не меньше заданного значения и первую строго больше него.
LRU-кэши
кэш, который при нехватке места выбрасывает элемент, к которому дольше всего не обращались, оставляя то, чем пользуешься часто.
Memoization (мемоизация)
запоминание уже посчитанных ответов, чтобы тот же вопрос второй раз отвечался мгновенно. Первый шаг от рекурсии к динамическому программированию.
Modular arithmetic (модульная арифметика)
счёт, который замыкается по кругу, как часы, перескакивающие с 12 обратно на 1. Нужен, чтобы огромные числа не разрастались.
Monotonic stack/queue (монотонный стек/очередь)
стек или очередь, которые ты держишь по порядку по мере добавления, чтобы мгновенно находить следующий больший (или меньший) элемент.
MST Краскала
алгоритм Краскала строит минимальное остовное дерево: соединяет все точки графа с наименьшей суммарной длиной рёбер, добавляя рёбра от самых дешёвых.
n
насколько велик вход: сколько элементов ты обрабатываешь.
Negative case (негативный случай)
тест, где правильный ответ это «ничего не найдено» или «невозможно», чтобы проверить, что код справляется с пустотой и провалом, а не только с удачным случаем.
OLAP-кубы
заранее посчитанные сводки данных по разным разрезам (по времени, региону, товару), чтобы аналитические отчёты строились мгновенно.
PNG
формат картинок со сжатием без потерь: размер файла меньше, но ни один пиксель не искажается, в отличие от JPEG.
Pointer / index (указатель / индекс)
метка на месте в списке, как палец, указывающий на один элемент. «Сдвинуть указатель» значит показать на другое место.
Prefix sum (префиксная сумма)
нарастающий итог, записанный на каждом месте, так что сумма любого отрезка это одно вычитание двух итогов. Как баланс на счёте: изменение за период это конечный баланс минус начальный.
Python dict
словарь в Python: коллекция пар ключ-значение, где значение находится по ключу почти мгновенно.
Python heapq
модуль Python для работы с кучей: держит элементы так, что наименьший всегда достаётся первым, удобно для очередей с приоритетом.
Queue (очередь)
линия, где кто пришёл первым, того и обслужат первым, как очередь в магазине.
quickselect
алгоритм, который находит k-й по величине элемент, не сортируя весь массив целиком, а отбрасывая на каждом шаге ненужную половину.
React reconciler
часть React, которая сравнивает новое состояние интерфейса со старым и меняет в реальной странице только то, что действительно изменилось.
React useMemo
хук React, запоминающий результат тяжёлого вычисления и не пересчитывающий его, пока не изменятся входные данные.
Recursion (рекурсия)
функция, которая решает большую задачу, вызывая саму себя на меньшем кусочке, пока кусочек не станет таким маленьким, что ответ очевиден.
RSA
алгоритм шифрования с открытым ключом: одним ключом сообщение шифруют, другим (секретным) расшифровывают, на этом держится защита данных в интернете.
rsync
утилита для копирования и синхронизации файлов, которая передаёт только изменившиеся куски, а не весь файл заново.
Scaffold (каркас)
готовая к запуску среда для практики на каждый шаг (стартовый код + тесты), чтобы ты сразу решал, а не настраивал.
Seam carving
способ менять размер картинки, удаляя не ряды пикселей целиком, а извилистые линии через наименее заметные места, чтобы важные объекты не искажались.
Set (множество)
мешок элементов без повторов, где «оно тут есть?» проверяется мгновенно. В JS: `Set`.
Skip-списки
структура из нескольких уровней связанных списков-«скачков», позволяющая искать в отсортированных данных быстро, почти как в дереве, но проще в реализации.
SLA-трекинг
отслеживание, выполняет ли сервис обещания по качеству (например, время ответа или доступность), зафиксированные в соглашении с клиентом.
Sliding window (скользящее окно)
отрезок списка `[left, right]`, который ты двигаешь: добавляешь элемент справа, убираешь слева, вместо того чтобы каждый раз пересчитывать весь отрезок.
Space complexity (пространственная сложность)
сколько лишней памяти нужно методу, когда вход становится больше.
SQL GROUP BY
оператор SQL, который собирает строки в группы по общему признаку и считает по каждой группе итог: сумму, количество, среднее.
Stack (стек)
стопка, из которой ты всегда берёшь верхнее. Как стопка тарелок: кто лёг последним, того снимут первым.
std::map
контейнер C++, хранящий пары ключ-значение с ключами в отсортированном порядке, обычно на красно-чёрном дереве.
std::map erase
метод C++, удаляющий из std::map запись по ключу и сохраняющий остальные ключи в отсортированном порядке.
std::priority_queue
очередь с приоритетом в C++: на каждом шаге отдаёт наибольший (или наименьший) из лежащих в ней элементов, построена на куче.
std::sort
стандартная функция сортировки в C++, которая расставляет элементы контейнера по порядку, обычно на основе introsort.
Stock span
задача о том, сколько дней подряд до сегодняшнего цена акции была не выше текущей; типичный пример на стек.
Tab-дополнение в shell
когда в терминале нажимаешь Tab и оболочка сама дописывает имя файла или команды по первым введённым буквам.
Tier (уровень)
какую часть трудного ты берёшь на себя на шаге: пишешь ядро сам (1), чинишь подсаженный баг (2) или разбираешь готовый код (3).
Time complexity (временная сложность)
как быстро растёт объём работы, когда вход становится больше.
Timsort
алгоритм сортировки Python и Java: находит уже упорядоченные куски данных и умно сливает их, поэтому быстр на почти отсортированных списках.
Top-k запросы
запрос, возвращающий не все данные, а только k лучших: например, 10 самых популярных товаров или самых частых слов.
Topological sort (топологическая сортировка)
расставить задачи так, чтобы ничего не начиналось раньше того, от чего оно зависит. Как одеваться: сначала носки, потом ботинки.
Tree (дерево)
элементы, связанные ветвящейся формой, у каждого один родитель и несколько потомков, без петель. Папки на твоём компьютере это дерево.
TreeMap
коллекция пар ключ-значение в Java, которая держит ключи отсортированными, так что можно быстро находить соседние и обходить всё по порядку.
Trie (бор, префиксное дерево)
дерево, собранное из букв слов, чтобы быстро находить всё, что начинается на «ка…». Именно оно даёт автодополнение.
Two pointers (два указателя)
две метки, идущие по списку (с обоих концов или с разной скоростью), чтобы сделать один проход вместо проверки каждой пары.
Undo/redo
функция отмены и повтора действий в редакторе: хранит историю шагов, чтобы вернуться на шаг назад или снова его применить.
Union-find (система непересекающихся множеств)
следит, какие элементы в одной группе, и почти мгновенно объединяет две группы или отвечает на «в одной группе?».
XOR-контрольные суммы
способ проверить целостность данных: все байты складывают операцией XOR, и если результат не совпал с ожидаемым, значит данные повредились.
Автодополнение
подсказка, которая дописывает слово или команду по первым введённым буквам, чтобы не набирать всё вручную.
Автодополнение в IDE
в редакторе кода: всплывающие подсказки с именами переменных, функций и методов по мере набора, чтобы писать быстрее и без опечаток.
Автозамена
функция, которая сама исправляет опечатки или заменяет введённый текст на нужный по ходу набора.
Агрегация логов
сбор записей-логов со множества серверов в одно место, чтобы искать по ним и разбирать сбои централизованно.
Алерты по метрикам
автоматические оповещения, которые срабатывают, когда показатель системы (нагрузка, ошибки, задержка) выходит за заданную границу.
Аллокаторы памяти
часть программы, которая выдаёт и освобождает участки оперативной памяти по запросу, следя, чтобы куски не пересекались.
Анализ диска
подсчёт, какие папки и файлы занимают больше всего места на диске, чтобы понять, что можно удалить.
Анализ сигналов
обработка измерений, меняющихся во времени (звук, датчики), чтобы выделить в них полезную информацию и убрать шум.
Арифметика дробей
вычисления с обыкновенными дробями (числитель и знаменатель) точно, без перевода в десятичные и потери точности.
Базовые линии метрик
привычный уровень показателя в норме, с которым сравнивают текущие значения, чтобы заметить отклонение.
Базы данных
программы для хранения больших объёмов данных так, чтобы их можно было надёжно записывать, искать и обновлять.
Балансировка нагрузки
распределение входящих запросов между несколькими серверами, чтобы ни один не был перегружен и сервис не падал.
Батчинг продюсера
когда отправитель сообщений копит их и шлёт пачкой вместо по одному, чтобы меньше нагружать сеть и работать быстрее.
Биоинформатика
обработка биологических данных, прежде всего последовательностей ДНК и белков, с помощью алгоритмов и программ.
Биржевые стаканы
список текущих заявок на покупку и продажу актива по разным ценам, по которому биржа сводит сделки.
Брокеры сообщений
промежуточные сервисы, которые принимают сообщения от одних программ и надёжно доставляют другим, разгружая их друг от друга.
Бронирование в календаре
проверка, свободен ли промежуток времени, и его резервирование, чтобы две встречи не наложились друг на друга.
Бюджеты повторов
ограничение на число повторных попыток запроса при сбое, чтобы система не завалила себя же лавиной ретраев.
Бюджеты рейт-лимита
выделенный лимит запросов на период для клиента; израсходовал его - жди, пока восстановится.
Валютный арбитраж
заработок на разнице курсов: цепочка обменов валют по кругу, которая возвращает больше денег, чем было вложено.
Веб-краулеры
программы, которые сами ходят по ссылкам с сайта на сайт и скачивают страницы, например для поисковика.
Ведёрная статистика
подсчёт данных по диапазонам-«вёдрам» (например, сколько запросов уложилось в 0-100 мс, 100-200 мс), чтобы видеть распределение.
Видеомонтаж
сборка и обработка видео: нарезка, склейка фрагментов, добавление эффектов и звука.
Внешняя сортировка
сортировка данных, которые не помещаются в оперативную память: их разбивают на куски, сортируют по частям на диске и сливают.
Внешняя сортировка слиянием
внешняя сортировка, где отсортированные на диске куски затем сливаются в один отсортированный файл слиянием.
Встраиваемая сортировка
сортировка, работающая прямо в исходном массиве без выделения дополнительной памяти под копию.
Встроенные системы
компьютеры внутри устройств (микроволновка, автомобиль, датчик) с малой памятью и жёсткими ограничениями на ресурсы.
Вход без учёта регистра
сравнение текста, при котором «Иван» и «иван» считаются одинаковыми, потому что регистр букв игнорируется.
Выбор кворума
правило, по которому решение считается принятым, когда его подтвердило большинство узлов системы, а не все.
Выборка из потока
взятие честной случайной подвыборки из бесконечного или очень длинного потока данных, когда всё сразу в память не помещается.
Выдача наличных в банкомате
подбор купюр под запрошенную сумму так, чтобы выдать её нужным набором банкнот.
Выдача сдачи
набор минимального числа монет или купюр, чтобы вернуть покупателю нужную сумму.
Выравнивание ДНК
сопоставление двух цепочек ДНК буква к букве, чтобы найти совпадения и различия между ними.
Генерация ключей
создание секретных чисел для шифрования, чтобы защищать данные и подписи.
Генерация лабиринтов
автоматическое построение случайного лабиринта с одним проходом между любыми двумя точками.
Генерация маршрутов
построение пути от старта до цели по карте или сети дорог.
Генерация ходов
перечисление всех допустимых ходов в игре из текущей позиции, чтобы бот мог выбрать лучший.
Гистограммы
подсчёт, сколько значений попадает в каждый диапазон, чтобы увидеть распределение данных.
Графы зависимостей
схема «что от чего зависит», по которой видно, в каком порядке собирать или запускать части системы.
Группировка в аналитике
сведение записей в группы по общему признаку, чтобы посчитать итоги по каждой группе.
Дашборды аналитики
экран с цифрами и графиками по данным продукта, чтобы следить за поведением пользователей.
Дашборды метрик
экран с ключевыми показателями системы в реальном времени.
Дашборды мониторинга
экран, показывающий состояние серверов и сервисов, чтобы вовремя заметить сбой.
Движок V8
движок от Google, который выполняет JavaScript в Chrome и Node.js.
Двудольное паросочетание
составление пар между двумя группами (например, работники и задачи) так, чтобы связать как можно больше пар.
Дедуп в антифроде
отсев повторных или дублирующих операций при поиске мошенничества, чтобы не считать одно событие дважды.
Дедуп логов
удаление повторяющихся строк в журналах, чтобы не хранить и не читать одно и то же много раз.
Дедупликация
удаление повторов, чтобы каждая уникальная запись хранилась один раз.
Дедупликация бэкапов
хранение одинаковых кусков данных в резервных копиях только один раз, чтобы копии занимали меньше места.
Дедупликация записей
объединение записей об одном и том же объекте в одну, чтобы убрать дубли.
Деревья прав
иерархия доступов, где право на верхнем уровне распространяется на всё, что ниже.
Детекция аномалий
поиск значений, которые сильно выбиваются из обычной картины, чтобы поймать сбой или атаку.
Диаметр графа
самое длинное из кратчайших расстояний между двумя точками сети, то есть насколько она «широкая».
Диаметр сети
наибольшее число шагов между двумя узлами сети по кратчайшему пути.
Диспетчеры печати
программа, которая ставит задания на печать в очередь и отправляет их на принтер по порядку.
Диффи-Хеллман
способ двум сторонам договориться об общем секретном ключе по открытому каналу, не передавая сам ключ.
Диффинг Virtual-DOM
сравнение старой и новой версий интерфейса в памяти, чтобы обновить на экране только то, что реально изменилось.
Дорожные сети
карта дорог как набор перекрёстков и связей между ними для расчёта маршрутов.
Достижимость в игре
проверка, можно ли из одной клетки или состояния добраться до другого по правилам игры.
Живые ленты
обновляемый в реальном времени поток записей, например новостная лента или чат.
Загрузка грузов
подбор предметов в ограниченный объём или вес так, чтобы уместить наиболее ценный набор.
Заливка
закраска связной области одного цвета, начиная от выбранной точки и расходясь на соседние клетки.
Заливка цветом
инструмент «ведро», который заполняет цветом всю область одинакового оттенка вокруг точки клика.
Запросы минимума на отрезке
быстрый ответ на вопрос «какое наименьшее значение на этом участке массива» без перебора всего участка каждый раз.
Защита от повторов
отсев повторно присланных запросов или сообщений, чтобы одно действие не выполнилось дважды.
Игровые лидерборды
таблица лучших результатов игроков, отсортированная по очкам.
Игры со словами
игры вроде составления слов из букв, где нужно быстро проверять слова по словарю.
Индексы БД
служебная структура в базе данных, которая ускоряет поиск строк без просмотра всей таблицы.
Индексы в БД
вспомогательный указатель по столбцу, чтобы база находила нужные строки быстро.
Индексы по диапазону
индекс, заточенный под запросы «все значения от и до», например по дате или цене.
Интегральные изображения
предпосчитанная таблица сумм по картинке, чтобы мгновенно считать сумму яркости в любом прямоугольнике.
История браузера
список посещённых страниц с переходами назад и вперёд.
Карты в Go
встроенный в язык Go тип для хранения пар «ключ - значение» с быстрым доступом по ключу.
Кассы
обслуживание очереди покупателей, где расчёт сдачи и очередь клиентов надо вести по порядку.
Кластеризация
разбиение данных на группы похожих между собой объектов без заранее заданных ярлыков.
Кластеризация записей
объединение похожих записей в группы, чтобы найти дубли или связанные объекты.
Ключи идемпотентности
уникальная метка на запросе, по которой сервер понимает, что этот запрос уже выполнял, и не повторяет действие.
Коды коррекции ошибок
добавление избыточных данных, чтобы находить и чинить повреждённые биты без повторной пересылки.
Кольцевые буферы
хранилище фиксированного размера, где после конца запись идёт с начала, затирая самое старое.
Кольцевые индексы
счётчик позиции, который по достижении конца снова возвращается к нулю (по кругу).
Команда du
команда Unix, показывающая, сколько места на диске занимают файлы и папки.
Команда uniq
команда Unix, убирающая подряд идущие одинаковые строки из текста.
Комбинации фичефлагов
перебор сочетаний включённых и выключенных настроек-переключателей, чтобы проверить их совместное поведение.
Компакция LSM
слияние мелких отсортированных файлов базы в более крупные, чтобы убрать устаревшие записи и ускорить чтение.
Компакция БД
уплотнение хранилища базы: удаление мусора и слияние файлов, чтобы освободить место и ускорить доступ.
Компиляторы
программа, которая переводит исходный код на язык, понятный машине.
Конвейеры задач
цепочка шагов обработки, где выход одного шага идёт на вход следующему.
Консистентное хеширование
способ раскидывать данные по серверам так, чтобы при добавлении или удалении сервера пришлось переносить лишь малую часть.
Конструкторы запросов
библиотека, которая собирает SQL-запрос из кода по частям, вместо ручного написания строки запроса.
Контроль дрейфа конфигов
отслеживание, что реальные настройки серверов не разошлись с эталонными, и сигнал при расхождении.
Красно-черные деревья
самобалансирующееся отсортированное дерево, которое перестраивается при вставке и удалении, чтобы поиск оставался быстрым при любом порядке добавления.
Криптография
методы шифрования и подписи данных, чтобы их нельзя было прочитать или подделать.
Кэш AST
хранение уже разобранного дерева кода, чтобы не разбирать один и тот же исходник заново.
Кэши на WeakMap
кэш, где ключ - объект, и запись сама исчезает, когда объект больше нигде не используется, чтобы не течь по памяти.
Кэши ответов
хранение готовых ответов сервера, чтобы отдавать их повторно без нового вычисления.
Лидерборды
таблица рейтинга, отсортированная по результату участников.
Лимиты облачных затрат
ограничение расходов на облако, чтобы счёт не вышел за заданный бюджет.
Маршрутизация OSPF
протокол, которым роутеры внутри сети вычисляют кратчайший путь, чтобы трафик доходил до цели эффективно.
Маршрутизация RIP
старый протокол маршрутизации, где путь выбирается по числу промежуточных роутеров до цели.
Маршрутизация в ЦОД
выбор пути для трафика между серверами внутри дата-центра.
Маршруты перелётов
подбор перелётов с пересадками из точки А в точку Б по цене или времени.
Маскирование логов
скрытие чувствительных данных (паролей, карт) в журналах, чтобы они не попали в открытый вид.
Матрицы тестов CI
запуск тестов во всех сочетаниях версий и окружений, чтобы поймать поломку в каждой конфигурации.
Медианные фильтры
сглаживание данных заменой каждого значения на среднее по порядку из соседей, чтобы убрать резкие выбросы.
Миграции БД
пошаговое изменение структуры базы данных с возможностью откатить, чтобы обновлять схему без потери данных.
Минимум в окне
поиск наименьшего значения в скользящем участке данных по мере его сдвига.
Мониторинг p50
слежение за медианным (типичным) временем ответа, ниже которого укладывается половина запросов.
Мониторинг аптайма
проверка, что сервис доступен, и учёт времени, когда он был недоступен.
Мониторинг метрик
постоянный сбор и отслеживание показателей системы, чтобы замечать проблемы.
Назначение задач
распределение работ между исполнителями так, чтобы каждый получил подходящую и никто не был перегружен.
Назначение работ
привязка заданий к работникам или машинам с наилучшим общим результатом.
Наследование ролей
схема прав, где роль наследует доступы вышестоящей, чтобы не задавать их заново.
Настройка rate-limit
задание порога, сколько запросов в единицу времени разрешено, чтобы защитить сервис от перегрузки.
Небольшие таблицы лидеров
компактный рейтинг на немного участников, отсортированный по очкам.
Нечёткий поиск
поиск, который находит совпадения даже с опечатками и неточным написанием.
Нормализация поиска
приведение запроса и текста к единому виду (регистр, пробелы, окончания), чтобы поиск находил совпадения.
Обнаружение deadlock
выявление ситуации, когда несколько процессов застряли навсегда, потому что каждый ждёт ресурс, занятый другим, чтобы система могла их разблокировать.
Обнаружение абьюза
поиск в потоке запросов признаков злоупотребления (спам, накрутка, атаки), чтобы вовремя заблокировать нарушителя.
Обнаружение взаимоблокировок
то же, что deadlock: находит группу процессов, которые взаимно ждут друг друга и не могут продолжить работу.
Обнаружение вторжений
анализ сетевого трафика и логов на признаки взлома, чтобы поднять тревогу при попытке проникнуть в систему.
Обнаружение овербукинга
проверка, не продано ли мест больше, чем есть (в отелях, самолётах, переговорных), чтобы не оказалось двух гостей на одном месте.
Обнаружение ошибок
проверка данных или кода на повреждения и сбои, чтобы поймать проблему до того, как она навредит.
Обнаружение пиков
поиск в потоке чисел (нагрузка, трафик, цена) моментов резкого всплеска, чтобы отреагировать на аномалию.
Обработка изображений
изменение и анализ картинок пиксель за пикселем: фильтры, поворот, распознавание, сжатие.
Обработка сигналов
работа с потоком измерений (звук, радио, датчики): фильтрация шума и выделение полезной части.
Обрезка ленты
удаление старых записей из ленты или журнала, чтобы держать только последние и не заполнять память.
Обход DOM
проход по дереву элементов веб-страницы, чтобы найти или изменить нужные узлы.
Обход игровой доски
систематический перебор клеток игрового поля, чтобы просчитать ходы или найти путь.
Обход файловой системы
проход по папкам и вложенным папкам, чтобы найти или обработать все файлы.
Ограниченные хвосты логов
хранение только последних N строк журнала с выбрасыванием старых, чтобы лог не рос бесконечно.
Окна потока
разбиение непрерывного потока данных на куски за отрезок времени, чтобы считать статистику по каждому такому окну.
Окна уникальных значений
подсчёт разных значений в скользящем отрезке потока, например уникальных посетителей за последний час.
Оргструктуры
деревья подчинённости в компании (кто кому руководитель), по которым удобно искать начальников и подчинённых.
Откат introsort
переключение алгоритма сортировки на запасной метод (например heapsort), когда быстрая сортировка начинает работать слишком медленно.
Отсортированные таблицы поиска
заранее упорядоченные таблицы данных, по которым можно быстро искать бинарным поиском.
Очереди задач
список работ, ждущих выполнения по порядку, чтобы система разбирала их по одной, а не всё сразу.
Очистка текста
приведение текста к единому виду: убрать лишние пробелы, знаки, привести регистр перед обработкой.
Пайплайны логов
цепочка этапов, через которую проходят записи журнала: сбор, фильтрация, разбор, хранение.
Парные скобки в редакторе
проверка, что каждой открывающей скобке соответствует закрывающая, чтобы подсветить пары и найти ошибку.
Парсеры JSON/XML
программы, которые разбирают текст в формате JSON или XML в структуру данных, понятную коду.
Партиции Kafka
деление потока сообщений Kafka на части, которые обрабатываются параллельно на разных машинах.
Переговорные
комнаты для встреч, которые бронируют по времени, поэтому нужна проверка на пересечение броней.
Пересечения календаря
поиск наложений между событиями в расписании, чтобы найти конфликты или общее свободное время.
Перколяция
модель просачивания через сетку связанных ячеек; используется, чтобы понять, соединены ли две стороны через открытые пути.
Перцентили
значение, ниже которого лежит заданная доля данных (например 95-й перцентиль времени ответа), чтобы описать распределение без среднего.
Пики метрик
резкие всплески на графиках показателей системы, которые надо замечать для мониторинга.
Планирование
распределение задач по времени и ресурсам так, чтобы всё уместилось и не конфликтовало.
Планирование задач
решение, какую работу и когда выполнять, с учётом приоритетов и зависимостей.
Планирование маршрутов
поиск порядка и пути объезда точек (доставка, транспорт), чтобы минимизировать время или расстояние.
Планирование машин
распределение работ по станкам или серверам так, чтобы они были загружены эффективно.
Планирование мощности
расчёт, сколько ресурсов (серверов, людей) понадобится под ожидаемую нагрузку.
Планирование ресурсов
распределение ограниченных ресурсов между задачами без конфликтов и перегрузки.
Планировщики задач
программы, запускающие задания по расписанию или по мере освобождения ресурсов.
Планировщики запросов
часть базы данных, которая выбирает лучший план выполнения запроса перед его исполнением.
Планировщики ОС
часть операционной системы, которая решает, какому процессу дать процессор в каждый момент.
Платёжные терминалы
устройства приёма оплаты картой, которым нужна быстрая и надёжная обработка транзакций.
Повёрнутые логи
журналы с ротацией: старый файл закрывается и начинается новый, чтобы файлы не разрастались.
Поворот изображений
разворот картинки на угол (обычно 90 или 180 градусов) переставлением пикселей.
Подсказки поиска
варианты автодополнения, которые всплывают по мере набора запроса, чтобы ускорить ввод.
Подсчёт инверсий
подсчёт пар элементов, стоящих в списке не по порядку; показывает, насколько список далёк от отсортированного.
Подсчёт уникальных посетителей
определение, сколько разных людей зашло на сайт, без учёта повторных заходов.
Поиск в конфиге
нахождение нужного параметра среди настроек программы.
Поиск в редакторе
функция Find в текстовом редакторе: находит вхождения слова или шаблона в тексте.
Поиск версии
нахождение, в какой из версий (например какой коммит) появилась ошибка, часто бинарным поиском.
Поиск плагиата
сравнение текста с другими, чтобы найти совпадающие или переписанные фрагменты.
Поиск по таблице
нахождение строки в таблице по ключу или значению.
Поиск пути в играх
расчёт маршрута персонажа от точки к точке по игровой карте в обход препятствий.
Поиск пути на сетке
нахождение дороги между клетками сетки, огибая стены (алгоритмы вроде BFS или A*).
Поиск пути по сетке
то же: прокладка маршрута между клетками поля с препятствиями.
Поиск сообществ
выделение в графе связей групп тесно соединённых узлов (например кружков друзей в соцсети).
Поисковые запросы
слова, которые пользователь вводит в поиск; система по ним находит подходящие результаты.
Поисковые индексы
заранее построенные структуры (например по словам), которые позволяют искать по большому набору документов быстро.
Показ матриц
вывод двумерной таблицы чисел на экран, часто в определённом порядке обхода.
Пользовательские словари
личные списки слов (например для проверки орфографии), которые пользователь добавляет сам.
Попарное тестирование
метод тестирования, при котором проверяют все пары значений параметров, а не все комбинации, чтобы сократить число тестов.
Потоки Kafka
непрерывные потоки сообщений в Kafka, которые приложения читают и обрабатывают на лету.
Потоковая обработка
обработка данных по мере их поступления, не дожидаясь накопления всего набора.
Потоковые таблицы лидеров
рейтинги (например игроков), которые обновляются в реальном времени по мере поступления новых очков.
Почти отсортированные списки
списки, где почти всё уже упорядочено; на них некоторые сортировки работают особенно быстро.
Почтовые индексы
коды регионов в адресах, по которым сортируют и маршрутизируют почту.
Права Unix
биты доступа к файлам в Unix (чтение, запись, выполнение для владельца, группы и остальных), задающие, кому что можно.
Правила фаервола
список условий, по которым сетевой экран пропускает или блокирует трафик.
Приватные поля классов
данные объекта, доступные только изнутри его класса, чтобы скрыть внутреннее устройство от остального кода.
Проверка в стиле Boggle
поиск слов на буквенной сетке по соседним клеткам, как в игре Boggle.
Проверка двойных броней
выявление случаев, когда один ресурс или время забронированы дважды.
Проверка индексов
контроль, что обращение к элементу массива не выходит за его границы.
Проверка орфографии
сравнение слов текста со словарём, чтобы найти опечатки и предложить исправления.
Проверка палиндромов
определение, читается ли строка одинаково слева направо и справа налево.
Прокладка сетей
планирование, как соединить точки линиями связи или проводами с наименьшими затратами.
Просмотр логов
чтение и навигация по журналам системы для поиска событий и ошибок.
Разбор хэштегов
выделение тегов вида #слово из текста поста для группировки и поиска.
Разводка чипов
размещение элементов и прокладка соединений на микросхеме так, чтобы всё поместилось и связалось.
Разметка изображений
расстановка меток на картинках (что где изображено) для обучения моделей или каталогизации.
Разрешение зависимостей
определение правильного порядка установки или сборки компонентов с учётом того, что одни требуют других.
Ранжирование поиска
упорядочивание результатов поиска по релевантности, чтобы самые подходящие были сверху.
Раскрой материала
расчёт, как разрезать лист или рулон на нужные куски с минимумом отходов.
Расписание на две смены
распределение работников по двум сменам так, чтобы покрыть все часы без переработок.
Расписания экзаменов
составление графика экзаменов без наложений для студентов и аудиторий.
Распределение бюджета
деление ограниченных денег между статьями расходов с наибольшей отдачей.
Распределение регистров
в компиляторе: назначение переменных на ограниченное число регистров процессора.
Редакторы
программы для написания и правки текста или кода.
Резервы склада
запас товара, отложенный или доступный на складе, который надо отслеживать, чтобы не продать лишнего.
Рекламные слоты
места на странице или во времени под показ рекламы, которые распределяют между объявлениями.
Рендеринг тепловых карт
отрисовка данных цветом (где горячее, там ярче), чтобы наглядно показать плотность или интенсивность.
Решатели головоломок
программы, находящие решение логической задачи перебором и отсечением неверных вариантов.
Решатели судоку
программы, заполняющие сетку судоку по правилам, обычно перебором с возвратом.
Рисунок одним росчерком
задача нарисовать фигуру, не отрывая карандаша и не проводя по одной линии дважды; сводится к поиску такого пути в графе (эйлеров путь).
Сборщики модулей
инструменты, которые собирают множество файлов кода и их зависимости в один или несколько готовых к загрузке файлов (например Webpack, Vite).
Сброс кэша
удаление сохранённых во временной памяти данных, чтобы при следующем запросе взять свежие.
Сверка реестров
сравнение двух списков записей, чтобы найти расхождения: что есть в одном и нет в другом.
Сверка счетов
сопоставление двух наборов финансовых записей (например выписки банка и своей бухгалтерии), чтобы найти несовпадения.
Свёртки временных рядов
обработка последовательности значений во времени скользящим окном, чтобы сгладить их или найти закономерности.
Свёртки метрик
агрегирование потока измерений за окно времени (среднее, сумма, максимум) для графиков и мониторинга.
Свертки таксономии
сворачивание дерева категорий: подсчёт или объединение значений вверх по веткам классификации.
Свободно/занято в календаре
отметка, в какие интервалы времени человек занят, а в какие свободен, для подбора времени встречи.
Сворачивание РНК
предсказание того, как цепочка РНК складывается в пространстве, образуя пары между своими участками.
Сериализация DOM
превращение дерева элементов веб-страницы обратно в текст HTML, чтобы сохранить или передать его.
Сериализация матрицы
запись таблицы чисел в линейную строку байтов, чтобы сохранить в файл или передать по сети.
Сетевые буферы
участки памяти, где временно копятся данные, пришедшие или уходящие по сети, пока их обрабатывают.
Сетки доступности
структура, которая хранит, какие ресурсы (места, номера, слоты) свободны, а какие заняты.
Сжатие изображений JPEG
формат, который уменьшает размер фотографий, отбрасывая мелкие детали, почти незаметные глазу.
Системы бронирования
сервисы, которые резервируют ограниченный ресурс (билеты, номера, столики) и следят, чтобы одно место не продали дважды.
Системы сборки
инструменты, которые по описанию проекта автоматически компилируют код и собирают готовую программу (например Make, Gradle).
Сканирование логов
последовательный просмотр записей журнала для поиска ошибок, событий или подозрительных строк.
Скользящие средние
среднее значение за последние N точек, которое пересчитывают на каждом шаге, чтобы сгладить колебания данных.
Скользящие хеши
способ быстро пересчитать хеш окна текста при сдвиге на один символ, не считая заново весь кусок; нужен для поиска подстрок.
Слияние аккаунтов
объединение двух учётных записей одного человека в одну с сохранением их данных.
Слияние версий
сведение изменений из двух веток кода в одну общую версию.
Слияние логов
объединение записей из нескольких журналов в один общий поток, упорядоченный по времени.
Соотношения сторон
отношение ширины к высоте изображения или экрана (например 16:9).
Сопоставление платежей
привязка входящих платежей к счетам или заказам, которые они оплачивают.
Сортировка в БД
упорядочивание строк результата запроса по нужному полю (то, что делает `ORDER BY`).
Сортировка слиянием
алгоритм сортировки: список делят пополам, сортируют каждую половину, затем сливают их в один упорядоченный.
Сортировка столбцов
упорядочивание строк таблицы по значениям выбранного столбца.
Сохранение игры
запись текущего состояния игры в файл, чтобы позже продолжить с того же места.
Соцграфы
представление людей и связей между ними как графа: узлы это люди, рёбра это дружба или подписка.
Соцкруги
группы близко связанных между собой людей внутри социальной сети.
Списки конфигов
наборы настроек программы, хранящиеся списком.
Списки смежности
способ хранить граф: для каждой вершины держат список вершин, с которыми она соединена.
Сравнение текста
поиск различий между двумя версиями текста: что добавлено, удалено, изменено.
Стабильная сортировка
сортировка, которая сохраняет исходный порядок элементов с одинаковым ключом.
Стек вызовов
список функций, которые сейчас выполняются одна внутри другой; программа помнит, куда вернуться после каждой.
Суффиксные массивы
отсортированный список всех суффиксов строки; помогает быстро искать подстроки и повторы в тексте.
Таблицы
данные, разложенные по строкам и столбцам.
Таблицы лидеров
список участников, отсортированный по очкам, с их местами (рейтинг игроков).
Таблицы маршрутизации
таблица в сетевом устройстве, которая говорит, куда дальше отправить пакет по его адресу назначения.
Таблицы маршрутов
таблица соответствий между адресами (URL или сетевыми) и тем, кто их обрабатывает.
Таблицы символов
таблица, где компилятор хранит имена переменных и функций программы вместе с их данными.
Таблицы тарифов
таблица цен по категориям, зонам или условиям, по которой считают стоимость.
Таймер-колеса
структура для эффективного управления множеством таймеров: их раскладывают по ячейкам «колеса» по времени срабатывания.
Текстовые редакторы
программы для набора и правки текста или кода.
Тестовые матрицы
таблица сочетаний условий (версий, браузеров, настроек), которые нужно проверить тестами.
Тесты гонок
проверки на состояние гонки: ошибку, когда результат зависит от того, чей из параллельных потоков успел первым.
Токенизаторы
инструменты, которые разбивают текст на отдельные единицы (слова, символы, знаки) для дальнейшей обработки.
Торговая аналитика
анализ данных о торгах и сделках для решений о покупке и продаже.
Торговые SMA
простое скользящее среднее цены за период, которое трейдеры используют как индикатор тренда.
Торговые автоматы
программы, которые сами совершают сделки на бирже по заданным правилам.
Торговые дашборды
экраны с графиками и показателями торгов в реальном времени.
Транзитивное замыкание
для графа связей: вычисление, из какой вершины можно добраться до какой, прямо или через цепочку.
Трейдинг-дашборды
экраны с рыночными данными и метриками для трейдера.
Трендовые темы
темы, которые сейчас резко набирают популярность и чаще всего упоминаются.
Учёт DOM-узлов
подсчёт и отслеживание элементов дерева веб-страницы, чтобы контролировать её размер и производительность.
Фаза reduce
вторая стадия обработки MapReduce, где промежуточные результаты сводят в итоговый (суммируют, объединяют по ключу).
Фаза поразрядной сортировки
один проход поразрядной сортировки, который упорядочивает числа по одному разряду (единицам, потом десяткам и так далее).
Файловые менеджеры
программы для просмотра и работы с файлами и папками (например Проводник, Finder).
Фильтры Блума
компактная структура, которая быстро отвечает «элемента точно нет» или «возможно есть», экономя память при проверке принадлежности.
Фильтры компьютерного зрения
операции над изображением (размытие, выделение краёв), которые применяют, обрабатывая каждый пиксель с соседями.
Фиче-флаги
переключатели, которые включают или выключают функции приложения без выпуска новой версии.
Флаги TCP
служебные биты в заголовке TCP-пакета (SYN, ACK, FIN и другие), которые управляют состоянием соединения.
Форматы передачи
соглашения о том, как упаковать данные для отправки по сети (например JSON, Protobuf).
Хеш-таблицы
структура для хранения пар «ключ-значение», где по ключу почти мгновенно находят значение через хеш-функцию.
Хранилища временных рядов
базы данных, заточенные под хранение измерений с метками времени (метрики, датчики).
Хранилища конфигов
места, где централизованно хранятся настройки приложений.
Хранилища сессий
память, где сервер держит данные о текущих сеансах вошедших пользователей.
Ценовые ленты
поток обновлений цен на инструменты в реальном времени.
Цепочка матриц
задача найти самый дешёвый порядок перемножения нескольких матриц подряд, поскольку от порядка зависит объём вычислений.
Циклические импорты
ситуация, когда модуль A подключает модуль B, а B обратно подключает A, из-за чего загрузка зацикливается.
Чистка таблиц
удаление устаревших, лишних или повреждённых записей из таблиц базы данных.
Шаблонизаторы
инструменты, которые подставляют данные в заготовку-шаблон и выдают готовый текст или HTML.
Шардирование данных
разбиение большой базы на части (шарды) по разным серверам, чтобы справляться с нагрузкой и объёмом.
Шардирование кэша
распределение кэша по нескольким серверам, чтобы каждый хранил свою долю данных.
Экранные буферы
область памяти, где хранится изображение кадра перед выводом на экран.
Ядро Linux
центральная часть операционной системы Linux, которая управляет памятью, процессами и доступом к оборудованию.