
- Главная
- Каталог
- Интернет технологии
- Python | Вопросы собесов
Python | Вопросы собесов
Разбираем вопросы с собеседований на Python разработчика. Очень активная и лояльная аудитория.
Статистика канала
print(dir(__builtins__)){}
🚩Основные категории встроенных функций
Работа с числами
print(abs(-5)) # 5
print(round(3.14159, 2)) # 3.14
print(pow(2, 3)) # 8
print(min([3, 1, 4])) # 1{}
Работа со строками
print(len("hello")) # 5
print(str(123)) # '123'
print(ord('A')) # 65
print(chr(65)) # 'A'{}
Работа с коллекциями (списки, кортежи, множества)
a = [3, 1, 2]
print(sorted(a)) # [1, 2, 3]
nums = [1, 2, 3]
names = ["Alice", "Bob", "Charlie"]
print(list(zip(nums, names))) # [(1, 'Alice'), (2, 'Bob'), (3, 'Charlie')]{}
Работа с логикой и проверками
print(bool("")) # False
print(all([True, 1, "Hello"])) # True
print(any([0, "", None, 5])) # True (есть хотя бы один True){}
Работа с функциями
nums = [1, 2, 3, 4]
squared = list(map(lambda x: x**2, nums))
print(squared) # [1, 4, 9, 16]
evens = list(filter(lambda x: x % 2 == 0, nums))
print(evens) # [2, 4]{}
Работа с файлами
with open("file.txt", "w") as f:
f.write("Hello, world!")
name = input("Введите имя: ")
print("Привет,", name){}
Работа с объектами и атрибутами
print(type(42)) # <class 'int'>
print(isinstance(42, int)) # True
print(dir([])) # Методы списка{}
Ставь 👍 и забирай 📚 Базу знаний
try:
x = 1 / 0 # Ошибка деления на ноль
except ZeroDivisionError:
print("Ошибка! Записываем в лог...")
raise # Повторно выбрасываем то же исключение{}
Вывод
Ошибка! Записываем в лог...
Traceback (most recent call last):
File "script.py", line 2, in <module>
x = 1 / 0
ZeroDivisionError: division by zero{}
Пример: Логирование перед повторным выбросом
import logging
logging.basicConfig(filename="errors.log", level=logging.ERROR)
try:
user_input = int("abc") # Ошибка ValueError
except ValueError as e:
logging.error(f"Ошибка: {e}") # Записываем в лог
raise # Повторно выбрасываем исключение{}
Пример: Очистка ресурсов перед выбросом исключения
try:
file = open("data.txt", "r")
data = file.read()
except FileNotFoundError:
print("Файл не найден. Освобождаем ресурсы...")
raise # Снова выбрасываем исключение
finally:
file.close() # Гарантированно закроет файл{}
Ставь 👍 и забирай 📚 Базу знаний
def add(a, b):
return a + b
def test_add():
assert add(2, 3) == 5 # ✅ Юнит-тест{}
🟠Соединяем модули или работаем с API
Нужны: Интеграционные тесты
Проверяем работу всей системы вместе.
def test_api():
response = requests.get("https://api.example.com/data")
assert response.status_code == 200{}
🟠Перед релизом или деплоем
Нужны: Функциональные и регрессионные тесты
Проверяем ключевые сценарии и старый функционал.
def test_login():
assert login("user", "password") == "Success"{}
🟠Изменили UI (например, фронтенд на React)
Нужны: UI-тесты (Selenium, Playwright)
Проверяем нажатие кнопок, формы и отображение страниц.
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://example.com")
assert "Example" in driver.title{}
🟠Если проект должен выдерживать большую нагрузку
Нужны: Нагрузочные тесты (Load Testing)
Используем locust, JMeter, k6, чтобы проверить сколько пользователей выдержит сервер.
from locust import HttpUser, task
class MyUser(HttpUser):
@task
def test_homepage(self):
self.client.get("/"){}
Ставь 👍 и забирай 📚 Базу знаний:=) – это новый оператор, появившийся в Python 3.8, который позволяет присваивать значение переменной прямо внутри выражения.
🚩Как он работает?
Обычно мы записываем код так:
value = len(my_list) # Сначала присваиваем
if value > 10: # Потом используем
print("Список большой"){}
С := можно совместить оба действия
if (value := len(my_list)) > 10:
print("Список большой"){}
🚩Где использовать?
В циклах (избегаем лишних вычислений). Вместо:
data = input("Введите строку: ")
while data != "exit":
print("Вы ввели:", data)
data = input("Введите строку: "){}
С := можно записать короче:
while (data := input("Введите строку: ")) != "exit":
print("Вы ввели:", data){}
В if и while (проверяем и присваиваем одновременно)
Без :=
text = input("Введите слово: ")
if len(text) > 5:
print(f"Слово длинное ({len(text)} символов)"){}
С :=:
if (length := len(text)) > 5:
print(f"Слово длинное ({length} символов)"){}
В списковых включениях (list comprehensions)
Без :=:
numbers = [random.randint(1, 100) for _ in range(10)]
filtered = [num for num in numbers if num % 2 == 0]{}
С :=:
filtered = [num for _ in range(10) if (num := random.randint(1, 100)) % 2 == 0]{}
🚩Когда не стоит использовать `:=`?
Если код становится сложнее для чтения
if (a := func()) and (b := another_func(a)) > 10:
...{}
Ставь 👍 и забирай 📚 Базу знанийGunicorn, Daphne).
Если проект синхронный → работает через WSGI (wsgi.py).
Если проект асинхронный → через ASGI (asgi.py).
GET /hello/ HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0{}
🟠Django создаёт `HttpRequest` объект
Django превращает HTTP-запрос в объект HttpRequest, который передаётся в view.
def my_view(request):
print(request.method) # 'GET'
print(request.path) # '/hello/'
print(request.GET) # {'name': 'Alice'}{}
🟠Middleware (промежуточная обработка)
Прежде чем запрос дойдёт до view, Django проходит через мидлвари, которые могут:
Проверять авторизацию (AuthenticationMiddleware).
Защищать от CSRF (CsrfViewMiddleware).
Перенаправлять запросы (CommonMiddleware).
MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
]{}
🟠Поиск `view` в `urls.py`
Django ищет, какая функция (view) должна обработать этот URL.
from django.urls import path
from myapp.views import hello_view
urlpatterns = [
path("hello/", hello_view), # Запрос "/hello/" попадёт в hello_view
]{}
🟠Выполнение `view` (контроллера)
Когда Django находит подходящее представление (view), оно вызывается.
from django.http import HttpResponse
def hello_view(request):
return HttpResponse("Привет, мир!"){}
🟠Формирование и обработка ответа
Django берёт HttpResponse и передаёт его обратно через middleware (например, сжатие, защита, заголовки безопасности).
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 12
Привет, мир!{}
🟠WSGI/ASGI сервер отправляет ответ клиенту
На последнем этапе WSGI/ASGI-сервер отправляет ответ обратно браузеру или API-клиенту.
🚩Краткая схема обработки запроса
Клиент (браузер) → WSGI/ASGI → Django Middleware → URL Dispatcher → View → Response → Клиент{}
Ставь 👍 и забирай 📚 Базу знанийОтзывы канала
всего 2 отзыва
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
Python | Вопросы собесов — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 13.2K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 5.3, количество отзывов – 2, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 3776.22 ₽, а за 13 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий