Skip to content

Latest commit

 

History

History
77 lines (72 loc) · 5.67 KB

File metadata and controls

77 lines (72 loc) · 5.67 KB

Пересдача Python

Ежеси на небеси

Пройдемся по базе

Теоретическая часть Модули, знание которых может быть полезно в ответах на вопросы: abc, argparse, asyncio, collections, concurrent.futures, contextlib, copy, cProfile, csv, enum, gc, glob, heapq, importlib, inspect, io, json, logging, mmap, multiprocessing, os, os.path, pdb, pickle, re, readline, select, selectors, signal, socket, struct, subprocess, sys, this, threading, time, timeit, unicodedata, unittest, unittest.mock, weakref
Список вопросов

  1. Базовые структуры данных. Встроенные типы данных. Оценка сложности базовых операций. Примеры уместного использования. Мутабельность и хешируемость. Структуры defaultdict, Counter, namedtuple, heapq, enum.
  2. Объектная модель Python. «Всё есть объект», type. Классы. Атрибуты объектов, классов. Методы. Статические и классовые методы. Наследование. Интроспекция.
  3. Модель памяти Python. Области видимости, время жизни объекта. Создание и удаление объектов. Поверхностное и глубокое копирование. Слабые ссылки. Сборка мусора в Python.
  4. Работа с текстовыми данными. Тип данных str. Юникод и кодировки. Текстовые файлы. Разбор текстовых данных. Регулярные выражения.
  5. Работа с бинарными данными. Типы данных bytes, bytearray, memoryview. Бинарные файлы. Разбор бинарных данных. Порядок байт, разрядность бинарных типов данных.
  6. Работа с файловой системой. Работа с файлами: поиск на ФС, открытие, чтение, запись и т.п. Чтение директорий. Получение метаинформации о файлах. Ошибки, возникающие при работе с файлами.
  7. Модули и пакеты. Импорт. Объект модуля, система дистрибуции пакетов в Python. Способы импортирования модулей. Относительные и абсолютные импорты. Пакеты. Система поиска и загрузки модулей.
  8. Многопоточное программирование. Многопоточность в Python. GIL. Обмен данными между потоками. Проблемы, специфичные для многопоточных программ. Использование пулов потоков.
  9. Процессы. Мультипроцессинг в Python. Запуск и коммуникация с другими программами. Обмен данными между процессами. Сигналы, пайпы, работа с общими дескрипторами. Использование пулов процессов.
  10. Асинхронное программирование. Кооперативная многозадачность. Мультиплексирование потоков ввода-вывода (select, poll, epoll). Event loop. async/await.
  11. Сериализация. Задачи сериализации, проблемы сериализации. Бинарные и текстовые форматы сериализации, специфичные для языка; общие форматы.
  12. Тестирование. Мотивация. Виды тестирования. Метрики качества тестов. Проблемы тестирования. Подходы к проектированию тестируемого ПО.
  13. Пользовательские интерфейсы. Обработка параметров запуска, переменные окружения. Виды интерфейсов: CLI, CUI, GUI и особенности ввода/вывода. Парадигмы машины и часов. Подходы к проектированию GUI на Python (на примере PyQt*, tkinter или аналогичных).
  14. Работа с сетью. Сетевые клиент и сервер. TCP и UDP сокеты. Синхронный и асинхронный приём-передача данных. Текстовые и бинарные протоколы. Проектирование протоколов передачи данных. Способы одновременной обработки нескольких подключений.
  15. Отладка, обработка ошибок, логирование. Способы оповещения об ошибках и обработки ошибок. Механизм исключений и менеджеры контекстов. Подходы к организации логирования.
  16. Профилирование. Задачи профилирования. Объекты профилирования. Способы профилирования, их преимущества и недостатки. Способы измерения времени работы программы.