СПРАВОЧНИК
Справочник
Все термины из уроков, простыми словами. Ищи или просто пролистай.
- 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, которая управляет памятью, процессами и доступом к оборудованию.