Какое нужно образование?
Обычно резюме на Junior Python-разработчика подают выпускники или студенты последних курсов технических и математических специальностей. Профильное дополнительное образование, пройденные курсы на Stepic, Coursera или других платформах станут плюсом к основному образованию. Если вы хотите работать в Data Science, то бонусом будут магистерская степень или аспирантура, наличие публикаций и выступления на конференциях.
Работодатели иногда готовы брать на junior-позицию кандидатов без соответствующего высшего образования. Для таких соискателей, как правило, проводят дополнительные испытания, внимательнее относятся к тестовому заданию и учебным проектам в портфолио.
Как проверяют опыт работы?
Обычно опыт работы для начинающих специалистов не обязателен. Но на некоторые вакансии ищут кандидатов с опытом от полугода — года или соискателей, которые прошли стажировку. Если вы нигде не работали, приготовьтесь рассказать про законченные учебные и личные проекты. Личными проектами также интересуются, чтобы проверить заинтересованность кандидата в профессии и его стремление к развитию.
Завершённые проекты можно опубликовать, например, в личном профиле на GitHub или создать сайт-портфолио. На собеседовании вы сможете рассказать, какая перед вами стояла задача, какие технологии вы выбрали и почему. Дополнительные проекты помогут не только прокачать навыки, но и выделиться среди других кандидатов.
Какие soft skills пригодятся в первую очередь?
Помните сериал «Кремниевая долина» и его главного героя Ричарда Хендрикса, CEO «Пегого Дудочника»? Он был отличным программистом, но ему явно не хватало умения общаться с людьми, работать в команде и руководить сотрудниками. На практике одного умения решать поставленные задачи с помощью технических навыков бывает недостаточно, успешность кандидата зависит также от его социальных качеств. Ответственность, стремление к профессиональному росту, умение управлять рабочим временем и работать в команде — это базовые soft skills, которые нужны практически на любой должности в ИТ-сфере.
От junior разработчика дополнительно ждут умение быстро осваивать новый материал, вникать в суть задач, понимать требования и быть готовым к рутинным задачам. На собеседованиях junior-специалистов могут спросить: «Как вы относитесь к рутинным задачам?» — потому что их работа часто включает монотонные процессы, не всегда творческая. Работодатель не хочет вас напугать — скорее хочет убедиться в том, что вам не станет скучно на этой позиции через несколько месяцев и вы не захотите уйти. Ответ на такой вопрос можно сформулировать так: «Сейчас подобные задачи для меня — возможность получить опыт, на них я смогу отработать свои навыки, чтобы в будущем браться за более сложную работу».
На собеседовании также могут спросить, почему вы хотите работать на этой должности и в этой компании. С помощью этого вопроса работодатель пытается понять, подходит ли соискатель компании, а компания — соискателю. Если вам действительно не интересен проект, то работа в нем вряд ли доставит удовольствие, и вряд ли вы принесете пользу компании.
Изучите перед собеседованием свои будущие задачи, продукты и проекты, с которыми работают в компании, этап развития компании (например, стартап или ИТ-гигант), корпоративную культуру, отзывы сотрудников, местоположение, условия работы. И выберите среди всего то, что вам действительно важно. Это может быть простое «это компания, где я могу полностью реализовать свои компетенции и продолжить карьеру» или «мне кажется, мой опыт отлично подходит под требования» и перечислите ключевые навыки.
Какие технические навыки необходимы?
Основное требование — знание языка программирования Python. Но иногда на позицию Python-разработчика рассматривают специалистов с опытом в других популярных языках (например, C++, Java, Go).
На собеседованиях работодатель может проверить общую ИТ-грамотность, например спросить, как устроен компьютер или как работает интернет. Чаще всего от кандидатов ждут знания алгоритмов и структур данных. В некоторых компаниях есть отдельный этап, или даже несколько этапов отбора, посвященных проверке этого навыка. Про то, зачем разработчику изучать алгоритмы и структуры данных, мы уже писали раньше.
Также на собеседованиях часто спрашивают про опыт работы с базами данных и фреймворками, понимание принципов многопоточного и асинхронного программирования, умение работать в командной строке.
Python-разработчиков также ищут под задачи машинного обучения. Поэтому при отборе на позиции, связанные с Data Science, проверяют знание алгоритмов машинного обучения и умение их применять, опыт участия в соревнованиях на Kaggle или в хакатонах. От соискателей ждут знания математики: теории вероятностей, линейной алгебры и математического анализа.
Что повторить перед собеседованием
Алгоритмы и структуры данных (без привязки к языку программирования).
Желательно знать, как устроены массивы, связные списки, хеш-таблицы, множества, бинарные деревья поиска, графы. Какая сложность (в O-нотации) основных операций при работе с ними. Могут также задать вопросы по базовым алгоритмам. Например, попросить рассказать про основные алгоритмы сортировки, бинарный поиск или способы обхода графов.
Структуры данных в Python:
примеры применения, различия, преимущества и недостатки. Будьте готовы отвечать на вопросы про числовые типы данных, строки, списки, кортежи, множества и словари. Преимуществом будет знание и опыт применения встроенных в язык структур данных, например, OrderedDict или defaultdict из модуля collections.
Изменяемые и неизменяемые типы данных в Python:
в чём разница между ними, примеры использования. Часто просят просто перечислить изменяемые и неизменяемые типы данных, которые вы знаете. Могут предложить решить задачу и спросить, какой тип или какую структуру данных вы бы выбрали для её решения и почему.
Декораторы:
что это такое и как они устроены. Могут, например, попросить написать код декоратора для измерения времени работы функции или декоратора с параметром. Полезным будет знание functools.wraps .
Контекстные менеджеры:
что это такое и для чего используют. Могут попросить реализовать контекстный менеджер для работы с файлами, аналогичный встроенному open() .
Генераторы и итераторы:
что это такое, для чего они используются, какая между ними разница. Могут, например, попросить написать генератор чётных чисел или чисел Фибоначчи.
зачем он нужен и как работает. Вопрос на собеседовании может быть такой: «Могут ли в Python одновременно выполняться больше одного потока?» От начинающих специалистов обычно не требуют знаний про GIL, но они могут выгодно выделить вас на фоне других кандидатов.
Как устроен один из популярных фреймворков,
например Django или Flask. Хорошо, если вы понимаете его сильные и слабые стороны. Могут попросить спроектировать базу данных для приложения, написать несколько запросов с помощью ORM или на чистом SQL.
Как работает интернет:
понимание модели/моделей OSI/TCP IP, основных протоколов. Популярный вопрос из этого раздела: «Что происходит, когда в поисковой строке вбиваешь google.com?»
Утилиты командной строки.
Могут попросить рассказать про пять – десять команд, которыми вы чаще всего пользуетесь.
Потоки, процессы, асинхронное программирование.
Например, в чём разница между потоком и процессом, или какие способы межпроцессного взаимодействия вы знаете.
Логические и математические задачи:
для их решения может понадобиться школьная математика, базовые знания комбинаторики, теории вероятностей, умение работать с числами в разных системах счисления.
Вряд ли на собеседовании вам зададут вопросы из всех этих разделов. От соискателя на позицию младшего разработчика не ждут, что он верно ответит на все вопросы, скорее, будут смотреть, в правильном ли направлении он думает. Но чем более подготовленными вы будете, тем больше у вас шансов получить желаемую работу.
Что почитать начинающему Python-разработчику
«Чистый код: создание, анализ и рефакторинг», Мартин Роберт К. «Грязный» код мешает развитию проекта и компании, потому что требует значительных ресурсов на поддержку. В книге много реальных примеров, которые научат отличать плохой код от хорошего. Она пригодится всем начинающим разработчикам, читается легко. Возможно, не всё получится сразу применить на практике, но когда вы столкнётесь с ситуацией, упомянутой в книге, вам будет легче найти решение.
«Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих», Адитья Бхаргава. Думаете, алгоритмы это сложно? Книга убедит вас в обратном. В ней подробно разбирается каждый алгоритм: будет понятно даже ребёнку. Воспроизвести их на любом языке программирования не составит труда.
«Программируем на Python», Майкл Доусон. Автор книги — опытный разработчик. Он помогает освоить фундаментальные принципы на примере создания простых игр. Так вы получите базовые навыки и сможете пополнить портфолио. Для более продвинутых специалистов книга может показаться скучной, главная аудитория — всё-таки начинающие разработчики.
«Python на практике», Марк Саммерфилд. Знания из книги помогут лучше подготовиться к собеседованиям. Подходит начинающим и опытным программистам. В основе четыре темы: повышение элегантности кода с помощью паттернов проектирования, повышение быстродействия с помощью распараллеливания и компиляции Python-программ (Cython), высокоуровневое сетевое программирование и графика.
«Изучаем Python», «Программируем на Python», «Python. Карманный справочник», Марк Лутц. Это несколько книг известного инструктора по Python. Их лучше читать в оригинале. Они помогают восполнить пробелы в знаниях и разобраться в сложных вещах. В «Карманном справочнике» вы найдёте основные сведения о типах данных и операторах, специальных методах, встроенных функциях, которые пригод1ятся при работе с Python.
«Python. Книга Рецептов», Дэвид Бизли, Брайан К. Джонс. Пособие для начинающих и опытных разработчиков, которое поможет создавать легкочитаемый, оптимизированный и поддерживаемый код. 15 глав охватывают основные темы Python, каждая глава содержит конкретные «рецепты» с примерами кода, которые вы сможете использовать в своих проектах.
«Алгоритмы: построение и анализ», Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн. Это справочник и пособие по алгоритмам, которое пригодится и начинающим разработчикам, и сеньорам, и тимлидам. Описания даются на простом языке, главы независимы друг от друга, можно изучать в любом порядке и объёме.
Собеседование VS реальная работа: какие навыки пригодятся начинающим Python-разработчикам
На интервью начинающим Python-разработчикам часто задают вопросы из тех областей знаний, которые вряд ли пригодятся в первые месяцы реальной работы. Так происходит из-за того, что конкуренция на начальные позиции очень высока. Вопросы на вырост помогают работодателям из большого количества кандидатов выбрать наиболее подготовленных и мотивированных.
Антон Машкин, код-ревьюер на курсе «Python-разработчик» в Яндекс.Практикуме, рассказывает, какие есть отличия между собеседованием и реальной жизнью, какие вопросы на вырост могут задать на интервью и какие навыки пригодятся начинающему Python-разработчику в первые месяцы работы.
Что, кроме Python, могут спросить на собеседовании
Ниже перечислены примеры вопросов, которые могут встретиться на собеседованиях, но в реальной жизни вряд ли попадутся Junior-разработчику. Однако это не значит, что их изучению нужно уделять меньше внимания.
Алгоритмы
Базовые алгоритмы сортировки и поиска сейчас спрашивают у специалистов любого уровня. Так работодатель проверяет общие знания теории алгоритмов, понимание основных принципов эффективного решения данных задач и оценивает способность разработчика видеть возможности для оптимизации кода.
Однако в реальной работе Junior-специалист никогда не воспроизводит алгоритмы по памяти. Во всех языках программирования стандартные задачи уже реализованы внутренними средствами. Например, для сортировки в Python достаточно использовать метод .sort() или функцию sorted() .
Поиск индекса элемента в списке выполняется при помощи выражения mylist.index(«value») , а проверка наличия элемента в любых коллекциях — с помощью оператора in :
item in collection
Кроме того, заученная теория по алгоритмам ещё не гарантирует, что начинающий разработчик сможет применить эти знания на практике. Самостоятельно заметить, что написанный код алгоритмически неэффективный, достаточно сложно — это приходит только с опытом. На первых этапах справиться с этой задачей помогут старшие коллеги на код-ревью.
Также многое зависит от области программирования. При создании наукоёмких продуктов, например, поисковых систем или игровых движков, алгоритмы необходимы. Однако большая часть приложений, где крайне важны эффективность и скорость, пишется на С или C++. Python позволяет быстро вести разработку программ, но по скорости исполнения уступает многим другим языкам.
Для веб-разработки знание классической теории алгоритмов не так приоритетно. Поэтому во время собеседования на Junior-Python-разработчика вопросы по алгоритмам — это, скорее, дополнительный фильтр. Он показывает, что соискатель заинтересован в теме и расширении кругозора.
Что повторить: нотацию О большое (Big O notation), бинарный поиск, пузырьковую сортировку, быструю сортировку, сортировку вставками.
Как работает интернет
Ещё один популярный вопрос на собеседовании — что происходит в тот момент, когда в строке браузера вводят адрес сайта? Он проверяет общее понимание того, куда идут запросы, откуда приходят ответы, как во всём этом задействован браузер.
Эта область знаний в основном используется в работе Frontend- и Fullstack-разработчиков. В повседневной жизни Junior-специалисту это знание может понадобиться, если он будет совмещать разработку с позицией DevOps или системного администратора. Как и в случае с алгоритмами, такие вопросы задают на собеседованиях, чтобы оценить кругозор и глубину знаний.
Что повторить: что такое DNS, где выполняется код сервера и код клиента, клиент-серверное взаимодействие.
Метаклассы
Метаклассы — тема более продвинутого уровня, обычно с ней сталкиваются соискатели на Middle-позиции и выше. Однако начинающему разработчику также могут задать вопросы по поводу метаклассов, чтобы выяснить, насколько эрудирован кандидат.
Метаклассы — инструмент для динамического создания классов. Он используется крайне редко, например в разработке фреймворков. На мой взгляд, очень точно метаклассы описал Тим Петерс, автор философии разработки «Дзен Python» и сортировки Timsort (стандартного алгоритма сортировки в Python): «[Метаклассы —] это глубокая магия, о которой 99% пользователей даже не нужно задумываться. Если вы думаете, нужно ли вам их использовать, — вам не нужно (люди, которым они реально нужны, точно знают, зачем они им, и не нуждаются в объяснениях, почему)».
Что повторить: определение метаклассов.
Шаблоны проектирования
Python — язык с динамической типизацией, то есть тип переменных не объявляется заранее, а определяется во время выполнения программы. Одна и та же переменная может по очереди содержать строку, число, список, словарь, объект.
Классы и функции также могут находиться в переменных и передаваться в другие функции в качестве аргумента. Отчасти поэтому Python не нуждается в таком большом количестве паттернов проектирования, как Java или C++. Подробнее об этом можно прочитать в статье о том, почему нам не нужны шаблоны проектирования в Python.
Многие шаблоны в Python реализованы просто и удобно за счёт структуры и возможностей языка — они уже встроены в базовый синтаксис, их не нужно создавать отдельно. Написать генераторное выражение можно в одну строчку кода:
Также довольно легко работать с декораторами. Не все Python-разработчики даже назовут это отдельным паттерном, настолько естественно они воспринимаются в языке. Для использования декоратора достаточно написать:
Однако вопросы про шаблоны проектирования всё равно могут встретиться на собеседованиях. «Какие виды паттернов вы знаете?» или «Перечислите шаблоны проектирования, которые вам известны». На начальном уровне разработчики часто не задумываются о том, какие паттерны используют, поэтому почитать про их классификацию и реализацию точно стоит заранее. Полезные шпаргалки по шаблонам проектирования есть на Хабре и на Рефакторинг.Гуру.
Что повторить: как устроены наиболее используемые паттерны в Python: генераторы, итераторы, декораторы.
GIL, асинхронность и всё-всё-всё
Многопоточность, многопроцессорность, асинхронность, как всё это работает и что такое GIL — ещё одна область знаний, которая точно не потребуется в первые месяцы работы большинству соискателей, но про которую могут спросить на собеседовании.
Подобные подходы используются в highload-проектах (высоконагруженные веб-приложения), специализированных фреймворках, например, Tornado, Twisted, Aiohttp, или при выполнении сложных вычислительных задач. Работа с ними требует более продвинутых навыков в программировании, поэтому Junior-Python-разработчик вряд ли столкнётся с многопоточностью и асинхронностью в первый год работы.
Однако это не означает, что материалы по данным темам можно смело игнорировать. На собеседовании знания в этих областях помогут выгодно выделиться на фоне других кандидатов.
Что повторить: отличия потока от процесса и синхронного кода от асинхронного, определение GIL, для чего он нужен.
Какие навыки пригодятся в реальной работе
Первые месяцы в компании Junior-специалист адаптируется к внутренним процессам, поэтому выполняет в основном небольшие задачи: пофиксить баги, выкатить небольшие фичи, дополнить документацию, написать тесты для непокрытой части кода. Чтобы успешно с ними справиться, нужно разбираться не только в языке, но и в смежных областях знаний. О них сейчас и поговорим подробнее.
SQL и базы данных
Сложно представить такую работу, на которой Junior-Python-разработчику знания по данной теме не пригодятся. Они потребуются в самых базовых операциях: сделать выгрузку из базы данных, добавить новую информацию, проанализировать SQL-запрос, сформированный фреймворком.
Система контроля версий — неотъемлемая часть коллективной разработки. Нужно знать основные команды, уметь создавать ветки и разрешать конфликты. От Junior-специалиста ждут, что ему не придётся объяснять с нуля, как вносить правки и при этом ничего не сломать. Конечно, в большинстве компаний настройки прав не дадут случайно выполнить git push —force и стереть чужие изменения, но наличие базовых навыков работы с git заметно облегчит жизнь вам и вашим коллегам.
Фреймворк
Обычно в вакансиях уже указано, в каком фреймворке придётся работать. И опыт разработки на нём — важный критерий для работодателя. Сегодня наиболее популярный Python-фреймворк — Django. Если он указан в вакансии, то желательно знать, что такое модели, приложения, формы, шаблоны, view, миграции (как их создавать и выполнять), а также уметь настраивать админку и работать с ней.
Второй по распространённости фреймворк — Flask. Здесь повторите, как обрабатываются запросы, каким образом фреймворк взаимодействует с базами данных, как работают шаблонизаторы.
Терминал Linux
Под управлением Linux работает 96,5% серверов из первого миллиона доменов в мире, поэтому при развёртывании кода без этой ОС не обойтись. При этом не во всех компаниях есть DevOps-инженеры, которые помогают донести изменения в коде на сервер, иногда это приходится делать самому разработчику.
Junior-специалисту необходимо знать основы взаимодействия с терминалом Linux: работа с файлами и директориями, пользователи, группы и суперюзеры, структура и назначение стандартных каталогов, а также установка и удаление программ. Кроме того, работать с терминалом Linux в целом гораздо удобнее: некоторые операции можно выполнить намного быстрее, чем через графический интерфейс.
Культура кода
Начинающие разработчики часто забывают, что код пишется для людей, а, значит, должен быть структурированным и понятным. Обязательная составляющая здесь — строгое соответствие стандартам оформления кода, которые прописаны в PEP 8: например, длина строки не больше 79 символов, наличие нужного количества пустых строк между функциями и классами, названия переменных со строчной буквы, классов — с заглавной, а констант — полностью заглавными, наличие пробелов вокруг знака равно в одних случаях и их отсутствие в других.
Ещё одна частая ошибка новичков — экономия на символах и попытка написать максимально короткое решение. Каким бы изящным оно ни было, в нём сложно разобраться с первого взгляда. Конечно, код должен быть эффективным, но не в ущерб читаемости.
Soft skills
Для работы в команде недостаточно только технических навыков. Ответственность, внимательность, быстрая обучаемость, умение понять суть задачи и оценить, сколько потребуется времени на её выполнение, смелость задавать уточняющие вопросы — всё это необходимые навыки при работе с командой на длительной дистанции.
Как использовать эти знания при подготовке к собеседованию
Основные вопросы во время интервью на позицию Junior-Python-разработчика обычно касаются самого языка. Например, структуры и типы данных, чем они отличаются друг от друга и какие у них есть стандартные методы, как работать с функциями и классами, что такое ООП, полиморфизм, инкапсуляция и наследование. Однако делать упор в подготовке только на Python недостаточно — важно помнить и про смежные области, о которых мы говорили выше.
Чтобы выбрать наиболее подходящего кандидата, работодатель проверяет уровень знаний Computer Science в целом, а также оценивает заинтересованность в самостоятельном изучении нового материала. Вопросы могут выходить за рамки предстоящих рабочих обязанностей, поэтому собеседование требует отдельной и тщательной подготовки.
Внимательно читайте текст вакансии — зачастую в требованиях можно найти подсказки. Если написано, что необходимо знание алгоритмов или шаблонов проектирования — значит, вопросы про них точно будут в интервью. Там же можно посмотреть, с каким фреймворком придётся работать, чтобы обновить знания по нему. Ещё один вариант — изучить на Хабре или VC обсуждения того, как проходят собеседования в выбранную компанию, или посмотреть статью о том, что работодатели ждут от Junior Python-разработчика.
Не заучивайте теорию бездумно — так она забудется сразу после собеседования и спустя время придётся повторять всё ещё раз. Лучше всего закрепить знания на практике. Попробуйте создать программу или приложение, где сможете использовать изученные инструменты. Это поможет вам лучше усвоить материал и легко ответить на вопросы во время интервью.
Мануал для джуна. Python Developer: вопросы на собеседовании, практические задания и советы для начинающих
Джунов, которые ищут работу, проходят кучу собеседований и получают отказы вместо оффера, во время войны стало больше. А все потому, что к собеседованиям необходимо тщательно готовиться.
dev.ua продолжает серию материалов о том, что нужно знать джунам для прохождения собеседования и получения вожделенного оффера от первого работодателя.
Александр Ковтунов, Python Software engineer компании Ajax Systems, который также проводит собеседования для junior- и middle-специалистов, рассказал о профессии Python Developer и дал советы, как начинающим присоединиться к профессии.
Джунов, которые ищут работу, проходят кучу собеседований и получают отказы вместо оффера, во время войны стало больше. А все потому, что к собеседованиям необходимо тщательно готовиться.
dev.ua продолжает серию материалов о том, что нужно знать джунам для прохождения собеседования и получения вожделенного оффера от первого работодателя.
Александр Ковтунов, Python Software engineer компании Ajax Systems, который также проводит собеседования для junior- и middle-специалистов, рассказал о профессии Python Developer и дал советы, как начинающим присоединиться к профессии.
Кто такой Python Developer
Python — один из самых легких языков программирования. Он универсальный и используется для серверной стороны веб-приложений, разработки настольных и мобильных приложений, игр, Data Science, тестирования программного обеспечения и прочего.
Соответственно, Python Developer может разрабатывать программное обеспечение, формировать аналитику данных, работать в качестве веб-разработчика, исследователя данных, специалиста по автоматическому тестированию, инженера искусственного интеллекта или инженера машинного обучения.
Путь разработчика
Александр Ковтунов в профессии около 3 лет. По его словам, сталкивался со сложностями, потому что в первый год работу найти очень сложно
«Стандартный ответ: „Решили двигаться дальше с более опытным кандидатом“. Иногда казалось, что рекрутеров где-то учат этой фразе», — вспоминает разработчик.
Но после каждого интервью он анализировал, что было не так, на каких вопросах посыпался и уходил учиться. Кроме того, Александр находил в Telegram-группах людей, которые были согласны провести тестовое интервью и дать обратную связь.
Как выбирают кандидатов
Junior Python Developer отбирают по двум основным критериям: знание Python и умение думать.
Кандидату обычно предлагают логические задачи и смотрят, как человек рассуждает. При этом необязательно, чтобы на все вопросы, и логичные, и по программированию, был правильный ответ. Важны и реакции на ситуации, когда у кандидата не получается решить проблему, или он чего-то не знает.
«Это в принципе нормально — чего-то не знать. Но, конечно, минимальная техническая подготовка необходима», — отмечает Александр.
Как он говорит, если простыми словами, в первую очередь ищут инженеров, имеющих некий опыт с Python (необязательно коммерческий).
Основные вопросы на собеседовании
Протоколы
1. Что такое http протокол? Из чего состоит http request? Что такое headers? Что такое статус кода в http responce? Что такое способ?
2. Модель OSI. Что такое? Какие уровни бывают? Какой протокол лучше подойдет для видео tcp или udp?
Базы данных
3. Что такое SQL? Как расшифровывается? Что такое DBMS? Назовите известные вам DBMS?
4. Что такое реляционная модель? Что такое row? Что такое таблица? Что такое атрибут (в контексте SQL-БД)?
5. Отношения: many-to-many, many-to-one, one-to-one (что такое foreign key?)
6. Queries: SELECT, INSERT, JOIN, INDEXES
7. Что такое No-SQL базы данных? Чем они отличаются от SQL? В чем преимущество или недостаток того или иного?
Python Core
8. Data Types, mutable/immutable
9. Сроки. Распарсить массив разделенных запятыми. Отформатировать данные по какому-либо критерию (f-string, format). Найти данные в ленте.
10. Что такое dictionary? Какой объект может быть ключом диктата? Как реализовать такой объект своими руками?
11. Может ли дикт храниться в тупле? Может ли тупл быть ключом диктата? Может ли лист храниться в тупле? А если может ли его изменять?
12. Что такое хеширование? Зачем используется? Приведите примеры.
13. Что такое компрехеншен в Python? Какие структуры можно сделать с его помощью?
14. Что такое контекстные менеджеры? Зачем нужны? Какие способы создания кастомного контекстного менеджера?
15. Что такое slices в Python? Что такое индекс? Какой объект можно обрезать?
16. Что такое декоратор? Как написать свой? Как сделать, чтобы он принимал аргументы?
17. Что такое итератор? Что такое итерабельный объект? Какая между ними разница? Что такое next? Как реализовать итератор? Как и терабельный объект?
18. Что такое генератор? Чем отличается от итератора? Какие способы написания генератора? Что такое yield? Чем отличается от return? Что такое send? Throw? Как написать нескончаемый генератор?
19. Как обрабатывать ошибки в Python?
20. Что такое lamda функции? Напишите такую функцию для фильтрации данных в дикте.
21. Области видимости. Сколько существует? Как расшифровать LEGB? Global и nonlocal? Приведите прил.
22. Как работают способы map? Filter? Enumerate?
23. Что такое ООП? Для чего используют ооп? Что такое class в ооп (не в Python, а в принципе)? Какова его базовая характеристика (стейты+поведение)? Что такое сущность? Каковы принципы ООП?
24. Что такое гетеры, сеттеры? Зачем их используют? Как можно в Python написать геттер или сеттер? Что такое property?
25. В чем разница staticmethod и classmethod? Для каких задач используют тот или иной?
26. Что такое отвлеченный класс? Что такое отвлеченные методы? Что такое интерфейс? Зачем строят интерфейсы в программировании?
27. Для чего нужна функция dir ()? Что такое dict? Как отличаются dict у родительского класса и класса отпрыска? От чего же это зависит?
28. Что такое переменная класса? Как изменятся экземпляры, если ее изменить?
29. Какие магические методы? Зачем нужен метод init? Чем отличается от new?
30. Как переопределить арифметические операции?
31. Как работает множественное наследование? Какой Python ищет имплементацию методов?
Практические задачи
1. Данный дикт
Надо поменять ключ значение местами
2. Даны два массива
Надо сделать чтобы значения, а были ключами, а значения b — значениями дикта
Name already in use
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Вопросы для подготовки к Python Developer интервью
Ответы на вопросы собирал давно и с попеременным успехом. Где-то могут быть неточности, где-то откровенный бред (особенно в разделе про БД). Источники также выбирались не очень переборчиво. Часть ссылок на источники может быть не указана по причине забывчивости или просто случайно была утеряна. Владелец этого репозитория не несет ответственности за ущерб причиненный содержимым этого репозитория, работой Python-разработчика и работой как таковой.
Список вопросов для подготовки к интервью. Могут быть полезны как интервьюеру так и интервьюируемому
Как-то увидел статью на Хабре где было много вопросов, но практически не было ответов и не смог пройти мимо.