python_job_interview | Unsorted

Telegram-канал python_job_interview - Python вопросы с собеседований

24940

Вопросы с собеседований по Python @workakkk - админ @machinelearning_interview - вопросы с собесдований по Ml @pro_python_code - Python @data_analysis_ml - анализ данных на Python @itchannels_telegram - 🔥 главное в ит РКН: clck.ru/3FmrFd

Subscribe to a channel

Python вопросы с собеседований

@python_job_interview

Читать полностью…

Python вопросы с собеседований

🖥 Нужно временно отключить все принты — например, в проде или при юнит-тестах?

Этот трюк нужен, чтобы временно отключить принты не удаляя и не комментируя строки вручную.

На экране простой способ сделать это через контекстный менеджер — без сторонних библиотек и без комментирования строк.


import sys, os
from contextlib import contextmanager

@contextmanager
def suppress_print():
saved = sys.stdout
sys.stdout = open(os.devnull, 'w')
yield
sys.stdout.close()
sys.stdout = saved

Пример:

print("Это видно")
with suppress_print():
print("А это — нет")
print("Снова видно")


@python_job_interview - вопросы с собеседований Python

Читать полностью…

Python вопросы с собеседований

🚀 УСКОРЕНИЕ КОДА ЗА СЧЁТ ЛОКАЛЬНЫХ ПЕРЕМЕННЫХ

💡 Используй локальные переменные внутри циклов — это может ускорить выполнение на 20–30%, особенно в критичных по времени участках.

Почему это работает?
В Python доступ к локальной переменной быстрее, чем к глобальной или объектной, потому что локальные хранятся в массиве, а не в словаре.

Пример:


# Медленно: обращение к свойствам объекта в цикле
class Processor:
def __init__(self, data):
self.data = data

def compute(self):
total = 0
for item in self.data:
total += item * item
return total



# Быстрее: кэшируем ссылку на data как локальную переменную
class Processor:
def __init__(self, data):
self.data = data

def compute(self):
data = self.data # локальная переменная
total = 0
for item in data:
total += item * item
return total

# Прирост в скорости особенно заметен при больших объёмах данных```

Читать полностью…

Python вопросы с собеседований

🖥 Python Developer Stack — вся мощь Python-разработки в одном посте

Хочешь понять, какие инструменты реально нужны Python-разработчику? Лови универсальную шпаргалку по лучшим библиотекам и технологиям — от новичка до синьора.

📦 Управление пакетами
→ pip, conda, poetry — устанавливай, обновляй, фиксируй зависимости без боли.

🧠 AI & ML
→ TensorFlow, PyTorch, Scikit-learn — машинное обучение и нейросети.
→ NumPy, Pandas, Matplotlib, Seaborn — анализ и визуализация данных.

⚙️ Автоматизация и AI-агенты
→ LangGraph, CrewAI — создание LLM-агентов и пайплайнов.
→ Airflow, Celery, Luigi — ETL, очереди задач и планировщики.

🌐 Веб-фреймворки
→ Django, Flask, FastAPI — под любой масштаб.
→ Tornado, Pyramid — для сложных архитектур.

📊 Базы данных
→ PostgreSQL, MySQL, MongoDB, SQLite, Redis, Cassandra — SQL и NoSQL.

✍️ Тестирование
→ Pytest, Unittest, nose2 — пишем надёжный и протестированный код.

🔍 Web Scraping
→ BeautifulSoup, Scrapy, Selenium, Playwright — вытаскиваем данные даже с "закрытых" сайтов.

🤓 DevOps и деплой
→ Docker, Kubernetes, AWS, Heroku, GCP, Azure — всё для продакшн-сборок.

⌨️ IDE и редакторы
→ VS Code, PyCharm, Jupyter, Spyder — выбирай, где удобнее кодить.

💡 Git и CI/CD
→ Git, GitHub, GitLab, Bitbucket — контроль версий и автоматизация сборок.

🔥 Это не просто список. Это твой ориентир в мире Python. Сохрани, чтобы не искать дважды.

