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

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

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

Для обратной связи: @proglibrary_feeedback_bot
加入频道
🪞 Что такое отображение (mapping)?

Отображение — это тип контейнера, в котором элементы хранятся в виде пар ключ–значение. Такой объект предоставляет доступ к значениям по ключу, а не по индексу, как в списках. В Python отображения реализуют интерфейсы абстрактных базовых классов collections.abc.Mapping (для неизменяемых) и collections.abc.MutableMapping (для изменяемых).

К основным методам отображения относятся:
get()безопасное получение значения по ключу
items(), keys(), values()для перебора элементов, ключей и значений соответственно
update(), pop(), setdefault() и др. — для изменяемых отображений

Примеры отображений в Python:
dictстандартный словарь
defaultdictсловарь с значениями по умолчанию
OrderedDictсохраняет порядок добавления элементов (до Python 3.7)
Counterсловарь для подсчёта элементов

Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Завтра запускаем ML-ракету: последние места на борту

Уже завтра, 21 апреля, состоится наш воркшоп «Математика машинного обучения на практике», где теория ML превращается в практические навыки.

Что вас ждет:
📍 Работа с реальными данными — табличные датасеты и изображения
📍 Снижение размерности через PCA — научитесь отделять важное от второстепенного
📍 Обучение моделей — Random Forest и градиентный бустинг в действии
📍 Разбор метрик и гиперпараметров — как настроить модель на максимальную эффективность
📍 Написание кода на Python — прямо как реальных проектах
📍 Персональный code review от эксперта — бесценный фидбек для вашего роста
📍 Доступ в закрытый чат участников — нетворкинг и обмен опытом

Кто проводит воркшоп:

Мария Горденко — инженер-программист, старший преподаватель НИУ ВШЭ и Proglib Academy, руководитель магистратуры от ГК Самолет и Альфа-Банка.

Стоимость участия: 3990₽
Когда: завтра, 21 апреля

👉 Забронировать место на воркшопе: https://proglib.io/w/f0157e5f
Please open Telegram to view this post
VIEW IN TELEGRAM
🔑 Что возвращает метод items() в Python?

Метод items() у словаря в Python возвращает специальный объект представленияdict_items. Этот объект содержит все пары ключ–значение, которые находятся в словаре на момент вызова метода. Главное, что стоит понимать — это не копия данных, а динамическое отображение текущего состояния словаря.

➡️ То есть, если после вызова items() словарь изменится (например, будут добавлены новые элементы или удалены существующие), это сразу отразится и на объекте items().

Пример:
d = {'a': 1, 'b': 2}
pairs = d.items()
print(pairs) # dict_items([('a', 1), ('b', 2)])

d['c'] = 3
print(pairs) # dict_items([('a', 1), ('b', 2), ('c', 3)])


Это поведение делает items() очень удобным для просмотра и итерации по словарю, но важно помнить об осторожности при изменении словаря во время обхода — это может вызвать RuntimeError, так как структура данных меняется в процессе итерации.

Также объекты, возвращаемые items(), поддерживают несколько стандартных операций:
➡️ iter(d.items())можно получить итератор по парам ключ-значение
➡️ len(d.items())вернёт общее число пар в словаре
➡️ (k, v) in d.items()позволяет проверить, содержится ли конкретная пара ключ-значение в словаре

🌸 В Python 2.7 аналогичную функцию выполняет метод viewitems(), но начиная с Python 3, items() уже по умолчанию возвращает объект-представление.

Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉🐙🐱 20 лет Git: все такой же необычный, все такой же великолепный

Легендарному Git стукнуло 20! Вспоминаем, как проект, который Линус Торвальдс называл «тупым менеджером контента», стал незаменимым инструментом для всех, кто хоть раз писал код или даже просто хранил файлы.

Погружаемся в историю, эволюцию и влияние Git на индустрию разработки.

➡️ Читать статью

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
🔑 Каким будет результат следующего выражения: -31 % 10?

