Python собеседования
2K subscribers
338 photos
451 links
Подготовка к собеседованиям на позицию Python-разработчик

Еще больше на сайте https://frontview-it.ru

Backend - @frontview_backend
Python работа - @frontview_python_vacancies
Все IT вакансии - @frontview_all_vacancies
По рекламе - @frontviewit
Download Telegram
git fetch загружает изменения из удаленного репозитория без слияния с локальной веткой, обновляя только ссылки в .git/refs/remotes.


git fetch origin # Загружает изменения без модификации рабочей директории


git pull = git fetch + git merge — автоматически сливает загруженные изменения с текущей веткой.

Ключевые отличия:
- fetch безопаснее — позволяет проверить изменения перед слиянием
- pull может создать конфликт слияния без предупреждения
- Для проверки изменений после fetch используйте git log origin/branch

Рекомендуется использовать fetch + ручное слияние в рабочих проектах.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
asyncio.subprocess позволяет запускать и управлять дочерними процессами асинхронно. Работает через создание подпроцессов с неблокирующим вводом-выводом, интегрируясь в цикл событий asyncio.

Основные классы и функции:
- create_subprocess_exec — запускает процесс из переданных аргументов.
- create_subprocess_shell — запускает процесс через оболочку.

Процесс общается через стандартные потоки (stdin, stdout, stderr), доступные как асинхронные потоки.


import asyncio

async def run_command():
proc = await asyncio.create_subprocess_exec(
'echo', 'hello',
stdout=asyncio.subprocess.PIPE
)
stdout, _ = await proc.communicate()
print(stdout.decode())


Код запускает процесс echo и читает его вывод асинхронно. communicate() ожидает завершения процесса и возвращает вывод.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Чтение файла в обратном порядке можно выполнить, загрузив его содержимое в память и развернув строки или используя перемещение указателя файла с конца. Для больших файлов эффективнее читать блоки с конца, избегая загрузки всего файла в память.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Оператор and в условных выражениях выполняет ленивое вычисление: возвращает первый ложный операнд или последний, если все истинны.


result = x and y # Если x ложно, вернётся x, иначе y


При проверке условий and останавливается на первом False, не вычисляя остальные.


if a and b: # Если a == False, b не проверяется
...


Это полезно для проверки цепочки условий, где последующие зависят от предыдущих.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Файл requirements.txt содержит список зависимостей Python-проекта. Каждая строка — имя пакета с опциональным ограничением версии.


# requirements.txt
requests==2.25.1
flask>=1.1.0
pytest


Установка зависимостей:

pip install -r requirements.txt


Для генерации файла из текущего окружения:

pip freeze > requirements.txt


Формат версий: == (точно), >= (минимум), < (максимум).

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Исключение StopIteration автоматически обрабатывается при итерации по генератору, сигнализируя о его завершении. Вручную его перехватывать не требуется, так как циклы for и функции вроде next() делают это автоматически.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Методы __getitem__() и __setitem__() позволяют реализовать доступ к элементам объекта по индексу или ключу, как в списках или словарях.


class CustomContainer:
def __getitem__(self, key):
return self.data[key] # Возвращает значение по ключу/индексу

def __setitem__(self, key, value):
self.data[key] = value # Устанавливает значение по ключу/индексу


__getitem__() вызывается при обращении obj[key], а __setitem__() — при присваивании obj[key] = value. Позволяет эмулировать поведение встроенных коллекций.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
asyncio.Event позволяет синхронизировать корутины через механизм событий. Объект находится в неактивном состоянии (False) до явного вызова set().


event = asyncio.Event()

async def waiter():
await event.wait() # Ожидает установки флага
print("Event triggered")

async def setter():
await asyncio.sleep(1)
event.set() # Разблокирует все ожидающие корутины


Основные методы:
- wait() — приостанавливает выполнение до срабатывания события
- set()/clear() — активирует/сбрасывает событие
- is_set() — проверяет состояние флага

Используется для координации между задачами, когда одна должна уведомить другие о наступлении условия.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Функция bin() принимает целое число и возвращает строку с его двоичным представлением, начинающуюся с префикса 0b. Возвращаемое значение всегда является строковым типом, даже для отрицательных чисел.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Для вставки данных в таблицу используется SQL-запрос INSERT INTO. Синтаксис зависит от структуры таблицы и количества добавляемых значений.


INSERT INTO table_name (column1, column2)
VALUES (value1, value2);


Ключевые моменты:
- Указание имени таблицы и столбцов (опционально)
- Перечисление значений в порядке столбцов
- Возможность множественной вставки через несколько VALUES


INSERT INTO users (name, age)
VALUES ('Alex', 25), ('Anna', 30);


Для безопасной вставки из Python рекомендуется использовать параметризованные запросы.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Django использует систему миграций для управления изменениями моделей БД. Основные команды:


