Вас ждет собеседование на должность Python-разработчика, и вы хотите знать, через какие вопросы и обсуждения вам предстоит пройти? Перед тем, как идти, лучше иметь хотя бы общее представление о типах вопросов, которые будут задаваться на собеседовании по Python, чтобы вы могли подготовить на них ответы.
При этом Python — очень важный инструмент в арсенале любого разработчика. Для помощи вам я создал лучшее руководство по вопросам и ответам на собеседовании по Python, чтобы понять глубину и реальное их предназначение.
Помимо этих вопросов, вам также вероятно предоставят фрагменты кода, прочитав которые вы должны будете определить результирующее значение (или его отсутствие). Такие задания невозможно предсказать, и успешность их прохождения будет зависеть от вашего опыта программирования. Давайте начнем с самых популярных вопросов и ответов на собеседовании по Python.
Вопросы и ответы на собеседовании по Python 2021
1) В чем разница между модулем и пакетом в Python?
Каждый программный файл Python представляет собой модуль, который импортирует другие модули как объекты. Таким образом, модуль — это способ структурирования вашей программы. Папка с программой на Python называется пакетом модулей.
2) Какие встроенные типы доступны в Python?
Это один из наиболее распространенных вопросов на собеседовании. В Python есть изменяемые и неизменяемые встроенные типы.
К изменяемым относятся:
- Списки,
- Множества,
- Словари.
Представителями неизменяемых типов являются:
- Строки,
- Кортежи,
- Числа.
3) Что такое лямбда-функция в Python?
Лямбда часто используется как встраиваемая функция и представляет собой единственное анонимное функциональное выражение. Она применяется для создания нового объекта функции и его возврата во время выполнения.
Лямбда — это анонимная функция в Python, которая может принимать неограниченное количество аргументов и может иметь любое число параметров. Однако лямбда-функция может иметь только одно выражение или инструкцию. Обычно она используется в ситуациях, когда требуется анонимная функция в течение короткого периода времени. Лямбда-функции можно использовать одним из двух способов:
Пример лямбда-функции:
a = lambda x,y : x+y
print(a(5, 6))
# Вывод: 11
4) Что означает пространство имен?
Пространство имен представляет собой систему имен, которая используется для обеспечения уникальности наименования всех объектов в программе, чтобы избежать возможных конфликтов. В Python эти пространства имен реализованы как словари с именем в качестве ключа и объектом в качестве значения. В результате разные пространства могут давать своим объектам одинаковые имена.
Ниже приведены три типа пространств имен в Python:
- Локальное пространство имен — включает локальные имена внутри функции. Локальное пространство имен временно создается во время вызова функции и очищается при возврате из нее.
- Глобальное пространство имен — состоит из имен различных импортированных пакетов/модулей, которые в настоящее время используются в проекте. Глобальное пространство имен создается при импорте пакета в скрипт, и оно доступно до тех пор, пока скрипт не закончит выполнение.
- Встроенное пространство имен — оно включает встроенные функции Python и встроенные имена для различных типов исключений.
5) Объясните разницу между списком и кортежем?
Список изменяемый, а кортеж — нет. Кортежи можно хешировать, как в случае создания ключей для словарей.
6) Чем отличается pickling от unpickling?
Любое руководство по вопросам и ответам на собеседовании по Python не будет полным без этого вопроса. В Python модуль pickle принимает любой объект Python, преобразует его в строковое представление и выгружает его в файл с помощью функции dump. Такой процесс известен как pickling. Для этого процесса используется функция pickle.dump()
.
С другой стороны, процесс извлечения исходного объекта Python из сохраненного строкового представления называется unpickling. Для этого процесса используется функция pickle.load()
.
7) Что такое декораторы в Python?
Декоратор Python — это некоторое обновление синтаксиса Python, сделанное для более простого изменения функций.
8) Разница между генераторами и итераторами?
В Python итераторы используются для перебора группы элементов (например, в списке). Генераторы представляют собой способ реализации итераторов. В них применяется yield
для возврата выражения из функции, но в остальном генератор ведет себя как обычная функция.
9) Как преобразовать число в строку?
Один из самых распространенных вопросов на собеседовании. Мы можем использовать встроенную функцию str()
. Для восьмеричного или шестнадцатеричного представления числа мы можем использовать другие встроенные функции, такие как oct()
или hex()
.
10) Как используется оператор // в Python?
Использование оператора //
между двумя числами дает частное при делении числителя на знаменатель. Он также называется оператором деления без остатка.
11) Есть ли в Python инструкция Switch или Case, как в C?
Нет. Однако мы можем создать нашу собственную функцию Switch и использовать ее.
12) Что такое функция range() и каковы ее параметры?
Функция range()
используется для создания списка из чисел. Разрешены только целые числа, поэтому переданные аргументы могут быть как отрицательными, так и положительными. Допустимы следующие параметры:
range(stop)
Где «stop» — это количество целых чисел для генерации, начиная с 0. Пример: list(range(5)) == [0,1,2,3,4]
Другие параметры: range([start], stop[, step]):
- Start: устанавливает первое число в последовательности.
- Stop: указывает верхний предел для последовательности.
- Step: коэффициент приращения в последовательности.
13) Как используется %s?
%s
— это спецификатор формата, который преобразует любое значение в строку.
14) Обязательно ли функция Python должна возвращать значение?
Нет
15) Есть ли в Python функция main()?
Да, есть. Она выполняется автоматически всякий раз, когда мы запускаем скрипт. Если вы хотите изменить этот естественный порядок вещей, используйте оператор if.
16) Что такое GIL?
GIL или Global Interpreter Lock — это мьютекс, используемый для ограничения доступа к объектам Python. Он синхронизирует потоки и предотвращает их одновременное выполнение.
17) Какой метод использовался до оператора «in» для проверки наличия ключа в словаре?
Метод has_key()
.
18) Как изменить тип данных списка?
Чтобы преобразовать список в кортеж, мы используем функцию tuple()
.
Чтобы превратить его в множество — функцию set()
.
Для преобразования в словарь — dict()
.
Для превращения в строку — join()
.
19) Каковы ключевые особенности Python?
Это один из распространенных вопросов на собеседовании. Python — это язык программирования общего назначения высокого уровня с открытым исходным кодом. Поскольку это язык программирования общего назначения, и он поставляется с большим набором библиотек, вы можете использовать Python для разработки практически любого типа приложений.
Некоторые из его ключевых особенностей:
- Интерпретированный,
- С динамической типизацией,
- Объектно-ориентированный,
- Англоязычный синтаксис.
20) Объясните управление памятью в Python.
В Python диспетчер памяти заботится об управлении памятью. Он выделяет ее в виде пространства в куче, в которой хранятся все объекты Python и структуры данных. В языке существуют 4 встроенных структуры данных. Данное пространство недоступно для программиста напрямую. Однако базовый API позволяет разработчику получить доступ к некоторым инструментам для написания кода.
Кроме того, Python оснащен встроенным сборщиком мусора, который освобождает неиспользуемую память из пространства кучи.
21) Что такое PYTHONPATH?
PYTHONPATH — это переменная окружения, которая используется для включения дополнительных каталогов при импорте модуля/пакета. Каждый раз, когда модуль/пакет импортируется, PYTHONPATH используется для проверки наличия добавляемых модулей в существующих каталогах. Обычно интерпретатор использует PYTHONPATH, чтобы определить, какой модуль загрузить.
22) Чувствителен ли Python к регистру?
Язык программирования считается чувствительным к регистру, если он различает такие идентификаторы, как «myname» и «Myname». Проще говоря, он заботится, являются ли символы строчными или прописными.
Давайте посмотрим на пример:
>>> myname="John"
>>> Myname
Traceback (most recent call last):
File "", line 1, in
Myname
NameError: name 'Myname' is not defined
Возникновение ошибки NameError означает, что Python чувствителен к регистру.
23) Объясните использование функций help()
и dir()
.
В Python функция help()
используется для отображения документации по модулям, классам, функциям, ключевым словам и так далее. Если help()
не получает параметров, она запускает интерактивную справочную утилиту на консоли.
Функция dir()
возвращает допустимый список атрибутов и методов объекта, к которому она вызывается. Поскольку функция предназначена для получения наиболее релевантных данных (вместо отображения полной информации), она ведет себя по-разному с разными объектами:
- Для модулей/библиотек функция
dir()
возвращает список всех атрибутов, содержащихся в этом модуле. - Для объектов класса
dir()
вернет список всех допустимых атрибутов и базовых атрибутов. - Когда ей не передаются никакие параметры, функция
dir()
возвращает список атрибутов в текущей области видимости.
24) Что такое модули Python?
Назовите некоторые наиболее часто используемые встроенные модули в Python?
Модули Python — это файлы, содержащие код на Python, который представляет собой либо функциональные классы, либо переменные. Модули являются файлами Python с расширением .py. Они могут включать в себя набор функций, классов или переменных, которые определены и реализованы. Вы можете импортировать и инициализировать модуль с помощью инструкции import
. Изучив руководство по Python, вы можете узнать больше о модулях в Python.
Вот некоторые из наиболее часто используемых встроенных модулей в Python:
Операционные системы
- os,
- sys,
- math,
- random,
- datetime,
- JSON.
25) Объясните, что означает «self» в Python.
В Python «self» — это ключевое слово, применяемое для определения экземпляра или объекта класса. В отличие от Java, где self
не является обязательным, в Python он используется как первый параметр. Self помогает отличать методы и атрибуты класса от его локальных переменных.
Переменная self
в методе __init__
ссылается к созданному объекту или экземпляру, тогда как в других методах она указывает на объект или экземпляр, метод которого был вызван.
Хотите получить работу Python-разработчика?
Тогда вам нужно выполнить следующий алгоритм:
- Записаться на курс от Skillbox «Профессия Python-разработчик»;
- Познакомиться с индивидуальным наставником, который поможет вам создать свою первую программу на Python и получить реальный опыт разработки;
- Пройти 7 блоков обучения с разным уровнем сложности, знание которых можно приравнять к году работы;
- Защитить диплом перед реальными заказчиками. Это не сложно, так как к концу обучения у вас будет 2 проекта на Github и глубокое понимание Python;
- Вместе с опытными HR-специалистами составить резюме и подготовится к собеседованию;
- Пройти собеседования на подобранные для вас вакансии Центром карьеры Skillbox.
Переходите по ссылке и перенимайте знания у профи: Профессия Python-разработчик.