Найти тему
Трусливый Айтишник

О чем спрашивают на собеседовании Python разработчика.

Оглавление

Всем доброго дня.

За последний месяц у меня было очень много собеседований. На втором десятке я уже сбился со счета, и в какой-то момент уже перестал соображать на каком из них нахожусь. И тем не менее я пытался старательно к ним готовится. К сожалению, как бы я ни искал, никакой подробной информации в интернете я не нашел. Вернее не так. Статей на тему "что говорить на собеседовании" было очень много. Но на деле с действительностью они имели очень мало общего.

Далее я расскажу о чем именно меня спрашивали на более чем 30 собеседованиях на позицию middle Python разработчика и к чему конкретно стоит готовится.

1. Общие вопросы.

Именно к ним больше всего советуют готовиться различные статьи в интернете. Однако на практике это далеко не самая сложная и часто встречающаяся часть собеседования. Скажу более, примерно на трети собеседований, теоретических вопросов не было вообще. А те что были, оказались относительно простыми. Про такие сложные вещи как дескрипторы, мета классы не спросили ни разу. Про ООП, Декораторы, генераторы - всего один раз.

  • Больше всего спрашивали про особенности работы со списками и словарями. А конкретно про их изменяемость. Несколько раз попадалась вот такая задачка:
Нужно сказать что выведется на экран и почему.
Нужно сказать что выведется на экран и почему.
  • Часто спрашивали как работать со срезами в массивах и строках. Да и в принципе обязательно повторите все стандартные функции для работы со строками, списками и словарями, пригодится.
  • Что такое list comprehension?
  • Какой самый эффективный способ работать со строками? Ответ: использовать f - строки.
  • Еще несколько раз давали отрывок кода, написанный максимально неоптимальным путем и было задание найти все ошибки.

В общем вопросов по теории хватает, но на одних основах далеко не уехать.

2. Алгоритмы.

А вот этого добра более чем хватало. Примерно в 90% случаев заставляли решить как минимум одну задачу на алгоритмы. А в некоторых компаниях, например в Яндексе, все собеседование состояло исключительно из решения алгоритмических задач. Я не буду спорить и говорить насколько это эффективный в поиске кандидатов метод, но факт есть факт, что бы найти работу, алгоритмические задачи надо уметь решать. Как этому научится? Могу дать несколько советов, благодаря которым мне удалось решить все подобные задачи, кроме одной, по иронии судьбы это как раз и было на собеседовании Яндекса:

  • Книга "Грокаем Алгоритмы" как уже неоднократно писал ранее, просто обязательна к прочтению
  • Многие компании совершенно не парились и давали очень популярные задачи, так например в ходе собеседований мне попались все шесть заданий из тренировочного блока от Яндекса. Некоторые даже по нескольку раз... Обязательно их порешайте.
  • В свободное время решайте задачи на сайте leetcode.com из раздела алгоритмы. Желательно каждый день решать минимум по одной задачи. Можно для начала брать легкие по сложности, так как собеседования проходят быстро, средних и сложных практически не бывает. По крайней мере на junior\middle позициях.

3. Вопросы по специфическим для вакансии технологиям.

Всегда смотрите какие технологии требуются в описании вакансии. Так если в компании используется Django то ждите вопросы по ней, обычно они довольно простые:

  • Написать простейший запрос к базе данных на Django ORM
  • Назвать основные типы View используемые в контролерах.
  • Что такое MVC подход в Django.
  • Как работает авторизация пользователей в Django
  • Когда лучше использовать Django а когда например Flask?
  • Что такое unit тестирование? Как оно используется например в Django. Знаете ли методологию TDD?

На удивление ни разу не было вопросов по поводу оптимизации и кешировании.

Так же почти наверняка вас спросят про git и docker. Но хватит просто в двух словах объяснить что это и чего используется.

4. Базы данных и SQL.

Вопросы по базам данных были практически на каждом собеседовании, но обычно они были очень простые и поверхностные:

  • Какие виды БД бывают: Реляционные, поколоночные, NoSQL. Когда какие лучше использовать? Если при этом вы еще сможете сказать про CAP теорему будет вообще замечательно.
  • Что такое индексы? Когда их использовать стоит, а когда не стоит? Какие виды индексов бывают.
  • Иногда просят написать достаточно простой SQL запрос. Потренироваться если что можно тут.

5. О чем НЕ спрашивали.

А вот о чем ни на одном собеседовании меня не спросили, чем сильно удивили, ведь я же готовился:

  • Асинхронное программирование и асинхронные фреймворки... вот вообще ни разу...
  • Очереди и брокеры сообщений(RabbitMQ, Kafka).
  • Unix и особенности работы с ним.

Возможно это просто мне так повезло, но все же выборка из почти 30 собеседований это немало.

И напоследок, на каждом собеседовании вас обязательно спросят про ваш опыт работы, почему вы решили работать с Python и как всему научились. Придумайте красивую речь заранее, она вам точно пригодится.

Удачи на собеседованиях!

Наука
7 млн интересуются