uz
Feedback

Firibgarlarga uchmang! Telemetrio bunday kanallarni topadi va belgilaydi 👉 Belgini ko‘rmoqchi bo‘lsangiz, obuna bo‘ling

Python | Вопросы собесов

Python | Вопросы собесов

Kanalga Telegram’da o‘tish

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads

Ko'proq ko'rsatish

📈 Telegram kanali Python | Вопросы собесов analitikasi

Python | Вопросы собесов (@python_easy_ru) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 12 635 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 9 920-o'rinni va Rossiya mintaqasida 51 114-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 12 635 obunachiga ega bo‘ldi.

15 Oktabr, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -109 ga, so‘nggi 24 soatda esa 0 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 6.20% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 4.23% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 783 marta ko‘riladi; birinchi sutkada odatda 535 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 3 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:
“Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads”

Yuqori yangilanish chastotasi (oxirgi ma’lumot 16 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.

12 635
Obunachilar
Ma'lumot yo'q24 soatlar
-277 kun
-10930 kun
Postlar arxiv
🤔 Что в python не является объектом? В Python практически всё является объектом: числа, строки, функции, классы, модули и даже сам интерпретатор Python рассматривает их как объекты. Однако есть несколько вещей, которые объектами не являются: 🟠Операторы и синтаксические конструкции Операторы (+, -, *, and, or, not и т. д.) сами по себе не являются объектами. Они — часть синтаксиса языка и не имеют представления в виде объектов в памяти.
   a = 10 + 5  # Оператор "+" выполняет сложение, но сам по себе не объект
   print(type(+))  # Ошибка: нельзя получить тип оператора
🟠Ключевые слова (keywords) Встроенные ключевые слова Python (if, else, while, for, def, class, return и т. д.) не являются объектами. Они зарезервированы интерпретатором и используются для управления потоком выполнения кода.
   print(type(if))  # Ошибка: ключевое слово не является объектом
🟠Идентификаторы переменных Хотя переменные ссылаются на объекты, сами идентификаторы (имена переменных) — это просто ссылки, а не объекты.
   x = 42  # x — это имя, а не объект
   print(type(x))  # Это целое число, но само имя "x" объектом не является
🟠Аннотации типов во время компиляции Аннотации типов в Python, такие как list[str], не создают объекты во время компиляции кода. Они интерпретируются только на уровне анализа типов.
   def func(x: int) -> str:
       return str(x)
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как с помощью одного запроса можно выбрать данные из двух таблиц? Используйте объединение таблиц через UNION или соединения JOIN. Например, SELECT * FROM table1 UNION SELECT * FROM table2. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое @dataclass? Это декоратор, предоставленный модулем dataclasses, который автоматически генерирует специальные методы, такие как __init__,🤔 Что так🤔 Что т и другие, для вашего класса. Это упрощает создание классов, предназначенных для хранения данных, устраняя необходимость писать много шаблонного кода. 🚩Зачем нужен 🟠Упрощение кода Автоматически генерирует методы, сокращая шаблонный код. 🟠Читабельность Делает код более чистым и легким для понимания. 🟠Удобство Обеспечивает удобные и мощные возможности для работы с данными. 🚩Как использовать Нужно импортировать его из модуля dataclasses и применить к классу. Внутри класса достаточно определить только поля данных.
from dataclasses import dataclass

@dataclass
class Person:
    name: str
    age: int

# Примеры использования
person1 = Person(name="Alice", age=30)
person2 = Person(name="Bob", age=25)

print(person1)  # Вывод: Person(name='Alice', age=30)
print(person2)  # Вывод: Person(name='Bob', age=25)
print(person1 == person2)  # Вывод: False
🚩Автоматически генерируемые методы 🟠`__init__` Инициализирует объект с заданными значениями атрибутов. 🟠`__repr__` Возвращает строковое представление объекта, удобное для отладки. 🟠`__eq__` Сравнивает объекты на равенство по их атрибутам. 🟠`__lt__`, __le__,🤔 Что так🤔 Что такМогут быть сгенерированы для сравнения объектов (если указано). 🚩Настройка поведения Вы можете настроить поведение @dataclass с помощью параметров, таких как order, frozen, и других. 🟠`order=True` Генерирует методы для сравнения объектов. 🟠`frozen=True` Делает экземпляры неизменяемыми (immutable). Пример
from dataclasses import dataclass

@dataclass(order=True, frozen=True)
class Person:
    name: str
    age: int

person1 = Person(name="Alice", age=30)
person2 = Person(name="Bob", age=25)

print(person1 > person2)  # Вывод: True (поскольку 'Alice' > 'Bob' по алфавиту, если имена равны, сравниваются возраста)
# person1.age = 31  # Ошибка: FrozenInstanceError (поскольку класс заморожен)
🚩Поля данных и их настройки Вы можете использовать функцию field() для настройки отдельных полей, например, для указания значений по умолчанию или исключения полей из методов
5)