#python #разработка #шпаргалка #devtools #cheatsheet

Читать полностью…

Python вопросы с собеседований

🐍 Печатай переменные с их именами без повторов — с помощью f‑строк и := (walrus operator)

Вместо этого:


print(f"x = {x}, y = {y}, z = {z}")


Пиши так:

print(f"{x=}, {y=}, {z=}")

x=42, y='hello', z=[1, 2, 3]


🔥 А ещё лучше — используем := (оператор моржа) для печати и присваивания одновременно:

print(f"{(n := len(mylist))=}")


✅ Это одновременно сохранит len(mylist) в n и выведет его:


n=5

Читать полностью…

Python вопросы с собеседований

⚡️ Почему лучшие разработчики всегда на шаг впереди?

Потому что они знают, где брать настоящие инсайд!
Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе.

ИИ: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Devops: t.me/DevOPSitsec
Базы данных: t.me/sqlhub
Мл собес t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
МЛ: t.me/machinelearning_ru
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/java_library
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: /channel/gamedev
Физика: t.me/fizmat
SQL: t.me/databases_tg

Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: /channel/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: /channel/addlist/mzMMG3RPZhY2M2Iy

🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno

🖥 Chatgpt для кода в тг: @Chatgpturbobot -

📕Ит-книги: /channel/addlist/BkskQciUW_FhNjEy
💼ИТ-вакансии t.me/addlist/_zyy_jQ_QUsyM2Vi

Подпишись, чтобы всегда знать, куда двигаться дальше!

Читать полностью…

Python вопросы с собеседований

🧩 Задача:


funcs = []

for i in range(3):
def f():
return i
funcs.append(f)

results = [func() for func in funcs]
print(results)


❓ Что будет выведено?

Многие ожидают:



[0, 1, 2]


Но Python выведет:


[2, 2, 2]

🧠 Почему так?
В Python функции не копируют значения переменных, а запоминают ссылки на них.

Когда f() вызывается, она смотрит, чему равен i на момент вызова, а не на момент создания функции.

Переменная i в цикле после завершения становится равной 2 — и все три функции ссылаются на одну и ту же переменную i.

✅ Как это исправить?
Нужно «захватить» текущее значение i в локальной области видимости через аргумент по умолчанию:


funcs = []

for i in range(3):
def f(i=i):
return i
funcs.append(f)

results = [func() for func in funcs]
print(results) # [0, 1, 2]

🧠 Чему это учит:
Как работают замыкания и области видимости в Python.

Почему важно понимать, когда значения «захватываются», а когда — «ссылаются».

Читать полностью…

Python вопросы с собеседований

🍀 Большая шпаргалка по всем основам Python для подготовки к собеседованию

@python_job_interview

Читать полностью…

Python вопросы с собеседований

📦 Pydantic Extra Types — коллекция дополнительных типов данных для Pydantic, которые не вошли в основную библиотеку. Проект расширяет возможности валидации данных, предлагая специфические форматы и проверки.

Типы подключаются как опциональные зависимости, позволяя выбирать только нужные компоненты. Например, можно добавить поддержку pendulum для работы с временными зонами.

🤖 GitHub

@python_job_interview

Читать полностью…

Python вопросы с собеседований

🧠 Хитрая задача по Python — *ловушка с изменяемыми значениями по умолчанию*

Вопрос:
Что выведет следующий код?


def append_to_list(value, my_list=[]):
my_list.append(value)
return my_list

print(append_to_list(1))
print(append_to_list(2))
print(append_to_list(3))


Ваш ответ? 🤔

Многие ожидают:


[1]
[2]
[3]


Но фактически вывод будет:

python 
[1]
[1, 2]
[1, 2, 3]


🔍 Почему так происходит?

Параметр my_list=[] создаётся один раз — при определении функции. И он сохраняется между вызовами. То есть все вызовы функции используют один и тот же список по умолчанию.

Это одна из самых частых ошибок в продакшене.

✅ Правильный способ — использовать None как значение по умолчанию:



def append_to_list(value, my_list=None):
if my_list is None:
my_list = []
my_list.append(value)
return my_list

Теперь:


[1]
[2]
[3]

Каждый вызов получает новый список.

⚠️ Если вы работаете с функциями, которые принимают списки или словари — всегда проверяйте, не мутируется ли значение между вызовами.

Читать полностью…

Python вопросы с собеседований

👾 GREMLLM — теперь у ваших багов есть сознание

GREMLLM — это необычный Python-класс, в котором все методы и свойства создаются динамически с помощью LLM. Вы описываете, *что за объект вы хотите*, и дальше GREMLLM сам решает, что должно происходить при вызове методов или обращении к полям.

📦 Установка:


pip install gremllm


🔧 Пример:



from gremllm import Gremllm

counter = Gremllm('counter')
counter.value = 5
counter.increment()
print(counter.value) # → 6?
print(counter.to_roman_numerals()) # → VI?


🧩 Возможности:
– Динамическое поведение: всё определяется "на лету" с помощью LLM
– Поддержка OpenAI, Claude, Gemini, и локальных моделей
– Wet Mode: можно строить цепочки вызовов (методы возвращают объекты)
– Verbose Mode: выводит, какой код был сгенерирован
– Умная обработка ошибок и настройка через наследование

⚠️ Это экспериментальный инструмент. Не для продакшена. Но очень интересен для изучения LLM-интеграций в Python-код.

🔗 Репозиторий: https://github.com/ur-whitelab/gremllm

@pythonl

Читать полностью…

Python вопросы с собеседований

🔥 Google DeepMind представили новую open-source библиотеку на Python для сборки асинхронных AI‑пайплайнов в реальном времени!

Новая библиотека позволяет собирать AI-процессы из компонентов — как LEGO для ИИ-агентов.

🔧 Особенности:
- Построение асинхронных, компонуемых пайплайнов
- Поддержка Gemini и Gemini Live API
- Основана на asyncio
- Обрабатывает мультимодальные данные: текст, изображения, аудио
- Внутри готовые агенты: real-time агент, исследователь, live-комментатор

💡 Подходит для:
- Разработки ИИ-агентов
- Генеративных моделей, работающих в реальном времени
- Быстрой сборки MVP с мультимодальными возможностями

Установка:


pip install genai-processors


Открытый код, готовые компоненты и интеграция с API.

• Repo: https://github.com/google-gemini/genai-processors
• Blog: https://developers.googleblog.com/en/genai-processors/

@ai_machinelearning_big_data


#DeepMind #ai #ml

Читать полностью…

Python вопросы с собеседований

📌 Сложная задача для собеседования на Python: «Асинхронный кэш с TTL и инвалидацией».

Условие:
Реализуйте потокобезопасный асинхронный кэш с временем жизни записей, поддержкой инвалидации по ключу и автоматическим удалением устаревших записей. Кэш должен:
1️⃣ Хранить значения не дольше указанного TTL (seconds)
2️⃣ Автоматически очищать устаревшие записи без блокировки основного потока
3️⃣ Поддерживать асинхронные операции get/set
4️⃣ Иметь механизм ручной инвалидации
5️⃣ Гарантировать потокобезопасность
6️⃣ Оптимизировать память

Ожидаемое решение:

import asyncio
import time
from collections import OrderedDict
from typing import Any, Optional
import threading

class AsyncTTLCache:
def __init__(self, maxsize: int = 1024, ttl: int = 60):
self._cache = OrderedDict()
self._maxsize = maxsize
self._ttl = ttl
self._lock = threading.Lock()
self._cleanup_task = asyncio.create_task(self._cleanup_expired())

async def get(self, key: str) -> Optional[Any]:
with self._lock:
if key not in self._cache:
return None
value, expiry = self._cache[key]
if time.time() > expiry:
del self._cache[key]
return None
# Move to end to mark as recently used
self._cache.move_to_end(key)
return value

async def set(self, key: str, value: Any) -> None:
with self._lock:
if key in self._cache:
self._cache.move_to_end(key)
self._cache[key] = (value, time.time() + self._ttl)
if len(self._cache) > self._maxsize:
self._cache.popitem(last=False)

