2.1Kпросмотров
66.2%от подписчиков
21 марта 2026 г.
Score: 2.3K
✔️ PHP-тест: Typed Properties + Lazy Initialization + Объект в статике Баг, который живёт в проде месяцами и проявляется только под нагрузкой 👇 📦 Задание Команда пишет модуль биллинга. Ты написал быстрый класс-обёртку для работы с тарифами. Код прошёл ревью, всё работало на стейджинге. В проде через неделю начались жалобы: у части пользователей неправильно считается стоимость. Причём только в пиковые часы. // src/Billing/TariffCalculator.php class TariffCalculator { private static TariffConfig $config; private static array $cache = []; public static function init(array $rawConfig): void { self::$config = new TariffConfig($rawConfig); } public static function calculate(int $userId, int $units): float { $key = $userId . ':' . $units; if (isset(self::$cache[$key])) { return self::$cache[$key]; } $price = self::$config->getBasePrice() $units self::$config->getUserMultiplier($userId); self::$cache[$key] = $price; return $price; } public static function resetCache(): void { self::$cache = []; } } // src/Billing/TariffConfig.php class TariffConfig { private float $basePrice; private array $multipliers; public function __construct(array $config) { $this->basePrice = (float) $config['base_price']; $this->multipliers = $config['multipliers'] ?? []; } public function getBasePrice(): float { return $this->basePrice; } public function getUserMultiplier(int $userId): float { return $this->multipliers[$userId] ?? 1.0; } } // bootstrap.php — вызывается один раз при старте воркера TariffCalculator::init(loadConfigFromDB()); // Где-то в обработчике запроса $price = TariffCalculator::calculate($user->id, $request->units); 🔹 Задачи — Найти все архитектурные и логические проблемы в коде (их несколько) — Объяснить, почему баг проявляется только под нагрузкой и не воспроизводится на стейджинге — Предложить правильное решение Ставьте → 🔥 если нравится формат. Если нет → 🌚 💬 Решения пишите в комменты под спойлер — сравним подходы.
2.1K
просмотров
2400
символов
Нет
эмодзи
Нет
медиа

Другие посты @php_interview_lib

Все посты канала →
✔️ PHP-тест: Typed Properties + Lazy Initialization + Объект — @php_interview_lib | PostSniper