Python вопросы с собеседований
Вопросы с собеседований по Python @workakkk - админ @machinelearning_interview - вопросы с собесдований по Ml @pro_python_code - Python @data_analysis_ml - анализ данных на Python @itchannels_telegram - 🔥 главное в ит РКН: clck.ru/3FmrFd
نمایش بیشتر📈 تحلیل کانال تلگرام Python вопросы с собеседований
کانال Python вопросы с собеседований (@python_job_interview) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 24 822 مشترک است و جایگاه 5 258 را در دسته فناوری و برنامهها و رتبه 26 472 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 24 822 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 25 اوت, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -44 و در ۲۴ ساعت گذشته برابر 0 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 6.01% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 2.76% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 1 492 بازدید دریافت میکند. در اولین روز معمولاً 684 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 6 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند github, api, собеседование, git, docker تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“Вопросы с собеседований по Python
@workakkk - админ
@machinelearning_interview - вопросы с собесдований по Ml
@pro_python_code - Python
@data_analysis_ml - анализ данных на Python
@itchannels_telegram - 🔥 главное в ит
РКН: clck.ru/3FmrFd”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 29 اوت, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
.pyc отличается от .py
• Что такое GIL
• Будет ли возвращать что-то функция без return?
• Что такое миксины
• Сколько может быть родителей и наследников у класса
• Что такое json, xml
• Какой паттерн программирования реализует Django
• Что такое JOIN и какой он может быть
• Метаклассы в Python
📎 Вопросы и ответы
@python_job_interviewdef find_all_keys(input_dict: dict) -> list:
result = []
for key, val in input_dict.items():
if key.startswith('description'):
result.append(val)
if isinstance(val, dict):
result.extend(find_all_keys(val))
return result
Функция перебирает все элементы словаря и либо кладет его в новый словарь с результатами, если есть совпадение с искомым, либо запускает сама себя для элементов, представляющие собой так же словарь. На выходе получается массив найденных значений.
🟡Для запуска поиска нужно создать переменную под массив с результатам и вызвать созданную функцию, передав ей исходный словарь:
data = yaml.safe_load(Path(sys.argv[1]).read_text())
descriptions = find_all_keys(data)
Ну вот, теперь на одну проблемную задачу меньше)
@python_job_interviewpip install requests numpy pandas
Создайте файл requirements.txt с полным списком зависимостей:
requests
numpy
pandas
Упакуйте зависимости в архив:
pip freeze > requirements.txt
Можно передать файл requirements.txt другим пользователям вашего проекта, которые могут установить все зависимости одной командой:
pip install -r requirements.txt
Для упаковки бинарных зависимостей можно использовать инструмент wheel. Wheel-файлы - это zip-архивы, содержащие установочные файлы для Python-пакетов, и могут содержать бинарные расширения (например, скомпилированные модули C), которые необходимо собрать и установить на целевой машине.
Для создания wheel-файла для Python-пакета можно использовать команду pip wheel. Например, если есть файл с требованиями requirements.txt, содержащий список зависимостей вашего проекта, можете создать wheel-файлы для всех зависимостей с помощью следующей команды:
pip wheel -r requirements.txt
Вы также можете установить wheel-файлы с помощью pip install, указав имя файла:
pip install mypackage-1.0.0-py3-none-any.whl
Таким образом, вы можете создавать и распространять бинарные зависимости в виде wheel-файлов и использовать их при установке пакетов на других устройствах.
@python_job_interview__iter__() и __next__(). Метод __iter__() возвращает сам итератор, а __next__() — следующий элемент коллекции. Если элементы заканчиваются, __next__() должен вызвать исключение StopIteration. Итераторы позволяют явно перебирать элементы коллекции, не требуя, чтобы все элементы были доступны в памяти одновременно.
🔘Генераторы — это специальный способ реализации итераторов. Они создаются при помощи функций с ключевым словом yield. Главное отличие генератора заключается в том, что значения генерируются по требованию. Каждый раз, когда генератор достигает yield, он возвращает значение и «замирает», сохраняя своё состояние до следующего вызова. Это позволяет использовать меньше памяти при итерации по длинным последовательностям.
#вопросы_с_собеседованийdef check(string):
brackets_open = ('(', '[', '{', '<')
brackets_closed = (')', ']', '}', '>')
stack = []
for i in string:
if i in brackets_open:
stack.append(i)
if i in brackets_closed:
if len(stack) == 0:
return False
index = brackets_closed.index(i)
open_bracket = brackets_open[index]
if stack[-1] == open_bracket:
stack = stack[:-1]
else: return False
return (not stack)
Проверяем, как работает:
str1 = '[{([[[<>]]])(<>)(){}}]'
str2 = ']()(){<>}[[()]]'
print(check(str1)) #True
print(check(str2)) #False
🟡Ну а если хочется вызвать особые чувства у собеседующего — используйте Regex (второе изображение)
@python_job_interview
def remove_duplicates(first):
if not first:
return
nextone = first
while nextone:
runner = nextone
while runner.next:
if runner.next.val == nextone.val:
runner.next = runner.next.next
else:
runner = runner.next
nextone = nextone.next
return first
Функция remove_duplicates принимает на вход один аргумент first, в который мы передаем начало списка.
Далее создаем переменную nextone, которая инициализируется значением first. nextone используем для перемещения по списку, она указывает на текущий элемент. То есть эта переменная является первым указателем. Переменная runner — второй указатель.
🟡Метод с использованием хеш-таблицы
Этот подход к удалению дубликатов в связанном списке использует хеш-таблицу, чтобы отслеживать пройденные уникальные значения.
def remove_duplicates(list_head):
if not list_head:
return
seen = set()
current = list_head
prev = None
while current:
if current.val in seen:
prev.next = current.next
else:
seen.add(current.val)
prev = current
current = current.next
return list_head
Функция remove_duplicates принимает на вход один аргумент list_head, в который мы передаем начало списка. Она проверяет, пуст ли список. Если да, она возвращает результат и завершает работу. Если в списке содержится хотя бы один элемент, функция начинает их обрабатывать.
Далее создаем множество seen, которое будем использовать для отслеживания уникальных значений связанного списка.
📎 Подробнее
@python_job_interviewexpr_str = "[1, 2, 3, 4]"
Как эту строку можно преобразовать в список?
Вот, аж целых четыре способа
🟡Вариант 1
from ast import literal_eval
res = literal_eval(expr_str)
🟡Вариант 2
import json
res = json.loads(expr_str)
🟡Вариант 3
import yaml
res = yaml.safe_load(expr_str)
🟡Вариант 4
res = [int(i) for i in re.findall('\d+', expr_str)]
@python_job_interview
import tracemalloc
tracemalloc.start() # начало трассировки памяти
# ваш код
snapshot = tracemalloc.take_snapshot() # текущее состояние памяти
top_stats = snapshot.statistics('lineno')
print("[ Top 10 ]")
for stat in top_stats[:10]:
print(stat)
Это выведет топ-10 участков кода с наибольшим использованием памяти. Однако, обратите внимание, что использование tracemalloc может снизить производительность программы и требует дополнительной обработки кода.
@linuxacademiyawords = ["Авто", "Велосипед", "Самолет"]И такая строка:
st = "Быстрый автомобиль"
Нужно вернуть True, т.к. в строке есть слово "авто" из списка.
▶️Можно вот так:
def is_part_in_list(st, words):
for word in words:
if word.lower() in st.lower():
return True
return False
print(is_part_in_list(st, words))
*️⃣Изящный вариант в одну строку:
print(any(word.lower() in st.lower() for word in words))
*️⃣Или можно вот так с маппингом вместо цикла для разнообразия:
print(any(map(text.lower().__contains__, map(st.lower, words))))
@python_job_interviewps aux | grep firefox
Это покажет все запущенные процессы Firefox, их PID и другую информацию.
Вы также можете использовать утилиту top, чтобы увидеть запущенные процессы и их PID. Команда top покажет текущую нагрузку на систему и список всех процессов, запущенных в данный момент. Она также отображает информацию о каждом процессе, включая его PID, процент использования процессора и использование памяти.
Чтобы узнать, сколько ресурсов занимает процесс, вы можете использовать утилиту ps. Команда ps отображает информацию о процессах, включая использование памяти. Вы можете использовать команду ps -p pid -o %cpu,%mem для показа процессорного и памятевого использования определенного процесса. Например:
ps -p 1234 -o %cpu,%mem
Это вернет процент использования процессора и памяти для процесса с PID 1234.
Если вы хотите увидеть более подробную информацию о процессах, вы можете использовать команду top.
В top вы можете сортировать процессы по использованию процессора или памяти, чтобы найти наиболее интенсивно использующий ресурсы процесс.
@python_job_interview