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

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

Backend - @frontview_backend
Python работа - @frontview_python_vacancies
Все IT вакансии - @frontview_all_vacancies
Download Telegram
Создали каналы по новым направлениям
Присоединяйся!

👩‍💻 Git
🖥 SQL
👩‍💻 QA
Please open Telegram to view this post
VIEW IN TELEGRAM
👀1
🔥 Как использовать модуль datetime для работы с датами и временем?

Модуль datetime в Python предоставляет классы для работы с датами и временем. Вот несколько примеров использования этого модуля:

1. Получение текущей даты и времени:


import datetime

# Получаем текущую дату и время
now = datetime.datetime.now()

# Выводим текущую дату и время
print("Текущая дата и время:", now)


2. Создание конкретной даты:


import datetime

# Создаем объект даты
specific_date = datetime.datetime(2023, 10, 23) # Год, месяц, день

# Выводим конкретную дату
print("Конкретная дата:", specific_date)


3. Форматирование даты:


import datetime

# Получаем текущую дату
now = datetime.datetime.now()

# Форматируем дату в строку
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")

# Выводим отформатированную дату
print("Отформатированная дата:", formatted_date)


4. Выполнение арифметики с датами:


import datetime

# Получаем текущую дату
now = datetime.datetime.now()

# Добавляем 10 дней к текущей дате
future_date = now + datetime.timedelta(days=10)

# Выводим новую дату
print("Дата через 10 дней:", future_date)


5. Парсинг строки в дату:


import datetime

# Строка с датой
date_string = "2023-10-23"

# Преобразуем строку в объект даты
parsed_date = datetime.datetime.strptime(date_string, "%Y-%m-%d")

# Выводим разобранную дату
print("Разобранная дата:", parsed_date)


Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🔥 Как создать простой декоратор?

Чтобы создать простой декоратор в Python, можно использовать функцию, которая принимает другую функцию в качестве аргумента и возвращает новую функцию. Вот пример:


# Определяем декоратор
def my_decorator(func):
# Вложенная функция, которая будет оборачивать оригинальную функцию
def wrapper():
print("Что-то происходит до вызова функции.")
func() # Вызов оригинальной функции
print("Что-то происходит после вызова функции.")

return wrapper # Возвращаем обернутую функцию

# Используем декоратор
@my_decorator
def say_hello():
print("Привет!")

# Вызов функции
say_hello()


В этом примере my_decorator — это декоратор, который добавляет поведение до и после вызова функции say_hello. Когда say_hello вызывается, сначала выполняется код из wrapper, а затем оригинальная функция say_hello.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤔2
🔥 Что такое протокол итератора (__iter__ и __next__)?

Протокол итератора в Python позволяет объектам становиться итерируемыми. Это достигается за счет реализации методов __iter__ и __next__. Вот пример:


class MyIterator:
def __init__(self, limit):
self.limit = limit # Устанавливаем предел итерации
self.current = 0 # Начальное значение

def __iter__(self):
return self # Возвращаем сам итератор

def __next__(self):
if self.current < self.limit: # Проверка, достигнут ли предел
result = self.current
self.current += 1 # Увеличиваем текущее значение
return result # Возвращаем текущее значение
else:
raise StopIteration # Вызываем исключение для завершения итерации

# Использование итератора
iterator = MyIterator(5)
for number in iterator:
print(number)


В этом примере MyIterator реализует итератор, который генерирует числа от 0 до указанного предела. Метод __iter__ возвращает объект итератора, а метод __next__ возвращает следующее значение и, когда предел достигнут, вызывает StopIteration, чтобы сигнализировать о завершении.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🔥 Что такое асинхронное программирование и зачем оно нужно?

Асинхронное программирование в Python позволяет выполнять операции, не блокируя выполнение программы. Это особенно полезно для задач ввода-вывода, таких как работа с сетью или файловой системой, где время ожидания может быть значительным. Асинхронный подход позволяет запускать несколько задач одновременно и обрабатывать их по мере завершения.

Вот пример использования асинхронного программирования с помощью модуля asyncio:


import asyncio

async def fetch_data(delay):
print(f"Fetching data with a delay of {delay} seconds...")
await asyncio.sleep(delay) # Имитация асинхронной операции
print(f"Data fetched after {delay} seconds.")
return f"Data {delay}"

async def main():
# Запускаем несколько задач асинхронно
tasks = [fetch_data(2), fetch_data(1), fetch_data(3)]
results = await asyncio.gather(*tasks)
print("Results:", results)

# Запуск основной функции
asyncio.run(main())


В этом примере fetch_data — асинхронная функция, которая имитирует задержку при получении данных. В функции main несколько таких задач создаются и запускаются одновременно с помощью asyncio.gather(). Асинхронное программирование позволяет эффективно использовать ресурсы, так как программа не блокируется во время ожидания завершения операций.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1
🔥 Как подключиться к реляционной базе данных (например, SQLite) в Python?

