и посмотреть медиа
Python Вопросы собесов - тесты
и посмотреть медиа
Вопросы, тесты и задачи для Python собеседований.
Вопросы, тесты и задачи для Python собеседований.
AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.
Канал с вопросами для собеседований по Python. Тесты, задачи и материалы для подготовки.
🤔 Какие основные HTTP методы знаешь? Основные методы: GET (получение данных), POST (отправка данных), PUT (обновление или создание), DELETE (удаление), PATCH (частичное обновление), HEAD, OPTIONS. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Как понять, какие виды тестов нужны именно сейчас? Выбор типа тестирования зависит от целей, стадии разработки и текущих проблем. Чтобы определить, какие тесты нужны, стоит ответить на вопросы: Что тестируем? (код, API, UI, производительность и т. д.) Какие риски? (где может сломаться, критичность ошибки) Какой этап разработки? (новый код, рефакторинг, релиз) 🚩Как определить нужные тесты прямо сейчас? 🟠Только написали новый код Нужны: Юнит-тесты Тестируем функции и классы отдельно. def add(a, b): return a + b def test_add(): assert add(2, 3) == 5 # ✅ Юнит-тест 🟠Соединяем модули или работаем с API Нужны: Интеграционные тесты Проверяем работу всей системы вместе. def test_api(): response = requests.get("Ссылка скрыта 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("Ссылка скрыта 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("/") Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Назови основные команды docker? Docker — это инструмент для создания, развертывания и управления контейнерами. Основные команды позволяют управлять образами, контейнерами, сетями и томами. 🚩Работа с образами (`images`) Образы — это "шаблоны" для создания контейнеров. Пример: скачиваем Python-образ docker pull python:3.11 🚩Работа с контейнерами (`containers`) Контейнер — это запущенный процесс на основе образа. Пример: запустить контейнер с Ubuntu и войти в него docker run -it ubuntu bash Пример: остановить и удалить контейнер docker stop my_app docker rm my_app 🚩Работа с томами (`volumes`) Том (volume) — это способ хранения данных, которые не пропадут при перезапуске контейнера. Пример: подключить том к контейнеру docker run -v my_data:/app/data ubuntu 🚩Работа с сетями (`networks`) Сети в Docker позволяют контейнерам взаимодействовать друг с другом. Пример: запустить два контейнера в одной сети docker network create my_network docker run -d --network my_network --name app1 ubuntu docker run -d --network my_network --name app2 ubuntu 🚩5. Docker Compose (`docker-compose.yml`) Docker Compose позволяет управлять несколькими контейнерами с помощью docker-compose.yml. Пример docker-compose.yml version: "3" services: app: image: python:3.11 volumes: - my_data:/app/data networks: - my_network volumes: my_data: networks: my_network: Запуск docker compose up -d Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Какие есть коллекции и их особенности по скорости работы и использованию памяти? В Python основные коллекции: списки, кортежи, множества, словари. - Списки: изменяемы, быстрые при доступе по индексу, но медленнее при вставке в середину. Используют больше памяти за счёт зарезервированного места для расширения. - Кортежи: неизменяемы, занимают меньше памяти, быстрее при доступе, хорошо подходят для фиксированных наборов данных. - Множества: обеспечивают быстрый поиск (как словари), но не сохраняют порядок. Используют хеши. - Словари: ассоциативные коллекции с быстрым доступом по ключу. Эффективны при поиске и обновлении. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Как избежать конфликтов при импорте файлов? Когда в проекте много файлов, могут возникать конфликты импортов. Python ищет модули в определённом порядке, и если несколько файлов имеют одинаковые имена или неправильные пути, может возникнуть ошибка. 🚩Способы избежать конфликтов при импорте 🟠Используйте явные пути импорта Вместо import mymodule # Может вызвать конфликт, если есть несколько файлов с таким именем Лучше указывать полный путь в пакетах from myproject.utils.mymodule import my_function 🟠Избегайте конфликтов имён файлов Если у вас есть файл math.py, импорт import math будет загружать ваш файл, а не стандартный модуль math из Python. - Не называйте файлы именами стандартных модулей: math.py, sys.py, json.py. - Проверьте, какой именно модуль загружается: import math print(math.__file__) # Путь к загруженному модулю 🟠Добавьте `__init__.py` в пакеты Если у вас есть структура /myproject /utils mymodule.py Решение Добавьте пустой __init__.py в utils/: /myproject /utils __init__.py # Делаем utils пакетом mymodule.py Теперь импорт будет работать from utils import mymodule 🟠Используйте `sys.path.append()` для указания путей Иногда Python не находит модуль, если он находится вне стандартных путей. Решение Добавьте путь вручную: import sys sys.path.append("/path/to/directory") import mymodule # Теперь импорт будет работать 🟠Используйте `absolute` и `relative` импорт в пакетах Абсолютный импорт (рекомендуется) from myproject.utils.mymodule import my_function Относительный импорт (используется внутри пакетов): from .mymodule import my_function 🟠Проверяйте `sys.modules` и `sys.path` Если импорт не работает, проверьте, какие модули загружены и где Python ищет файлы import sys print(sys.modules.keys()) # Список загруженных модулей print(sys.path) # Пути, где Python ищет модули Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что такое переменная? Переменная — это имя, связанное с объектом в памяти. В Python переменные не имеют типа — тип привязан к значению. Они позволяют хранить и переиспользовать данные в программе. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что такое паттерн Стратегия (Strategy) ? Это поведенческий паттерн проектирования, который определяет семейство алгоритмов, инкапсулирует каждый из них и делает их взаимозаменяемыми. Паттерн "Стратегия" позволяет изменять алгоритмы независимо от клиентов, которые их используют. 🚩Зачем нужен данный паттерн? 🟠Изоляция алгоритмов Позволяет инкапсулировать различные алгоритмы и использовать их независимо. 🟠Упрощение кода Устраняет дублирование кода и упрощает классы, которые используют эти алгоритмы. 🟠Гибкость и расширяемость Легко добавлять новые алгоритмы или изменять существующие без изменения клиентского кода. 🚩Как работает данный паттерн? 🟠Стратегия (Strategy) Интерфейс, определяющий общий метод, который должны реализовать все алгоритмы. 🟠Конкретные стратегии (ConcreteStrategy) Реализации различных алгоритмов, которые реализуют интерфейс стратегии. 🟠Контекст (Context) Класс, использующий стратегию для выполнения задачи. from abc import ABC, abstractmethod # Интерфейс стратегии class Strategy(ABC): @abstractmethod def sort(self, data): pass # Конкретные стратегии class BubbleSortStrategy(Strategy): def sort(self, data): print("Sorting using Bubble Sort") for i in range(len(data)): for j in range(0, len(data)-i-1): if data[j] > data[j+1]: data[j], data[j+1] = data[j+1], data[j] class QuickSortStrategy(Strategy): def sort(self, data): print("Sorting using Quick Sort") self.quick_sort(data, 0, len(data) - 1) def quick_sort(self, data, low, high): if low < high: pi = self.partition(data, low, high) self.quick_sort(data, low, pi - 1) self.quick_sort(data, pi + 1, high) def partition(self, data, low, high): pivot = data[high] i = low - 1 for j in range(low, high): if data[j]
Открыть канал и посмотреть медиа🤔 Как разбить список? Разбить список (list) можно разными способами в зависимости от задачи: На части фиксированной длины На N частей По условию 🚩Разбить список на части фиксированного размера Если нужно разделить список на подсписки длиной n, можно использовать list comprehension def split_list(lst, size): return [lst[i:i + size] for i in range(0, len(lst), size)] data = [1, 2, 3, 4, 5, 6, 7, 8, 9] print(split_list(data, 3)) Вывод [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 🚩Разбить список на N частей (равных или почти равных) Если нужно разделить список на N частей, можно использовать numpy или itertools import numpy as np def split_into_n_parts(lst, n): return np.array_split(lst, n) data = [1, 2, 3, 4, 5, 6, 7, 8, 9] print(split_into_n_parts(data, 4)) Вывод [array([1, 2, 3]), array([4, 5]), array([6, 7]), array([8, 9])] 🚩Разбить список по условию Если нужно разделить список по какому-то критерию, например, на чётные и нечётные числа data = [1, 2, 3, 4, 5, 6, 7, 8, 9] even = [x for x in data if x % 2 == 0] odd = [x for x in data if x % 2 != 0] print(even, odd) Вывод [2, 4, 6, 8] [1, 3, 5, 7, 9] Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиа🤔 Что такое git? Git — это система контроля версий, позволяющая отслеживать изменения в коде, управлять ветками и работать в команде. Она поддерживает распределённый подход, где каждый разработчик имеет локальную копию репозитория. Git используется для ведения истории изменений и упрощения совместной работы. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
Открыть канал и посмотреть медиаТолько зарегистрированные пользователи могут делиться своим мнением.
Станьте первым, кто поделится своим впечатлением об этом ресурсе!