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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

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

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

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

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

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

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

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

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

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

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

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

  • Method Resolution Order;

  • PEP;

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

  • Type annatetion, 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 лишним не будет. И держитесь увереннее. Это важно.


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

Источник: https://habr.com/ru/post/699600/


Интересные статьи

Интересные статьи

MongoDB объявила о выпуске 10.0 версии коннектора MongoDB для Apache Spark. В этой версии используется новый API Spark Data Sources второй версии (V2) с поддержкой структурированной потоковой переда...
Интернет — часть повседневной жизни, и наши онлайн и оффлайн-миры тесно связаны. Но по мере всё большей цифровизации жизни возникает вопрос о том, что делать с цифровым наследием людей. Представьте, ч...
"7 раз отмерь,1 раз отрежь" - гласит известная поговорка.Если вы следовали нашим советам в предыдущих статьях, вы уже наверняка подготовили наши микросотовые системы к установке, установили и даж...
Учтя всю критику и советы в первой статье, я решил питать светодиодные ленты в светильниках от специализированного драйвера. В качества драйвера был выбран драйвер фирмы ...
Случалось ли вам работать над проектом, где участвует более сотни человек, несколько компаний, с учетом 10 часовых поясов, разных менталитетов и языков? Хотим поделиться своим опытом ...