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
Функция 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
git stash временно сохраняет незакоммиченные изменения, позволяя переключиться между ветками без коммита.


git stash save "Work in progress" # Сохраняет изменения в stash


Основные команды:
- git stash list — показывает список сохранённых stash
- git stash apply — восстанавливает последний stash (без удаления)
- git stash pop — применяет и удаляет последний stash


git stash drop stash@{1} # Удаляет конкретный stash


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

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

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

Получение версии пакета:

import pkg_resources
version = pkg_resources.get_distribution("requests").version


Возвращает текущую версию установленного пакета.

Чтение файлов из пакета:
python  
data = pkg_resources.resource_string("my_package", "data/file.txt")


Загружает содержимое файла file.txt из пакета my_package.

Проверка зависимостей:
python  
dependencies = pkg_resources.require("requests")


Возвращает список зависимостей для указанного пакета.

Модуль полезен для управления ресурсами и зависимостями в проектах.

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

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Модуль pickle позволяет сериализовать и десериализовать объекты в байтовый поток для сохранения или передачи.

Сериализация объекта в файл:
python  
import pickle

data = {"key": "value"}
with open("data.pkl", "wb") as file:
pickle.dump(data, file)


Записывает объект data в файл в бинарном режиме.

Десериализация из файла:
python  
with open("data.pkl", "rb") as file:
loaded_data = pickle.load(file)


Восстанавливает объект из файла.

Сериализация в строку байт:
python  
bytes_data = pickle.dumps(data)
restored_data = pickle.loads(bytes_data)


Преобразует объект в байты и обратно.

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

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Переменная __all__ в модуле определяет, какие имена будут экспортированы при импорте через from module import *.


__all__ = ['public_func', 'PublicClass']

def public_func():
pass

def _private_func():
pass

class PublicClass:
pass

Только public_func и PublicClass будут доступны при звездочном импорте.

Важные особенности:
- Если __all__ не указан, import * включает все имена, кроме начинающихся с _.
- Влияет только на звездочный импорт, явный импорт (import module) игнорирует __all__.

Полезен для явного контроля публичного API модуля.

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

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Метод __iter__() возвращает сам итератор, а __next__() возвращает следующий элемент последовательности. При исчерпании элементов вызывается StopIteration.


class Counter:
def __init__(self, limit):
self.current = 0
self.limit = limit

def __iter__(self):
return self

def __next__(self):
if self.current < self.limit:
self.current += 1
return self.current
raise StopIteration


Класс Counter будет выдавать числа от 1 до указанного лимита.

Итераторы позволяют последовательно получать элементы без загрузки всей коллекции в память.

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

✈️ Python собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
Для нахождения общих элементов двух множеств используется оператор & или метод intersection().


set1 = {1, 2, 3}
set2 = {2, 3, 4}
result = set1 & set2 # {2, 3}


Альтернативный вариант с методом:

result = set1.intersection(set2) # {2, 3}


Оба способа возвращают новое множество, содержащее только элементы, присутствующие в обоих исходных множествах. Метод intersection() может принимать несколько аргументов для поиска пересечения между несколькими множествами.

Операция выполняется за O(min(len(a), len(b))) в среднем случае.

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

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