Как дела с математикой
Что проверяют
Не оценки из вуза, а то, хватит ли вам математики для повседневной инженерии: оценить сложность, прочитать метрики, не потерять деньги на округлении. Следом часто дают маленькую задачку или просят пример, где математика пригодилась в работе.
Как отвечать
Дайте честную самооценку одной фразой и сразу переведите разговор на прикладные вещи, которые встречаются в Go-бэкенде:
- сложность алгоритмов: O-нотация, почему бинарный поиск логарифмический, почему
mapв Go даёт O(1) в среднем, но не гарантирует порядок обхода; - статистика в метриках: среднее время ответа врёт, смотрят перцентили p95 и p99. Гистограммы Prometheus считают перцентиль приближённо, по границам бакетов;
- вероятность: коллизии хешей, парадокс дней рождения, джиттер в ретраях, фильтр Блума;
- целые числа в Go:
intпереполняется молча, без паники. Целочисленное деление на ноль в рантайме паникует, а уfloat64даёт+InfилиNaN; - деньги: не в
float64. Храните копейки вint64или берите десятичную библиотеку вродеshopspring/decimal, для очень больших чисел естьmath/big; - биты: проверка степени двойки
n > 0 && n&(n-1) == 0, пакетmath/bits.
Добавьте пример из своего опыта: расчёт квантилей для отчёта, шардирование по хешу, оценка, сколько памяти займёт миллион структур. Цифры берите реальные, их попросят объяснить.
Если с математикой слабо, не прячьте это: скажите, какой уровень есть и что вы подтягиваете, например дискретную математику для алгоритмов. Это лучше уверенного «всё отлично» и провала на первой задаче.
Где спотыкаются
Отвечают «нормально» или «не люблю» и замолкают. Интервьюер не получает ничего, кроме повода дать задачу посложнее.
Уходят в университетский курс: матанализ, линейная алгебра, дифференциальные уравнения. Для бэкенда это мимо, если вакансия не про ML или вычисления.
Приносят шаблонную историю про «ускорил обработку на 30% динамическим программированием» для подсчёта среднего. На уточнении выясняется, что среднее считается одним проходом и ДП там ни при чём.