Алгоритмы для интервью
На junior достаточно нескольких базовых навыков: оценить сложность, выбрать структуру данных и написать решение в 30 строк. Практикуем именно их.
Big O: язык оценки
Big O — как растёт время (или память) с ростом данных n:
- O(1) — доступ к элементу массива, запись в объект по ключу;
- O(n) — пройти по массиву один раз;
- O(n log n) — хорошая сортировка (V8's sort);
- O(n²) — вложенные циклы. Обычно сигнал «ищи лучший путь».
Хэш-таблицы решают половину задач
// Поиск пары чисел с суммой target за O(n)
function twoSum(nums, target) {
const seen = new Map();
for (let i = 0; i < nums.length; i++) {
const need = target - nums[i];
if (seen.has(need)) return [seen.get(need), i];
seen.set(nums[i], i);
}
return [];
}
💡
Рефлекс интервью: «считать вхождения / искать пару / проверять дубли» = объявляем Map/Set, а не вложенный цикл. Отсюда и половина решений в один проход.
Типичный разбор задачи
- спросите про ограничения: размер входа, только числа?
- покажите наивное решение и его сложность;
- улучшьте до оптимального, рассуждая вслух;
- проверьте крайние случаи: пустой массив, один элемент, дубли;
- назовите сложность решения по времени и памяти.
ℹ️
Алгоритмы интересны вам и развивают навык «думать о данных». Для обычной работы в вебе хватает 80% из этого урока. Глубокий спидран по LeetCode — опция, но не обязательство для junior.