Результатом выражения -31 % 10 будет 9. Это происходит потому, что для отрицательных чисел оператор % возвращает остаток от деления первого числа на второе немного другим образом. -31 % 10 = -3 — 1/10 и в ответ мы получим 10 — 1 = 9.

Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
🔑 Что такое хэширование?

Напомним, что Хэширование — это преобразование некоторого объема информации в уникальный набор символов, присущий только этому массиву информации. Широко используется в криптографии.

Для создания хэш-значений есть удобный модуль hashlib, содержащий ряд полезных хэш-функций. Использование довольно простое: в модуле имеется ряд конструкторов, соответствующих названиям хэш-функций. В конструктор мы можем передать байт-строку, хэш которой мы хотим получить, на выходе мы получим объект хэша.


Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 Как ускорить выполнение запросов к базе данных в Django

Когда Django-запросы вытягивают из базы больше данных, чем нужно, это тормозит работу приложения. Чтобы ускорить выполнение и уменьшить нагрузку, можно использовать методы:

〰️ defer() — откладывает загрузку указанных полей до их фактического использования
〰️ only() — загружает только указанные поля, остальные — по запросу
〰️ exclude() — фильтрует объекты, исключая ненужные

В статье — практические примеры на базе веб-приложения для агентства недвижимости: как применять эти методы, чтобы получать только нужные данные и ускорять запросы.

🔗 Подробнее в статье: https://proglib.io/sh/2vagPRorTU

Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
✍🏻 Для чего могут применять конструкцию try finally без except?

Конструкция try-finally без блока except может применяться в следующих случаях:

— Для закрытия файлов после работы с ними, даже если произошла ошибка.
— Для освобождения ресурсов, таких как сетевые соединения или блокировки.
— Для отмены каких-либо длительных операций или процессов в случае прерывания работы программы. Например, отмена запущенных потоков.
— Для логирования или уведомления о завершении блока кода, даже если в нем произошла ошибка.
— Для выполнения необходимой логики по завершении работы блока кода вне зависимости от результата, например сброс счетчиков.


Библиотека собеса по Python
Какой метод использовался до оператора in для проверки наличия ключа в словаре?

До появления оператора in в Python, чтобы проверить, содержит ли словарь определенный ключ, использовался метод словаря has_key().

Этот метод принимал в качестве аргумента проверяемый ключ и возвращал логическое значение - True, если ключ присутствовал в словаре, и False - если нет.

В Python 2.5 появился более понятный и краткий оператор in, поэтому сейчас рекомендуется использовать именно его, а has_key() считается устаревшим.


Библиотека собеса по Python
Зачем нужна pass?

Конструкция pass в Python представляет собой пустой оператор. Она применяется в тех случаях, когда синтаксис требует наличия оператора, но выполнять никаких действий не требуется. Это может быть особенно полезно при создании заглушек для функций, которые будут реализованы позже, или в циклах, где на текущей итерации не нужно выполнять никаких операций.

Библиотека собеса по Python
Как работает метод __new__() в Python?

Метод __new__() отвечает за создание нового экземпляра класса, выделяя необходимую память для объекта. Он вызывается раньше метода __init__(), который уже занимается инициализацией созданного экземпляра. Это особенно важно при работе с неизменяемыми типами, такими как str или int, а также в ситуациях, когда требуется контролировать процесс создания объекта, например, в паттерне Singleton.

Библиотека собеса по Python
🔥 IT Breaking Memes — 30 000 ₽ за самую смешную IT-новость

Библиотека программиста запускает конкурс, который взорвет вашу ленту: создайте самую смешную альтернативную версию реальной IT-новости!

👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.

🏆 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе

Пример:
Реальная новость: «Гугл создала модель для общения с дельфинами».

Смешная альтернатива: «Нейросеть от Гугл обрабатывает видеопоток с камеры в свинарнике. ИИ следит, сколько свинья находится возле кормушки, не отталкивают ли ее собратья. Недокормленных докармливают, а переевшие пропускают следующую кормешку».

