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

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

Backend - @frontview_backend
Python работа - @frontview_python_vacancies
Все IT вакансии - @frontview_all_vacancies
Download Telegram
🔥 Что такое функция в 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
🔥 Что такое модуль math и какие функции он предоставляет?

Модуль math в Python предоставляет базовые математические функции для выполнения операций с числами с плавающей точкой.

Примеры основных функций:

- math.sqrt(x) — вычисляет квадратный корень из x.
- math.pow(x, y) — возводит x в степень y.
- math.sin(x) и math.cos(x) — вычисляют синус и косинус угла x в радианах.
- math.log(x, base) — вычисляет логарифм числа x по основанию base. Если основание не указано, используется натуральный логарифм.
- math.floor(x) и math.ceil(x) — округляют число x вниз и вверх до ближайшего целого соответственно.

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


import math

# Вычисление квадратного корня
result = math.sqrt(9)
print(result) # Вывод: 3.0

# Возведение в степень
result = math.pow(2, 5)
print(result) # Вывод: 32.0

# Вычисление синуса угла в радианах
angle = math.pi / 6 # 30 градусов
result = math.sin(angle)
print(result) # Вывод: 0.5

# Вычисление натурального логарифма
result = math.log(10)
print(result) # Вывод: 2.302585092994046

# Округление числа вниз и вверх
result_floor = math.floor(3.7)
result_ceil = math.ceil(3.3)
print(result_floor) # Вывод: 3
print(result_ceil) # Вывод: 4


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

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

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

Оператор and

Возвращает True, если оба выражения истинны:


x = 5
if x > 0 and x < 10:
# Если x больше 0 и меньше 10
print("x находится между 0 и 10")


Оператор or

Возвращает True, если хотя бы одно из выражений истинно:


x = -3
if x < 0 or x > 10:
# Если x меньше 0 или больше 10
print("x вне диапазона 0-10")


Оператор not

Инвертирует булево значение:


is_valid = False
if not is_valid:
# Если is_valid не истина
print("Данные недействительны")


Логические операторы полезны для создания сложных условий в управляющих конструкциях, таких как if, while и for. Они делают код более гибким и читаемым.

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

В Python создание целочисленного типа int осуществляется простым присвоением целого числа переменной:


number = 10 # Создаем переменную number со значением 10


Целые числа поддерживают основные арифметические операции:


addition = 5 + 3 # Сложение: addition будет 8
subtraction = 5 - 3 # Вычитание: subtraction будет 2
multiplication = 5 * 3 # Умножение: multiplication будет 15
division = 5 // 3 # Целочисленное деление: division будет 1
remainder = 5 % 3 # Остаток от деления: remainder будет 2


Для преобразования других типов данных в целое число используется функция int():


float_number = 7.8
int_number = int(float_number) # Преобразуем 7.8 в 7

string_number = "42"
int_from_string = int(string_number) # Преобразуем строку "42" в число 42


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

Проверить тип переменной можно с помощью функции type():


print(type(number)) # Выведет: <class 'int'>


Целые числа в Python могут быть произвольно большой величины, ограниченной только объемом доступной памяти.

Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4
Python собеседования pinned «Подписывайся на наши новые каналы! 👩‍💻 Git 🖥 SQL 👩‍💻 QA»
🔥 Как использовать блок else в обработке исключений?

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


try:
# Попытка разделить два числа
result = numerator / denominator
except ZeroDivisionError:
# Обработка ошибки деления на ноль
print("Ошибка: Деление на ноль.")
else:
# Выполняется, если исключения не было
print("Результат:", result)


В этом примере, если переменная denominator не равна нулю, деление пройдет успешно, и блок else выведет результат. Если же произойдет исключение ZeroDivisionError, блок else будет пропущен.

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


try:
# Чтение из файла
with open('data.txt', 'r') as file:
data = file.read()
except FileNotFoundError:
# Обработка ошибки отсутствия файла
print("Файл не найден.")
else:
# Выполняется, если файл успешно открыт
process_data(data) # Обработка данных из файла


Блок else подходит для кода, который должен выполняться только при отсутствии ошибок в блоке try, делая программу более читабельной и структурированной.

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

В Python методы добавляются в класс путем определения функций внутри него. Методы экземпляра принимают первым аргументом self, ссылающимся на объект.


class MyClass:
def my_method(self):
# Метод экземпляра
print("Hello from instance method")


Создание объекта и вызов метода:


obj = MyClass() # Создаем объект класса
obj.my_method() # Вызываем метод экземпляра


Добавление метода с параметрами:


class MyClass:
def greet(self, name):
# Метод с параметром
print(f"Hello, {name}!")


Статические и класс-методы создаются с помощью декораторов @staticmethod и @classmethod:


class MyClass:
@staticmethod
def static_method():
# Статический метод без self
print("Это статический метод")

@classmethod
def class_method(cls):
# Класс-метод принимает cls вместо self
print(f"Это метод класса {cls}")


Вызов статического и класс-методов:


MyClass.static_method() # Вызов статического метода
MyClass.class_method() # Вызов класс-метода


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

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

В Python для импорта конкретных функций или классов из модуля используется конструкция from ... import ....

Например, импортируем функцию sqrt из модуля math:


from math import sqrt # Импортируем функцию sqrt из модуля math

result = sqrt(25) # Используем функцию sqrt для вычисления квадратного корня из 25
print(result) # Выведет: 5.0


Импорт нескольких функций одновременно:


from math import sin, cos, pi # Импортируем функции sin, cos и константу pi

print(sin(pi/2)) # Выведет: 1.0
print(cos(0)) # Выведет: 1.0


Импорт класса из модуля:


from collections import Counter # Импортируем класс Counter из модуля collections

data = ['a', 'b', 'a', 'c', 'b', 'a']
counter = Counter(data) # Создаем объект Counter для подсчета элементов в data
print(counter) # Выведет: Counter({'a': 3, 'b': 2, 'c': 1})


Переименование импортируемых элементов с помощью as:


from datetime import datetime as dt # Импортируем класс datetime как dt

now = dt.now() # Создаем объект текущего времени
print(now)


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

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

👩‍💻 Frontend
👩‍💻 Go
👩‍💻 Java
👩‍💻 C/C++
👩‍💻 C#
👩‍💻 PHP
👩‍💻 QA
🖥 SQL
👩‍💻 Git
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1