Что нужно знать Python Junior разработчику?
monoteistЧастый вопрос среди начинающих разработчиков — Какой минимум знаний нужен для прохождения собеседований и/или для устройства на работу?
Давайте разбираться.
Скажу сразу — однозначного ответа, к сожалению, нет, но есть анализ из личного опыта прохождения собеседований и, конечно же, данные из «hh» и «Хабр Карьера» — два крупнейших сервиса поиска работы в РФ для разработчиков.
Примечание: В данной статье я буду разбирать вопросы для Python Django разработчика, но также постараюсь разобрать общие вопросы для backend разработчиков.
Итак, будем считать, что вы уже получили свое заветное приглашение на собеседование и начали к нему готовиться. Теперь дело за малым — подучить немного теорию. Дам совет на перед — лучше давать развернутые ответы, чем глубже вы погрузитесь в тему, тем лучше. Я буду писать вопросы, а поиск ответов оставлю на вас, как дополнительную практику.
Если привести краткий список технологий, которые вам нужно знать, то:
- Python
- SQL | PostgreSQL
- Git | Опыт работы с github или c аналогичным сервисом gitlab или bitbucket
- Django | Django Rest Framework
- Понимание как работает интернет
- HTTP
- Rest
- Что такое API
Не стоит сразу пугаться, вам не нужно знать в идеале все, для начала достаточно знать хотя бы на минимальном уровне, но так ,чтобы вы понимали что это за технологии и для чего они нужны.
Начнем с самого Python:
- Какие типы есть в Python?
- Какие типы изменяемые, а какие не изменяемые?
- Как работают словари?
- Как работают множества?
- Что такое декоратор? (Часто просят написать свой прямо во время собеседования)
- Что такое генератор? Чем он отличается от итератора?
- Что такое ООП и как оно реализовано в Python?
- Что такое наследование ?
- Что такое инкапсуляция ?
- Что такое полиморфизм?
- Что такое рекурсия?
- Что такое аннотации типов ?
- Что такое pep8 и как вы к нему относитесь?
Это основные вопросы по Python, которые встречаются на собеседованиях чаще всего. Конечно, их не задают все разом на каждом собеседовании. Некоторые собеседующие пропускают Python после нескольких вопросов про сам язык и переходят уже к фреймворкам и т.д.
Но так бывает не всегда. Некоторые любят очень дотошно проверять ваши знания языка, параллельно ожидая от вас написание кода.
Забегая вперед, советую записывать вопросы, которые вам задают, можно в целом для себя делать записи собеседований, но предупреждаю — лучше никуда их не выкладывать в публичный доступ.
Django:
- Жизненный цикл запроса в Django — здесь подразумевается рассказать весь путь запроса от клиента до БД.
- Что такое Middleware, для чего?
- Назовите основные Middleware?
- Как реализуется связь m2m в django?
- Что такое миксины?
- Что такое permission?
- Иногда вас могут попросить запросы в Django ORM
- Какой паттерн программирования реализует Django
Django Rest Framework — по правде говоря не помню, чтобы мне задавали хотя бы единожды вопросы по DRF, обычно могут спросить что это такое и про сериализацию данных — основная задача DRF.
Поговорим про базы данных:
- С какими базами данных вы работали?
- Что такое транзакция?
- Связи в базе данных:
- Один к одному
- Один ко многим
- Многие ко многим
- Для чего используется ключевое слово ORDER BY?
- Что такое join? Виды join’ов
- Для чего нужен оператор UNION?
- Что такое DISTINCT?
- Что такое индексы?
- Тут также зачастую просят написать несколько не сложных запросов в БД
Далее у нас Git:
- Разница между merge и rebase
- Как можно отменить коммит, если он уже был опубликован ?
- За что отвечает команда stash?
- Что Такое Cherry-Picking?
HTTP:
- Что такое HTTP?
- Какие есть методы у HTTP?
- Какие методы в HTTP идемпотентные, а какие — нет?
- Чем отличаются HTTP и HTTPS?
- Чем отличаются методы GET, POST и HEAD?
- В чем разница между методами PUT и POST?
- Коды ответов HTTP
- Что такое Rest?
- Что такое API
Это, конечно же, не все вопросы, но здесь я привел самые основные, которые встречаются на собеседованиях, а также в рекомендациях от других разработчиков.
Хочу дать несколько общих советов.
Подготовьтесь к вопросу — «Какая самая интересная и/или трудная задача которую вы решали?», далее обычно идет — «Топ 5 ваших достижений», также по возможности узнавайте про компанию, ведь частый вопрос — «Почему именно в нашей компании вы хотите работать?».
Я писал об этом ранее, но повторюсь, записывайте вопросы на которые вы не смогли ответить, и обязательно перед следующим собеседованием выучите их.
Поделитесь вопросами, которые задавали вам на собеседованиях!
