Prosto Python | вопросы с собесов
364 subscribers
184 photos
1 video
2 files
569 links
🚀 Python-собесы без сюрпризов! Разбираем реальные вопросы, ошибки кандидатов и лайфхаки, которые помогают пройти интервью. Джун → мидл → сеньор — прокачивайся и разнеси следующий собес! 🔥
Download Telegram
🔷 TCP/IP — это набор сетевых протоколов, обеспечивающих передачу данных в интернете.

🔹 TCP (Transmission Control Protocol) гарантирует надёжную доставку данных по сети.
🔹 IP (Internet Protocol) отвечает за маршрутизацию и адресацию пакетов.

👉 Вместе они обеспечивают стабильный и упорядоченный обмен данными между устройствами.

🐍Вопросы с собесов -> ProstoPython
🏆5
💬 Вопрос на собесе:
Что такое SDLC?


👶 Junior:
— Это что-то связанное с разработкой… типа “жизненный цикл разработки программ”? 🤔

🧑‍💻 Middle:
— SDLC (Software Development Life Cycle) — это процесс создания ПО от идеи до поддержки.
Он описывает этапы: планирование, анализ требований, дизайн, разработка, тестирование, внедрение и сопровождение.

🧙‍♂️ Senior:
— SDLC — это структурированный подход к разработке ПО, который помогает создавать качественные продукты и управлять проектом.
🔹 Этапы обычно включают:

Planning — определение целей и ресурсов.

Requirements Analysis — сбор и документирование требований.

Design — архитектура системы и дизайн компонентов.

Implementation / Coding — написание кода.

Testing — проверка функциональности, багов и производительности.

Deployment — выпуск продукта пользователям.

Maintenance — поддержка, исправление багов, обновления.

💡 SDLC помогает сократить риски, улучшить качество и управлять временем разработки.

🐍Вопросы с собесов -> ProstoPython
👍4
🔷 WebSocket — это протокол, который обеспечивает постоянное двустороннее соединение между клиентом и сервером без необходимости повторных HTTP-запросов.

🔹 Используется для реального времени — чаты, уведомления, онлайн-игры.
🔹 В Python реализуется через библиотеки, например websockets, Django Channels, FastAPI WebSocket.

👉 Позволяет серверу и клиенту обмениваться данными мгновенно, без перезагрузки страницы.

🐍Вопросы с собесов -> ProstoPython
👍3
⏱️ 1 минута о Python: property — превращаем методы в атрибуты 💫

Иногда хочется, чтобы метод выглядел как обычное поле объекта, но при этом что-то вычислял.
Python это умеет — с помощью декоратора property 👇
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height

@property
def area(self):
return self.width * self.height

rect = Rectangle(5, 10)
print(rect.area) # 50, без скобок!


🧠 Что происходит:

🔷property делает метод вычисляемым свойством.

🔷Вызывается как атрибут (obj.attr), но за ним может стоять логика.

🐍Вопросы с собесов -> ProstoPython
🏆3
🔷 Потому что range(7000) не хранит все числа в памяти, а генерирует их по мере необходимости — это ленивый (итерируемый) объект, который вычисляет значения «на лету».

👉 Поэтому независимо от диапазона (range(10) или range(10_000_000)), он занимает одинаково мало памяти.

🐍Вопросы с собесов -> ProstoPython
👍3
⏱️ 1 минута о Python: collections.Counter — счётчик в один шаг 🧮

Нужно посчитать, сколько раз встречается элемент в списке?
Забудь про циклы и словари — Counter сделает это мгновенно ⚡️
from collections import Counter

fruits = ["apple", "banana", "apple", "orange", "banana", "apple"]
count = Counter(fruits)
print(count)


Результат:
Counter({'apple': 3, 'banana': 2, 'orange': 1})


🔥 Возможности Counter:

Быстро считать элементы в списках, строках, кортежах.

Получать most_common(n) — топ n самых частых элементов.

print(count.most_common(2)) # [('apple', 3), ('banana', 2)]


💡 Отличный инструмент, чтобы писать коротко, питонично и эффективно.

🐍Вопросы с собесов -> ProstoPython
🔥3
🧰 Новая рубрика — Code Cleanup

Ты когда-нибудь смотрел на свой старый код и думал:

“О, Боже… я реально это писал? 😅

Добро пожаловать в Code Cleanup — рубрику, где мы берём работающий, но неидеальный код и превращаем его в чистый, понятный и по-настоящему питоничный 🐍.

Без осуждения, без занудства — просто показываем, как можно проще, короче и умнее.

Иногда это одна строка вместо пяти.
Иногда — избавление от хаоса ради читаемости.
Главная цель — чтобы ты посмотрел на код и сказал:

“Вот теперь красиво.”

🐍Вопросы с собесов -> ProstoPython
1🔥1
💡 Пример №1 — фильтруем список

Так часто пишут начинающие:
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
4👍2
💬 Вопрос на собесе:
В чём разница между URI и URL?


👶 Junior:
— Это вроде одно и то же? 🤔 Ну, адрес сайта типа https://example.com...