python manage.py makemigrations # Создает миграции на основе изменений моделей
python manage.py migrate # Применяет миграции к базе данных


Процесс работы:
1. После изменения моделей создается миграция (файл в папке migrations)
2. Миграция применяется к БД командой migrate
3. Можно откатить миграцию через migrate app_name migration_name

Для сложных случаев используется ручное редактирование миграционных файлов. Миграции позволяют синхронизировать структуру БД между разными окружениями.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
RESTful API обеспечивает стандартизированный интерфейс, масштабируемость и простую интеграцию за счет использования HTTP-методов и статусов. Однако он может быть избыточным для простых задач, не поддерживает реальное время без дополнений и менее эффективен для сложных запросов по сравнению с GraphQL.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Для объединения веток в Git используются две основные стратегии: merge и rebase.


git checkout main # Переключение на целевую ветку
git merge feature-branch # Слияние feature-branch в main


Создает новый коммит слияния, сохраняя историю изменений.


git checkout feature-branch
git rebase main # Перебазирование на основную ветку


Перемещает коммиты feature-branch на вершину main, создавая линейную историю.

Конфликты разрешаются вручную в обоих случаях. Merge безопаснее для публичных веток, rebase — для локальной очистки истории.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
cProfile — встроенный модуль для профилирования кода. Показывает время выполнения функций и количество вызовов.


import cProfile

def test_func():
# Код для профилирования
pass

cProfile.run('test_func()') # Запуск профилирования


Основные параметры вывода:
- ncalls — количество вызовов
- tottime — общее время в функции
- cumtime — время с учетом вложенных вызовов

Для сохранения результатов в файл:

cProfile.run('test_func()', 'profile_stats')


Анализ результатов через pstats:

import pstats
p = pstats.Stats('profile_stats')
p.sort_stats('cumtime').print_stats(10) # Топ-10 медленных функций


Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Индексы ускоряют поиск и сортировку данных в БД за счет создания оптимизированных структур для быстрого доступа к строкам. Их следует создавать для часто используемых в WHERE, JOIN и ORDER BY столбцов, но избегать избыточности, так как индексы замедляют вставку и обновление данных.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Для защиты веб-приложения от утечки данных необходимо реализовать многоуровневую безопасность:


# HTTPS обязателен
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True


Шифрование трафика через TLS/SSL.


# Защита от инъекций
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))


Использование параметризованных запросов вместо форматирования строк.


# Хеширование паролей
from django.contrib.auth.hashers import make_password
hashed_pw = make_password('password123')


Хранение только хешей паролей с солью.

Дополнительные меры: валидация ввода, ограничение прав доступа, регулярное обновление зависимостей.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Паттерн Bridge разделяет абстракцию и реализацию, позволяя им изменяться независимо.


class Abstraction:
def __init__(self, implementation):
self._implementation = implementation

def operation(self):
return f"Abstraction + {self._implementation.operation_impl()}"



class Implementation:
def operation_impl(self):
raise NotImplementedError



class ConcreteImplementationA(Implementation):
def operation_impl(self):
return "ConcreteImplementationA"


Абстракция делегирует работу объекту реализации. Позволяет изменять реализацию без модификации клиентского кода. Подходит для поддержки разных платформ или API.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Для защиты данных при передаче в Python следует использовать модуль ssl, который предоставляет обёртку для TLS/SSL поверх сокетов. В веб-фреймворках типа Django или Flask необходимо настраивать HTTPS через параметры вроде SECURE_SSL_REDIRECT и использовать сертификаты от доверенных центров (Let's Encrypt).

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Для удаления пакета через pip используется команда uninstall с указанием имени пакета:


pip uninstall package_name


После выполнения команды pip запросит подтверждение удаления. Для автоматического подтверждения можно добавить флаг -y:


pip uninstall package_name -y


Удаление затрагивает только указанный пакет, не затрагивая его зависимости. Для просмотра списка установленных пакетов перед удалением можно использовать pip list.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
В asyncio Task — это объект, который оборачивает корутину и планирует её выполнение в цикле событий.


import asyncio

async def my_coroutine():
await asyncio.sleep(1)
return "Done"

task = asyncio.create_task(my_coroutine()) # Создание задачи


Ключевые особенности:
- Задачи выполняются конкурентно в одном потоке
- Позволяют отслеживать состояние через done(), result()
- Можно отменять через cancel()

Используются для параллельного запуска корутин без блокировки основного потока.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
NoSQL базы данных делятся на четыре основные категории: документоориентированные (MongoDB, CouchDB), ключ-значение (Redis, DynamoDB), колоночные (Cassandra, HBase) и графовые (Neo4j, ArangoDB). Каждый тип оптимизирован под конкретные сценарии использования, такие как гибкость структуры, высокая скорость чтения/записи или работа со связанными данными.

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM