TGViewer
Газпромбанк.Тех Газпромбанк.Тех @gpb_tech · 1.38K subscribers
Post #663 262
Рубрика «Что не так в этом коде» 🔎

Каждый фрагмент ниже запускается без ошибок и на первый взгляд делает то, что должен. Но в каждом сидит баг, который спокойно проходит ревью по диагонали. Попробуйте найти его до того, как откроете спойлер, версии пишите в комментариях 🐱

Python

fees = [lambda amount: amount * rate for rate in (0.01, 0.02)]
print([f(1000) for f in fees])

Ожидаем [10.0, 20.0], получаем [20.0, 20.0]. Lambda запоминает саму переменную rate, а не ее значение в момент создания. К первому вызову цикл уже закончился, и rate у всех равна 0.02. Лечится аргументом по умолчанию: lambda amount, rate=rate: amount * rate


JavaScript

const amounts = [1500, 250, 99, 10000];
const top = amounts.sort().reverse()[0];
console.log(`Самый крупный платеж: ${top}`);

Выведет 99. Без функции сравнения sort() приводит числа к строкам и сортирует по алфавиту, поэтому “10000” оказывается раньше “99”. Бонусом sort() меняет исходный массив, и amounts теперь тоже перемешан. Правильно так: Math.max(…amounts)


Java

Integer limit = 1000;
Integer spent = 1000;

if (spent == limit) {
System.out.println("Лимит исчерпан");
}

Ничего не напечатается. Integer — объект, и == сравнивает ссылки, а не значения. JVM кэширует объекты Integer только в диапазоне -128..127, для 1000 создаются два разных объекта. Самое неприятное здесь в тестах: с limit = 100 все работает, и баг доезжает до прода. Сравнивайте через equals() или используйте int


Какой баг нашли быстрее всего? Делитесь в комментариях багом, который вы сами ловили на проде.

Мы в МАКС 🐱
  • ❤ 4
More from @gpb_tech
  1. Sep 29, 2026💙 В Газпромбанк.Тех прошел скандинавский киновечер Смотрели «Земляничную поляну» Ингмара…
  2. Sep 28, 2026Как технологическому решению пройти путь от идеи до первого внедрения? 🚀 Вместе с МИК пок…
  3. Sep 25, 2026Что происходит, когда падает сервис, или как мы обеспечиваем отказоустойчивость Что происх…
  4. Sep 19, 2026Post #662
  5. Sep 19, 2026Тех.Забег в самом разгаре! 🔥 Пока вы пьете утренний кофе, мы уже пробежали первые 2,5 км…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →