Skip to content

Моя личная сокровищница с полезными материалами

Notifications You must be signed in to change notification settings

luchanos/treasury

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 

Repository files navigation

Манифест

  1. Учиться нужно асинхронно: в работу нужно брать не огромную тему (например изучить весь Python или теорию баз данных), а набирать из разных направлений понемногу маленьких тем / вопросов в проработку: чуть-чуть из Python, чуть-чуть из SQL и так далее.
  2. Обязательно освоить работу с Git, Debugger и научиться писать простейшие тесты.
  3. Заниматься регулярно!
  4. Лучше заниматься меньше, но чаще, чем редко, но много.
  5. Решать (или пытаться решить) в день хотя бы 1 задачку с leetcode или аналогичного сайта.
  6. Соблюдать режим труда и отдыха.
  7. Не бояться просить помощи во всех доступных источниках, если пришлось столкнуться с проблемой, которую не получается решить за вменяемое время.

Избранные статьи на Хабр

  • Почему твоя мама ещё не прогает? - Хабр
  • Хватит клепать псевдопрограммистов, или «Горшочек — не в IT!» - Хабр
  • Генераторы для самых маленьких - Хабр
  • Итераторы для самых маленьких - Хабр
  • Введение в асинхронное программирование на Python - Хабр
  • Асинхронный Python: различные формы конкурентности - Хабр
  • Типовые ошибки Python-разработчиков на собеседованиях - Хабр
  • Как работает память в Python - Хабр
  • Рецепт полезного код-ревью от разработчика из Яндекса - Хабр
  • Как устроен GIL? - Хабр
  • Действительно ли Python GIL уже мёртв? - Хабр

Переводы на Хабр по технологиям

Избранные курсы

Избранные книги

  • Ч.Петцольд - Код. Тайный язык информатики - базовая книга для понимания того, как работают компьютеры.
  • М.Лутц - Изучаем Python (2 тома) - базовые книги по Python
  • М.Лутц - Программирование на Python - читать только после базовых томов
  • А.Бхаргава - Грокаем алгоритмы - базовая книга по алгоритмам и структурам данных
  • А.Швец - Погружение в паттерны проектирования - базовая книга по паттернам для новичков. Читать только после книг по алгоритмам и программированию.
  • Л.Ромальо - Python. К вершинам мастерства - читать только после книг по программированию.
  • С.Дасгупта, Х.Пападимитриу, У.Вазирани - Алгоритмы - жёсткая книга про алгоритмы, но очень крутая. Читать только после всего остального.
  • Python для сетевых инженеров — Документация Python для сетевых инженеров 3.0
  • Э.Шоу - Внутреннее устройство CPython
  • К. Нгуен - Полное руководство параллельного программирования на Python http://onreader.mdl.ru/MasteringConcurrencyInPython/content/index.html
  • Д.Хеллман - Стандартная библиотека Python
  • А. Голобурдин (Диджитализируй)- Типизированный Python

Избранные видео

Избранные сайты для решения задач

Вопросы, часто встречающиеся на собеседованиях

Python:

  1. Что такое интерпретируемый язык? Что такое интерпретатор и как он работает в Python?
  2. Что такое файлы .pyc и зачем они нужны?
  3. Что такое статическая и динамическая типизация и в чем это проявляется в Python?
  4. Какие типы данных в Python вам известны?
  5. Как реализован под капотом питоновский список?
  6. Чем кортеж отличается от списка?
  7. В каких случаях лучше использовать кортеж, а в каких - список?
  8. Как вы объясните человеку, что такое множество?
  9. Что такое словари и как они работают?
  10. Как работают типы данных хэшмап, связанный список, двусвязный список, массив?
  11. Что такое О (о-большое)? Зачем и как используется?
  12. Какая сложность вставки, извлечения, поиска элементов в словаре и списке?
  13. Что такое функции и зачем они нужны?
  14. Что такое замыкание?
  15. Какие бывают аргументы у функций? Как их передавать?
  16. Что означает * в сигнатуре аргументов функции?
  17. Какие бывают области видимости и как они работают?
  18. Что такое распаковка коллекций?
  19. Что такое None?
  20. Что такое исключения? Какие они бывают? Как их использовать?
  21. Что такое ООП? На каких концепциях стоит ООП?
  22. Принципы SOLID.
  23. Объяснить понятие класса и объекта (экземпляра).
  24. Что такое инкапсуляция? Накодить пример.
  25. Что такое наследование? Накодить пример.
  26. Бывает ли в Python множественное наследование? Как ты относишься к этому факту?
  27. Если у нескольких классов-родителей есть методы с одинаковыми названиями, то какой из них будет вызван в наследнике?
  28. Что такое полиморфизм? Накодить пример.
  29. Что такое staticmethod?
  30. Чем staticmethod отличается от простой функции?
  31. Когда будем использовать staticmethod, а когда простую функцию?
  32. Что такое classmethod? В чём его особенности? Когда применяется?
  33. Что такое магические методы и за что они отвечают?
  34. Что такое конструктор объектов в Python и из чего он состоит и как работает?
  35. Почему в методе init есть аргумент self?
  36. Что такое приватные и защищенные атрибуты? Как они работают?
  37. Можно ли получить доступ к приватным атрибутам в Python?
  38. Что такое менеджер контекста, зачем он нужен?
  39. Какие способы конкурентного выполнения программ в Python бывают?
  40. Что такое GIL и как он работает?
  41. В каких случаях GIL не работает?
  42. Что такое сборщик мусора и как он работает?
  43. Как работает ресолв циклических ссылок сборщиком мусора?
  44. Что такое потоки и процессы? Чем отличается поток от процесса?
  45. Что такое системный вызов fork?
  46. Какие существуют способы синхронизации процессов и потоков?
  47. Как передавать информацию из одного процесса в другой?
  48. Что такое эффект гонок? Как с ним бороться?
  49. Что такое вытесняющая многозадачность?
  50. Что такое асинхронность?
  51. Что такое event loop и как он работает?
  52. Сколько потоков и процессов работает во время асинхронного выполнения кода?
  53. Для каких задач стоит использовать потоки, для каких - процессы, а для каких - асинхронность?
  54. Что такое корутины, таски и футуры и чем друг от друга отличаются?
  55. Что означает ключевое слово await?
  56. Как работает gather, wait_for?
  57. Уметь отличать код, который реально будет работать асинхронно от кода, который будет блокирующим.

