Python задачи и вопросы
1.23K subscribers
425 photos
1 file
153 links
Задачи и вопросы с собеседований по python разного уровня сложности

По рекламе: @cyberJohnny
Download Telegram
В asyncio родительский таск сделал token = var.set(1) и затем создал два таска t1, t2; в t1 внутри выполняется var.set(2). Как ContextVar ведёт себя по умолчанию?

👾 — Общее на все таски — t1 меняет значение и для родителя, и для t2
👍 — Контекст копируется при создании таска — t1 видит 1, может сменить на 2 только для себя; родитель и t2 остаются с 1
🥰 — Значение видно только в пределах одного await
⚡️ — Требуется вручную вызывать copy_context(), иначе ContextVar не работает

Библиотека задач по Python
Что делает os.rename()?

В Python функция os.rename() используется для переименования файла или директории в операционной системе. Она входит в модуль os.
Библиотека задач по Python
Что делает os.rename()?

В Python функция os.rename() используется для переименования файла или директории в операционной системе. Она входит в модуль os.
Библиотека задач по Python
Что верно для Python ≥3.7 про завершение генератора и yield from?

👾 — raise StopIteration(x) эквивалентен return x; yield from игнорирует значение
👍 — Явный raise StopIteration внутри генератора превращается в RuntimeError (PEP 479), а return x задаёт StopIteration.value=x; выражение yield from sub() возвращает это x
🥰 — return x приводит к RuntimeError; корректно только raise StopIteration(x)
⚡️ — yield from всегда возвращает None

Библиотека задач по Python
Что выведет код?

👾 — ['first': 'sunday', 'second': 'monday', 1: 3, 2:4]
👍 — ['first': 'sunday', 'second': 'monday']
🥰 — [1: 3, 2: 4]
⚡️ — Ничего из вышеперечисленного
Библиотека задач по Python
Что выведет код?

👾 — [[4, 5], [1, 2, 3], [6, 7, 8, 9]]
👍 — [[6, 7, 8, 9], [1, 2, 3], [4, 5]]
🥰 — [2, 3, 4]
⚡️ — [3, 5, 9]

Библиотека задач по Python
В asyncio вы делаете task.cancel(), а внутри корутины стоит:

try:
await do_io()
except Exception:
log("error")

👾 — Отмена не поймается, т.к. CancelledError — потомок BaseException
👍 — Отмена будет поймана этим except, и если не пере-бросить, задача завершится «успехом», фактически проглотив отмену
🥰 — Отмена превратится в TimeoutError
⚡️ — Исключение поднимется мимо except и всегда завершит задачу как отменённую

Библиотека задач по Python
Что возвращает a[:] для списка?

👾 — Новую (поверхностную) копию
⚡️ — Ссылку на исходный список
🥰 — Новую глубокую копию

Библиотека задач по Python
🐍 Что такое сцепление исключений?

Сцепление исключений представляет собой метод, который позволяет сохранить первоначальную причину ошибки при её дополнительной обработке.

Когда возникает исключение, его можно перехватить с помощью блока try/except и затем вызвать другое исключение в процессе обработки. При этом первоначальное исключение сохраняется как причина для нового.

Это предоставляет следующие преимущества:
— При обработке нового исключения сохраняется доступ к стеку вызовов и данным первоначального исключения.
— Можно добавить дополнительную информацию в новое исключение, не теряя оригинальных данных.
— Сохраняется иерархия исключений, что позволяет видеть полную цепочку возникновения ошибки.

Библиотека задач по Python
Что гарантирует GIL в CPython?

👾 — Отсутствие гонок данных в пользовательском коде
⚡️ — Параллельное выполнение CPU-bound задач в потоках
🥰 — Единовременное выполнение байткода одним потоком интерпретатора
👍 — Что все I/O операции неблокирующие

Библиотека задач по Python
Что делает параметр response_model в декораторе маршрута? (FastAPI)

👾 — Ограничивает типы входных параметров
⚡️ — Валидирует и сериализует ответ, отсекая лишние поля
🥰 — Меняет код ответа по умолчанию
👍 — Включает автодокументацию

Библиотека задач по Python
Что выведет код?

👾 — Неверный синтаксис для наследования
👍 — Ошибка, так как при создании объекта необходимо передать аргумент
🥰 — Ничего
⚡️ — A disp()
Библиотека задач по Python
В каких ситуациях возникает исключение NotImplementedError?

