💡 Пример №1 — фильтруем список
❌ Так часто пишут начинающие:
✅ А так делает питонист:
📈 Что изменилось:
🔷Меньше кода, больше смысла.
🔷 Нет ручного доступа по индексам.
🔷Читается, как английская фраза: “возьми x из data, если x > 0”.
🐍Вопросы с собесов -> ProstoPython
❌ Так часто пишут начинающие:
result = []
for i in range(len(data)):
if data[i] > 0:
result.append(data[i])
✅ А так делает питонист:
result = [x for x in data if x > 0]
📈 Что изменилось:
🔷Меньше кода, больше смысла.
🔷 Нет ручного доступа по индексам.
🔷Читается, как английская фраза: “возьми x из data, если x > 0”.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
❤4👍2
💬 Вопрос на собесе:
В чём разница между URI и URL?
👶 Junior:
— Это вроде одно и то же? 🤔 Ну, адрес сайта типа https://example.com...
🧑💻 Middle:
URI — это общий идентификатор ресурса, а URL — тот, который указывает ещё и где этот ресурс находится.
🧙♂️ Senior:
🔹 URI (Uniform Resource Identifier) — это уникальный идентификатор ресурса. Он может просто обозначать что это за ресурс, без указания места.
🔹 URL (Uniform Resource Locator) — это подвид URI, который говорит где находится ресурс и как его получить
🐍Вопросы с собесов -> ProstoPython
В чём разница между URI и URL?
👶 Junior:
— Это вроде одно и то же? 🤔 Ну, адрес сайта типа https://example.com...
🧑💻 Middle:
URI — это общий идентификатор ресурса, а URL — тот, который указывает ещё и где этот ресурс находится.
🧙♂️ Senior:
🔹 URI (Uniform Resource Identifier) — это уникальный идентификатор ресурса. Он может просто обозначать что это за ресурс, без указания места.
🔹 URL (Uniform Resource Locator) — это подвид URI, который говорит где находится ресурс и как его получить
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍3❤1
Задача с собеседования в Microsoft🤩
Напишите функцию, которая вычисляет день недели для любой даты в прошлом или будущем. К примеру, 8 ноября 2025 года должно выводить Суббота.
Ввод при этом должен содержать три целых числа, разделенных пробелами, которые обозначали бы день, месяц и год соответственно.
Решение🧑💻
🐍Вопросы с собесов -> ProstoPython
Напишите функцию, которая вычисляет день недели для любой даты в прошлом или будущем. К примеру, 8 ноября 2025 года должно выводить Суббота.
Ввод при этом должен содержать три целых числа, разделенных пробелами, которые обозначали бы день, месяц и год соответственно.
Решение🧑💻
def get_weekday(day, month, year):
# Если месяц — январь или февраль, считаем как 13 и 14 предыдущего года
if month < 3:
month += 12
year -= 1
# Вычисляем параметры K и J
K = year % 100 # Последние 2 цифры года
J = year // 100 # Первые 2 цифры года (век)
# Формула Зеллера
h = (day + (13 * (month + 1)) // 5 + K + (K // 4) + (J // 4) - 2 * J) % 7
# Соответствие номера дня недели
days = ["Суббота", "Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница"]
return days[h]
# Читаем ввод
day, month, year = map(int, input().split())
print(get_weekday(day, month, year))
🐍Вопросы с собесов -> ProstoPython
👍4❤1💊1
🔷 Если декоратор не вернёт значение, то исходная функция заменится `None`, и при попытке вызвать её произойдёт ошибка
🐍Вопросы с собесов -> ProstoPython
TypeError, так как None не является вызываемым объектом.🐍Вопросы с собесов -> ProstoPython
🔥3❤1
⏱️ 1 минута о Python: Что делает map()? 🗺
Когда нужно применить одну функцию ко всем элементам списка — не обязательно писать цикл.
Python умеет это делать красиво 💅
💡 map(func, iterable) — применяет функцию func ко всем элементам и возвращает итератор.
📘 Где полезно:
🔷быстро преобразовать данные
🔷заменить циклы в одну строку
🔷сочетать с list(), set(), tuple()
🐍Вопросы с собесов -> ProstoPython
Когда нужно применить одну функцию ко всем элементам списка — не обязательно писать цикл.
Python умеет это делать красиво 💅
nums = [1, 2, 3, 4]
squared = map(lambda x: x ** 2, nums)
print(list(squared))
[1, 4, 9, 16]
💡 map(func, iterable) — применяет функцию func ко всем элементам и возвращает итератор.
📘 Где полезно:
🔷быстро преобразовать данные
🔷заменить циклы в одну строку
🔷сочетать с list(), set(), tuple()
🐍Вопросы с собесов -> ProstoPython
👍5❤1
🔷 В Django система аутентификации основана на встроенном приложении django.contrib.auth, которое управляет пользователями, паролями и сессиями.
🔹 При входе пользователь проходит проверку через
🔹 Django создаёт сессию, связывая пользователя с уникальным идентификатором.
🔹 На каждом запросе
👉 Система поддерживает регистрацию, вход, выход и права доступа «из коробки».
🐍Вопросы с собесов -> ProstoPython
🔹 При входе пользователь проходит проверку через
authenticate() и login().🔹 Django создаёт сессию, связывая пользователя с уникальным идентификатором.
🔹 На каждом запросе
request.user показывает текущего авторизованного пользователя.👉 Система поддерживает регистрацию, вход, выход и права доступа «из коробки».
🐍Вопросы с собесов -> ProstoPython
❤4
💬 Вопрос на собесе:
В чём разница между асинхронностью и параллелизмом?
👶 Junior:
— Ну… и то, и то вроде делает несколько задач одновременно? 🤔
🧑💻 Middle:
Параллелизм — это когда код реально выполняется одновременно.
Асинхронность — это когда задачи поочерёдно делят время выполнения, не блокируя друг друга.
🧙♂️ Senior:
— Отличие в уровне:
🔹 Параллелизм — про одновременное выполнение кода на нескольких вычислительных единицах.
🔹 Асинхронность — про управление ожиданием, когда одна задача временно “ждёт” (например, сетевой ответ), а управление передаётся другой.
🔹 В Python за асинхронность отвечает asyncio и цикл событий,
а за параллелизм — threading (потоки) и multiprocessing (процессы).
📘 Пример в реальной жизни:
Асинхронность — официант обслуживает несколько столов по очереди, не стоя без дела.
Параллелизм — несколько официантов работают одновременно 🍽
🐍Вопросы с собесов -> ProstoPython
В чём разница между асинхронностью и параллелизмом?
👶 Junior:
— Ну… и то, и то вроде делает несколько задач одновременно? 🤔
🧑💻 Middle:
Параллелизм — это когда код реально выполняется одновременно.
Асинхронность — это когда задачи поочерёдно делят время выполнения, не блокируя друг друга.
🧙♂️ Senior:
— Отличие в уровне:
🔹 Параллелизм — про одновременное выполнение кода на нескольких вычислительных единицах.
🔹 Асинхронность — про управление ожиданием, когда одна задача временно “ждёт” (например, сетевой ответ), а управление передаётся другой.
🔹 В Python за асинхронность отвечает asyncio и цикл событий,
а за параллелизм — threading (потоки) и multiprocessing (процессы).
📘 Пример в реальной жизни:
Асинхронность — официант обслуживает несколько столов по очереди, не стоя без дела.
Параллелизм — несколько официантов работают одновременно 🍽
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍4
🔷 RESTful — это стиль построения веб-API, основанный на принципах REST (Representational State Transfer).
🔹 Использует стандартные HTTP-методы (
🔹 Работает с ресурсами, представляемыми в виде URL
🔹 Возвращает данные чаще всего в формате JSON
👉 RESTful-сервис — это API, которое следует этим правилам, обеспечивая простоту, предсказуемость и масштабируемость.
🐍Вопросы с собесов -> ProstoPython
🔹 Использует стандартные HTTP-методы (
GET, POST, PUT, DELETE)🔹 Работает с ресурсами, представляемыми в виде URL
🔹 Возвращает данные чаще всего в формате JSON
👉 RESTful-сервис — это API, которое следует этим правилам, обеспечивая простоту, предсказуемость и масштабируемость.
🐍Вопросы с собесов -> ProstoPython
🔥2🏆1
👉 Нужно, чтобы избежать лишних вычислений и ускорить решение задач, например — вычисление чисел Фибоначчи, поиск кратчайшего пути, оптимизация ресурсов.
🐍Вопросы с собесов -> ProstoPython
🔥4
⏱️ 1 минута о Python: Что делает globals() и locals()? 🌍🔍
Иногда нужно посмотреть, какие переменные доступны прямо сейчас —
и Python даёт для этого два очень полезных инструмента: globals() и locals().
Примерный вывод:
🧠 Что это такое?
locals() -> возвращает словарь локальных переменных (внутри функции, цикла, блока).
globals() -> возвращает словарь глобальных переменных файла/модуля.
🐍Вопросы с собесов -> ProstoPython
Иногда нужно посмотреть, какие переменные доступны прямо сейчас —
и Python даёт для этого два очень полезных инструмента: globals() и locals().
x = 10
def demo():
y = 20
print("locals:", locals())
print("globals keys:", list(globals().keys())[:5])
demo()
Примерный вывод:
locals: {'y': 20}
globals keys: ['__name__', '__doc__', 'x', ...]🧠 Что это такое?
locals() -> возвращает словарь локальных переменных (внутри функции, цикла, блока).
globals() -> возвращает словарь глобальных переменных файла/модуля.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍5
Убедиться, что экземпляр принадлежит классу-потомку, можно с помощью isinstance() — он проверяет объект на принадлежность классу с учётом наследования.
👉 Например:
Если
🐍Вопросы с собесов -> ProstoPython
👉 Например:
isinstance(obj, ChildClass)
Если
obj создан из ChildClass или его наследников — результат будет True.🐍Вопросы с собесов -> ProstoPython
❤4
🧰 Code Cleanup — выпуск 2
Тема: заменяем громоздкие проверки на питоничный стиль
Иногда код работает, но выглядит так, будто писал его человек,
который боялся использовать возможности Python 😅
Сегодня чистим одну из самых распространённых историй — длинные проверки.
❌ Как часто пишут начинающие:
Работает? Да.
Красиво? …ну такое 🫠
✅ Питоничный вариант:
🧹 Что улучшили:
Убрали == True — лишнее сравнение.
Сократили is not None → Python сам проверяет truthiness.
Список ролей (user.roles) в логическом контексте сам становится False, если пуст.
Перестали превращать простое условие в лабиринт.
💡 Правило для запоминания:
Если объект в Python можно интерпретировать как True/False —
позвольте Python сделать это за вас.
🐍Вопросы с собесов -> ProstoPython
Тема: заменяем громоздкие проверки на питоничный стиль
Иногда код работает, но выглядит так, будто писал его человек,
который боялся использовать возможности Python 😅
Сегодня чистим одну из самых распространённых историй — длинные проверки.
❌ Как часто пишут начинающие:
if user is not None and user.is_active == True and len(user.roles) > 0:
print("Access granted")
Работает? Да.
Красиво? …ну такое 🫠
✅ Питоничный вариант:
if user and user.is_active and user.roles:
print("Access granted")
🧹 Что улучшили:
Убрали == True — лишнее сравнение.
Сократили is not None → Python сам проверяет truthiness.
Список ролей (user.roles) в логическом контексте сам становится False, если пуст.
Перестали превращать простое условие в лабиринт.
💡 Правило для запоминания:
Если объект в Python можно интерпретировать как True/False —
позвольте Python сделать это за вас.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
❤6
Основные виды тестов:
1️⃣ Юнит-тесты — проверяют отдельные функции и классы изолированно.
2️⃣ Интеграционные тесты — проверяют взаимодействие модулей между собой.
3️⃣ Функциональные (acceptance) тесты — проверяют работу функций и сценариев приложения.
4️⃣ Системные тесты — проверяют приложение целиком.
5️⃣ Регрессионные тесты — убеждаются, что новые изменения не сломали старый функционал.
6️⃣ Нагрузочные тесты — измеряют поведение системы под высокой нагрузкой.
7️⃣ UI/End-to-End тесты — проверяют работу приложения глазами пользователя.
🐍Вопросы с собесов -> ProstoPython
1️⃣ Юнит-тесты — проверяют отдельные функции и классы изолированно.
2️⃣ Интеграционные тесты — проверяют взаимодействие модулей между собой.
3️⃣ Функциональные (acceptance) тесты — проверяют работу функций и сценариев приложения.
4️⃣ Системные тесты — проверяют приложение целиком.
5️⃣ Регрессионные тесты — убеждаются, что новые изменения не сломали старый функционал.
6️⃣ Нагрузочные тесты — измеряют поведение системы под высокой нагрузкой.
7️⃣ UI/End-to-End тесты — проверяют работу приложения глазами пользователя.
🐍Вопросы с собесов -> ProstoPython
🔥5❤1
🧩 Новая рубрика — PyTools Finder!🔥🔥🔥
Будем разбирать одну интересную и полезную библиотеку Python,
которая реально может упростить жизнь разработчика: от ускорения кода до автоматизации, работы с данными, API, файлами 🤓
Коротко, понятным языком, с примерами и реальными кейсами.
Никакой воды — только то, что можно применить сразу же.
🐍Вопросы с собесов -> ProstoPython
Будем разбирать одну интересную и полезную библиотеку Python,
которая реально может упростить жизнь разработчика: от ускорения кода до автоматизации, работы с данными, API, файлами 🤓
Коротко, понятным языком, с примерами и реальными кейсами.
Никакой воды — только то, что можно применить сразу же.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍4
🧩 PyTools Finder
Библиотека дня: pydantic
Если ты когда-нибудь страдал от бесконечных проверок типов, валидации данных и ловил баги из-за «не того формата»,
то pydantic — это то, что делает жизнь Python-разработчика спокойнее 😌.
🔥 Что делает Pydantic полезным:
Автоматически валидирует входные данные
Преобразует типы (str -> int, dict -> объект и т.д.)
Делает удобные модели данных, как в TypeScript
Покрывает половину рутины за тебя
Пример — валидация без лишнего шума ⬇️
Почему это важно?
Потому что плохие данные ломают даже хороший код.
А pydantic превращает хаос входящей информации в аккуратные, понятные структуры данных.
🐍Вопросы с собесов -> ProstoPython
Библиотека дня: pydantic
Если ты когда-нибудь страдал от бесконечных проверок типов, валидации данных и ловил баги из-за «не того формата»,
то pydantic — это то, что делает жизнь Python-разработчика спокойнее 😌.
🔥 Что делает Pydantic полезным:
Автоматически валидирует входные данные
Преобразует типы (str -> int, dict -> объект и т.д.)
Делает удобные модели данных, как в TypeScript
Покрывает половину рутины за тебя
Пример — валидация без лишнего шума ⬇️
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
u = User(name="Alice", age="23")
print(u.age) # 23 — автоматически сконвертировал!
Почему это важно?
Потому что плохие данные ломают даже хороший код.
А pydantic превращает хаос входящей информации в аккуратные, понятные структуры данных.
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🏆5
🧰 Code Cleanup — выпуск 3
Тема: избавляемся от лишних проверок
Иногда код работает… но выглядит как будто его писал человек, который очень сомневался в каждом шаге 😅
Вот типичный пример:
❌ До (слишком многословно):
Работает? Да.
Понятно? Еле-еле.
✅ После (чисто и по-питоничному):
Что изменилось:
🔹 убрали вложенные if, теперь условие читается с первого взгляда
🔹 возврат данных стал предсказуемым
🔹 код короче, но логика прежняя
🔹 легче поддерживать и расширять
🐍Вопросы с собесов -> ProstoPython
Тема: избавляемся от лишних проверок
Иногда код работает… но выглядит как будто его писал человек, который очень сомневался в каждом шаге 😅
Вот типичный пример:
❌ До (слишком многословно):
def normalize_name(name):
if name is not None:
if isinstance(name, str):
if name.strip() != "":
return name.strip().title()
return None
Работает? Да.
Понятно? Еле-еле.
✅ После (чисто и по-питоничному):
def normalize_name(name):
if not isinstance(name, str) or not name.strip():
return None
return name.strip().title()
Что изменилось:
🔹 убрали вложенные if, теперь условие читается с первого взгляда
🔹 возврат данных стал предсказуемым
🔹 код короче, но логика прежняя
🔹 легче поддерживать и расширять
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
🔥4
CRUD — это набор базовых операций над данными:
C — Create (создание)
R — Read (чтение)
U — Update (обновление)
D — Delete (удаление)
Эти операции лежат в основе работы большинства приложений и баз данных.
🐍Вопросы с собесов -> ProstoPython
C — Create (создание)
R — Read (чтение)
U — Update (обновление)
D — Delete (удаление)
Эти операции лежат в основе работы большинства приложений и баз данных.
🐍Вопросы с собесов -> ProstoPython
👍4
⏱️ 1 минута о Python — setdefault()
Когда нужно добавить элемент в словарь, но при этом не перезаписать существующее значение — многие пишут вот так:
Работает, но выглядит громоздко.
Python умеет проще 😎
⭐️ setdefault()
Метод, который возвращает значение по ключу,
а если ключа нет — создаёт его с дефолтом.
⚡️ Пример
Результат:
🧠 Почему это удобно?
🔷Избавляет от лишних проверок
🔷Позволяет «лениво» создавать списки, словари и даже сложные структуры
🔷Снижает количество кода и повышает читаемость
🐍Вопросы с собесов -> ProstoPython
Когда нужно добавить элемент в словарь, но при этом не перезаписать существующее значение — многие пишут вот так:
if key not in data:
data[key] = []
data[key].append(value)
Работает, но выглядит громоздко.
Python умеет проще 😎
⭐️ setdefault()
Метод, который возвращает значение по ключу,
а если ключа нет — создаёт его с дефолтом.
⚡️ Пример
data = {}
data.setdefault("users", []).append("Alice")
data.setdefault("users", []).append("Bob")
print(data)Результат:
{"users": ["Alice", "Bob"]}🧠 Почему это удобно?
🔷Избавляет от лишних проверок
🔷Позволяет «лениво» создавать списки, словари и даже сложные структуры
🔷Снижает количество кода и повышает читаемость
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
❤6
GET не предназначен для передачи тела запроса, а значит отправить файл через GET невозможно.
Вот истинное положение дел:
❌ GET не может отправлять файл
У GET нет тела (body) — оно игнорируется большинством серверов и библиотек.
Поэтому файл нельзя вложить в GET так же, как в POST/PUT.
🐍Вопросы с собесов -> ProstoPython
Вот истинное положение дел:
❌ GET не может отправлять файл
У GET нет тела (body) — оно игнорируется большинством серверов и библиотек.
Поэтому файл нельзя вложить в GET так же, как в POST/PUT.
🐍Вопросы с собесов -> ProstoPython
🔥4
🧰 Code Cleanup — выпуск 4
Тема: избавляемся от лишних условий в return
Нередко можно встретить такой код — он работает, но выглядит как будто автор очень старался усложнить простую вещь 😅
❌ До (типичное "если да — верни True")
Работает? Да.
Но логика избыточная: Python умеет проще.
✅ После (коротко и по делу)
Почему так лучше:
🔹 меньше кода — меньше ошибок
🔹 читатель сразу видит условие, а не структуру из if/else
🔹 легче поддерживать и тестировать
🐍Вопросы с собесов -> ProstoPython
Тема: избавляемся от лишних условий в return
Нередко можно встретить такой код — он работает, но выглядит как будто автор очень старался усложнить простую вещь 😅
❌ До (типичное "если да — верни True")
def is_adult(age):
if age >= 18:
return True
else:
return False
Работает? Да.
Но логика избыточная: Python умеет проще.
✅ После (коротко и по делу)
def is_adult(age):
return age >= 18
Почему так лучше:
🔹 меньше кода — меньше ошибок
🔹 читатель сразу видит условие, а не структуру из if/else
🔹 легче поддерживать и тестировать
🐍Вопросы с собесов -> ProstoPython
Telegram
Prosto Python | вопросы с собесов
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
👍4
Apache Kafka — это платформа для потоковой передачи данных, которая используется для:
🔹 обмена сообщениями между сервисами
🔹 обработки данных в реальном времени
🔹 буферизации нагрузки
🔹 надёжного хранения и повторного чтения событий
Итог: обеспечивает быстрый, масштабируемый и устойчивый обмен данными.
🐍Вопросы с собесов -> ProstoPython
🔹 обмена сообщениями между сервисами
🔹 обработки данных в реальном времени
🔹 буферизации нагрузки
🔹 надёжного хранения и повторного чтения событий
Итог: обеспечивает быстрый, масштабируемый и устойчивый обмен данными.
🐍Вопросы с собесов -> ProstoPython
🔥3