cookie

Мы используем файлы cookie для улучшения сервиса. Нажав кнопку «Принять все», вы соглашаетесь с использованием cookies.

avatar

Python | Вопросы собесов

Разбираем вопросы с собеседований на Python разработчика. Django, Flask, FastApi Сайт: easyoffer.ru Реклама: @easyoffer_adv

Больше
Рекламные посты
11 466
Подписчики
Нет данных24 часа
+1187 дней
+1 59230 дней

Загрузка данных...

Прирост подписчиков

Загрузка данных...

🤔 Какая библиотека Python обычно используется для работы с векторными и матричными операциями?Anonymous voting
  • pandas
  • matplotlib
  • numpy
  • scipy
0 votes
👍 2
Как сделать класс, который будет поддерживать протокол итератора ? Спросят с вероятностью 3% Чтобы сделать класс, который поддерживает протокол итератора, нужно реализовать два метода: __iter__() и __next__(). Метод __iter__() должен возвращать сам итератор (обычно это сам объект), а метод __next__() должен возвращать следующий элемент последовательности или выбрасывать исключение StopIteration, когда элементы заканчиваются. Вот пример класса, который реализует протокол итератора:
class MyRange:
    def __init__(self, start, end):
        self.start = start
        self.end = end
        self.current = start

    def __iter__(self):
        return self

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

# Использование класса MyRange
my_range = MyRange(1, 5)

for number in my_range:
    print(number)  # Выведет: 1 2 3 4
Объяснение 1️⃣Конструктор __init__: ✅Инициализирует начальное значение (start), конечное значение (end) и текущее значение (current), которое будет изменяться при итерации. 2️⃣Метод iter: ✅Возвращает сам итератор, то есть self. 3️⃣Метод next: ✅Проверяет, достигло ли текущее значение (self.current) конечного значения (self.end). ✅Если текущее значение меньше конечного, метод увеличивает текущее значение на 1 и возвращает предыдущее текущее значение. ✅Если текущее значение больше или равно конечному, выбрасывается исключение StopIteration. Можно также создать более сложный итератор, например, для перебора элементов списка.
class MyListIterator:
    def init(self, my_list):
        self.my_list = my_list
        self.index = 0

    def iter(self):
        return self

    def next():
        if self.index < len(self.my_list):
            result = self.my_list[self.index]
            self.index += 1
            return result
        else:
            raise StopIteration

# Использование класса MyListIterator
my_list = [10, 20, 30, 40]
my_iterator = MyListIterator(my_list)

for item in my_iterator:
    print(item)  # Выведет: 10 20 30 40
Обработка итераций с вложенными циклами Иногда может потребоваться использовать итератор в контексте вложенных циклов или других структур. В этом случае итератор должен поддерживать повторное использование.
class ResettableRange:
    def __init__(self, start, end):
        self.start = start
        self.end = end
        self.current = start

    def __iter__(self):
        self.current = self.start  # Сброс текущего значения при начале новой итерации
        return self

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

# Использование класса ResettableRange
resettable_range = ResettableRange(1, 5)

# Первый цикл
for number in resettable_range:
    print(number)  # Выведет: 1 2 3 4

# Второй цикл
for number in resettable_range:
    print(number)  # Снова выведет: 1 2 3 4
Чтобы создать класс, поддерживающий протокол итератора, нужно реализовать методы iter() и next(). Метод iter() возвращает сам итератор, а метод next() возвращает следующий элемент или выбрасывает StopIteration, когда элементы заканчиваются. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Показать все...
👍 11 1
🤔 Какой механизм в Python позволяет управлять доступом к атрибутам объекта извне?Anonymous voting
  • Инкапсуляция
  • Полиморфизм
  • Абстракция
  • Наследование