Git

  1. Что это такое и зачем он нужен?
  2. Что такое local и remote репозитории?
  3. Что такое commit?
  4. Что такое ветка?
  5. Что такое pull-request / merge-request?
  6. Что такое merge?
  7. Что такое rebase?
  8. Что такое pull?
  9. Чем rebase отличается от merge?
  10. Что такое конфликты? Почему они возникают и как их разрешать?
  11. Уметь пользоваться командами: clone, commit, push, pull, merge, rebase

Docker

  1. Что такое контейнеризация? Зачем она нужна?
  2. Чем контейнер отличается от виртуальной машины?
  3. Что такое образ?
  4. Что такое том?
  5. Что такое сеть контейнера?
  6. Какие виды сетей бывают?
  7. Зачем нужен docker-compose?

Базы данных

  1. Что такое базы данных и для чего они нужны?
  2. Какие типы баз данных бывают?
  3. Чем РСУБД отличаются от NoSQL БД?
  4. Какие достоинства и недостатки есть у РСУБД и NoSQL?
  5. Приведите примеры РСУБД и NoSQL БД.
  6. Что такое BASE и ACID?
  7. Как понять, какую базу данных нужно использовать в проекте?
  8. Что такое индексы? Зачем они нужны? Как они работают?
  9. Какие популярные виды индексов существуют?
  10. Что такое транзакции? Зачем они нужны?
  11. Какие виды изолирования транзакций бывают?
  12. Что такое профилирование запросов?
  13. Что такое шардирование? Зачем оно нужно?
  14. Что такое репликация? Зачем она нужна?
  15. Как работает search-вектор и чем он отличается от поиска в Эластике?

SQL

  1. Что такое JOIN'ы и какие они бывают?
  2. Что такое оконные функции и как они работают?
  3. Чем отличается WHERE от HAVING?
  4. Какие есть основные агрегационные функции?
  5. Что такое вьюшка?
  6. Что такое FOREIGN KEY и зачем он нужен?
  7. Чем EXPLAIN отличается от ANALYZE?

Backend

  1. Что такое протокол передачи данных?
  2. Что такое HTTP? Чем отличается HTTPS?
  3. Какие другие протоколы передачи данных, кроме HTTP(S) вы знаете? Как они работают?
  4. Что такое API?
  5. Что такое REST и RESTfull API?
  6. Что такое и как работает DNS?
  7. Что такое SSL-протокол и зачем он нужен?

Информационная безопасность

  1. Какие основные виды уязвимостей вам известны?
  2. Какие способы выявления уязвимостей вам известны?
  3. Что такое SQL-инъекция? Как защититься от них?

Web-фреймворки

  1. Что такое web-фреймворк и зачем он нужен?
  2. Какие вы знаете популярные web-фреймворки? Их достоинства и недостатки.

Брокеры сообщений

  1. Зачем нужны брокеры сообщений?
  2. Какие брокеры сообщений вам известны и чем они отличаются друг от друга?

Тестирование

  1. Что такое тестирование и зачем оно нужно?
  2. Какие виды тестов вы знаете? Что каждый из видов тестов подразумевает под собой?
  3. Какие библиотеки для написания тестов используются?
  4. Что такое фикстура в pytest?
  5. Если я ожидаю во время выполнения функцию ошибку, как я могу это протестировать?
  6. Что такое мок? Как мокать вызовы функций: простой вызов, вызов с аргументами, количество вызовов.
  7. Для чего нужен файл conftest?

Кодинг:

  1. Написать пример произвольного менеджера контекста.
  2. Реализовать паттерн проектирования синглтон.
  3. Реализовать паттерн проектирования декоратор.
  4. Решить несколько задач.Уметь оценить алгоритмическую сложность решения.

Систем дизайн

  1. Уметь спроектировать систему согласно заданию.

About

Моя личная сокровищница с полезными материалами

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published