Skip to content

fairushyn/Python-Interview-Questions-Ru-

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

TODO

Python

Какие бывают типы данных в Python.

...

Какие типы данных относятся к изменяемым, какие нет.

...

Чем отличаются операторы == и is.

== сравнивает по значению, is сравнивает по адресам памяти.

Как в Python передаются аргументы в функцию (изменяемые и неизменяемые)

Неизменяемые по значению, изменяемые по ссылке.

Что такое *args и **kwargs? Чем представлены?

*args это такой элемент, который принимает в себя неограниченное колличество позиционных аргументов функции
**kwargs этот аргумент отвечает за то, что он принимает в себя неограниченное коллличество аргументво, которое
мы передаем с помощью ключевых слов *args ввиде картежа **kwargs ввиде словоря

Что такое аннотации типов, зачем они нужны, когда выполняются

Что такое lambda функция? Кейсы применения

Что такое тернарный оператор, как записывается

Что такое глубокая и поверхностная копия? Зачем нужны? Как их сделать?

Что такое виртуальное окружение? Зачем оно нужно? Какие инструменты для этого используются?

Как оценивается сложность алгоритмов и почему? Чтотакое Big O notation?

Какая сложность основных операций в коллекциях?

Что такое self в классах?

self - в пайтоне, чтобы понять к какому классу относится функция, первым агрументом в эту функцию передается self self - это просто ссылка на какой-то уникальный объект какого-то класса

Зачем нужен метод super в классе?

super - это ссылка на объект родительской сущности

Как в python реализуются методы объекта, класса и статические методы? Чем они отличаются?

  • Метод объекта принимает первый аргумент self - как ссылку на текущий объект. Эти методы характеризуют поведение
    какого-то экземпляра какой-то сущности
  • Методы коротые принадлежат классу их можно создать с помощью декоратора @classsmethod первый аргумент cls - это
    ссылка на класс. Они принадлежат классу и зарактеризуют в целом поведение всего класса.
  • Статик метод @staticmethod обязательных аргументов у него нет. Он не принадлежит ни классу, ни объекту.
    Метод объекта можно вызвать только, когда создан объект. a = A(), a.b()
    Метод класса можно вызвать сразу от класса A.c()

В Python нет модификаторов доступа, все по умолчанию public. Каквpythonреализуютсяpublic, privateиprotectedметодыи атрибуты?

В пайтоне нет модификаторов доступа. Но есть определенные договоренности.

  • public - без подчеркиваний
  • protected - с одним _
  • private - с двумя __

Чем отличается атрибут класса от атрибута объекта?

Что такое декораторы? Зачем нужны? Как реализовать в python простой декоратор и декоратор с пробросом аргумента?

Декоратор - это паттерн проектирования. По канону он реализуется через класс. С помощью этого класса меняется
поведение какого-то кода, без имзенений этого кода.

Можно так же реализовать через функцию:

def decorator(func):
    def wrapper(*args, **kwargs):
        return func()
    return wrapper

Что такое абстрактный класс? Зачем они нужны? Как они реализуются в Python?

Так как в пайтоне нет интерфейсов. А нам надо реализовать какие-то контракты между классами. Мы для этого
используем абстрактный класс. Абстрактный класс это класс, у которого нельзя создать объект. from abc import ABC, abstractmethod

Что такое метаклассы? Для чего они используются? Какие методы там используются? Как реализовать на Python?

Если классы являются шаблонами для объектов, то метаклассы являются шаблонами для классов. На основе
метаклассов строятся классы, на основе классов строяться объекты. Для чего использются метаклассы?
Метаклассы используются для того, чтобы перехватить создание класса. И его как-то изменить или изменить
какое-то поведение, например создание объекта.
Соответственно какие методы там есть? new, init, prepare, call. prepare - подготавливает данные, потом они попадают в new, new создает класс, init отвечает за его
инициализацию, а call за создание объекта класса.

class OneMeta(ABCMeta):
    pass

Что такое ООП?

Инкапсуляция, полиморфизм, наследование, абстракция.
ООП это такая парадигма, объектно ориентированное программирование, когда мы код выстраеваем ввиде совакупности
объектов, которые являются объектами каких-то классов, а классы выстраивают иерархию какого-то наследования.