0 votes
🤔 9💊 3👍 2 2
Фото недоступноПоказать в Telegram
Карьерный буст для DWH-разработчиков 👨‍💻 Есть опыт работы от года и желание выйти на новый уровень? На интенсиве в Открытых школах Т1 ты прокачаешь скилы и сможешь попасть в сильную ИТ-команду 🔝 Т1 признан крупнейшей ИТ-компанией в России по версии RAEX 2023, в портфеле 70+ востребованных продуктов и услуг, которые развивают уже 23 000+ ИТ-профессионалов, и мы всегда в поиске новых талантов. Лучшие из выпускников бесплатного интенсива получат оффер в команды разработки финтех-решений, ИТ-продуктов, облачных сервисов, развития ИИ-решений, интеграции и консалтинга, а также уникальный карьерный фаст-трек до мидла. ⌛️ Быстрое обучение: 1 месяц. 💻Гибкий формат: все этапы онлайн, занятия по вечерам. Покоряй бигтех — подай заявку до 24 июля!  Старт интенсива — 29 июля. Реклама. ООО "Т1". ИНН 7720484492.
Показать все...
🤔 2
Как создать итератор из коллекции ? Спросят с вероятностью 3% Итератор — это объект, который позволяет перебирать элементы коллекции один за другим. Он реализует метод __next__(), который возвращает следующий элемент коллекции или вызывает исключение StopIteration, если элементы коллекции закончились. Рассмотрим простой пример с использованием списка:
# Создание списка
my_list = [1, 2, 3, 4, 5]

# Создание итератора из списка
my_iterator = iter(my_list)

# Перебор элементов с помощью итератора
print(next(my_iterator))  # Выведет: 1
print(next(my_iterator))  # Выведет: 2
print(next(my_iterator))  # Выведет: 3
print(next(my_iterator))  # Выведет: 4
print(next(my_iterator))  # Выведет: 5

# Следующий вызов next() вызовет исключение StopIteration
# print(next(my_iterator))  # StopIteration
Итераторы можно создавать из различных коллекций, таких как строки, кортежи, множества и словари. Примеры: С строкой
my_string = "hello"
my_iterator = iter(my_string)

print(next(my_iterator))  # Выведет: h
print(next(my_iterator))  # Выведет: e
print(next(my_iterator))  # Выведет: l
print(next(my_iterator))  # Выведет: l
print(next(my_iterator))  # Выведет: o
С кортежем
my_tuple = (10, 20, 30)
my_iterator = iter(my_tuple)

print(next(my_iterator))  # Выведет: 10
print(next(my_iterator))  # Выведет: 20
print(next(my_iterator))  # Выведет: 30
С множеством
my_set = {1, 2, 3}
my_iterator = iter(my_set)

print(next(my_iterator))  # Выведет один из элементов множества (порядок не гарантирован)
print(next(my_iterator))  # Выведет другой элемент множества
print(next(my_iterator))  # Выведет оставшийся элемент множества
Со словарём
my_dict = {'a': 1, 'b': 2, 'c': 3}
my_iterator = iter(my_dict)

print(next(my_iterator))  # Выведет: a
print(next(my_iterator))  # Выведет: b
print(next(my_iterator))  # Выведет: c
Создание пользовательского итератора Вы также можете создать собственный итератор, определив методы __iter__() и __next__() в своем классе. Пример пользовательского итератора
class MyIterator:
    def __init__(self, start, end):
        self.current = start
        self.end = end

    def __iter__(self):
        return self

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

# Использование пользовательского итератора
my_iter = MyIterator(1, 5)

for num in my_iter:
    print(num)  # Выведет: 1 2 3 4
Для создания итератора из коллекции используйте функцию iter(). Итераторы позволяют перебирать элементы коллекции один за другим с помощью метода next(). Вы также можете создать собственный итератор, реализовав методы __iter__() и __next__() в своем классе. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Показать все...
👍 12
🤔 Какой декоратор в Python используется для определения статического метода в классе?Anonymous voting
  • @staticmethod
  • @classmethod
  • @instance_method
  • @function_method
0 votes
💊 7🤔 3
Фото недоступноПоказать в Telegram
– Помощь с pet-проектом – Составление roadmap – Проведение код-ревью и mock-собеседования – Помощь с трудоустройством Все это и многое другое может Ментор. Он обеспечит вам необходимый boost, ускорит и упростит вход в IT. 🔥 Здесь размещен список менторов, и многие из них предлагают бесплатную первую консультацию
Показать все...
👍 2 1🤔 1
Какие типы полиморфизма есть в python ? Спросят с вероятностью 3% Полиморфизм — это способность функции, метода или объекта работать с разными типами данных. Основные виды полиморфизма включают: 1️⃣Полиморфизм подтипов (или полиморфизм наследования) 2️⃣Полиморфизм перегрузки (или параметрический полиморфизм) 1️⃣Полиморфизм утиной типизации (или полиморфизм по интерфейсу) Полиморфизм подтипов (наследование) Этот тип позволяет использовать объект любого класса, который является подклассом базового класса. Это достигается с помощью наследования. Метод, определенный в базовом классе, может быть переопределен в подклассах. Пример
class Animal:
    def make_sound(self):
        pass