🧑‍💻 Middle:
URI — это общий идентификатор ресурса, а URL — тот, который указывает ещё и где этот ресурс находится.

🧙‍♂️ Senior:
🔹 URI (Uniform Resource Identifier) — это уникальный идентификатор ресурса. Он может просто обозначать что это за ресурс, без указания места.
🔹 URL (Uniform Resource Locator) — это подвид URI, который говорит где находится ресурс и как его получить

🐍Вопросы с собесов -> ProstoPython
👍31
Задача с собеседования в Microsoft🤩

Напишите функцию, которая вычисляет день недели для любой даты в прошлом или будущем. К примеру, 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
👍41💊1
🔷 Если декоратор не вернёт значение, то исходная функция заменится `None`, и при попытке вызвать её произойдёт ошибка TypeError, так как None не является вызываемым объектом.

🐍Вопросы с собесов -> ProstoPython
🔥31
⏱️ 1 минута о Python: Что делает map()? 🗺

Когда нужно применить одну функцию ко всем элементам списка — не обязательно писать цикл.
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
👍51
🔷 В Django система аутентификации основана на встроенном приложении django.contrib.auth, которое управляет пользователями, паролями и сессиями.

🔹 При входе пользователь проходит проверку через authenticate() и login().
🔹 Django создаёт сессию, связывая пользователя с уникальным идентификатором.
🔹 На каждом запросе request.user показывает текущего авторизованного пользователя.

👉 Система поддерживает регистрацию, вход, выход и права доступа «из коробки».

🐍Вопросы с собесов -> ProstoPython
4
💬 Вопрос на собесе:
В чём разница между асинхронностью и параллелизмом?


👶 Junior:
— Ну… и то, и то вроде делает несколько задач одновременно? 🤔

🧑‍💻 Middle:
Параллелизм — это когда код реально выполняется одновременно.
Асинхронность — это когда задачи поочерёдно делят время выполнения, не блокируя друг друга.

🧙‍♂️ Senior:
— Отличие в уровне:
🔹 Параллелизм — про одновременное выполнение кода на нескольких вычислительных единицах.
🔹 Асинхронность — про управление ожиданием, когда одна задача временно “ждёт” (например, сетевой ответ), а управление передаётся другой.
🔹 В Python за асинхронность отвечает asyncio и цикл событий,
а за параллелизм — threading (потоки) и multiprocessing (процессы).

📘 Пример в реальной жизни:

Асинхронность — официант обслуживает несколько столов по очереди, не стоя без дела.

Параллелизм — несколько официантов работают одновременно 🍽

🐍Вопросы с собесов -> ProstoPython
👍4
🔷 RESTful — это стиль построения веб-API, основанный на принципах REST (Representational State Transfer).

🔹 Использует стандартные HTTP-методы (GET, POST, PUT, DELETE)
🔹 Работает с ресурсами, представляемыми в виде URL
🔹 Возвращает данные чаще всего в формате JSON

👉 RESTful-сервис — это API, которое следует этим правилам, обеспечивая простоту, предсказуемость и масштабируемость.

🐍Вопросы с собесов -> ProstoPython
🔥2🏆1
🔷 Динамическое программирование — это метод оптимизации, при котором сложная задача разбивается на перекрывающиеся подзадачи, а результаты этих подзадач сохраняются для повторного использования.

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


🐍Вопросы с собесов -> ProstoPython
🔥4
⏱️ 1 минута о Python: Что делает globals() и locals()? 🌍🔍

Иногда нужно посмотреть, какие переменные доступны прямо сейчас —
и 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
👍5
Убедиться, что экземпляр принадлежит классу-потомку, можно с помощью isinstance() — он проверяет объект на принадлежность классу с учётом наследования.

👉 Например:

isinstance(obj, ChildClass)


Если obj создан из ChildClass или его наследников — результат будет True.

🐍Вопросы с собесов -> ProstoPython
4
🧰 Code Cleanup — выпуск 2
Тема: заменяем громоздкие проверки на питоничный стиль

Иногда код работает, но выглядит так, будто писал его человек,
который боялся использовать возможности 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
6
Основные виды тестов:

1️⃣ Юнит-тесты — проверяют отдельные функции и классы изолированно.

2️⃣ Интеграционные тесты — проверяют взаимодействие модулей между собой.

3️⃣ Функциональные (acceptance) тесты — проверяют работу функций и сценариев приложения.

4️⃣ Системные тесты — проверяют приложение целиком.

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

6️⃣ Нагрузочные тесты — измеряют поведение системы под высокой нагрузкой.

7️⃣ UI/End-to-End тесты — проверяют работу приложения глазами пользователя.

🐍Вопросы с собесов -> ProstoPython
🔥51
🧩 Новая рубрика — PyTools Finder!🔥🔥🔥

Будем разбирать одну интересную и полезную библиотеку Python,
которая реально может упростить жизнь разработчика: от ускорения кода до автоматизации, работы с данными, API, файлами 🤓

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

🐍Вопросы с собесов -> ProstoPython
👍4