Ответы на вопросы собирал давно и с попеременным успехом. Где-то могут быть неточности, где-то откровенный бред (особенно в разделе про БД). Источники также выбирались не очень переборчиво. Часть ссылок на источники может быть не указана по причине забывчивости или просто случайно была утеряна. Владелец этого репозитория не несет ответственности за ущерб причиненный содержимым этого репозитория, работой Python-разработчика и работой как таковой.
Список вопросов для подготовки к интервью. Могут быть полезны как интервьюеру так и интервьюируемому
Как-то увидел статью на Хабре где было много вопросов, но практически не было ответов и не смог пройти мимо.
Молодец, создавай PR.
- После того как что-то изменил в questions.md запусти
make tocчтобы обновить Список вопросов - Не забудь добавить себя в metadata.txt в раздел
author
Пожалуйста releases
- Python
- Общие вопросы
- Что такое Python
- Python — это императивный или декларативный язык
- Когда Python — правильный выбор для проекта
- Когда Python — неправильный выбор для проекта
- Какие проблемы есть в python
- Что такое PEP 8
- Что такое виртуальное окружение
- Что такое docstring?
- Какие пространства имен существуют в python? Как работает разрешение пространств имен?
- Что такое Cython? Что такое IronPython? Что такое PyPy? Для чего они нужны?
- Чем фреймворк отличается от библиотеки?
- Что такое сборщик мусора. В чём его плюсы и минусы
- Зачем нужен pdb
- Что такое интроспекция
- Что такое рефлексия
- Python компилируемый или интерпретируемый?
- Как проверить Python-файл на синтаксические ошибки, но не запускать его
- Для чего используется флаг -O
- Как сделать python-скрипт исполняемым в различных операционных системах
- Как ускорить существующий код python
- Парадигмы программирования в языке Python
- С помощью каких инструментов можно выполнить статический анализ кода
- Как тиражировать python код
- В чем разница между Python и Java
- Синтаксис
- Какие типы данных есть в python? На какие классы делятся?
- Чем is отличается от двойного равенства (==)
- Что такое тернарный оператор в Python
- Есть ли в Python оператор switch-case
- Какая разница между одинарным и двойным подчеркиванием
- Отличие copy() от deepcopy()
- Что такое аннотации типов, зачем они нужны, когда выполняются
- Почему мы пишем name == "main" в скрипте Python
- Последовательности
- Что такое последовательность
- Какие операции поддерживают большинство последовательностей
- Какие виды строк бывают в питоне
- Можно ли изменить отдельный символ внутри строки
- Как соединить список строк в одну. Как разбить строку на список строк
- Как кодировать и декодировать строки
- Что такое интернирование строк
- Чем список отличается от кортежа
- Что такое диапазон (range)
- Как сделать список уникальным (без повторяющихся элементов)
- Есть кортеж из трех элементов. Назначить переменным a, b, c его значения
- Как сравниваются последовательности
- Какие коллекции из модуля collections знаешь?
- В чём преимущества массивов numpy по сравнению с (вложенными) списками python
- Множества и отображения
- Как понять хешируемый ли объект
- Что такое множество
- Для чего применяются множества
- Какие операции можно производить над множествами
- Как происходит проверка множеств на равенство
- Что такое отображение
- Какие нюансы есть в использовании чисел как ключей
- Какие операции можно производить над отображениями
- Что возвращает метод items
- Как отсортировать список словарей по определенному полю
- Что может являться ключом словаря
- Есть два списка – ключи и значения. Как составить из них словарь
- Как имплементировать словарь с нуля
- Как работает хэш-таблица
- Что такое коллизия
- Где будет быстрее поиск, а где перебор и почему: dict, list, set, tuple
- Функции
- Что такое args, kwargs. В каких случаях они требуются
- Почему использовать изменяемые объекты как параметры по-умолчанию плохо. Приведите пример плохого случая. Как исправить
- Можно ли передавать функцию в качестве аргумента другой функции
- Можно ли объявлять функцию внутри другой функции. Где она будет видна
- Что такое лямбда-функции? Каковы их особенности
- Допустимы ли следующие выражения
- Как передаются значения аргументов в функцию или метод: по ссылке или по значению
- Что такое замыкание
- Что такое чистая функция?
- Итераторы и генераторы
- Что такое контейнер
- Что такое итерируемый объект
- Что такое итерабельный объект
- Что такое итератор
- Что такое генератор
- Что такое генераторная функция
- Чем генератор отличается от итератора
- Какие способы есть написать свой генератор
- Что делает yield
- В чем отличие [x for x in y] от (x for x in y)
- Что особенного в генераторе
- Как объявить генератор
- Как получить из генератора список
- Что такое подгенератор
- Какие методы есть у генераторов
- Можно ли извлечь элемент генератора по индексу
- Что возвращает итерация по словарю
- Как итерировать словарь по парам ключ-значение
- Что такое сопрограмма
- Классы, объекты
- Как получить список атрибутов объекта
- Что такое магические методы?
- Как в классе сослаться на родительский класс
- Возможно ли множественное наследование
- Что такое MRO
- Что такое Diamond problem
- Что такое миксины
- Что такое контекстный менеджер. Как написать свой
- Прокомментировать выражение
- Что такое __slots__?
- В чем смысл параметров _value, __value
- Что такое __new__. И чем он отличается от __init__. В какой последовательности они выполняются
- Что такое и чем отличается old-style от new-style classes
- Что такое динамическая типизация
- Что такое утиная типизация
- Модули, пакеты
- Что такое модуль
- Как можно получить имя модуля
- Что такое модульное программирование
- Как Python ищет модули при импорте
- Что такое пакет
- Что вы можете сказать о конструкции import package.item
- Как перезагрузить импортированный модуль
- Что такое менеджер пакетов? Какие менеджеры пакетов вы знаете?
- Как упаковать бинарные зависимости
- Что такое wheels и eggs? В чём разница?
- Как получить доступ к модулю, написанному на python из C и наоборот
- В чем разница между NumPy и SciPy
- Назовите несколько модулей Python для статистических, числовых и научных вычислений
- Что такое TkInter
- Исключения
- Что такое обработка исключений
- Для чего могут применять конструкцию try finally без except
- Как правильно по-разному обрабатывать исключения
- Что будет если ошибку не обработает блок except
- Что делать если нужно перехватить исключение, выполнить действия и опять возбудить это же исключение
- Что такое сцепление исключений
- Зачем нужен блок else
- Что можно передать в конструктор исключения
- Расскажи про иерархию исключений Python
- В каких случаях можно обработать SyntaxError
- Можно ли создавать собственные исключения
- Для чего нужны предупреждения (warnings) и как создать собственное
- Для чего нужен модуль warnings
- Декораторы
- Что такое декораторы. Зачем нужны
- Что может быть декоратором. К чему может быть применен декоратор
- Что будет, если декоратор не возвращает ничего
- В чем отличие @foobar от @foobar()
- Что такое фабрика декораторов
- Какие декораторы из стандартной библиотеки знаешь
- Что делает декоратор property?
- Чем отличаются декораторы classmethod и staticmethod?
- Напишите декоратор, который будет перехватывать ошибки и повторять функцию максимум N раз
- Метаклассы
- Ввод-Вывод
- Что такое файловый объект
- Какие есть виды файловых объектов
- В чем отличие текстовых и бинарных файлов
- Как пользоваться функцией open
- Для чего необходимо закрывать файлы
- Что делают методы tell и seek
- Что делают StringIO и BytesIO
- Являются ли файловые объекты контекстными менеджерами
- Что такое сериализация
- json.dumps / json.dump , json.loads / json.load
- Что делать если нужно сериализовать данные, которые не поддерживаются стандартным модулем json
- pickle.dumps / pickle.dump, pickle.loads / pickle.load
- Тестирование
- Пирамида тестирования
- Что такое mocking
- Что делать, если тестируемая функция использует удалённое подключение к внешним сервисам, которое иногда видает ошибку таймаута, 404 и им подобные
- Что делать, если тестируемая функция занимает много времени на выполнение повторяющихся операций внутри неё
- Какие вы знаете виды тестов
- Чем интеграционное тестирование отличается от функционального
- Функциональное программирование
- Что такое функциональное программирование
- Как у Python с поддержкой функционального программирования
- Назовите несколько методов, которые используются для реализации функционально-ориентированного программирования в Python
- Что такое объект первого класса
- Что такое функция высшего порядка
- Что такое каррирование
- Опишите функции map, reduce, filter модуля functools
- Какие еще вы знаете функции из модуля functools
- Какие вы функции знаете из модуля itertools
- Для чего нужен модуль operator
- GIL, потоки, процессы
- В чем разница между процессом и потоком
- Что такое синхронный код
- Что такое асинхронный код
- Что такое GIL? Как работает? Какие у него есть проблемы? Хорошо или плохо для разработки?
- Работали ли Вы с asyncio. В чём его особенность
- Что такое async/await, для чего они нужны и как их использовать
- Что такое жизненный цикл потоков
- Как в питоне реализуется многопоточность. Какими модулями
- В чем отличие тредов от мультипроцессинга
- Какие задачи хорошо параллелятся, какие плохо
- Нужно посчитать 100 уравнений. Делать это в тредах или нет
- Треды в Питоне — это нативные треды или нет
- Что такое гринлеты. Общее понятие. Примеры реализаций
- Какие варианты реализации шаблона Singleton на питоне
- Какие вы знаете инструменты для проверки кодстайл
- Какая разница между одинарным и двойным подчеркиванием
- Отличие copy() от deepcopy()
- Что такое garbage collector. В чём его плюсы и минусы
- Что такое интроспекция
- Что такое рефлексия
- Общие вопросы
- Прочее
- Django
- Что такое Middleware, для чего, как реализуется
- Назовите основные мидлвари. Зачем они нужны
- Опишите алгоритм работы CSRF middleware
- Что такое сигналы? Зачем нужны? Назовите основные
- Как реализуется связь m2m на уровне базы данных
- Чем лучше отправлять форму — GET или POST
- Как работает Serializer в Django REST Framework
- Что такое Meta в классах Django и для чего нужен
- За что отвечает Meta в сериализаторе
- Какая разница в быстродействии между django и Flask (и почему)
- Как в django работает система аутентификации
- Приведите примеры популярных фреймворков Python
- Веб-разработка
- HTTP
- Общее
- ООП
- Какие принципы программирования вы знаете
- Что такое code cohesion & code coupling
- Какие шаблоны проектирования вы знаете
- Порождающие (Creational)
- Структурные (Structural)
- Поведенческие (Behavioral)
- Цепочка ответственности (Chain of responsobility)
- Команда (Command)
- Интерпретатор (Interpreter)
- Итератор (Iterator)
- Посредник (Mediator)
- Хранитель (Memento)
- Наблюдатель (Observer)
- Состояние (State)
- Стратегия (Strategy)
- Шаблонный метод (Template method)
- Посетитель (Visitor)
- Поведенческие паттерны. Итог
- Что такое lru cache
- Что такое MQ
- Какие готовые реализации MQ вы знаете
- Что такое RPC
- Что такое gPRC
- Алгоритмы, структуры
- Что такое рекурсия. Какие минусы, плюсы
- Что такое хвостовая рекурсия
- Как можно оптимизировать хвостовую рекурсию в Python
- О-большое при оценке сложности
- Простой поиск
- Бинарный поиск
- Рекурсивные алгоритмы
- Быстрая сортировка
- Граф
- Очередь и стек
- Дерево
- Поиск в ширину
- Алгоритм Дейкстры
- Жадные алгоритмы
- Как распознать NP-полную задачу
- Динамическое программирование
- Алгоритм k ближайших соседей
- Алгоритм Ричарда Фейнмана
- Frontend
- SDLC
- VCS
- БД
- Что такое транзакция. Какие у неё есть свойства
- Какие команды управления транзакциями вы знаете
- Что такое уровни изолированности транзакций. Какие они бывают
- Что такое вложенные транзакции
- Что такое курсор и зачем он нужен
- Какая разница между PostgreSQL и MySQL
- Что такое VACUUM в PostgreSQL
- Что такое EXPLAIN. Какая разница между ним и EXPLAIN ANALYZE
- Какие виды Join'ов вы знаете, чем они отличаются друг от друга
- Дизайн-интервью
- Вопросы работодателю
- Интересные ссылки
- Источники вопросов