async def invalidate(self, key: str) -> None:
with self._lock:
if key in self._cache:
del self._cache[key]

async def _cleanup_expired(self) -> None:
while True:
await asyncio.sleep(self._ttl)
with self._lock:
now = time.time()
expired_keys = [
k for k, (_, expiry) in self._cache.items()
if expiry <= now
]
for k in expired_keys:
del self._cache[k]

def __del__(self):
self._cleanup_task.cancel()


# Пример использования
async def main():
cache = AsyncTTLCache(ttl=2)

await cache.set("a", 1)
print(await cache.get("a")) # 1

await asyncio.sleep(3)
print(await cache.get("a")) # None

await cache.set("b", 2)
await cache.invalidate("b")
print(await cache.get("b")) # None

asyncio.run(main())

Предлагайте свои варианты решения в комментариях⏬️

@python_job_interview

Читать полностью…

Python вопросы с собеседований

🎙️ pytest-recording — плагин для записи и воспроизведения HTTP-запросов в тестах. Полезный инструмент для Python-разработчиков, который помогает сделать тесты, зависящие от внешних API, более стабильными и быстрыми. Плагин использует VCR.py под капотом, позволяя записывать реальные HTTP-взаимодействия в YAML-кассеты и затем воспроизводить их локально.

Инструмент имеет удобный режим rewrite, который полностью перезаписывает кассеты, а не просто дополняет их. Также есть встроенная блокировка случайных сетевых запросов во время тестирования.

🤖 GitHub

@python_job_interview

Читать полностью…

Python вопросы с собеседований

🧠 Ускоряй Python циклы без NumPy — через встроенный `array.array`

Если ты используешь большие списки чисел в Python и работаешь с ними в цикле — знай: list медленный и неэффективный по памяти.

Есть способ ускорить операции в 2–5 раз без внешних библиотек — просто используй array точка array. Попробуй и напиши в комментах результат, на сколько ускорились твои функции.

from array import array

data = array('f', [0.1] * 10_000_000) # вместо обычного list

# быстрая арифметика
for i in range(len(data)):
data[i] *= 2.5


@python_job_interview

Читать полностью…

Python вопросы с собеседований

⚡ NVIDIA показала 7 простых «приемов» на Python, которые мгновенно ускоряют Data Science-пайплайны — без переписывания кода.

🔹 В чём идея?

Многие привычные библиотеки (pandas, NumPy, scikit-learn) можно заменить их GPU-версией, сохранив API.

Это даёт прирост скорости в десятки раз.

🟠 Drop-in замены в коде:
- pandas → %load_ext cudf.pandas
- polars → .collect(engine="gpu")
- scikit-learn → %load_ext cuml.accel
- xgboost → device="cuda"
- umap → %load_ext cuml.accel
- hdbscan → %load_ext cuml.accel
- networkx → %env NX_CUGRAPH_AUTOCONFIG=True

🚀 Плюсы:
- Минимальные изменения кода (API почти идентичен).
- GPU-ускорение: от 10х до 100х быстрее на больших данных.
- Отлично подходит для ETL, ML и обработки сигналов.

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

🚀 Подробнее: developer.nvidia.com/blog/7-drop-in-replacements-to-instantly-speed-up-your-python-data-science-workflows

@data_analysis_ml

Читать полностью…

Python вопросы с собеседований

🧠 Почему asyncio вызывает боль? Потому что даже простая ошибка может сломать всю цепочку задач.

🐍 tinyio — это минималистичный event loop для Python (всего ~200 строк), который работает через yield, а не await, и делает асинхронность прозрачной.

Что умеет:
• yield вместо await: проще отлаживать и понимать
• Параллельный запуск: yield [task1(), task2()]
• Фоновые задачи: yield {task1(), task2()}
• Прерывание всех задач при одной ошибке
• Встроенные Lock, Semaphore, Event, timeout

Пример:


