- Учиться нужно асинхронно: в работу нужно брать не огромную тему (например изучить весь Python или теорию баз данных), а набирать из разных направлений понемногу маленьких тем / вопросов в проработку: чуть-чуть из Python, чуть-чуть из SQL и так далее.
- Обязательно освоить работу с Git, Debugger и научиться писать простейшие тесты.
- Заниматься регулярно!
- Лучше заниматься меньше, но чаще, чем редко, но много.
- Решать (или пытаться решить) в день хотя бы 1 задачку с leetcode или аналогичного сайта.
- Соблюдать режим труда и отдыха.
- Не бояться просить помощи во всех доступных источниках, если пришлось столкнуться с проблемой, которую не получается решить за вменяемое время.
- Почему твоя мама ещё не прогает? - Хабр
- Хватит клепать псевдопрограммистов, или «Горшочек — не в IT!» - Хабр
- Генераторы для самых маленьких - Хабр
- Итераторы для самых маленьких - Хабр
- Введение в асинхронное программирование на Python - Хабр
- Асинхронный Python: различные формы конкурентности - Хабр
- Типовые ошибки Python-разработчиков на собеседованиях - Хабр
- Как работает память в Python - Хабр
- Рецепт полезного код-ревью от разработчика из Яндекса - Хабр
- Как устроен GIL? - Хабр
- Действительно ли Python GIL уже мёртв? - Хабр
- Погружение в Python - https://ru.coursera.org/learn/diving-in-python
- SQL - https://www.coursera.org/specializations/learn-sql-basics-data-science
- Postgresql - https://www.udemy.com/course/bestpostgres/
- Advanced Python - https://www.pluralsight.com/courses/advanced-python
- Канал про Python высокого качества - https://www.pluralsight.com/authors/robert-smallshire
- Elasticsearch - https://www.udemy.com/course/elasticsearch-complete-guide/
- Онлайн-тренажер по Гиту - https://learngitbranching.js.org/?locale=ru_RU
- Ч.Петцольд - Код. Тайный язык информатики - базовая книга для понимания того, как работают компьютеры.
- М.Лутц - Изучаем Python (2 тома) - базовые книги по Python
- М.Лутц - Программирование на Python - читать только после базовых томов
- А.Бхаргава - Грокаем алгоритмы - базовая книга по алгоритмам и структурам данных
- А.Швец - Погружение в паттерны проектирования - базовая книга по паттернам для новичков. Читать только после книг по алгоритмам и программированию.
- Л.Ромальо - Python. К вершинам мастерства - читать только после книг по программированию.
- С.Дасгупта, Х.Пападимитриу, У.Вазирани - Алгоритмы - жёсткая книга про алгоритмы, но очень крутая. Читать только после всего остального.
- Python для сетевых инженеров — Документация Python для сетевых инженеров 3.0
- Э.Шоу - Внутреннее устройство CPython
- К. Нгуен - Полное руководство параллельного программирования на Python http://onreader.mdl.ru/MasteringConcurrencyInPython/content/index.html
- Д.Хеллман - Стандартная библиотека Python
- А. Голобурдин (Диджитализируй)- Типизированный Python
- А. Кузьмин - Память и Python https://www.youtube.com/watch?v=D0vbuIDOV4c
- Что такое интерпретируемый язык? Что такое интерпретатор и как он работает в Python?
- Что такое файлы .pyc и зачем они нужны?
- Что такое статическая и динамическая типизация и в чем это проявляется в Python?
- Какие типы данных в Python вам известны?
- Как реализован под капотом питоновский список?
- Чем кортеж отличается от списка?
- В каких случаях лучше использовать кортеж, а в каких - список?
- Как вы объясните человеку, что такое множество?
- Что такое словари и как они работают?
- Как работают типы данных хэшмап, связанный список, двусвязный список, массив?
- Что такое О (о-большое)? Зачем и как используется?
- Какая сложность вставки, извлечения, поиска элементов в словаре и списке?
- Что такое функции и зачем они нужны?
- Что такое замыкание?
- Какие бывают аргументы у функций? Как их передавать?
- Что означает * в сигнатуре аргументов функции?
- Какие бывают области видимости и как они работают?
- Что такое распаковка коллекций?
- Что такое None?
- Что такое исключения? Какие они бывают? Как их использовать?
- Что такое ООП? На каких концепциях стоит ООП?
- Принципы SOLID.
- Объяснить понятие класса и объекта (экземпляра).
- Что такое инкапсуляция? Накодить пример.
- Что такое наследование? Накодить пример.
- Бывает ли в Python множественное наследование? Как ты относишься к этому факту?
- Если у нескольких классов-родителей есть методы с одинаковыми названиями, то какой из них будет вызван в наследнике?
- Что такое полиморфизм? Накодить пример.
- Что такое staticmethod?
- Чем staticmethod отличается от простой функции?
- Когда будем использовать staticmethod, а когда простую функцию?
- Что такое classmethod? В чём его особенности? Когда применяется?
- Что такое магические методы и за что они отвечают?
- Что такое конструктор объектов в Python и из чего он состоит и как работает?
- Почему в методе init есть аргумент self?
- Что такое приватные и защищенные атрибуты? Как они работают?
- Можно ли получить доступ к приватным атрибутам в Python?
- Что такое менеджер контекста, зачем он нужен?
- Какие способы конкурентного выполнения программ в Python бывают?
- Что такое GIL и как он работает?
- В каких случаях GIL не работает?
- Что такое сборщик мусора и как он работает?
- Как работает ресолв циклических ссылок сборщиком мусора?
- Что такое потоки и процессы? Чем отличается поток от процесса?
- Что такое системный вызов fork?
- Какие существуют способы синхронизации процессов и потоков?
- Как передавать информацию из одного процесса в другой?
- Что такое эффект гонок? Как с ним бороться?
- Что такое вытесняющая многозадачность?
- Что такое асинхронность?
- Что такое event loop и как он работает?
- Сколько потоков и процессов работает во время асинхронного выполнения кода?
- Для каких задач стоит использовать потоки, для каких - процессы, а для каких - асинхронность?
- Что такое корутины, таски и футуры и чем друг от друга отличаются?
- Что означает ключевое слово await?
- Как работает gather, wait_for?
- Уметь отличать код, который реально будет работать асинхронно от кода, который будет блокирующим.
- Что это такое и зачем он нужен?
- Что такое local и remote репозитории?
- Что такое commit?
- Что такое ветка?
- Что такое pull-request / merge-request?
- Что такое merge?
- Что такое rebase?
- Что такое pull?
- Чем rebase отличается от merge?
- Что такое конфликты? Почему они возникают и как их разрешать?
- Уметь пользоваться командами: clone, commit, push, pull, merge, rebase
- Что такое контейнеризация? Зачем она нужна?
- Чем контейнер отличается от виртуальной машины?
- Что такое образ?
- Что такое том?
- Что такое сеть контейнера?
- Какие виды сетей бывают?
- Зачем нужен docker-compose?
- Что такое базы данных и для чего они нужны?
- Какие типы баз данных бывают?
- Чем РСУБД отличаются от NoSQL БД?
- Какие достоинства и недостатки есть у РСУБД и NoSQL?
- Приведите примеры РСУБД и NoSQL БД.
- Что такое BASE и ACID?
- Как понять, какую базу данных нужно использовать в проекте?
- Что такое индексы? Зачем они нужны? Как они работают?
- Какие популярные виды индексов существуют?
- Что такое транзакции? Зачем они нужны?
- Какие виды изолирования транзакций бывают?
- Что такое профилирование запросов?
- Что такое шардирование? Зачем оно нужно?
- Что такое репликация? Зачем она нужна?
- Как работает search-вектор и чем он отличается от поиска в Эластике?
- Что такое JOIN'ы и какие они бывают?
- Что такое оконные функции и как они работают?
- Чем отличается WHERE от HAVING?
- Какие есть основные агрегационные функции?
- Что такое вьюшка?
- Что такое FOREIGN KEY и зачем он нужен?
- Чем EXPLAIN отличается от ANALYZE?
- Что такое протокол передачи данных?
- Что такое HTTP? Чем отличается HTTPS?
- Какие другие протоколы передачи данных, кроме HTTP(S) вы знаете? Как они работают?
- Что такое API?
- Что такое REST и RESTfull API?
- Что такое и как работает DNS?
- Что такое SSL-протокол и зачем он нужен?
- Какие основные виды уязвимостей вам известны?
- Какие способы выявления уязвимостей вам известны?
- Что такое SQL-инъекция? Как защититься от них?
- Что такое web-фреймворк и зачем он нужен?
- Какие вы знаете популярные web-фреймворки? Их достоинства и недостатки.
- Зачем нужны брокеры сообщений?
- Какие брокеры сообщений вам известны и чем они отличаются друг от друга?
- Что такое тестирование и зачем оно нужно?
- Какие виды тестов вы знаете? Что каждый из видов тестов подразумевает под собой?
- Какие библиотеки для написания тестов используются?
- Что такое фикстура в pytest?
- Если я ожидаю во время выполнения функцию ошибку, как я могу это протестировать?
- Что такое мок? Как мокать вызовы функций: простой вызов, вызов с аргументами, количество вызовов.
- Для чего нужен файл conftest?
- Написать пример произвольного менеджера контекста.
- Реализовать паттерн проектирования синглтон.
- Реализовать паттерн проектирования декоратор.
- Решить несколько задач.Уметь оценить алгоритмическую сложность решения.
- Уметь спроектировать систему согласно заданию.