Тестировщик | Вопросы собесов
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
Больше📈 Аналитический обзор Telegram-канала Тестировщик | Вопросы собесов
Канал Тестировщик | Вопросы собесов (@easy_qa_ru) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 12 151 подписчиков, занимая 9 937 место в категории Технологии и приложения и 52 551 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 12 151 подписчиков.
Согласно последним данным от 06 октября, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -47, а за последние 24 часа — -1, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 6.45%. В первые 24 часа после публикации контент обычно набирает 4.18% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 784 просмотров. В течение первых суток публикация набирает 508 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 3.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как ставь, api, testing, ввод, интерфейс.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads”
Благодаря высокой частоте обновлений (последние данные получены 07 октября, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
RecursionError.
def factorial(n):
if n == 0: # Базовый случай
return 1
return n * factorial(n - 1) # Рекурсивный случай
print(factorial(5)) # 120
🚩Рекурсивный случай
Это часть функции, которая уменьшает входные данные и вызывает саму себя.
Без уменьшения данных функция никогда не достигнет базового случая.
Пример: сумма чисел от n до 1
def sum_numbers(n):
if n == 1: # Базовый случай
return 1
return n + sum_numbers(n - 1) # Рекурсивный случай
print(sum_numbers(5)) # 15 (5+4+3+2+1)
🚩Ошибки при рекурсии
Нет базового случа*
def infinite_recursion(n):
print(n)
return infinite_recursion(n - 1) # Нет выхода!
# infinite_recursion(5) # Вызовет RecursionError!
Неправильное уменьшение аргумента
def incorrect_recursion(n):
if n == 0:
return 1
return n * incorrect_recursion(n + 1) # Увеличение вместо уменьшения!
# incorrect_recursion(5) # Бесконечная рекурсия
Ставь 👍 и забирай 📚 Базу знанийPOST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 50
{
"name": "Иван",
"email": "ivan@example.com"
}
🚩Форматы Body в POST
JSON – самый популярный формат в REST API.
{
"username": "test",
"password": "12345"
}
Form-urlencoded – используется в формах HTML.
username=test&password=12345
Multipart/form-data – для загрузки файлов.
Content-Disposition: form-data; name="file"; filename="image.jpg"
XML – иногда используется в SOAP API.
<user>
<name>Иван</name>
<email>ivan@example.com</email>
</user>
🚩Что происходит на сервере?
1. Сервер принимает POST-запрос.
2. Читает Content-Type и парсит body.
3. Обрабатывает данные (например, сохраняет пользователя в базе).
4. Возвращает ответ (201 Created, 200 OK или 400 Bad Request, если ошибка).
Ставь 👍 и забирай 📚 Базу знанийGET /api/resource HTTP/1.1
Authorization: Bearer your_access_token
🟠Сопоставление ключа с базой данных
Сервер проверяет ключ, сравнивая его с сохраненными данными:
Где хранятся ключи? Обычно ключи хранятся в защищенной базе данных в виде:
- Оригинала (например, API-ключей).
- Хэша (например, для JWT или паролей, чтобы не хранить оригинальные данные).
Что проверяется?
- Существование ключа.
- Связанная с ним информация (например, пользователь, срок действия, права доступа).
🟠Проверка срока действия (Expiration Time)
Для токенов (например, JWT) или временных ключей сервер проверяет, не истек ли срок действия: Для API-ключей это может быть статическое поле "срок действия" в базе данных.
Для JWT срок действия зашит в самом токене в поле exp.
🟠Валидация подписи (для JWT или шифрованных ключей)
Если используется токен, сервер проверяет его подлинность с помощью подписи:
JWT: Сервер декодирует токен и проверяет подпись, используя секретный ключ (HS256) или открытый ключ (RS256). Если подпись невалидна, запрос отклоняется.
Зачем подпись?
Чтобы удостовериться, что токен был выдан сервером и не изменен.
Пример кода валидации JWT на Python с использованием библиотеки PyJWT
import jwt
SECRET_KEY = "your_secret_key"
def validate_jwt(token):
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=["HS256"])
return payload # Возвращает данные токена, если он валиден
except jwt.ExpiredSignatureError:
return "Token expired"
except jwt.InvalidTokenError:
return "Invalid token"
🟠Проверка прав доступа
Сервер анализирует связанный с ключом контекст (например, роли или разрешения):
Пример: Пользователь с ключом KEY123 имеет доступ только к определенным данным или функциям.
Реализация: Хранение прав в базе данных или в самом токене (внутри payload).
🟠Ответ на основе результата проверки
Если ключ валиден, сервер разрешает доступ к ресурсу и возвращает данные. Если ключ недействителен (не существует, истек, не имеет прав), сервер возвращает ошибку, например:
401 Unauthorized (для отсутствия или невалидного ключа).
403 Forbidden (если прав недостаточно).
Ставь 👍 и забирай 📚 Базу знаний