def slow_add(x):
yield tinyio.sleep(1)
return x + 1

def main():
a, b = yield [slow_add(1), slow_add(2)]
return a + b

Loop().run(main()) # → 5


Когда нужно просто и понятно — tinyio делает то, что должен. Никакой магии.

🔗 https://github.com/patrick-kidger/tinyio

@python_job_interview

Читать полностью…

Python вопросы с собеседований

🔥 Полный гайд по подготовке к собеседованиям по программированию в 2025 году

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

В 2025 году собеседования остаются серьёзным испытанием: от вас ждут не только знания, но и умение объяснять свои мысли, работать с ограниченным временем и применять системный подход.

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

🔜 Читать подробнее

Читать полностью…

Python вопросы с собеседований

📖 Типовая задача на собеседование Python

Условие задачи:
Напишите функцию, которая возвращает n-ое число Фибоначчи. Числа Фибоначчи определяются следующим образом:
— F(0) = 0
— F(1) = 1
— F(n) = F(n-1) + F(n-2) для n > 1

Примеры:
— Для n = 10 ожидается результат 55
— Для n = 15 — 610

Решение:

def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
a, b = 0, 1
for _ in range(2, n + 1):
a, b = b, a + b
return b

# Тестирование
print(fibonacci(10)) # 55
print(fibonacci(15)) # 610


Пояснение:
1️⃣ При n = 0 и n = 1 функция возвращает предопределённые значения 0 и 1 соответственно.
2️⃣ Для n > 1 используются две переменные a и b, которые хранят предыдущие числа Фибоначчи. На каждом шаге цикла они обновляются: a принимает значение b; b — сумму a + b. После завершения цикла возвращается b, содержащее искомое число.
3️⃣ Время работы: O(n), так как требуется n итераций. Память: O(1), потому что используются только две переменные.


Пишите свои варианты решения в комментариях 👇

@python_job_interview

Читать полностью…

Python вопросы с собеседований

🐍 Задача: Реализация декоратора `@smart_cache` с интеллектуальным кэшированием

📌 Описание

Реализуйте декоратор @smart_cache, который кэширует результаты функции с учетом следующих требований:

1. Интеллектуальная очистка кэша — автоматически удаляет старые записи при превышении лимита
2. Поддержка разных стратегий вытеснения — LRU, LFU, FIFO
3. Таймаут кэша — автоматическое удаление записей по времени
4. Метрики использования — сбор статистики по попаданиям/промахам
5. Потокобезопасность — корректная работа в многопоточной среде
6. Поддержка методов классов — корректная работа с self и cls

🧩 Пример использования


import time
from threading import Thread

@smart_cache(maxsize=100, strategy='LRU', ttl=300, collect_stats=True)
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)

class MathUtils:
@smart_cache(maxsize=50, strategy='LFU', ttl=600)
def expensive_calc(self, x, y):
time.sleep(0.1) # Имитация тяжелых вычислений
return x ** y + y ** x

# Использование
print(fibonacci(10)) # Вычисление
print(fibonacci(10)) # Из кэша

# Получение статистики
stats = fibonacci.cache_stats()
print(f"Cache hits: {stats['hits']}, misses: {stats['misses']}")

# Принудительная очистка
fibonacci.cache_clear()

# Многопоточное использование
def worker():
for i in range(5):
fibonacci(i)

threads = [Thread(target=worker) for _ in range(3)]
for t in threads:
t.start()
for t in threads:
t.join()


🛠 Требования к реализации
- Используйте только стандартную библиотеку Python
- Поддержка Python 3.7+
- Все стратегии вытеснения должны быть реализованы (LRU, LFU, FIFO)
- TTL должен работать как для отдельных записей, так и глобально
- Статистика должна включать: hits, misses, evictions, current_size
- Декоратор должен корректно работать с kwargs, *args
- Потокобезопасность через threading.Lock или аналоги

🧪 Бонусное задание
Реализуйте методы:

- cache_info() — подробная информация о текущем состоянии кэша
- cache_warmup(**kwargs) — предварительное заполнение кэша
- cache_persist(filename) — сохранение кэша в файл
- cache_load(filename) — загрузка кэша из файла

@python_job_interview

Читать полностью…

Python вопросы с собеседований

⚡️ Прокачивайся через практику: лучшие ресурсы для пет-проектов

Хочешь расти как разработчик — пиши код, а не только читай!

Вот 4 крутых ресурса, где ты будешь учиться через реальные задачи:

App Ideas
Список проектов от джуна до про: калькуляторы, трекеры, приложения. Есть примеры и полезные ссылки.
👉 github.com/florinpop17/app-ideas

Build Your Own X
Хочешь создать свой Git, Redis, Docker или даже ОС? Тут есть всё: гайды, туториалы и код на разных языках.
👉 github.com/codecrafters-io/build-your-own-x

Project-Based Learning
Обучение в формате "берёшь проект — делаешь". Примеры с пошаговыми инструкциями для разных языков.
👉 github.com/practical-tutorials/project-based-learning

Frontend Mentor
Получаешь макет — верстаешь сам. Отлично тренирует HTML/CSS/JS. Идеально для портфолио.
👉 frontendmentor.io

Пиши код, а не резюме. Эти ресурсы реально двигают вперёд.

Читать полностью…

Python вопросы с собеседований

🧪 Pytest-BDD — фреймворк для Behavior Driven Development на Python. Инструмент позволяет писать тесты в формате Gherkin, используя привычный pytest. Он обладает возможность комбинировать BDD-сценарии с обычными pytest-тестами и фикстурами, что упрощает переход от unit-к интеграционным тестам.

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

🤖 GitHub

@python_job_interview

Читать полностью…

Python вопросы с собеседований

🚀 Изучаем Python с нуля до уверенного уровня за 3 месяца — нашли лучший репозиторий для новичков.

📚 Что внутри:
• Чёткая структура по темам — от синтаксиса до ООП, без воды
• Сотни понятных примеров — меняй под себя и учись на практике
• Всё объяснено простым языком — даже если ты никогда не кодил
• Удобный формат Jupyter Notebook — легко читать и запускать
• И главное — абсолютно бесплатно

Начни разбираться в Python уже сегодня:
🔗 github.com/AllenDowney/ThinkPython

@python_job_interview

Читать полностью…

Python вопросы с собеседований

🚀 Как оптимизировать Python‑код уже на старте — советы для новичков

Не нужно быть профи, чтобы писать быстрый и аккуратный код. Вот 7 простых приёмов, которые реально помогают:

1. Используй профайлеры (cProfile, Py‑Spy)
Перед оптимизацией — измерь время. Часто больше всего тормозят совсем неожиданные места.

2. Перестрой алгоритмы и структуры данных
Выбор между списком, множеством или словарём может кардинально изменить сложность: O(1) вместо O(n) при поиске.

3. Выбирай встроенные функции
map, max, join — всё это написано на C и работает быстрее ручных циклов.

4. Пиши list/dict comprehensions и используй zip, enumerate
Это компактнее, читабельнее и часто быстрее классических for-циклов.

5. Генераторы вместо списков, где не нужен весь набор сразу
Снижают потребление памяти и ускоряют обработку.

6. Переход на PyPy или JIT‑ускорители
PyPy, Numba и Cython могут дать прирост производительности в 2–100 раз для тяжёлых вычислений.

7. Избегай преждевременной оптимизации
Оптимизируй только то, что реально тормозит. Профайлер покажет, где именно.

🧩 Быстрый чек-лист:

• Измерил ли я время выполнения?
• Подходящие ли структуры данных?
• Используются ли встроенные функции?
• Применены ли comprehensions и генераторы?
• Рассматривал ли я PyPy или JIT?
• Код по-прежнему читаемый?

✅ Вывод: даже новичок может писать быстрый и понятный Python-код. Главное — думать, замерять и улучшать без фанатизма.

▶️ Подробности с кодом

Читать полностью…

Python вопросы с собеседований

🧠 Ускорь import в Python-проектах с помощью lazy loading — без изменения логики