Исключение NotImplementedError возникает, когда метод или функция должны быть реализованы в подклассе, но не были реализованы. Это может произойти, когда родительский класс определяет метод, но не реализует его сам, а оставляет это для подклассов. В этом случае, если подкласс не реализует метод, он будет вызывать исключение NotImplementedError. Это может быть полезно для отладки, чтобы убедиться, что все необходимые методы реализованы в подклассах. Это также может возникнуть в других ситуациях, например, если вы пытаетесь использовать неопределенную функцию или метод.
Библиотека задач по Python
В чем разница между списками и массивами?

Примечание: в стандартной библиотеке Python есть объект array, но здесь мы специально будем обсуждать массив из популярной библиотеки Numpy.

Списки в каждом индексе можно заполнять разными типами данных. Массивы требуют однородных элементов.

Арифметические действия в списках добавляют или удаляют элементы из списка. Арифметические действия на массивах соответствуют функциям линейной алгебры.

Массивы используют меньше памяти и обладают значительно большей функциональностью.
Библиотека задач по Python
Вы обрабатываете большие массивы числовых данных в Python, и профилирование показывает, что большинство времени тратится на циклы for со встроенными типами. Какой подход наиболее правильный для оптимизации?

👾 — Разбить массивы на списки поменьше и обрабатывать их по частям
👍 — Использовать специализированные библиотеки (например, NumPy), которые выполняют векторные операции вне GIL
🥰 — Переписать цикл на вложенные list comprehension
⚡️ — Принудительно запускать gc.collect() после каждой итерации

Библиотека задач по Python
Что значит *args, **kwargs? И зачем нам их использовать?

Мы используем *args, когда неуверены, сколько аргументов будет передано функции, или если хотим передать сохраненный список или кортеж аргументов функции.

**kwargs используется, когда мы не знаем, сколько аргументов ключевых слов будет передано, а также он может быть использован для передачи значений словаря в качестве аргументов ключевых слов. Идентификаторы args и kwargs необязательны, вы можете изменить их на другие, типа *другой **пример, но лучше использовать имя по умолчанию.

Библиотека задач по Python
👍1
Что выведет код:
print(type({}) is set)

👾 — False
👍 —True
🥰 — None
⚡️ — Ничего

Библиотека задач по Python
Что делает функция sample?

Функция sample() позволяет выбрать случайным образом элементы из последовательности или коллекции.

Это удобно при необходимости получить случайную выборку из данных.

Функция принимает два основных аргумента:
population — последовательность, из которой надо выбрать элементы (list, tuple, string и т. д.)
k — количество элементов для выборки.

Дополнительные аргументы:

counts — список весов элементов (по умолчанию равновероятный выбор).
rng — генератор случайных чисел (по умолчанию берется из модуля random).

Библиотека задач по Python
👍1
🚫👩‍💻 🚫 Как не нужно писать на Python

Приглашаем на открытый урок.

🗓 27 октября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса
«Python Developer. Professional».

Даже опытные разработчики порой создают код, который работает — но жить с ним потом невозможно. На открытом уроке разберём типичные ошибки и антипаттерны в Python, поговорим о причинах появления «плохого» кода и способах сделать его понятнее, стабильнее и быстрее. Рассмотрим как распространённые, так и неожиданные примеры, которые помогут взглянуть на привычные решения под новым углом.

На вебинаре разберём:
✔️ Основные антипаттерны и неудачные практики в Python-разработке
✔️ Почему появляются «плохие» решения и как их вовремя распознать
✔️ Подходы и инструменты, которые помогают улучшить качество кода

В результате вебинара вы:
✔️Поймёте, чего стоит избегать при написании кода на Python
✔️Научитесь видеть и исправлять проблемные участки в своих проектах
✔️Узнаете, как писать читаемый, поддерживаемый и эффективный код

🔗 Ссылка на регистрацию: https://clck.ru/3PqD5X

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Что означает RPO?

👾 — Максимально допустимая длительность простоя
👍 — Цель по времени восстановления сервиса
🥰 — Максимально допустимая потеря данных во времени
⚡️ — Среднее время до отказа

Библиотека задач по Python
Чем корректно отдавать большой поток данных?

👾 — Response с JSON
👍 — StreamingResponse
🥰 — FileResponse всегда загружает весь файл в память
⚡️ — HTMLResponse

Библиотека задач по Python