Вопросы и ответы для подготовки к интервью по Питон etc.

Здесь список вопросов и ответов на них для подготовки к интервью по Питон и технологии программирования в целом. Могут быть полезны как интервьюеру, так и интервьюируемому. Так пишет автор. Но я думаю, что не только им. Этот материал также может быть полезен разработчикам, техническим писателям, студентам и преподавателям. Фактически это обзорный учебный курс по программирования с акцентом на Питон, включающий как концепции языка, так и компоненты инфраструктуры.

Вопросы и ответы по Питон

Кроме большого раздела Питон представлены следующие темы: Django, веб-разработка, HTTP, концепции программирования, алгоритмы и структуры, frontend, SDLC, VCS, базы данных (автор самокритичен по этому разделу), а также подготовка к интервью и вопросы работодателю.

Содержание вопросов и ответов можно менять через github. Доступны тексты в форматах markdown и epub.

Другие интересные курсы см. здесь.

А сейчас вопросы и ответы для подготовки к интервью:

Вопросы для подготовки к Python Developer интервью

  1. Python
    1. Последовательности
      1. Что такое последовательность
      2. Какие операции поддерживают большинство последовательностей
      3. Какие виды строк бывают в питоне
      4. Можно ли изменить отдельный символ внутри строки
      5. Как соединить список строк в одну. Как разбить строку на список строк
      6. Как кодировать и декодировать строки
      7. Чем список отличается от кортежа
      8. Что такое диапазон
      9. Как сделать список уникальным (без повторяющихся элементов)
      10. Есть кортеж из трех элементов. Назначить переменным a, b, c его значения
      11. Как сравниваются последовательности
    2. Множества и отображения
      1. Как понять хешируемый ли объект
      2. Что такое множество
      3. Для чего применяются множества
      4. Какие операции можно производить над множествами
      5. Как происходит проверка множеств на равенство
      6. Что такое отображение
      7. Какие нюансы есть в использовании чисел как ключей
      8. Какие операции можно производить над отображениями
      9. Что возвращает метод items
      10. Как отсортировать список словарей по определенному полю
      11. Что может являться ключом словаря. Что не может. Почему
      12. Есть два списка – ключи и значения. Как составить из них словарь
      13. Как работает хэш-таблица
      14. Что такое коллизия
      15. Где будет быстрее поиск, а где перебор и почему: dict, list, set, tuple
    3. Функции
      1. Что такое args, kwargs. В каких случаях они требуются
      2. Почему использовать изменяемые объекты как параметры по-умолчанию плохо. Приведите пример плохого случая. Как исправить
      3. Можно ли передавать функцию в качестве аргумента другой функции
      4. Можно ли объявлять функцию внутри другой функции. Где она будет видна
      5. Что такое лямбды. Каковы их особенности
      6. Допустимы ли следующие выражения
      7. Как передаются значения аргументов в функцию или метод
      8. Что такое замыкание
    4. Итераторы и генераторы
      1. Что такое контейнер
      2. Что такое итерабельный объект
      3. Что такое итератор
      4. Что такое генератор
      5. Что такое генераторная функция
      6. Что делает yield
      7. В чем отличие [x for x in y] от (x for x in y)
      8. Что особенного в генераторе
      9. Как объявить генератор
      10. Как получить из генератора список
      11. Что такое подгенератор
      12. Какие методы есть у генераторов
      13. Можно ли извлечь элемент генератора по индексу
      14. Что возвращает итерация по словарю
      15. Как итерировать словарь по парам ключ-значение
      16. Что такое сопрограмма
    5. Классы, объекты
      1. Как получить список атрибутов объекта
      2. Что такое магические методы, для чего нужны
      3. Как в классе сослаться на родительский класс
      4. Возможно ли множественное наследование
      5. Что такое MRO
      6. Что такое Diamond problem
      7. Что такое миксины
      8. Что такое контекстный менеджер. Как написать свой
      9. Прокомментировать выражение
      10. Что такое __slots__. Плюсы, минусы
      11. В чем смысл параметров _value, __value
      12. Что такое __new__. И чем он отличается от __init__. В какой последовательности они выполняются
      13. Что такое и чем отличается old-style от new-style classes
      14. Что такое утиная типизация
    6. Модули, пакеты
      1. Что такое модуль
      2. Как можно получить имя модуля
      3. Что такое модульное программирование
      4. Как Python ищет модули при импорте
      5. Что такое пакет
      6. Что вы можете сказать о конструкции import package.item
    7. Исключения
      1. Что такое обработка исключений
      2. Для чего могут применять конструкцию try finally без except
      3. Как правильно по-разному обрабатывать исключения
      4. Что будет если ошибку не обработает блок except
      5. Что делать если нужно перехватить исключение, выполнить действия и опять возбудить это же исключение
      6. Что такое сцепление исключений
      7. Зачем нужен блок else
      8. Что можно передать в конструктор исключения
      9. Какие есть классы исключений
      10. В каких случаях можно обработать SyntaxError
      11. Можно ли создавать собственные исключения
      12. Для чего нужны предупреждения (warnings) и как создать собственное
      13. Для чего нужен модуль warning
    8. Декораторы
      1. Что такое декораторы. Зачем нужны
      2. Что может быть декоратором. К чему может быть применен декоратор
      3. Что будет, если декоратор не возвращает ничего
      4. В чем отличие @foobar от @foobar()
      5. Что такое фабрика декораторов
      6. Зачем нужен wraps
    9. Метаклассы
      1. Что такое метаклассы
      2. Что такое type. Как работает поиск метакласса при создании объекта
      3. Как работают метаклассы
      4. Зачем вообще использовать метаклассы
    10. Ввод-Вывод
      1. Что такое файловый объект
      2. Какие есть виды файловых объектов
      3. В чем отличие текстовых и бинарных файлов
      4. Как пользоваться функцией open
      5. Для чего необходимо закрывать файлы
      6. Что делают методы tell и seek
      7. Что делают StringIO и BytesIO
      8. Являются ли файловые объекты контекстными менеджерами
      9. Что такое сериализация
      10. json.dumps / json.dump , json.loads / json.load
      11. Что делать если нужно сериализовать данные, которые не поддерживаются стандартным модулем json
      12. pickle.dumps / pickle.dump, pickle.loads / pickle.load
    11. Тестирование
      1. Пирамида тестирования
      2. Что такое mocking
      3. Что делать, если тестируемая функция использует удалённое подключение к внешним сервисам, которое иногда видает ошибку таймаута, 404 и им подобные
      4. Что делать, если тестируемая функция занимает много времени на выполнение повторяющихся операций внутри неё
      5. Какие вы знаете виды тестов
        1. Unit-тесты
        2. Интеграционные тесты (Integration tests)
        3. Функциональное тестирование
        4. Системный тест (System test, Service test)
        5. Проверка работоспособности (Smoke test, Sanity check)
        6. Регрессионное тестирование (Regression testing)
        7. Прочее
      6. Чем интеграционное тестирование отличается от функционального
    12. Функциональное программирование
      1. Что такое функциональное программирование
      2. Как у Python с поддержкой функционального программирования
      3. Что такое объект первого класса
      4. Что такое функция высшего порядка
      5. Что такое каррирование
      6. Опишите функции map, reduce, filter модуля functools
      7. Какие еще вы знаете функции из модуля functools
      8. Какие вы функции знаете из модуля itertools
      9. Для чего нужен модуль operator
    13. GIL, потоки, процессы
      1. Что такое GIL. Какие у него есть проблемы
      2. Работали ли Вы с asyncio. В чём его особенность
      3. Что такое async/await, для чего они нужны и как их использовать
      4. Как в питоне реализуется многопоточность. Какими модулями
      5. В чем отличие тредов от мультипроцессинга
      6. Какие задачи хорошо параллелятся, какие плохо
      7. Нужно посчитать 100 уравнений. Делать это в тредах или нет
      8. Треды в Питоне — это нативные треды или нет
      9. Что такое гринлеты. Общее понятие. Примеры реализаций
    14. Какие варианты реализации шаблона Singleton на питоне
    15. Какие вы знаете инструменты для проверки кодстайл
    16. Что такое list/dict comprehension
    17. Какая разница между одинарным и двойным подчеркиванием
    18. Отличие copy() от deepcopy()
    19. Что такое garbage collector. В чём его плюсы и минусы
    20. Что такое интроспекция
    21. Что такое рефлексия
  2. Django
    1. Что такое Middleware, для чего, как реализуется
    2. Назовите основные мидлвари. Зачем они нужны
    3. Опишите алгоритм работы CSRF middleware
    4. Что такое сигналы? Зачем нужны? Назовите основные
    5. Как реализуется связь m2m на уровне базы данных
    6. Чем лучше отправлять форму — GET или POST
    7. Как работает Serializer в Django REST Framework
    8. Что такое Meta в классах Django и для чего нужен
    9. За что отвечает Meta в сериализаторе
    10. Какая разница в быстродействии между django и Flask (и почему)
    11. Как в django работает система аутентификации
  3. Веб-разработка
    1. Что такое CGI. Плюсы, минусы
    2. Как защитить куки от воровства и от подделки
    3. Какая разница между аутентификацией и авторизацией
    4. Что такое XSS. Примеры. Как защитить приложение
    5. REST & SOAP
      1. Что такое REST
      2. Что такое SOAP
      3. В чем разница между REST и SOAP веб сервисами
      4. Можем ли мы посылать SOAP сообщения с вложением
      5. Как бы вы решили какой из REST или SOAP веб сервисов использовать
    6. Какие способы для мониторинга веб-приложений в production вы использовали или знаете
  4. HTTP
    1. Как устроен протокол HTTP
    2. Написать raw запрос главной Яндекса
    3. Как клиенту понять, удался запрос или нет
    4. Что нужно отправить браузеру, чтобы перенаправить на другую страницу
    5. Как управлять кешированием в HTTP
    6. Как кэшируются файлы на уровне протокола
    7. Что такое HTTP
    8. Чем отличаются HTTP и HTTPS
  5. Общее
    1. ООП
      1. Инкапсуляция
      2. Наследование
      3. Полиморфизм
      4. Абстракция
    2. Какие принципы программирования вы знаете
      1. KISS
      2. DRY
      3. YAGNI
      4. SLAP
      5. SOLID принципы
    3. Что такое code cohesion & code coupling
    4. Какие шаблоны проектирования вы знаете
      1. Порождающие (Creational)
        1. Абстрактная фабрика (Abstract factory)
        2. Построитель (Builder)
        3. Фабричный метод (Factory method)
        4. Прототип (Prototype)
        5. Одиночка (Singleton)
        6. Порождающие паттерны. Итог
      2. Структурные (Structural)
        1. Адаптер (Adapter)
        2. Мост (Bridge)
        3. Компоновщик (Composite)
        4. Декоратор (Decorator)
        5. Фасад (Facade)
        6. Приспособленец (Flyweight)
        7. Заместитель (Proxy)
        8. Структурные паттерны. Итог
      3. Поведенческие (Behavioral)
        1. Цепочка ответственности (Chain of responsobility)
        2. Команда (Command)
        3. Интерпретатор (Interpreter)
        4. Итератор (Iterator)
        5. Посредник (Mediator)
        6. Хранитель (Memento)
        7. Наблюдатель (Observer)
        8. Состояние (State)
        9. Стратегия (Strategy)
        10. Шаблонный метод (Template method)
        11. Посетитель (Visitor)
        12. Поведенческие паттерны. Итог
    5. Что такое lru cache
    6. Что такое MQ
    7. Какие готовые реализации MQ вы знаете
    8. Что такое RPC
    9. Что такое gPRC
  6. Алгоритмы, структуры
    1. Что такое рекурсия. Какие минусы, плюсы
    2. Что такое хвостовая рекурсия
    3. Как можно оптимизировать хвостовую рекурсию в Python
    4. О-большое при оценке сложности
    5. Простой поиск
    6. Бинарный поиск
    7. Рекурсивные алгоритмы
    8. Быстрая сортировка
    9. Граф
    10. Очередь и стек
    11. Дерево
    12. Поиск в ширину
    13. Алгоритм Дейкстры
    14. Жадные алгоритмы
    15. Как распознать NP-полную задачу
    16. Динамическое программирование
    17. Алгоритм k ближайших соседей
    18. Алгоритм Ричарда Фейнмана
  7. Frontend
    1. Что такое куки. Зачем они, как с ними работать и где они сохраняются
    2. Может ли сервер изменить (добавить, удалить) куки
    3. Что такое JWT (JSON Web Token)
  8. SDLC
    1. Agile/Scrum
    2. Какая разница между CI и CD
    3. Какая разница между Scrum и Kanban
    4. Вопрос для тим-лидов: что Вы будете делать, если на проекте нет тестов и заказчик не хочет тратить на их разработку время и деньги
    5. Что такое Code Debt и как с ним быть
  9. VCS
    1. Что такое Git Flow
    2. Что такое Git Rebase
    3. Что такое Git Cherry pick
    4. Что такое force push
    5. Что такое pre-commit check
  10. БД
    1. Что такое транзакция. Какие у неё есть свойства
    2. Какие команды управления транзакциями вы знаете
    3. Что такое уровни изолированности транзакций. Какие они бывают
    4. Что такое вложенные транзакции
    5. Что такое курсор и зачем он нужен
    6. Какая разница между PostgreSQL и MySQL
    7. Что такое VACUUM в PostgreSQL
    8. Что такое EXPLAIN. Какая разница между ним и EXPLAIN ANALYZE
    9. Какие виды Join’ов вы знаете, чем они отличаются друг от друга
  11. Дизайн-интервью
    1. План интервью
    2. 1. Сбор требований
    3. 2. Эстимейты
    4. 3. API
    5. 4. High-level design
    6. 5. Detailed design
      1. Performance mantras
    7. 6. Масштабирование
      1. Performance bottlenecks
  12. Вопросы работодателю
    1. Вопросы HR’у
    2. Вопросы для технического собеседования
  13. Интересные ссылки
  14. Источники вопросов


Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *