Библиотека собеса по Python | вопросы с собеседований
6.16K subscribers
602 photos
9 videos
297 links
Вопросы с собеседований по Python и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/6587aafa

Для обратной связи: @proglibrary_feeedback_bot
加入频道
Работа с регистрами

Форматирование текста — это боль каждого data scientist’а. Слова и предложения в разных форматах создают много проблем при очистке данных. Однако и для этих задач в Python есть нужные функции.
Что такое функция высшего порядка?

Функция высшего порядка — это функция, которая принимает на вход или возвращает другую функцию.
Использование функций высшего порядка позволяет писать более абстрактный, модульный и параметризуемый код. Это мощная концепция функционального программирования

Примеры использования функций высшего порядка:

— Передача функции в качестве аргумента: например, можно передать функцию map, которая применяет другую функцию ко всем элементам последовательности.

— Возвращение функции из функции: можно написать функцию, которая будет генерировать и возвращать другие функции.

— Присваивание функции переменной: функции являются объектами, поэтому их можно присваивать переменным и передавать как аргументы.

— Хранение функций в структурах данных: можно поместить функции в список, словарь и вызывать их оттуда.

— Декораторы: декораторы позволяют применить одну функцию к другой и расширить её функциональность.
Случайная перетасовка словаря в Python

Вы не можете перетасовать словарь. Что вы можете сделать, так это создать список ключей словаря и перетасовать его, чтобы добиться нового произвольного порядка доступа к содержимому словаря.
Разбиение на фрагменты

Этот пример покажет, как разбить список на фрагменты и разделить его на меньшие части.
🐍 У нас есть еженедельная email-рассылка, посвященная последним открытиям и тенденциям в мире Python.

В ней:
● Новые возможности в последних версиях Python
● Работа с базами данных и SQL в Python
● Веб-разработка на Django и Flask
● Машинное обучение и анализ данных с помощью Python
● Автоматизация и работа с API на Python
● Тестирование и отладка кода на Python
● Задачи для новичков с решениями

👉Подписаться👈
eval() и exec()

Python имеет возможность динамически считывать строку и обрабатывать ее как часть программного кода. Это достигается с помощью функций eval() и exec() (eval предназначена для вычисления выражений, а exec — для выполнения операторов).

В строке 3 функция eval() считывает входную строку как выражение Python, вычисляет ее и присваивает результат переменной b. В строке 7 функция exec() считывает входную строку, как оператор Python и выполняет ее.
Сравниваем 2 лица на фото с помощью Python

Для сравнения двух лиц на фото в Python можно использовать библиотеку face_recognition.

В этом примере мы сначала загружаем изображения лиц и находим лица на изображениях с помощью функции face_locations().

Затем мы кодируем найденные лица с помощью функции face_encodings() и сравниваем их между собой с помощью функции compare_faces(). Результат сравнения — список булевых значений (True или False), которые сообщают, совпадают ли два лица на фото.
Реализуйте алгоритм сортировки слиянием (Merge Sort) на Python. Напишите код и объясните, как работает этот алгоритм. Расскажите о его сложности и возможных оптимизациях.

Объяснение:
Алгоритм сортировки слиянием (Merge Sort) использует стратегию «разделяй и властвуй». Он состоит из двух основных шагов:

Разделение (Divide): Массив разделяется на две равные (при четном числе элементов) или почти равные (при нечетном) части. Этот процесс рекурсивно выполняется для каждой из подпоследовательностей.
Слияние (Merge): Отсортированные подпоследовательности сливаются обратно в один отсортированный массив.

Сложность:
Временная сложность: O(n log n) в худшем, лучшем и среднем случаях.
Пространственная сложность: O(n).

Оптимизации:
— При реализации можно использовать вставочную сортировку для маленьких подмассивов, так как у нее меньшая константа в асимптотике.
— Если массив уже отсортирован, можно добавить проверку и пропустить шаг сортировки.
— Вместо копирования подмассивов при каждом рекурсивном вызове можно использовать вспомогательный массив для слияния, что уменьшит использование памяти.
Что такое list comprehension?

List comprehension — это удобный способ создания списков за счет компактной записи.

Синтаксис list comprehension выглядит так: [выражение for элемент in итерируемый_объект if условие]

List comprehension позволяет за одну строку кода:
— Пройти циклом по итерируемому объекту.
— Отфильтровать элементы по нужному условию.
— Сформировать результирующий список.

По сравнению с обычным циклом, list comprehension более компактен, читабелен и эффективен.
Это идиоматичный прием, широко используемый для создания списков.
Функция compress

Функция compress из itertools используется для фильтрации элементов входной последовательности на основе соответствующих элементов булевой последовательности.

Код с картинки создает новый список, включающий только элементы data, для которых соответствующее значение в selectors является True. В данном случае результат будет [1, 3, 5].
Ruff

