В этой подборке вопросы сгруппированы по формату «Лайвкодинг», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: frontend, browser, database.
Store the last admitted call time and compare it with time.monotonic() under a lock. Reject early calls with CalledTooOftenError; functools.wraps preserves metadata and exposes the original signature to introspection.
Будут напечатаны [1] и [2]. При каждом вызове строка all_numbers = [] создаёт новый список, независимо от переданного аргумента или значения по умолчанию.
Используйте perf_counter() при входе и выходе из контекстного менеджера, а вывод поместите в finally. Формат .3f покажет секунды с тремя знаками после запятой, то есть до миллисекунд.
Вынесите кеширование в декоратор functools.lru_cache или cache, оставив sum_digits только вычисление суммы цифр. Аргументы должны быть хешируемыми, а результат — зависеть от них предсказуемо.
Выберите сотрудников, для которых не существует записи о закреплённом номере. NOT EXISTS выражает это напрямую и не создаёт дубликатов сотрудников при нескольких телефонах.
Используйте LEFT JOIN от сотрудников к кошкам и оставьте строки, где у присоединённой кошки нет идентификатора. Это anti-join: выбираются сотрудники без единого совпадения.
Нет: интервал кандидатов исчерпан, цикл должен завершиться. Обращение к элементам вне условия продолжения может нарушить инвариант или выйти за границы.
Код напечатает 5, 16 и −1 на отдельных строках. Каждый переопределённый calculate() вызывает следующую реализацию по MRO через super(), после чего добавляет свою часть вычисления.
Время функции измеряют perf_counter() в декораторе, а отделы отбирают через GROUP BY и HAVING со сравнением со средней зарплатой всех сотрудников. Это две независимые части приведённого условия.
Счётчик можно хранить в атрибуте функции-обёртки и увеличивать при каждом вызове. Для конкурентных потоков обновление защищают Lock; wraps сохраняет имя и метаданные исходной функции.
Создайте один общий asyncio.Lock для защищаемого состояния и поместите всю проверку и изменение внутрь async with lock. Новый Lock на каждый запрос не защитит ничего, потому что запросы не будут разделять блокировку.