Python | Вопросы собесов
Cайт: easyoffer.ru Реклама: @easyoffer_adv ВП: @easyoffer_vp Тесты t.me/+20tRfhrwPpM4NDQy Задачи t.me/+nsl4meWmhfQwNDVi Вакансии t.me/+cXGKkrOY2-w3ZTky
Ko'proq ko'rsatish📈 Telegram kanali Python | Вопросы собесов analitikasi
Python | Вопросы собесов (@python_easy_ru) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 13 104 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 9 745-o'rinni va Rossiya mintaqasida 50 714-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 13 104 obunachiga ega bo‘ldi.
09 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -53 ga, so‘nggi 24 soatda esa -3 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 8.62% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 5.62% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 1 129 marta ko‘riladi; birinchi sutkada odatda 737 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 4 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent ставь, модуль, строка, docker, alice kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Cайт: easyoffer.ru
Реклама: @easyoffer_adv
ВП: @easyoffer_vp
Тесты t.me/+20tRfhrwPpM4NDQy
Задачи t.me/+nsl4meWmhfQwNDVi
Вакансии t.me/+cXGKkrOY2-w3ZTky”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 10 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
HttpResponse, JsonResponse и т.д. В Flask это может быть объект Response или просто строка, которая будет конвертирована в ответ.
from django.http import HttpResponse
def my_view(request):
data = "Hello, World!"
return HttpResponse(data)
Пример в Flask
from flask import Flask, Response
app = Flask(__name__)
@app.route('/')
def my_view():
return Response("Hello, World!")
2⃣Обработка промежуточными слоями (Middleware)
После того как вьюха сформировала ответ, он проходит через цепочку промежуточных слоев (middleware). Middleware могут модифицировать объект ответа, добавлять заголовки, обрабатывать ошибки и т.д. Примеры обработки включают логирование, сжатие контента, обработку сессий и т.д.
class SimpleMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
response['X-Custom-Header'] = 'My Custom Header'
return response
3⃣Обработка сервером и отправка ответа
После прохождения всех промежуточных слоев ответ передается веб-серверу. Веб-сервер, такой как Nginx или Apache, отправляет сформированный ответ обратно клиенту (например, браузеру). Сервер обрабатывает низкоуровневые детали HTTP-протокола, такие как установка соединения, обработка заголовков и передача данных.
Ставь 👍 и забирай 📚 Базу знаний
# Пример извлеченных данных для отпечатка пальца
# Координаты минуций и углы наклона (в реальных случаях извлекаются автоматически)
fingerprint_data_1 = [
{"x": 100, "y": 200, "angle": 45},
{"x": 120, "y": 215, "angle": 60},
{"x": 130, "y": 210, "angle": 90},
{"x": 115, "y": 205, "angle": 30},
]
#### Функция для генерации шаблона
import math
# Функция для создания шаблона отпечатка
def create_fingerprint_template(fingerprint_data):
# Преобразуем каждую минутию в формат (x, y, angle)
template = []
for minutia in fingerprint_data:
👉👉👉 ЧИТАТЬ ДАЛЬШЕ 🤖🤖🤖def fetch_data_from_db():
# Имитация запроса к базе данных
return {"user": "John", "email": "john@example.com"}
def send_email(data):
# Имитация отправки электронной почты
print(f"Sending email to {data['email']}")
def process_user_data():
data = fetch_data_from_db()
send_email(data)
Интеграционный тест может выглядеть так
def test_process_user_data():
data = fetch_data_from_db()
assert data["email"] == "john@example.com"
send_email(data)
🚩Функциональное тестирование
Проверка функциональности системы на соответствие требованиям.
🟠Фокус на функциональности
Проверяет, выполняет ли система свои функции в соответствии с заданными требованиями.
🟠Проверка конечного поведения
Тестирует систему с точки зрения конечного пользователя.
🟠Все уровни тестирования
Может включать юнит-тесты, интеграционные тесты, системные и приемочные тесты.
🟠Тестирование "черного ящика"
Не требует знания внутренней структуры или кода системы.
🟠Инструменты
Могут использоваться автоматизированные тестовые фреймворки, такие как Selenium для веб-приложений.
def register_user(username, password):
# Имитация регистрации пользователя
if username and password:
return "Registration successful"
else:
return "Registration failed"
Функциональный тест может выглядеть так:
def test_register_user():
assert register_user("testuser", "securepassword") == "Registration successful"
assert register_user("", "securepassword") == "Registration failed"
🚩Ключевые отличия
🟠Цель
Интеграционное тестирование: Проверка взаимодействия между модулями.
Функциональное тестирование: Проверка функциональности системы на соответствие требованиям.
🟠Фокус
Интеграционное тестирование: Взаимодействие и интерфейсы между модулями.
Функциональное тестирование: Поведение системы с точки зрения пользователя.
🟠Уровень тестирования
Интеграционное тестирование: Промежуточный уровень между юнит-тестами и системными тестами.
Функциональное тестирование: Может охватывать все уровни, включая юнит-тесты, интеграционные, системные и приемочные тесты.
🟠Методология
Интеграционное тестирование: Тестирование "серого ящика" (частичное знание внутренней структуры).
Функциональное тестирование: Тестирование "черного ящика" (без знания внутренней структуры).
Ставь 👍 и забирай 📚 Базу знанийimport time
def expensive_operation(data):
time.sleep(5) # Имитация долгой операции
return sum(data)
def process_data(data):
result = []
for item in data:
result.append(expensive_operation(item))
return result
🚩Оптимизация с использованием
🟠Мокирования
Мы можем замокировать expensive_operation, чтобы она возвращала заранее определенные результаты без выполнения долгих операций.
from unittest.mock import patch
def test_process_data():
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
with patch('__main__.expensive_operation') as mock_expensive:
mock_expensive.side_effect = [6, 15, 24] # Заранее определенные результаты
result = process_data(data)
assert result == [6, 15, 24]
assert mock_expensive.call_count == 3 # Проверка, что функция вызвана 3 раза
🟠Кэширования
Используем кэширование для хранения результатов дорогостоящих операций.
from functools import lru_cache
@lru_cache(maxsize=None)
def expensive_operation(data):
time.sleep(5) # Имитация долгой операции
return sum(data)
def process_data(data):
result = []
for item in data:
result.append(expensive_operation(tuple(item))) # Преобразуем список в кортеж для кэширования
return result
🚩Использование фикстур в pytest
Фикстуры для подготовки данных
Создаем фикстуры для подготовки данных, которые используются в тестах.
import pytest
@pytest.fixture
def sample_data():
return [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
def test_process_data(sample_data):
with patch('__main__.expensive_operation') as mock_expensive:
mock_expensive.side_effect = [6, 15, 24] # Заранее определенные результаты
result = process_data(sample_data)
assert result == [6, 15, 24]
🚩Параллельное выполнение тестов
Запуск тестов параллельно
Используйте возможности параллельного выполнения тестов, например, с помощью pytest-xdist.
pytest -n 4 # Запуск тестов в 4 параллельных потоках
Ставь 👍 и забирай 📚 Базу знанийunittest.mock можно подменить вызовы к внешним сервисам и задать их поведение, включая ошибки и исключения.
2⃣Обработка исключений в тестируемой функции
В тестируемой функции следует предусмотреть обработку возможных ошибок, таких как таймауты и HTTP-статусы (например, 404), чтобы она корректно реагировала на эти ситуации.
Предположим, у нас есть функция, которая запрашивает данные с удаленного сервиса
import requests
def fetch_data_from_api(url):
try:
response = requests.get(url, timeout=5)
response.raise_for_status()
return response.json()
except requests.exceptions.Timeout:
return {"error": "Timeout"}
except requests.exceptions.HTTPError as http_err:
return {"error": f"HTTP error: {http_err.response.status_code}"}
except requests.exceptions.RequestException as err:
return {"error": f"Request error: {err}"}
🚩Тестирование с использованием `unittest.mock`
Установка поведения для mock-объекта
Создадим тесты, которые подменяют вызов requests.get и задают различные сценарии ошибок.
from unittest.mock import patch
import requests
import pytest
def test_fetch_data_timeout():
with patch('requests.get') as mock_get:
mock_get.side_effect = requests.exceptions.Timeout
result = fetch_data_from_api("https://example.com/data")
assert result == {"error": "Timeout"}
def test_fetch_data_404():
with patch('requests.get') as mock_get:
mock_response = mock_get.return_value
mock_response.raise_for_status.side_effect = requests.exceptions.HTTPError(response=mock_response)
mock_response.status_code = 404
result = fetch_data_from_api("https://example.com/data")
assert result == {"error": "HTTP error: 404"}
def test_fetch_data_request_exception():
with patch('requests.get') as mock_get:
mock_get.side_effect = requests.exceptions.RequestException("Connection error")
result = fetch_data_from_api("https://example.com/data")
assert result == {"error": "Request error: Connection error"}
1⃣Тест на таймаут
Используем mock_get.side_effect = requests.exceptions.Timeout для имитации ошибки таймаута. Проверяем, что функция возвращает ожидаемое значение при таймауте.
2⃣Тест на HTTP ошибку 404
Устанавливаем mock_response.raise_for_status.side_effect = requests.exceptions.HTTPError(response=mock_response) для имитации HTTP ошибки. Устанавливаем код статуса mock_response.status_code = 404. Проверяем, что функция возвращает ожидаемое значение при HTTP ошибке 404.
3⃣Тест на общую ошибку запроса
Используем mock_get.side_effect = requests.exceptions.RequestException("Connection error") для имитации общей ошибки запроса. Проверяем, что функция возвращает ожидаемое значение при общей ошибке запроса.
Ставь 👍 и забирай 📚 Базу знанийdef add(a, b):
return a + b
def test_add():
assert add(1, 2) == 3
🟠Интеграционные тесты (Integration Tests)
Расположение: Средний уровень пирамиды.
Цель: Тестирование взаимодействия между различными модулями или компонентами.
Количество: Меньше, чем юнит-тестов, но больше, чем системных тестов.
Особенности: Проверка интерфейсов и взаимодействия между модулями, более сложные и медленные, чем юнит-тесты.
def fetch_data_from_api():
response = requests.get('https://api.example.com/data')
return response.json()
def test_fetch_data_from_api():
data = fetch_data_from_api()
assert 'key' in data
🟠Системные тесты (System Tests)
Расположение: Вершина пирамиды.
Цель: Тестирование всей системы целиком на соответствие требованиям.
Количество: Наименьшее количество тестов.
Особенности: Включают тестирование пользовательских сценариев, проверку функциональных и нефункциональных требований, самые сложные и медленные.
🚩Зачем нужна
🟠Оптимизация затрат на тестирование
Юнит-тесты дешевле в написании и выполнении, чем интеграционные и системные тесты.
🟠Снижение времени выполнения тестов
Большое количество юнит-тестов позволяет быстро находить ошибки на ранних стадиях разработки.
🟠Поддержание качества кода
Юнит-тесты способствуют улучшению дизайна кода и повышают его тестируемость.
🟠Снижение риска регрессий
Хорошее покрытие юнит-тестами позволяет быстро обнаруживать и исправлять ошибки, возникающие после внесения изменений в код.
Ставь 👍 и забирай 📚 Базу знанийdef add(a, b):
return a + b
def test_add():
assert add(1, 2) == 3
🟠Интеграционные тесты (Integration Tests)
Проверка взаимодействия между различными модулями или компонентами системы.
Тестируют комбинации модулей и их взаимодействие.
Более сложные и медленные по сравнению с юнит-тестами.
Могут выявить проблемы в интерфейсах между модулями.
def fetch_data_from_api():
response = requests.get('https://api.example.com/data')
return response.json()
def test_fetch_data_from_api():
data = fetch_data_from_api()
assert 'key' in data
🟠Системные тесты (System Tests)
Проверка всей системы целиком на соответствие требованиям.
Тестируют систему в рабочей среде.
Включают проверку всех функциональных и нефункциональных требований.
Могут включать пользовательские сценарии.
Тестирование веб-приложения на основе реальных пользовательских сценариев, включая проверку интерфейса, баз данных и API.
🟠Приемочные тесты (Acceptance Tests)
Проверка соответствия системы требованиям и ожиданиям заказчика или конечного пользователя.
Часто выполняются вместе с заказчиком или пользователем.
Фокусируются на бизнес-требованиях и пользовательских сценариях.
Успешное прохождение приемочных тестов является критерием готовности системы к выпуску.
Тестирование нового функционала с участием конечных пользователей для проверки его удобства и соответствия их ожиданиям.
🟠Регрессионные тесты (Regression Tests)
Убедиться, что изменения в коде не вызвали новых ошибок в уже работающем функционале.
Выполняются после внесения изменений в код.
Обычно автоматизируются и включают повторное выполнение всех или части существующих тестов.
Повторное выполнение всех юнит-тестов и интеграционных тестов после рефакторинга кода.
🟠Нефункциональные тесты (Non-functional Tests)
Проверка нефункциональных аспектов системы, таких как производительность, безопасность, удобство использования и др.
🚩Основные виды:
🟠Тесты производительности
Измеряют скорость выполнения, пропускную способность и время отклика системы.
🟠Тесты безопасности
Оценивают защищенность системы от угроз и атак.
🟠Тесты удобства использования
Проверяют удобство и интуитивность пользовательского интерфейса.
Ставь 👍 и забирай 📚 Базу знаний
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