class Dog(Animal):
    def make_sound(self):
        return "Bark"

class Cat(Animal):
    def make_sound(self):
        return "Meow"

def make_animal_sound(animal):
    print(animal.make_sound())

# Использование полиморфизма подтипов
dog = Dog()
cat = Cat()

make_animal_sound(dog)  # Выведет: Bark
make_animal_sound(cat)  # Выведет: Meow
Полиморфизм перегрузки (параметрический полиморфизм) Нет явной поддержки перегрузки функций и методов, как в некоторых других языках программирования. Однако, параметрический полиморфизм можно достичь через использование аргументов с значениями по умолчанию, переменным количеством аргументов, а также с помощью таких структур данных, как списки и словари. Пример
def add(a, b):
    return a + b

print(add(1, 2))         # Выведет: 3 (работает с числами)
print(add("Hello, ", "World!"))  # Выведет: Hello, World! (работает со строками)
В этом примере функция add работает с разными типами данных благодаря динамической типизации в Python. Полиморфизм утиной типизации (по интерфейсу) Основывается на принципе "Если это выглядит как утка, плавает как утка и крякает как утка, то это, вероятно, утка". Это означает, что не важно, к какому классу принадлежит объект, главное, чтобы он имел нужные методы или атрибуты. Пример
class Duck:
    def quack(self):
        return "Quack"

class Person:
    def quack(self):
        return "I can imitate a duck"

def make_it_quack(duck_like):
    print(duck_like.quack())

duck = Duck()
person = Person()

make_it_quack(duck)   # Выведет: Quack
make_it_quack(person) # Выведет: I can imitate a duck
Полиморфизм функций высшего порядка Можно также применять полиморфизм с функциями высшего порядка — функциями, которые принимают другие функции в качестве аргументов или возвращают функции в качестве результата. Пример
def apply_function(func, value):
    return func(value)

def square(x):
    return x * x

def double(x):
    return x * 2

print(apply_function(square, 4))  # Выведет: 16
print(apply_function(double, 4))  # Выведет: 8
1️⃣Полиморфизм подтипов: Использование объектов подклассов через базовый класс. 2️⃣Полиморфизм перегрузки: Функции и методы могут работать с разными типами данных, хотя явной перегрузки в Python нет. 3️⃣Полиморфизм утиной типизации: Объекты используются на основе наличия необходимых методов или атрибутов, независимо от их класса. 4️⃣Функции высшего порядка: Функции, принимающие или возвращающие другие функции, могут работать с разными типами функций. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Показать все...
👍 11 2🔥 1
Что такое абстракция ? Спросят с вероятностью 3% Абстракция — это одна из основных концепций объектно-ориентированного программирования (ООП), наряду с инкапсуляцией, наследованием и полиморфизмом. Позволяет создавать упрощенные модели сложных систем, выделяя только те аспекты, которые являются важными для конкретной задачи, и скрывая детали реализации. Основные аспекты 1️⃣Скрытие деталей реализации: Позволяет скрыть сложные детали реализации и показать только те части объекта, которые необходимы для его использования. 2️⃣Определение интерфейсов: Фокусируется на определении интерфейсов и методов, которые могут быть использованы для взаимодействия с объектом. 3️⃣Упрощение взаимодействия: Упрощает взаимодействие с объектами, предоставляя простой и понятный интерфейс. Абстракцию можно реализовать с помощью абстрактных классов и методов. Абстрактный класс определяет интерфейс для группы подклассов, но сам не предназначен для создания экземпляров. Для создания абстрактных классов и методов в Python используется модуль abc (Abstract Base Classes). Пример:
from abc import ABC, abstractmethod

class Animal(ABC):
    @abstractmethod
    def make_sound(self):
        pass

class Dog(Animal):
    def make_sound(self):
        return "Bark"

class Cat(Animal):
    def make_sound(self):
        return "Meow"

# Создание экземпляров конкретных классов
dog = Dog()
cat = Cat()

print(dog.make_sound())  # Выведет: Bark
print(cat.make_sound())  # Выведет: Meow