Какие базовые принципы ООП?

  • Абстракция: говорит о том, что мы в коде используем только характеристики обхекта, которые нам важны
    конкретно в данном коде.
  • Наследования: один класс строиться на основе другого. Один будет родительским, другой будет дочерним.
    Дочерный класс получаке все от родительского: все атрибуты, все функции.
  • Инакпсуляция: в программирование воспринимается двояко:
    1. Фундаментально - инкопсуляция это "Инкапсула" мы в класс должны поместить все атрибуты и методы связанные общей
      идеей, мы их инкапсулируем в класс и от класса работаем с этим всем.
    2. Про сокрытие данных, то что у нас в классе должны быть протектные и приватные атрибуты. Из класса не должно
      торчать наружу, все то, что не должно оттуда торчать. Необходимо представлять наружу интерфейс, только тот,
      который потребуется пользователю.
  • Полиморфизм: тоже понимается двояко:
    1. Каноничный подход это параметрический полиморфизм, он говорит о том, что в функциях нам плевать на типы
      данных, которые прилетают к нам из вне. Главное, чтобы внтри функции, когда идет работа с этим аргументом,
      в этом аргументе должен быть весь интерфейс, с которым мы работаем. Чтобы этот аргумент умел все теже действия,
      которые мы у него используем. Сейчас это принято называть утиной типизацией.
    2. Полиморфим представляет из себя, то что мы используем одни и те же имена вот в этой все структуре, за счет того,
      что мы можем в дочерних классах перегружать родительские методы, тем самым модифицируя их функионал.

Что такое миксины?

Кааноническое наследование говорит нам о том, что есть родительский класс, а есть дочерний. Дочерний класс берет все
характеристики родительского. По сути дочерние классы являются теми же родительскими. Например мы берем классс
Животные, от него наследуюется класс Кошка. Кошка она по сути и есть животное. Но миксины ломают эту парадигму.
Миксины это какие-то мелкие классы, которые реализуют какой-то не сильно большой функционал, буквально пару
функций, несколько атрибутов. Необольшие классы, они нам нужны для того, что их функционал требуется во многих
классах. И там, где нам нужен этот мелкий функционал. Принято называть этот мелкий класс миксин. С английского
переводиться "Примесь"

Чтотакое diamond problem? Что такое MRO? Чем отличается MRO2 от MRO3? Зачем оно нужно?

Пайтон поддерживает механизм множественного наследования.
В пайтон существует MRO. Он создает жесткий порядок зависимостей.
MRO различаются в Python 2 и Python 3. Во второй версии был алгоримт поиска в глубину. Сначала по-левой ветке до конца, потом по-правой.
В третьей весрии у нас используется алгоритм поиска в ширину.
MRO это просто список, который содержится внтури класса, его можно постмотреть вызвав
print(D.mro())

Что такое итератор? Что такое итерируемый объект?

  • Итератор это такая структура данных, которая может отдавать что-то одно по одному.
  • Итерируемый объект это объект, по которому можно пройтись по элементно.
  • В пайтоне итератор реализуется с помощью двух методов класса iter и next. iter возвращает ссылку на итератор,
    а next возвращает просто следующий объект это последовательности. Почему два метода? Эти два метода можно
    разнести по разным классам. У вас может быть два класса. У первого класса может быть только один метод iter,
    в "итере" можеть быть прописано внутри вернуть объект другого класса. А в другом классе будет только next

Что такое генератор? Как написать на Python генератор?

Что такое корутина? Что такое asyncи await? Какие модули в Pythonесть для тестирования? Какие отличия, плюсы и минусы? Unittest Pytest Что такое mock? Зачем нужен? Какие есть типы асинхронного выполнения? какие библиотеки работают с асинхронным выполнением кода, в чем между ними разница что такое ORM. С какими работал? SQLAlchemy Что такое GIL, какие проблемы он решает, плюсы и минусы чем отличаются относительные импорты от абсолютных

Best practices SOLID, KISS, DRY, YAGNI Какие знаешь паттерны проектирования, какие использовал Conflictmanagement SDLC

Databases Какие NoSQL базы данных знаешь, с какими работал, кейсы использования, плюсы и минусы Какие SQL базы данных знаешь, с какими работал, кейсы использования, плюсы и минусы PK, FK Типы связей? Как реализуется связь много ко многим Зачем нужны индексы? Зачем нужны триггеры? Что такое транзакция? ACID Уровни изолированности транзакции

Tools and Cloud Git JIRA docker AWS

WEB Веб-фреймворки REST (RESTful)

Микросервисы и монолит linux

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published