Если у тебя проект с тяжёлыми модулями (`pandas`, torch, tensorflow`), но они не всегда нужны — не загружай их зря. Python позволяет **отложить импорт до первого использования**, через встроённый `importlib.

Вот как это выглядит на практике:



import importlib

# Обёртка для ленивого импорта
def lazy_import(name):
return importlib.util.LazyLoader(importlib.import_module(name))

# Использование
np = lazy_import('numpy')
# numpy ещё не загружен

# Теперь загрузится:
print(np.array([1, 2, 3]))

Читать полностью…

Python вопросы с собеседований

🐍 Совет дня для опытных Python-разработчиков

📌 Используй декораторы с параметрами — мощный приём для логирования, контроля, кэширования и кастомных проверок.

Пример: логгер, у которого можно задать уровень логирования через аргумент:


import functools
import logging

def log(level=logging.INFO):
def decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
logging.log(level, f"Вызов {func.__name__} с args={args}, kwargs={kwargs}")
return func(*args, **kwargs)
return wrapper
return decorator

@log(logging.DEBUG)
def compute(x, y):
return x + y


✅ Зачем это нужно:

Декоратор гибко настраивается;

Подходит для трассировки в проде и отладки в деве;

Сохраняет сигнатуру и docstring благодаря @functools.wraps.

⚠️ Совет: избегай вложенности >2 уровней и всегда пиши тесты на поведение декоратора.

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

Читать полностью…

Python вопросы с собеседований

🎙️ pytest-recording — плагин для записи и воспроизведения HTTP-запросов в тестах Инструмент использует VCR.py под капотом, чтобы сохранять сетевые взаимодействия в YAML-кассеты и переиспользовать их при последующих запусках. Достаточно добавить @pytest.mark.vcr к тесту и все запросы автоматически запишутся или возьмутся из кэша.

Особенно удобно для тестирования API, можно блокировать случайные сетевые вызовы через @pytest.mark.block_network и точечно разрешать только нужные хосты. Поддерживается тонкая настройка через vcr_config и работа в режиме перезаписи кассет.

🤖 GitHub

@python_job_interview

Читать полностью…

Python вопросы с собеседований

🔍Открытое собеседование на Python-бекендера с разработчиком из Avito и Яндекс в четверг

10 июля(уже в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.

Как это будет:
📂 Савва Демиденко, ТехЛид с опытом в Яндексе и Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Савва будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Савве

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot

Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqxjiWL7

Читать полностью…

Python вопросы с собеседований

⚙️ Подменяй любые импорты в Python “на лету” — без изменения кода

Если ты хочешь протестировать модуль, подменить зависимость, замокать внешний сервис или обмануть импорт — не обязательно редактировать исходники. Python позволяет перехватывать импорты прямо во время выполнения, через sys.modules.

Вот минимальный приём, который делает это прозрачно:


import sys
import types

# Создаём фейковый модуль
fake = types.SimpleNamespace()
fake.get_data = lambda: "подмена работает"

# Подменяем импорт
sys.modules['external_service'] = fake

# Теперь даже import будет работать
import external_service
print(external_service.get_data()) # → "подмена работает"

Читать полностью…

Python вопросы с собеседований

⚡️ Почему лучшие разработчики всегда на шаг впереди?

Потому что они знают, где брать настоящие инсайд!
Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе.

ИИ: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Мл собес t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
МЛ: t.me/machinelearning_ru
Devops: t.me/DevOPSitsec
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: /channel/gamedev
Физика: t.me/fizmat
SQL: t.me/databases_tg

Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: /channel/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: /channel/addlist/mzMMG3RPZhY2M2Iy

🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno

🖥 Chatgpt для кода в тг: @Chatgpturbobot

📕Ит-книги: /channel/addlist/BkskQciUW_FhNjEy
💼ИТ-вакансии t.me/addlist/_zyy_jQ_QUsyM2Vi

Подпишись, чтобы всегда знать, куда двигаться дальше!

Читать полностью…
Subscribe to a channel