# Попытка создания экземпляра абстрактного класса приведет к ошибке
# animal = Animal()  # TypeError: Can't instantiate abstract class Animal with abstract methods make_sound
Основные компоненты 1️⃣Абстрактный класс (Animal): Определяет общие методы, которые должны быть реализованы в подклассах. 2️⃣Абстрактный метод (make_sound): Объявляется в абстрактном классе и должен быть реализован в любом конкретном подклассе. 3️⃣Конкретные классы (Dog и Cat): Реализуют абстрактный метод, предоставляя конкретную реализацию. Преимущества 1️⃣Упрощение разработки: Позволяет сосредоточиться на высокоуровневом дизайне, не отвлекаясь на детали реализации. 2️⃣Повышение гибкости: Изменения в реализации могут быть сделаны без изменения интерфейсов, что облегчает модификацию и расширение кода. 3️⃣Улучшение читаемости: Абстрактные классы и методы делают код более понятным и структурированным, четко показывая, какие методы должны быть реализованы в подклассах. Абстракция в ООП позволяет скрывать сложные детали реализации, предоставляя простой интерфейс для взаимодействия с объектами. Она упрощает разработку, улучшает читаемость кода и повышает его гибкость. Можно реализовать с помощью абстрактных классов и методов, используя модуль abc. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Показать все...
👍 15
Какая разница между методами str и repr ? Спросят с вероятностью 3% Методы __str__ и repr используются для получения строкового представления объекта, но они имеют разные цели и используются в разных контекстах. Метод str Цель: Должен возвращать строковое представление объекта, которое будет понятным и удобным для пользователя. ✅Использование: Метод str используется функцией str() и при вызове print(). ✅Предназначение: Для более дружественного и читаемого представления объекта. Метод repr Цель: Должен возвращать строку, которая официально представляет объект и, по возможности, позволяет воссоздать объект, если передать эту строку в eval(). ✅Использование: Метод repr используется функцией repr() и вызывается интерактивной оболочкой Python для отображения объектов. ✅Предназначение: Для более точного и детализированного представления объекта, предназначенного для разработчиков. Пример
class MyClass:
    def __init__(self, value):
        self.value = value

    def __str__(self):
        return f"MyClass with value {self.value}"

    def __repr__(self):
        return f"MyClass({self.value})"

obj = MyClass(10)

# Использование_(self):
print(str(obj))  # Выведет: MyClass with value 10
print(obj)       # Выведет: MyClass with value 10 (так как print вызывает str)

# Использование
repr
print(repr(obj)) # Выведет: MyClass(10)
Основные различия 1️⃣Контекст использования: ✅__str__ предназначен для удобного представления объекта пользователю. ✅__repr__ предназначен для официального представления объекта, полезного для отладки и разработки. 2️⃣Вызываемые функции: ✅str() и print() используют str.repr() и интерактивная оболочка Python используют repr. 3️⃣Содержимое строки: ✅__str__ возвращает удобочитаемую строку. ✅__repr__ возвращает строку, которая может включать больше технической информации и может использоваться для воссоздания объекта. Пример с реализацией обоих методов
class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __str__(self):
        return f"Point({self.x}, {self.y})"

    def __repr__(self):
        return f"Point({self.x}, {self.y})"

p = Point(1, 2)

# Использование
str
print(str(p))  # Выведет: Point(1, 2)
print(p)       # Выведет: Point(1, 2)

# Использование
repr
print(repr(p)) # Выведет: Point(1, 2)
Дополнительный пример с различием междуstr__ и _и repr
class ComplexNumber:
    def __init__(self, real, imag):
        self.real = real
        self.imag = imag

    def __str__(self):
        return f"{self.real} + {self.imag}i"

    def __repr__(self):
        return f"ComplexNumber({self.real}, {self.imag})"

c = ComplexNumber(3, 4)

# Использование
str
print(str(c))  # Выведет: 3 + 4i
print(c)       # Выведет: 3 + 4i

# Использование
_ и repr и
print(repr(c)) # Выведет: ComplexNumber(3, 4)
Метод str возвращает понятное для пользователя строковое представление объекта, используемое функцией str() и print(). Метод repr возвращает официальное строковое представление объекта, используемое функцией repr() и интерактивной оболочкой, и часто предназначен для отладки. 👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1096 вопроса на Python разработчика. Ставь 👍 если нравится контент 🔐 База собесов | 🔐 База тестовых
Показать все...
👍 10 9🤔 1
Выберите другой тариф

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