Ruff — это новый, быстроразвивающийся линтер Python кода, призванный заменить flake8 и isort.

Основным преимуществом Ruff является его скорость. Ruff в 10-100 раз быстрее аналогов (Линтер написан на Rust). В сравнении с flake8, автор заявляет о практически полном совпадении с набором правил инструмента и нативной реализацией популярных плагинов (flake8-bugbear и т.д.). Также Ruff совместим с Black «из коробки».

Ruff может форматировать код. Например, он автоматически удаляет неиспользуемые импорты. Что касается сортировки и группировки строк импорта, то она практически идентична isort.
-35% на курс основы программирования на Python

🎄 Новый год начинается с подарков, а хороший подарок для себя — новые знания со скидкой 35%!

🌟«Основы программирования на Python» — 12 990 ₽ (вместо 19 990 ₽)

Освоите знания для старта карьеры и научитесь программировать на одном из самых востребованных языков программирвоания.

Вас ждет бессрочный доступ ко всем материалам курса и развернутая обратная связь по всем домашним заданиям, а также ссылки на полезные дополнительные материалы.

🔥 Переходите и активируйте вводные занятия курсаhttps://proglib.io/w/a04562c2
PyBrain

PyBrain — это библиотека машинного обучения, которая предоставляет широкий набор алгоритмов и инструментов для обучения нейросетей и других задач машинного обучения.

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

PyBrain может использоваться для решения широкого спектра задач машинного обучения, включая:
— Классификация: обучение нейронной сети для классификации входных данных в один из нескольких классов.
— Регрессия: обучение нейронной сети для прогнозирования непрерывных значений.
— Обнаружение аномалий: обучение нейронной сети для обнаружения аномальных входных данных.
Функция sample()

Функция sample() модуля random в Python возвращает случайную выборку элементов из последовательности. В первом параметре функции указываем последовательность, во втором параметре — количество элементов, которые мы хотим выбрать случайным образом.
🐍 У нас есть еженедельная email-рассылка, посвященная последним открытиям и тенденциям в мире Python.

В ней:
● Новые возможности в последних версиях Python
● Работа с базами данных и SQL в Python
● Веб-разработка на Django и Flask
● Машинное обучение и анализ данных с помощью Python
● Автоматизация и работа с API на Python
● Тестирование и отладка кода на Python
● Задачи для новичков с решениями

👉Подписаться👈
Функция compress

Функция compress из itertools используется для фильтрации элементов входной последовательности на основе соответствующих элементов булевой последовательности.

Код с картинки создает новый список, включающий только элементы data, для которых соответствующее значение в selectors является True. В данном случае результат будет [1, 3, 5].
Библиотека PyGObject

PyGObject — это библиотека, которая предоставляет привязки к библиотеке GObject используемой в GNOME.
Она позволяет использовать GTK+ и другие библиотеки GNOME для создания графических интерфейсов пользователя.

PyGObject можно использовать для разработки кроссплатформенных GUI-приложений, которые будут работать в средах Linux, Windows и macOS.
С его помощью можно создавать оконные приложения, виджеты, диалоги и другие элементы интерфейса на языке Python.
pow()

В Python функция pow() используется для вычисления степени числа. Вот как она работает:

result = pow(x, y, z)

где: x — основание степени,
y — показатель степени,
z (необязательный параметр) — модуль, по которому производится вычисление.
Если z указан, то pow(x, y, z) возвращает (x y) % z. Если z не указан, то возвращается x y.
Модульное программирование

Модульное программирование — это парадигма программирования, в которой программа делится на отдельные модули, каждый из которых выполняет конкретную функцию. Модули должны быть независимыми друг от друга, то есть они должны иметь собственные входные и выходные данные и не должны взаимодействовать друг с другом напрямую.
Реализуйте алгоритм поиска в ширину BFS для графа.

Алгоритм поиска в ширину (BFS) используется для обхода или поиска в графе. Он начинает с выбора стартовой вершины и пошагово распространяется по всем смежным вершинам.

Шаги алгоритма:
1. Создается пустое множество visited для отслеживания посещенных вершин и очередь queue для управления порядком обхода.
2. Стартовая вершина добавляется в очередь и отмечается как посещенная.
3. Пока очередь не пуста, извлекается вершина из начала очереди (queue.popleft()).
4. Выводится значение текущей вершины и добавляются в очередь все её смежные вершины, которые еще не были посещены.
5. Шаги 3-4 повторяются до тех пор, пока очередь не опустеет.

Сложность:
Временная сложность: O(V + E), где V — количество вершин, E — количество ребер в графе.
Пространственная сложность: O(V), так как используется множество для отслеживания посещенных вершин.
Функция cv2.blur()

Вы можете размыть изображение в Python с помощью функции OpenCV cv2.blur().

Выше приводится простой пример, в котором нужно размыть изображение и сохранить его.

Ознакомиться подробнее можно здесь.