print(
🤔 Что т и других.
from dataclasses import dataclass, field

@dataclass
class Person:
    name: str
    age: int = 0
    address: str = field(default="Unknown", repr=False)

person = Person(name="Alice")
print(person)  # Вывод: Person(name='Alice', age=0)
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как выбрать данные из двух таблиц без метода JOIN()? Используйте подзапросы, например, в WHERE или SELECT, чтобы извлекать связанные данные. Пример: вложенный запрос вместо явного соединения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что делает git commit? Команда git commit используется для фиксации изменений в локальном репозитории Git. Она сохраняет текущие изменения в коде (добавленные, изменённые или удалённые файлы), которые были подготовлены с помощью команды git add. По сути, git commit создаёт "снимок" текущего состояния проекта, который можно использовать для отслеживания истории изменений, их анализа или отката к более ранним версиям. 🚩Как это работает? Когда вы работаете с Git, ваши изменения сначала попадают в рабочую директорию. После этого, чтобы зафиксировать их, вы добавляете их в индекс (staging area) с помощью команды git add. Только те изменения, которые находятся в индексе, будут включены в следующий коммит. Команда git commit фиксирует все изменения из staging area и сохраняет их как новую версию в истории проекта. 🚩Почему это нужно? 🟠История изменений Каждый коммит сохраняет подробную информацию о том, что было изменено, когда и почему. Это позволяет отслеживать развитие проекта. 🟠Версионность Можно вернуться к любой точке в истории и восстановить состояние проекта. 🟠Совместная работа В командной разработке коммиты позволяют другим разработчикам видеть изменения и их причины. 🟠Разделение задач Коммиты разбивают изменения на логические единицы, что упрощает их понимание.
# Шаг 1. Внести изменения в файл
echo "Hello, Git!" > example.txt

# Шаг 2. Добавить изменения в staging area
git add example.txt

# Шаг 3. Зафиксировать изменения
git commit -m "Добавил файл example.txt с приветственным текстом"
Ставь 👍 и забирай 📚 Базу знаний

🤔 Каким образом можно найти "медленный запрос" и проанализировать его в PostgreSQL? 1. Включите логирование медленных запросов: настройте параметр log_min_duration_statement. 2. Используйте EXPLAIN или EXPLAIN ANALYZE для анализа выполнения запроса. 3. Проверьте индексирование и оптимизацию запросов. 4. Анализируйте статистику работы базы через pg_stat_statements. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как устроен протокол HTTP? HTTP (HyperText Transfer Protocol) — это протокол передачи данных, используемый для взаимодействия между клиентом (например, браузером) и сервером. Он является основой работы веба. Протокол устроен как текстовый, клиент-серверный и бесстатичный. 🚩Основные принципы HTTP 🟠Клиент-серверная архитектура Клиент (например, браузер) отправляет запросы серверу, сервер отвечает на них. 🟠Бесстатичность Каждый запрос независим от других. Сервер не сохраняет состояние клиента между запросами. Для сохранения состояния используются сессии, куки или токены. 🟠Текстовый протокол HTTP-запросы и ответы передаются в виде текста, что делает их легко читаемыми. 🚩Структура HTTP-запроса 🟠Стартовая строка Указывает метод, URL и версию протокола.
   GET /index.html HTTP/1.1
   
🟠Заголовки (headers) Дополнительная информация о запросе.
   Host: www.example.com
   User-Agent: Mozilla/5.0
   Accept: text/html
   
🟠Тело запроса (body) Используется в некоторых методах (например, POST), чтобы передать данные на сервер.
   name=John&age=30
   
🚩Структура HTTP-ответа 🟠Стартовая строка Указывает версию протокола, код состояния и текстовое описание.
   HTTP/1.1 200 OK
   
🟠Заголовки (headers) Дополнительные данные, например, тип содержимого.
   Content-Type: text/html
   Content-Length: 348
   
🟠Тело ответа (body) Содержит данные, которые сервер отправляет клиенту (например, HTML-страница).
   <html>
       <body>Hello, world!</body>
   </html>
   
🚩Основные HTTP-методы 🟠GET Запрашивает данные с сервера. Данные передаются в URL. 🟠POST Отправляет данные на сервер (например, формы). 🟠PUT Обновляет данные на сервере или создаёт, если они отсутствуют. 🟠DELETE Удаляет данные на сервере. 🟠HEAD Аналог GET, но возвращает только заголовки без тела ответа. 🟠OPTIONS Возвращает информацию о поддерживаемых методах для ресурса. 🟠PATCH Частичное обновление ресурса. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое блокировки (локи) в БД? Это механизм синхронизации доступа к данным, предотвращающий одновременное изменение одних и тех же данных разными транзакциями, чтобы избежать конфликтов и сохранить целостность. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

⚡ Новые каналы с вакансиями и стажировками для джунов В этих каналах публикуются все свежие вакансии и стажировки 🔺 ВАКАНСИИ
⚡ Новые каналы с вакансиями и стажировками для джунов В этих каналах публикуются все свежие вакансии и стажировки 🔺 ВАКАНСИИ
Горячие вакансии с привлекательными офферами для джуниор разработчиков, аналитиков, дизайнеров и QA-специалистов.
👉 ПОДПИСАТЬСЯ 🔺СТАЖИРОВКИ
Стажировки для начинающих специалистов в IT независимо от возраста!
👉 ПОДПИСАТЬСЯ 🔺Junojobs
Вакансии и стажировки для junior-разработчиков на удалёнке.
👉 ПОДПИСАТЬСЯ 🔺БИГТЕХ
Junior вакансии и стажировки в крупнейших IT-компаниях мира: NVidia, Apple, T-банк, Яндекс, Google и т. д.
👉 ПОДПИСАТЬСЯ 🔺Макс из < codereview />
Эксперименты про трудоустройство в IT, советы для быстрого поиска работы и офферы для джунов.
👉 ПОДПИСАТЬСЯ

🤔 Что такое cookie? Это небольшой файл, который создаётся веб-сайтом и сохраняется в браузере пользователя. Куки используются для хранения информации, связанной с пользователем, чтобы улучшить его взаимодействие с сайтом. 🚩Зачем нужны куки? Куки помогают веб-сайтам «запоминать» данные о пользователе. Вот основные цели их использования: 🟠Аутентификация Например, после входа в аккаунт куки сохраняют ваш статус (авторизован вы или нет). 🟠Сохранение предпочтений Куки могут хранить ваши настройки, например, выбранный язык или тему сайта. 🟠Сессии и корзины Если вы добавляете товары в корзину в интернет-магазине, эта информация может храниться в куки. 🟠Отслеживание действий Куки используются для аналитики и рекламы, чтобы понять, как вы взаимодействуете с сайтом, или показать персонализированные объявления. 🚩Как работают куки? Когда вы заходите на сайт, сервер может отправить куки вашему браузеру вместе с HTTP-ответом. Браузер сохраняет эти данные и отправляет их обратно на сервер при последующих запросах. Куки привязаны к домену, и только этот домен может их читать. 🚩Пример использования куки Создание куки на сервере (Python, Flask)
from flask import Flask, request, make_response

app = Flask(__name__)

@app.route('/set_cookie')
def set_cookie():
    response = make_response("Cookie установлена!")
    response.set_cookie('username', 'JohnDoe')  # Устанавливаем куки с именем "username"
    return response

@app.route('/get_cookie')
def get_cookie():
    username = request.cookies.get('username')  # Получаем значение куки
    return f'Привет, {username}!' if username else 'Куки не найдены.'

if __name__ == '__main__':
    app.run(debug=True)
🚩Типы куки 🟠Сессионные куки (Session Cookies) Хранятся только во время работы браузера и удаляются после его закрытия. 🟠Постоянные куки (Persistent Cookies) Сохраняются на устройстве пользователя до истечения срока действия. 🟠Безопасные куки (Secure Cookies) Передаются только через HTTPS для обеспечения безопасности. 🟠HttpOnly куки Не доступны через JavaScript, используются для защиты от XSS-атак. 🚩Плюсы и минусы ➕Помогают сохранять пользовательские данные для упрощения работы с сайтом. ➕Могут улучшить пользовательский опыт за счёт персонализации. ➖Могут использоваться для отслеживания активности (privacy concerns). ➖Неправильное управление куки может привести к утечкам данных. Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие блокировки бывают в Postgres? 1. Row-level locks: блокируют отдельные строки (например, FOR UPDATE, FOR SHARE). 2. Table-level locks: блокируют таблицы на операции (ACCESS SHARE, ROW EXCLUSIVE, EXCLUSIVE и другие). 3. Advisory locks: пользовательские блокировки, задаваемые вручную. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое объект первого класса? Объект первого класса (или сущность первого класса) — это концепция из программирования, которая означает, что объект обладает всеми следующими свойствами: 🟠Хранение в переменной или структуре данных объект можно присвоить переменной или сохранить в структуре данных (например, списке, словаре). 🟠Передача в функцию в качестве аргумента объект можно передавать как параметр функции. 🟠Возврат из функции как результата функция может возвращать объект. 🟠Динамическое создание объект можно создавать во время выполнения программы (не только на этапе компиляции). 🚩Почему это важно? Объекты первого класса делают язык более гибким и мощным. Например: Функции можно передавать как аргументы для реализации более сложных вычислений. Можно хранить функции в структурах данных, что позволяет создавать таблицы вызовов функций или карты действий. Возможность возвращать функции из других функций упрощает реализацию таких концепций, как замыкания и фабрики функций. 🚩Пример на Python Присваивание функции переменной
def say_hello():
    return "Hello!"

# Функция присваивается переменной
greet = say_hello
print(greet())  # Вывод: Hello!
Передача функции как аргумента
def apply_function(func, value):
    return func(value)

def square(x):
    return x * x

result = apply_function(square, 5)
print(result)  # Вывод: 25
Возврат функции из функции
def multiplier(n):
    def multiply(x):
        return x * n
    return multiply

double = multiplier(2)
print(double(10))  # Вывод: 20
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как можно заблокировать конкретные поля в Postgres? Используйте LOCK или специфичные транзакционные механизмы, чтобы ограничить доступ к строкам или таблицам. Например, для блокировки только на уровне записи (строки) применяют SELECT FOR UPDATE. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что случится с сервером при использовании GET? Когда сервер получает HTTP-запрос типа GET, он выполняет следующие действия 🟠Анализ запроса проверяет URL и параметры в строке запроса (например, ?id=123). 🟠Поиск ресурса находит запрашиваемый файл, данные из базы или другой ресурс. 🟠Возврат ответа отправляет данные клиенту (если ресурс найден — код 200, если нет — 404). 🚩Особенности GET-запроса 🟠Безопасный не изменяет данные на сервере, используется только для чтения. 🟠Идемпотентный повторные запросы дают одинаковый результат. 🟠Параметры в URL данные передаются через строку запроса, что не подходит для конфиденциальной информации.
import requests

response = requests.get("https://api.example.com/data", params={"id": 123})
print(response.text)  # Данные с сервера
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как происходит обработка HTTP-запросов на Django? 1. Маршрутизация: Django URLconf определяет, какая функция обработает запрос. 2. View: соответствующий обработчик запроса (функция или класс) выполняет логику. 3. Model: View взаимодействует с базой данных через ORM. 4. Template: данные передаются в шаблон для формирования ответа. 5. Ответ: сформированный HTTP-ответ отправляется клиенту. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие типы данных относятся к структурам данных? В Python существует множество структур данных, которые предоставляют различные способы хранения и управления данными. Они делятся на два основных типа: встроенные структуры данных и пользовательские структуры данных (созданные программистом). Встроенные структуры данных предоставляют готовые инструменты для решения большинства задач, а пользовательские разрабатываются вручную для более сложных или специфичных случаев. 🚩Встроенные структуры данных К ним относятся те типы данных, которые изначально встроены в Python. Они обеспечивают простое и удобное управление данными. Вот основные типы: 🟠Список (List) Массив, который может содержать элементы разных типов. Динамический (размер меняется), упорядоченный (элементы хранятся в порядке добавления).
my_list = [1, "hello", 3.14]
print(my_list[1])  # "hello"
🟠Кортеж (Tuple) Похож на список, но неизменяемый. Используется для данных, которые не должны быть изменены.
my_tuple = (10, 20, 30)
print(my_tuple[0])  # 10
🟠Множество (Set) Неупорядоченная коллекция уникальных элементов. Удобно для работы с множествами (поиск пересечений, объединений и т.д.).
my_set = {1, 2, 3, 2}
print(my_set)  # {1, 2, 3}
🟠Словарь (Dictionary) Хранит пары ключ-значение. Очень эффективен для быстрого поиска данных по ключу.
my_dict = {"name": "Alice", "age": 25}
print(my_dict["name"])  # Alice
🚩Пользовательские структуры данных Эти структуры создаются с помощью классов или других механизмов, доступных в Python. Они применяются для решения задач, которые не могут быть эффективно выполнены встроенными средствами. 🟠Стек (Stack) Принцип работы: LIFO (последним пришел — первым ушел). Реализуется через список или collections.deque.
stack = []
stack.append(10)  # Добавление
stack.append(20)
print(stack.pop())  # Удаление последнего элемента (20)
🟠Очередь (Queue) Принцип работы: FIFO (первым пришел — первым ушел). Реализуется через collections.deque или библиотеку queue.
from collections import deque

queue = deque()
queue.append(10)
queue.append(20)
print(queue.popleft())  # 10
🟠Связный список (Linked List) Элементы связаны друг с другом через указатели. Гибче массивов, но сложнее в реализации.
class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class LinkedList:
    def __init__(self):
        self.head = None

    def append(self, data):
        if not self.head:
            self.head = Node(data)
        else:
            current = self.head
            while current.next:
                current = current.next
            current.next = Node(data)
🟠Графы, деревья и др. Более сложные структуры для представления связей, иерархий и прочих зависимостей. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое Model View Template (MVT)? Это архитектурный шаблон, используемый в Django. - Model: представляет данные и логику их обработки. - View: содержит бизнес-логику и взаимодействует с Model. - Template: отвечает за отображение данных, предоставленных View, в HTML-формате. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое паттерн Мост (Bridge)? Паттерн "Мост" (Bridge) является структурным паттерном проектирования, который предназначен для разделения абстракции и реализации так, чтобы они могли изменяться независимо друг от друга. Этот паттерн полезен, когда класс должен работать с различными платформами или когда нужно избежать жесткой связки между абстракцией и ее реализацией. 🚩 Зачем нужен 🟠Разделение абстракции и реализации: Он позволяет отделить абстракцию от ее реализации, что упрощает поддержку и расширение системы. 🟠Уменьшение количества подклассов: Без применения этого паттерна, если у нас есть несколько вариантов абстракции и несколько вариантов реализации, то нам пришлось бы создавать классы для всех возможных комбинаций, что приводит к взрывному росту количества классов. 🟠Гибкость: Это позволяет изменять и абстракцию, и реализацию независимо друг от друга. 🚩Как используется 🟠Абстракция (Abstraction): Определяет интерфейс и хранит ссылку на объект Implementor. 🟠Расширенная абстракция (RefinedAbstraction): Наследует Abstraction и расширяет интерфейс. 🟠Реализатор (Implementor): Определяет интерфейс для всех реализаций. 🟠Конкретный реализатор (ConcreteImplementor): Реализует интерфейс Implementor. Допустим, у нас есть программа для управления различными типами устройств (например, телевизор и радио), которые можно включать и выключать. Мы хотим, чтобы способ управления устройствами мог изменяться независимо от типов устройств.
# Implementor
class Device:
    def is_enabled(self):
        pass

    def enable(self):
        pass

    def disable(self):
        pass

# ConcreteImplementor
class TV(Device):
    def __init__(self):
        self._on = False

    def is_enabled(self):
        return self._on

    def enable(self):
        self._on = True

    def disable(self):
        self._on = False

class Radio(Device):
    def __init__(self):
        self._on = False

    def is_enabled(self):
        return self._on

    def enable(self):
        self._on = True

    def disable(self):
        self._on = False

# Abstraction
class RemoteControl:
    def __init__(self, device):
        self._device = device

    def toggle_power(self):
        if self._device.is_enabled():
            self._device.disable()
        else:
            self._device.enable()

# RefinedAbstraction
class AdvancedRemoteControl(RemoteControl):
    def mute(self):
        print("Device is muted.")

# Клиентский код
tv = TV()
remote = RemoteControl(tv)
remote.toggle_power()  # Включает TV

radio = Radio()
advanced_remote = AdvancedRemoteControl(radio)
advanced_remote.toggle_power()  # Включает Radio
advanced_remote.mute()  # Заглушает Radio
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое cherry-pick? Это команда Git, которая позволяет выбрать один или несколько коммитов из одной ветки и применить их в другую. 1. Используется для избирательного переноса изменений, не прибегая к полной слиянии веток. 2. Пример: исправление бага в одной ветке может быть перенесено в другую без полного объединения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Узнай свой грейд и зарплату — бесплатно 1. Переходи в бота ШОРТКАТ @shortcut_python_bot 2. Бронируй удобный слот на индивидуа
Узнай свой грейд и зарплату — бесплатно 1. Переходи в бота ШОРТКАТ @shortcut_python_bot 2. Бронируй удобный слот на индивидуальную встречу для тестирования 3. Проходи тест 4. Сразу же на звонке узнаешь свой грейд и з/п в рынке — на основе опыта менторов из бигтеха Всё просто, даже добавить нечего Пройти тестирование в ШОРТКАТ ➡️ @shortcut_python_bot Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqxNvwYp