Вы здесь ▸ Интересные курсы ▸
Вопросы и ответы для подготовки к интервью по Питон etc.
Здесь список вопросов и ответов на них для подготовки к интервью по Питон и технологии программирования в целом. Могут быть полезны как интервьюеру, так и интервьюируемому. Так пишет автор. Но я думаю, что не только им. Этот материал также может быть полезен разработчикам, техническим писателям, студентам и преподавателям. Фактически это обзорный учебный курс по программирования с акцентом на Питон, включающий как концепции языка, так и компоненты инфраструктуры.
Кроме большого раздела Питон представлены следующие темы: Django, веб-разработка, HTTP, концепции программирования, алгоритмы и структуры, frontend, SDLC, VCS, базы данных (автор самокритичен по этому разделу), а также подготовка к интервью и вопросы работодателю.
Содержание вопросов и ответов можно менять через github. Доступны тексты в форматах markdown и epub.
Другие интересные курсы см. здесь.
А сейчас вопросы и ответы для подготовки к интервью:
- Python
- Последовательности
- Что такое последовательность
- Какие операции поддерживают большинство последовательностей
- Какие виды строк бывают в питоне
- Можно ли изменить отдельный символ внутри строки
- Как соединить список строк в одну. Как разбить строку на список строк
- Как кодировать и декодировать строки
- Чем список отличается от кортежа
- Что такое диапазон
- Как сделать список уникальным (без повторяющихся элементов)
- Есть кортеж из трех элементов. Назначить переменным a, b, c его значения
- Как сравниваются последовательности
- Множества и отображения
- Как понять хешируемый ли объект
- Что такое множество
- Для чего применяются множества
- Какие операции можно производить над множествами
- Как происходит проверка множеств на равенство
- Что такое отображение
- Какие нюансы есть в использовании чисел как ключей
- Какие операции можно производить над отображениями
- Что возвращает метод 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
- Что такое утиная типизация
- Модули, пакеты
- Исключения
- Что такое обработка исключений
- Для чего могут применять конструкцию try finally без except
- Как правильно по-разному обрабатывать исключения
- Что будет если ошибку не обработает блок except
- Что делать если нужно перехватить исключение, выполнить действия и опять возбудить это же исключение
- Что такое сцепление исключений
- Зачем нужен блок else
- Что можно передать в конструктор исключения
- Какие есть классы исключений
- В каких случаях можно обработать SyntaxError
- Можно ли создавать собственные исключения
- Для чего нужны предупреждения (warnings) и как создать собственное
- Для чего нужен модуль warning
- Декораторы
- Метаклассы
- Ввод-Вывод
- Что такое файловый объект
- Какие есть виды файловых объектов
- В чем отличие текстовых и бинарных файлов
- Как пользоваться функцией 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 с поддержкой функционального программирования
- Что такое объект первого класса
- Что такое функция высшего порядка
- Что такое каррирование
- Опишите функции map, reduce, filter модуля functools
- Какие еще вы знаете функции из модуля functools
- Какие вы функции знаете из модуля itertools
- Для чего нужен модуль operator
- GIL, потоки, процессы
- Что такое GIL. Какие у него есть проблемы
- Работали ли Вы с asyncio. В чём его особенность
- Что такое async/await, для чего они нужны и как их использовать
- Как в питоне реализуется многопоточность. Какими модулями
- В чем отличие тредов от мультипроцессинга
- Какие задачи хорошо параллелятся, какие плохо
- Нужно посчитать 100 уравнений. Делать это в тредах или нет
- Треды в Питоне — это нативные треды или нет
- Что такое гринлеты. Общее понятие. Примеры реализаций
- Какие варианты реализации шаблона Singleton на питоне
- Какие вы знаете инструменты для проверки кодстайл
- Что такое list/dict comprehension
- Какая разница между одинарным и двойным подчеркиванием
- Отличие copy() от deepcopy()
- Что такое garbage collector. В чём его плюсы и минусы
- Что такое интроспекция
- Что такое рефлексия
- Последовательности
- Django
- Что такое Middleware, для чего, как реализуется
- Назовите основные мидлвари. Зачем они нужны
- Опишите алгоритм работы CSRF middleware
- Что такое сигналы? Зачем нужны? Назовите основные
- Как реализуется связь m2m на уровне базы данных
- Чем лучше отправлять форму — GET или POST
- Как работает Serializer в Django REST Framework
- Что такое Meta в классах Django и для чего нужен
- За что отвечает Meta в сериализаторе
- Какая разница в быстродействии между django и Flask (и почему)
- Как в django работает система аутентификации
- Веб-разработка
- HTTP
- Общее
- Алгоритмы, структуры
- Что такое рекурсия. Какие минусы, плюсы
- Что такое хвостовая рекурсия
- Как можно оптимизировать хвостовую рекурсию в Python
- О-большое при оценке сложности
- Простой поиск
- Бинарный поиск
- Рекурсивные алгоритмы
- Быстрая сортировка
- Граф
- Очередь и стек
- Дерево
- Поиск в ширину
- Алгоритм Дейкстры
- Жадные алгоритмы
- Как распознать NP-полную задачу
- Динамическое программирование
- Алгоритм k ближайших соседей
- Алгоритм Ричарда Фейнмана
- Frontend
- SDLC
- VCS
- БД
- Что такое транзакция. Какие у неё есть свойства
- Какие команды управления транзакциями вы знаете
- Что такое уровни изолированности транзакций. Какие они бывают
- Что такое вложенные транзакции
- Что такое курсор и зачем он нужен
- Какая разница между PostgreSQL и MySQL
- Что такое VACUUM в PostgreSQL
- Что такое EXPLAIN. Какая разница между ним и EXPLAIN ANALYZE
- Какие виды Join’ов вы знаете, чем они отличаются друг от друга
- Дизайн-интервью
- Вопросы работодателю
- Интересные ссылки
- Источники вопросов