Pull to refresh

К каким вопросам готовиться перед собеседованием на Python-разработчика

Reading time4 min
Views25K

Безусловно, от программирования нужно получать свой кайф. Если вам не интересно заниматься тем, что вы делаете, наверное, это дело лучше бросить. Однако, было бы неплохо конвертировать ваш кайф в какую-нибудь валюту. Даже желательно бы не в православный рубль, а басурманский доллар. Поэтому сегодня обсудим вопросы, которые задают на собеседованиях Python-разработчику и как в целом подготовиться к любому такому собеседованию. Текст написал автор YouTube-канала PyLounge Макс. Поехали!

Условно мы разделим сегодняшний разговор на 2 уровня. Первый уровень это junior/middle, а 2 уровень это senior. Почему так? Требования сильно варьируются от компании к компании. Одна фирма может предъявлять джуну требования крепкого мидла, а другую мидл со знаниями не шибко хорошего джуна вполне устроит. Поэтому ступень junior/middle объединяем. А вот о сениорах поговорим отдельно.

В принципе – раскрываю лайфхак, как подготовиться к абсолютно любому собеседованию на абсолютно любую сферу программирования, с любым языком. Записывайте.

Во-первых, не важно junior вы или middle. На любом собеседовании будут вопросы, касающиеся базовых основ языка и каких-то его фишек, которыми этот язык примечателен, какие сразу бросаются в глаза, либо вообще уникальные именно для этого языка. Например, в случае с Python практически на любом собеседовании спрашивают:

  • что такое итераторы и генераторы, и в чём их разница;

  • зачем нужны декораторы и как написать хотя бы простенький декоратор;

  • что такое аргс и кваргс (*args и **kwargs);

  • что такое менеджеры контекста;

  • какие типы данных есть в питоне, какие из них изменяемые и неизменяемые.

  • что такое метаклассы и магические методы.

Существуют и более тонкие вопросы, которые относятся к специфике языка на позиции постарше, например:

  • Method Resolution Order;

  • PEP;

  • Async и корутины;

  • Type annotation , GIL и т.д. Принцип вы поняли. 

Естественно, вопросы могут варьироваться, какие-то будут мелькать чаще, какие-то реже. Однако вопрос про генераторы будет попадаться в 95% случаев. Потому что это – элемент языка за который цепляется глаз. То есть, чтобы подготовиться к вопросам непосредственно по языку, нужно обратить внимание именно на примечательные моменты. Ну и без базы, как, например, типы данных, естественно, тоже никуда.

Во-вторых, это общее знание Computer Science и всяких тем, связанных с программирование в целом, а не с конкретным языком.

Это, например, понимание того:

  • что такое ООП и классы;

  • наследование, множественное наследование;

  • алгоритмы и структуры данных (куда без них).

И чем выше уровень, тем возможно больше требования. Но раз на раз не приходится. Как минимум, про Большое О, список и 1-2 алгоритма сортировки знать стоит.

Так же не будет лишним знать:

  • парадигмы программирования;

  • основы баз данных, SQL;

  • что такое SOLID, DRY, KISS;

  • паттерны проектирования и тому подобное.

То, насколько подобные вопросы буду заводить в дебри зависит от требований работодателя. Иногда вопросы могут формулироваться так, что правильного ответа на него нет. Это своего рода открытый вопрос, нацеленный на то, чтобы послушать рассуждения и ход мыслей подсудимого. Например, вопрос о том, «Считаете ли вы, что распространение ООП – это круто? Если да, то почему?» И другие из этой оперы.

Отмечу, довольно важно, что на общие вопросы, что на вопросы по языку, отвечать в более простой, непринуждённой форме. Не надо учить определения наизусть. Вы не в школе. Интервьюеру достаточно показать, что вы понимаете, о чём говорите, пусть местами корявыми словами, зато понимание есть.

Третий пласт вопросов – это вопросы из специфики предметной области, в которой вы хотите работать. Например, общие вопросы этой сферы и более узкие, связанные с тем, как выбранный язык программирования взаимодействует с этой сферой. Например, если вы хотите работать Python Web-разработчиком, заниматься бекендом, стоит ожидать общие вопросы из разряда:

  • как устроен Web в целом, API;

  • что за звери такие HTTP, TCP, DNS, хост;

  • что такое REST API;

  • какие-то архитектурные решения по типу MVC, SOA;

  • про многопоточность, асинхронность;

  • базовые вещи из HTML, CSS, JS и т.д.

То есть всё связанно с тематикой или около того.

Вопросы, отражающие связь Python с выбранной областью (web в нашем случае) могут быть, например, такие:

  • вопросы по популярным веб фреймворкам Django, Flask, aiohttp;

  • что такое DjangoRESTFramework;

  • как отправить запрос GET/PUT и т.д.

Образно, если вы метите в Data Science стоит ожидать вопросов по sklearn и методам оптимизации и т.д. Думаю, тут понятно.

Четвёртая остановочка – это вопросы по технологиям, которыми пользуется компания или которыми, возможно, пользовались вы. И как это не странно, тут всё зависит от того, чем пользуется компания. Соответственно от этого и будет зависеть то, что придётся использовать вам. Если компания в качестве основной базы данных использует MongoDB, то ожидайте вопросов из этой области. Все сидят на Linux? – Значит и вы должны уметь хоть немного им пользоваться. Много кэшируют по вечерам? – Здравствуйте Redis! Если фирма жить не может без Jenkins – будьте добры хотя бы примерно представлять, что это. В общем, это вопрос очень открытый, нужно смотреть непосредственно в вакансиях. Если вы сами использовали те или иные технологии в своих проектах, о них тоже можно рассказать. Таким образом можно дать понять, что вы, оказывается, что-то умеете. Итак, с джуниор-мидлами закончили. Переходим к сеньорам.

На собеседованиях с сеньорами обычно мало говорят о теоретической стороне технологии, больше обсуждают конкретный опыт разработчика, стек технологий, которые он использовал. Поэтому формализованных вопросов здесь нет. Но это могут быть какие-то суперспецифичные вопросы из предметной области. Например, открытые вопросы из разряда «Какую архитектуру вы предпочли бы в таком случае, какие технологии и почему?». Да и вообще, если вы сеньор, вы ведь и так всё знаете, верно?

И напоследок пару советов. Не стоит приукрашивать своих способностей. Если вы в резюме написали, что знаете VueJS, то не будет неожиданностью налететь на вопрос по Vue. Старайтесь рассказать о том, чем вы занимались, возможно о каких-то домашних проектах. Что использовали, как и зачем, какие сложности были и как вы их решили. Ну и хорошо причёсанное портфолио на GitHub лишним не будет. И держитесь увереннее. Это важно.


На самом деле проходить собеседования - это навык, который тоже нарабатывается. Нет ничего смертельно в том, чтобы провалить пару-тройку интервью. Отрицательный результат - тоже результат. Заваленные собесы укажут на ваши слабые стороны и раскроют пробелы в знаниях. Это всё поправимо. Главное не бояться и уже начать собеседоваться, идеальный момент не наступит не когда. Дерзай!

Tags:
Hubs:
Total votes 6: ↑4 and ↓2+3
Comments8

Articles