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”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 27 اوت, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
import re
# Пример текста
text = "Контакт: example@example.com, телефон: +7-123-456-7890"
# Регулярные выражения для извлечения email и телефона
email_pattern = r'\b[\w.-]+?@\w+?\.\w{2,4}\b'
phone_pattern = r'\+?\d{1,2}[- ]?\d{3}[- ]?\d{3}[- ]?\d{4}'
# Найти все совпадения
emails = re.findall(email_pattern, text)
phones = re.findall(phone_pattern, text)
# Результат
print("Найденные email:", emails)
print("Найденные телефоны:", phones)
# Создание виртуального окружения
python3 -m venv venv
# Активация виртуального окружения
source venv/bin/activate
# Установка основных зависимостей
pip install django djangorestframework psycopg2
# Создание файла requirements.txt
pip freeze > requirements.txt
# Инициализация нового проекта Django
django-admin startproject myproject
# Переход в директорию проекта
cd myproject
# Запуск сервера для проверки
python manage.py runserver
установить зависимости
pip install transformers accelerate torch sentencepiece
# пример запуска DeepSeek из Python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_name = "deepseek-ai/deepseek-coder-6.7b-base"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto" # если есть GPU — модель сама её использует
)
prompt = "Напиши на Python функцию, которая проверяет, простое ли число."
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(
**inputs,
max_new_tokens=160,
temperature=0.4
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))packaging стал ощутимо быстрее — и это реально заметно в больших проектах
Свежий апдейт библиотеки packaging (библиотека, которую используют pip и многие инструменты для сравнения версий и работы с зависимостями) принёс заметное ускорение ключевых операций. Это важно, потому что такие функции вызываются тысячи раз при установке зависимостей, разрешении версий и т.д.
Главное, что ускорили:
• Быстрее парсинг и сравнение версий (`Version` и `SpecifierSet`).
• Некоторые операции (сравнения, фильтрации, хэши) стали в несколько раз быстрее.
• Оптимизации направлены на самые “узкие места”, которые чаще всего тормозят pip и другие инструменты.
Почему это важно для тебя:
• pip будет работать быстрее при установке больших стеков зависимостей.
• Инструменты сборки и CI/CD быстрее считают совместимость версий.
• Оптимизация сделана без потери корректности и без усложнения API.
В целом это пример, как базовая утилита в экосистеме Python может ускориться не из-за нового синтаксиса, а за счёт глубокого профилирования и целевых улучшений.
Подробнее о скорости и измерениях — в исходном разборе изменений.
https://iscinumpy.dev/post/packaging-faster/
Установка:
pip install pyautogui
import pyautogui
import time
# Безопасность: переместите мышь в верхний левый угол, чтобы аварийно остановить
pyautogui.FAILSAFE = True
# Пауза перед стартом (5 секунд, чтобы открыть нужное окно)
print("Старт через 5 секунд...")
time.sleep(5)
# Координаты для клика (узнать можно через pyautogui.position())
x, y = 800, 500
# Количество кликов
clicks = 100
# Интервал между кликами (в секундах)
interval = 0.5
for i in range(clicks):
pyautogui.click(x, y)
print(f"Клик {i+1}")
time.sleep(interval)
print("Готово!")
⚡️Max
# Этот код выполняется СНАРУЖИ и запускает инжект внутрь процесса
import sys
target_pid = 12345 # PID запущенного Python процесса
payload = r"""
import os
import time
print("✅ Injected into running process!")
print("PID:", os.getpid())
print("Time:", time.time())
# Пример: читаем что есть в глобальном пространстве
g = globals()
print("Globals keys sample:", list(g.keys())[:10])
# Пример: создаём переменную прямо в процессе
INJECTED_FLAG = True
"""
# Новое API Python 3.14
sys.remote_exec(target_pid, payload)
Пример 2: инжектим debugpy (дебаг без рестарта)
Самая хайповая штука - можно подключить debugpy в уже живое приложение.
То есть приложение уже крутится, у него есть состояние, и ты просто включаешь “прослушку” дебаггера на порту.
import sys
target_pid = 12345 # PID работающего uvicorn / fastapi процесса
payload = r"""
import debugpy
HOST = "0.0.0.0"
PORT = 5679
debugpy.listen((HOST, PORT))
print(f"🐞 debugpy is listening on {HOST}:{PORT}")
# если хочешь остановить выполнение и ждать пока подключишь IDE:
# debugpy.wait_for_client()
# print("✅ debugger attached!")
"""
sys.remote_exec(target_pid, payload)
Дальше:
- ты делаешь port-forward (если Docker/K8s)
- подключаешь VS Code / PyCharm / nvim к localhost:5679
- ставишь breakpoints и дебажишь как обычно
Что важно
1) Это не “удалённое выполнение” как ssh.
Это прям “внутри процесса” - доступ к памяти, переменным, импортам.
2) Это опасно для продакшена.
Требует прав уровня SYS_PTRACE (можно читать/менять процессы) - поэтому только для локалки/стендов.
3) Это может стать стандартом для отладки контейнеров:
- баг воспроизводится только в k8s
- рестарт = баг пропал
- а тут просто подключился и посмотрел
https://www.youtube.com/watch?v=bYPFktmui4c
import numpy as np
def softmax(x: np.ndarray) -> np.ndarray:
x = x - np.max(x) # стабилизация
e = np.exp(x)
return e / np.sum(e)
# Допустим, у нас 3 токена в контексте.
# Для простоты возьмём маленькую размерность векторов (d=2).
# Query - "что я ищу"
# Key - "что я такое"
# Value - "какую инфу несу"
Q = np.array([1.0, 0.5]) # Query для текущего токена (например, слово "он")
K = np.array([
[1.0, 0.0], # Key токена 1 (например, "ключи")
[0.9, 0.1], # Key токена 2 (например, "стол")
[0.0, 1.0], # Key токена 3 (например, "рядом")
])
V = np.array([
[10.0, 0.0], # Value токена 1
[0.0, 10.0], # Value токена 2
[5.0, 5.0], # Value токена 3
])
# 1) Считаем "похожесть" Q на каждый K через скалярное произведение
scores = K @ Q # shape: (3,)
print("scores:", scores)
# 2) Нормализуем оценки -> получаем веса внимания
weights = softmax(scores)
print("attention weights:", weights)
# 3) Итоговый вектор = взвешенная сумма Value
output = weights @ V # shape: (2,)
print("output (context mixed):", output)
# Интерпретация:
# Если вес токена 2 ("стол") самый большой, значит модель "смотрит" на него сильнее всего.read, write, edit, glob, grep, bash
- Ведение истории беседы
- Цветной вывод в терминале
📌 GitHub: https://github.com/1rgs/nanocode
#pythonimport pdb
def calculate_factorial(n):
if n < 0:
raise ValueError("Negative values are not allowed")
elif n == 0:
return 1
else:
return n * calculate_factorial(n - 1)
def main():
num = 5
pdb.set_trace() # Запускаем отладчик здесь
result = calculate_factorial(num)
print(f"Factorial of {num} is {result}")
if __name__ == "__main__":
main()
t.me/ai_machinelearning_big_data - наш телеграм канал с урокамиpyPFC позволяет запускать PFC-симуляции быстро и удобно прямо на Python.
Что такое Phase Field Crystal (PFC)?
PFC (Phase Field Crystal) - это метод моделирования, который описывает материал как непрерывное поле плотности.
Проще:
- вместо того чтобы симулировать каждый атом отдельно (как в molecular dynamics)
- PFC моделирует “узор кристаллической решётки” как волну/поле
За счёт этого PFC может моделировать процессы на более длинных временных масштабах, чем классические атомарные симуляции.
PFC используют, чтобы изучать:
- рост кристаллов и формирование структуры
- дефекты решётки (дислокации)
- зернистость и границы зёрен
- фазовые переходы и самоорганизацию
- поведение материалов при охлаждении/нагреве
Что даёт pyPFC:
⚡ ускорение на GPU через PyTorch (можно гонять и на CPU, и на RTX)
🧪 готовые 3D-симуляции, примеры, эксперименты
🧩 удобно для исследований и обучения
📦 open-source проект + нормальная инженерная структура
GitHub:
https://github.com/HHallb/pyPFC
# 1) Установи Ollama (macOS/Linux/Windows)
# https://ollama.com
# 2) Запусти экономичную DeepSeek модель
ollama pull deepseek-r1:8b
ollama run deepseek-r1:8b
# 3) Проверка: запрос к локальному API
curl http://localhost:11434/api/generate \
-d '{"model":"deepseek-r1:8b","prompt":"Explain transformers simply","stream":false}'
# 4) Использование из Python
python - << 'PY'
import requests
r = requests.post(
"http://localhost:11434/api/generate",
json={
"model": "deepseek-r1:8b",
"prompt": "Сделай краткий план изучения SQL за 7 дней",
"stream": False
},
timeout=120
)
print(r.json()["response"])
PY
https://www.youtube.com/shorts/zjn2pXrGbXI
def count_above_avg(nums, avg=sum(nums)/len(nums)):
count = 0
for n in nums:
if n > avg:
count += 1
return count
data1 = [1, 2, 3, 4, 5]
data2 = [10, 20, 30]
print(count_above_avg(data1))
print(count_above_avg(data2))
Проблема в этой строке:
```python
def count_above_avg(nums, avg=sum(nums)/len(nums)):
```
Здесь используется значение по умолчанию, которое вычисляется один раз — в момент определения функции, а не при каждом её вызове.
Что происходит по шагам:
Когда Python читает определение функции, он сразу считает:
sum(nums)/len(nums)
Но nums в этот момент - это первый переданный список, то есть data1.
Значение avg фиксируется и больше не меняется.
При вызове:
• count_above_avg(data2)
• среднее значение не пересчитывается, используется старое — от data1.
Поэтому логика ломается, функция работает с неверным средним.
📌 Это известная ловушка Python
Значения аргументов по умолчанию вычисляются один раз.
Это та же причина, почему списки и словари в дефолтных параметрах часто приводят к багам.
🛠 Правильное решение
Нужно вычислять среднее внутри функции, а не в параметрах:
```python
def count_above_avg(nums, avg=None):
if avg is None:
avg = sum(nums) / len(nums)
return sum(1 for n in nums if n > avg)
```
Теперь среднее будет считаться заново при каждом вызове.
💡 Главное правило
Никогда не используй вычисляемые или изменяемые объекты как значения по умолчанию:
❌ def f(x, lst=[])
❌ def f(x, avg=sum(x)/len(x))
✅ Используй None и считай внутри функции.transformers, дружит с Flash Attention 2 и, само собой, поддерживается PaddlePaddle 3.2.1.
Если нужно быстро поднять сервис - есть готовый Docker-образ.
🟡Пара важных моментов по использованию
Если нужен полноценный постраничный парсинг всего документа, лучше использовать официальный пакет PaddleOCR. Реализация через transformers пока ограничена только распознаванием отдельных элементов и споттингом.
В пайплайн встроили логику препроцессинга. Если картинка меньше 1500 пикселей, она автоматом апскейлится фильтром Lanczos. При этом есть потолок в 1.6 млн. пикселей для споттинга, это чтобы не перегружать память GPU и сохранить читаемость мелкого шрифта.📌Лицензирование: Apache 2.0 License. 🟡Модель 🟡Arxiv 🟡Demo 🟡DeepWiki 🖥Github @ai_machinelearning_big_data #AI #ML #VL #OCR #PaddleOCR
import time
# Ручной подход
def manual_sum(n):
total = 0
for i in range(1, n + 1):
total += i
return total
# Питон-метод
def python_sum(n):
return sum(range(1, n + 1))
# Сравнение производительности
n = 1000000
start_time = time.time()
manual_result = manual_sum(n)
manual_time = time.time() - start_time
start_time = time.time()