Тестировщик | Вопросы собесов
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
Ko'proq ko'rsatish📈 Telegram kanali Тестировщик | Вопросы собесов analitikasi
Тестировщик | Вопросы собесов (@easy_qa_ru) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 12 150 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 9 937-o'rinni va Rossiya mintaqasida 52 551-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 12 150 obunachiga ega bo‘ldi.
07 Oktabr, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -39 ga, so‘nggi 24 soatda esa -1 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 6.40% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 4.17% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 777 marta ko‘riladi; birinchi sutkada odatda 507 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 2 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent ставь, api, testing, ввод, интерфейс kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 08 Oktabr, 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.
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 (если прав недостаточно).
Ставь 👍 и забирай 📚 Базу знаний