Подключение к реляционной базе данных, такой как SQLite, в Python осуществляется с помощью встроенного модуля sqlite3. Ниже приведен пример того, как создать базу данных, сделать запросы и получить результаты.


import sqlite3

# Создаем соединение с базой данных (если файл не существует, он будет создан)
connection = sqlite3.connect('example.db')

# Создаем курсор для выполнения SQL-команд
cursor = connection.cursor()

# Создаем таблицу (если ее нет)
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL
)
''')

# Вставляем данные в таблицу
cursor.execute('''
INSERT INTO users (name, age) VALUES ('Alice', 30)
''')
cursor.execute('''
INSERT INTO users (name, age) VALUES ('Bob', 25)
''')

# Сохраняем изменения
connection.commit()

# Запрашиваем данные из таблицы
cursor.execute('SELECT * FROM users')
rows = cursor.fetchall() # Получаем все результаты

# Выводим результаты
for row in rows:
print(row)

# Закрываем курсор и соединение
cursor.close()
connection.close()


В этом примере создается база данных example.db, а затем создается таблица users, в которую добавляются несколько записей. После этого выполняется запрос для получения всех данных из таблицы, результаты выводятся на экран. В конце закрываются соединение и курсор.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🔥 В чем разница между многопоточностью и многопроцессорностью?

Многопоточность и многопроцессорность в Python имеют разные подходы к параллелизму.

Многопоточность (threading) позволяет запускать несколько потоков в одном процессе, что хорошо подходит для задач, связанных с вводом-выводом. Однако из-за GIL (Global Interpreter Lock) одновременное выполнение потоков в вычислительных задачах сильно ограничено.

Многопроцессорность (multiprocessing) создает отдельные процессы с собственными интерпретаторами Python, что позволяет эффективно использовать многоядерные процессоры. Каждый процесс имеет свою память, что может быть более ресурсоемко, но обходит ограничения GIL.

Выбор между ними зависит от природы задачи: для I/O лучше использовать многопоточность, для вычислений – многопроцессорность.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥1
🔥 Что такое операторы в Python и какие основные типы операторов существуют?

Операторы в Python — это специальные символы или ключевые слова, которые используются для выполнения операций над значениями и переменными. Они позволяют выполнять арифметические вычисления, сравнения, присваивания и другие действия.

Основные типы операторов в Python:

1. Арифметические операторы: выполняют математические операции. Например: + (сложение), - (вычитание), * (умножение), / (деление), % (остаток от деления), ** (возведение в степень), // (целочисленное деление).

2. Операторы присваивания: используются для присвоения значений переменным. Например: =, +=, -=, *=, /=, %=.

3. Операторы сравнения: сравнивают значения и возвращают True или False. Например: == (равно), != (не равно), >, <, >=, <=.

4. Логические операторы: используются для объединения условных выражений. Например: and, or, not.

5. Битовые операторы: выполняют операции на уровне битов. Например: & (AND), | (OR), ^ (XOR), ~ (NOT), << (сдвиг влево), >> (сдвиг вправо).

6. Операторы принадлежности: проверяют наличие значения в последовательности. Например: in, not in.

7. Операторы идентичности: проверяют, ссылаются ли две переменные на один объект. Например: is, is not.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
🔥 Что такое функция в Python?

Функция в Python — это блок кода, который выполняет определённую задачу и может быть повторно использован в разных частях программы. Функции позволяют структурировать код, делая его более организованным, читаемым и удобным для поддержки. Для объявления функции используется ключевое слово def, после которого следует имя функции и список параметров в круглых скобках.

Пример определения функции:


def greet(name):
return f"Привет, {name}!"


В этом примере определена функция greet, которая принимает аргумент name и возвращает приветственное сообщение. Чтобы вызвать функцию, нужно использовать её имя и передать необходимые аргументы:


message = greet("Анна")
print(message) # Выведет: Привет, Анна!


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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
🔥 Что такое блок finally и когда его использовать?

Блок finally в Python используется в конструкции обработки исключений и предназначен для выполнения кода независимо от того, произошло исключение в блоке try или нет. Оператор finally следует после блоков try и except.

Код внутри finally будет выполнен в любом случае: если исключение возникло и было обработано, если не возникло вовсе или даже если не было перехвачено. Это полезно для выполнения операций очистки, таких как закрытие файлов, освобождение памяти или завершение сетевых соединений.

Пример использования:


try:
file = open('data.txt', 'r')
data = file.read()
except IOError:
print("Ошибка при чтении файла")
finally:
file.close()


В этом примере файл будет закрыт в блоке finally независимо от того, произошла ошибка при чтении или нет, что обеспечивает корректное освобождение ресурсов.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥2
🔥 Что такое контекстный менеджер with при работе с файлами?

Контекстный менеджер with в Python используется для упрощения работы с ресурсами, такими как файлы, которые требуют явного открытия и закрытия. При работе с файлами использование with гарантирует, что файл будет автоматически закрыт после завершения операций, даже если в процессе возникнет исключение.

Пример использования with при работе с файлом:


with open('data.txt', 'r') as file:
data = file.read()
# обработка данных


В этом примере файл data.txt открывается для чтения, и его объект присваивается переменной file. После выхода из блока with файл автоматически закрывается, что устраняет необходимость вызывать file.close() вручную.

Использование контекстного менеджера делает код более чистым и безопасным, предотвращая утечки ресурсов и обеспечивая правильное управление файлами. Это рекомендуется как лучший способ работы с файлами в Python.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥21
🔥 Как создавать экземпляры класса?

Создать экземпляр класса в Python можно, вызвав имя класса как функцию, передавая необходимые аргументы, если это предусмотрено конструктором __init__. Это создает новый объект данного класса.

Пример определения класса и создания его экземпляра:


class Person:
def __init__(self, name, age):
self.name = name
self.age = age

# Создание экземпляра класса Person
person1 = Person("Иван", 30)


В этом примере класс Person имеет метод __init__, который инициализирует атрибуты name и age. Экземпляр person1 создается путем вызова Person("Иван", 30).

После создания экземпляра можно обращаться к его атрибутам и методам:


print(person1.name) # Выведет: Иван
print(person1.age) # Выведет: 30


Экземпляры классов позволяют работать с конкретными объектами, имеющими собственные данные и поведение, определенное в классе.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥1👀1
🔥 Какие способы импорта модулей существуют?

В Python существует несколько способов импорта модулей, каждый из которых имеет свои особенности и применяется в разных ситуациях.

1. Стандартный импорт всего модуля:


import module_name


Позволяет использовать объекты модуля через его имя:


import math
result = math.sqrt(16)


2. Импорт конкретных объектов из модуля:


from module_name import object_name


Сразу подключает объект в пространство имен:


from math import sqrt
result = sqrt(16)


3. Импорт всех объектов из модуля:


from module_name import *


Загружает все объекты модуля в текущее пространство имен. Не рекомендуется из-за возможных конфликтов имен.

4. Переименование модуля при импорте:


import module_name as alias


Используется для сокращения длинных имен или разрешения конфликтов:


import numpy as np
array = np.array([1, 2, 3])


5. Импорт объектов с переименованием:


from module_name import object_name as alias


Позволяет переименовать импортируемый объект:


from math import sqrt as square_root
result = square_root(16)


6. Импорт из вложенных модулей (пакетов):


from package.module import object_name


Например:


from os.path import join
path = join('folder', 'file.txt')


7. Динамический импорт с помощью importlib:


import importlib
module_name = importlib.import_module('module_name')


Применяется для импорта модулей по строковому имени во время выполнения программы.

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

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
🔥 Как работать с форматами данных JSON и CSV?

Python предоставляет встроенные модули для работы с форматами данных JSON и CSV, что упрощает процессы чтения и записи.

Работа с JSON

Модуль json позволяет преобразовывать объекты Python в JSON и обратно.

Чтение JSON из файла:


import json

with open('data.json', 'r') as file:
data = json.load(file)


Запись в JSON:


with open('data.json', 'w') as file:
json.dump(data, file, ensure_ascii=False)


Параметр ensure_ascii=False сохраняет русские символы.

Работа с CSV

Модуль csv используется для взаимодействия с CSV файлами.

Чтение CSV:


import csv

with open('data.csv', 'r') as file:
reader = csv.reader(file)
for row in reader:
print(row)


Запись в CSV:


import csv

with open('data.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Имя', 'Возраст'])
writer.writerow(['Иван', 30])


Параметр newline='' нужен для корректного формирования строк.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
🔥 Как применять декораторы к функциям?

Декораторы в Python используются для модификации или расширения поведения функций или методов без изменения их исходного кода. Декоратор — это функция, которая принимает другую функцию в качестве аргумента и возвращает новую функцию с измененным поведением.

Как применять декораторы к функциям:

1. Определение декоратора:


def decorator_function(original_function):
def wrapper_function(*args, **kwargs):
# Дополнительное поведение
result = original_function(*args, **kwargs)
# Дополнительное поведение
return result
return wrapper_function


2. Применение декоратора с помощью @:


@decorator_function
def say_hello():
print("Привет!")


Здесь say_hello обернута декоратором decorator_function.

3. Альтернативный способ без @:


def say_hello():
print("Привет!")

say_hello = decorator_function(say_hello)


Пример использования:

Создание декоратора для измерения времени выполнения функции:


import time

def timer(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"Время выполнения: {end_time - start_time} секунд")
return result
return wrapper


Применение декоратора к функции:


@timer
def long_task():
time.sleep(2)
print("Задача выполнена")

long_task()


При вызове long_task() функция будет выполнена, а декоратор выведет время ее выполнения.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
🔥 Что такое SQL и как выполнять SQL-запросы из Python?

SQL (Structured Query Language) — это язык структурированных запросов, предназначенный для управления и обработки данных в реляционных базах данных.

Чтобы выполнять SQL-запросы из Python, необходимо установить соответствующую библиотеку для взаимодействия с базой данных. Например, для SQLite используется стандартная библиотека sqlite3, для PostgreSQL — psycopg2, для MySQL — pymysql.

Пример использования sqlite3:


import sqlite3

# Подключение к базе данных
conn = sqlite3.connect('example.db')
cursor = conn.cursor()

# Выполнение SQL-запроса
cursor.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)")

# Вставка данных
cursor.execute("INSERT INTO users (name) VALUES (?)", ('Alice',))

# Сохранение изменений
conn.commit()

# Получение данных
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
print(rows)

# Закрытие соединения
conn.close()


В этом примере происходит создание таблицы, добавление данных и выборка данных из базы. Для других баз данных принцип работы схожий, но требуется установить соответствующую библиотеку и использовать её методы для подключения.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍151🔥1
🔥 Что такое фреймворк pytest и как его использовать?

Pytest — популярный фреймворк для тестирования Python-кода. Он упрощает создание тестов, делая их более простыми и понятными. Pytest автоматически обнаруживает тестовые функции, поддерживает параметризацию и имеет богатую экосистему плагинов.

Для начала работы необходимо установить pytest:


pip install pytest


Тестовые функции должны начинаться с test_ и могут быть размещены в файлах, имена которых также начинаются с test_. Пример простого теста:


# test_sample.py

def inc(x):
return x + 1

def test_inc():
assert inc(3) == 4


Запуск тестов выполняется командой:


pytest


Pytest найдет и выполнит все тесты в проекте.

Для запуска одного тестового файла:


pytest test_sample.py


Параметризация позволяет запускать тест с разными входными данными:


import pytest

@pytest.mark.parametrize("input, expected", [(1, 2), (3, 4), (5, 6)])
def test_inc(input, expected):
assert inc(input) == expected


Фикстуры используются для подготовки тестового окружения и могут быть переиспользованы в разных тестах, что делает код более чистым и поддерживаемым.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍142🤩2
Подписывайся на наши новые каналы!

👩‍💻 Git
🖥 SQL
👩‍💻 QA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥31
🔥 Как использовать модуль threading?

Модуль threading обеспечивает возможность создавать и управлять потоками в Python, что позволяет выполнять задачи параллельно и улучшать производительность программ при вводе-выводе.

Чтобы создать новый поток, нужно создать экземпляр класса Thread и указать функцию, которую этот поток будет выполнять:


import threading

def worker():
# Код, который будет выполнен в новом потоке
print("Поток выполняется")

# Создание потока
thread = threading.Thread(target=worker)

# Запуск потока
thread.start()

# Ожидание завершения потока
thread.join()


При одновременном доступе нескольких потоков к общим ресурсам важно использовать механизмы синхронизации, такие как блокировки:


import threading

lock = threading.Lock()

def worker():
# Захват блокировки перед доступом к общему ресурсу
with lock:
# Безопасный доступ к ресурсу
print("Безопасный доступ")

thread = threading.Thread(target=worker)
thread.start()
thread.join()


Используя модуль threading, можно эффективно управлять потоками и обеспечивать безопасный доступ к общим данным, что является важным аспектом при программировании на Python.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
🔥 Что такое корутины и как их создавать?

Корутины в Python — это функции, которые могут приостанавливать и возобновлять своё выполнение, что позволяет писать асинхронный код. Они создаются с использованием ключевых слов async и await.


import asyncio

async def fetch_data():
# Имитация асинхронного получения данных
print("Fetching data...")
await asyncio.sleep(2)
print("Data fetched")
return {"data": 123}

async def main():
result = await fetch_data()
print(result)

# Запуск корутины
asyncio.run(main())


В этом примере функция fetch_data определена как корутина с помощью async def. Она использует await для ожидания завершения асинхронной операции asyncio.sleep(2). Функция main также является корутиной и вызывает fetch_data с помощью await.

Корутины позволяют выполнять длительные операции без блокировки основного потока, что улучшает производительность программы при работе с вводом-выводом или сетевыми запросами.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11