📅 Сроки: с 29 апреля по 11 мая включительно

Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8

Ждем ваших новостей!
🐍 Пиши как профи: 10 Python-лайфхаков для новичков

Лайфхаки от разработчиков, обжёгшихся до вас

➡️ Что вас ждет внутри:
— почему if x == True: — это преступление
— как списковые включения экономят часы
— зачем линтер важнее кофе
— и почему def func(start_list=[]) может испортить тебе вечер
— как не сойти с ума от зависимостей (и что делать с виртуальными окружениями)
— секретный power move: dir(), help() и другие встроенные суперсилы

И всё это без занудства и «книг для чайников». Просто, по делу, с примерами и личным опытом от бывалых питонистов

📎 Статья

🔵 Начинайте свой путь в программировании и прокачивайте свои навыки с нашим курсом «Основы программирования на Python»

Proglib Academy #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Как устроено преобразование типов в Python?

▪️Преобразование типов — это преобразование объекта из одного типа данных в другой тип данных.

▪️Неявное преобразование типов автоматически выполняется интерпретатором Python.

▪️Python позволяет избежать потери данных в неявном преобразовании типов.

▪️Явное преобразование типов также называется приведением типов, типы данных объекта преобразуются с использованием предопределенной функции.

▪️При приведении типов может произойти потеря данных, поскольку мы приводим объект к определенному типу данных.


Библиотека собеса по Python
Что такое MRO?

MRO (Method Resolution Order) — это механизм, используемый для определения порядка разрешения методов при наследовании классов и множественном наследовании. MRO определяет, какие методы будут вызываться в случае, когда у наследующего класса есть методы с одинаковыми именами, унаследованными от разных базовых классов.

MRO в Python определяется с помощью алгоритма C3 Linearization (C3 линеаризации). Этот алгоритм гарантирует, что порядок разрешения методов будет согласован и предсказуем вне зависимости от порядка наследования. Он предотвращает проблемы, связанные с амбигуитетами и неоднозначностями в множественном наследовании.


Библиотека собеса по Python
👨‍🎓️ Кто есть кто в команде data science: путеводитель по профессии

О data scientist часто говорят, будто это одна профессия, хотя в науке о данных существуют и другие специализации. Расскажем, из каких направлений можно выбирать и что потребуется для их изучения.

🔗 Читать статью
Объясните, как в Python осуществляется управление памятью.

В Python объекты и структуры данных data structures находятся в закрытой динамически выделяемой области private heap, которая управляется менеджером памяти Python. Он делегирует часть работы программам распределения ресурсов allocators, закрепленным за конкретными объектами, и одновременно с этим следит, чтобы они не выходили за пределы динамически выделяемой области.

По факту данной областью управляет интерпретатор interpreter. Пользователь никак не контролирует данный процесс, даже когда манипулирует ссылками объектов на блоки памяти внутри динаической области. Менеджер памяти Python распределяет пространство динамической области среди объектов и другие внутренние буферы по требованию.
🔥 Конкурс: 30 000 ₽ за самую смешную IT-новость

Напоминаем о конкурсе «Библиотеки программиста»: напишите самую смешную версию реальной новости про технологии.

👾 Правила просты:
1. Берете настоящую новость из мира технологий.
2. Переписываете ее так, чтобы смеялись все.
3. Получаете деньги и славу.

🎁 Призы:
- 1 место: 30 000 ₽ + статус ведущего нового юмористического IT-канала
- 2 и 3 место: по 5 000 ₽ + вечный почет в IT-сообществе

🏆 Как будем оценивать:
Мы выложим новости всех участников в одном из наших телеграм-каналов. Те новости, которые наберут больше всего охвата, войдут в шорт-лист. Из шорт-листа подписчики и жюри выберут победителя.

📅 Сроки: прием новостей до 11 мая включительно

Для участия отправьте свою смешную новость в гугл-форму: https://forms.gle/6YShjgfiycfJ53LX8

Осталась неделя — ждем ваших новостей!